@loopback/cli 4.0.0-alpha.9 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (159) hide show
  1. package/.yo-rc.json +1697 -0
  2. package/{generators/project/templates/LICENSE → LICENSE} +2 -1
  3. package/README.md +44 -43
  4. package/bin/cli-main.js +61 -0
  5. package/generators/app/index.js +109 -15
  6. package/generators/app/templates/.dockerignore +5 -0
  7. package/generators/app/templates/Dockerfile +28 -0
  8. package/generators/app/templates/README.md.ejs +130 -0
  9. package/generators/app/templates/public/index.html.ejs +88 -0
  10. package/generators/app/templates/{test → src/__tests__}/README.md +0 -1
  11. package/generators/app/templates/src/__tests__/acceptance/home-page.acceptance.ts.ejs +31 -0
  12. package/generators/app/templates/src/__tests__/acceptance/ping.controller.acceptance.ts.ejs +21 -0
  13. package/generators/app/templates/src/__tests__/acceptance/test-helper.ts.ejs +32 -0
  14. package/generators/app/templates/src/application.ts.ejs +70 -0
  15. package/generators/app/templates/src/controllers/README.md +6 -0
  16. package/generators/app/templates/src/controllers/index.ts.ejs +1 -0
  17. package/generators/app/templates/src/controllers/ping.controller.ts.ejs +55 -0
  18. package/generators/app/templates/src/datasources/README.md +3 -0
  19. package/generators/app/templates/src/index.ts.ejs +39 -0
  20. package/generators/app/templates/src/migrate.ts.ejs +20 -0
  21. package/generators/app/templates/src/models/README.md +3 -0
  22. package/generators/app/templates/src/openapi-spec.ts.ejs +23 -0
  23. package/generators/app/templates/src/sequence.ts.ejs +3 -0
  24. package/generators/controller/index.js +240 -23
  25. package/generators/controller/templates/src/controllers/controller-rest-template.ts.ejs +150 -0
  26. package/generators/controller/templates/src/controllers/{controller-template.ts → controller-template.ts.ejs} +2 -2
  27. package/generators/copyright/fs.js +46 -0
  28. package/generators/copyright/git.js +78 -0
  29. package/generators/copyright/header.js +306 -0
  30. package/generators/copyright/index.js +230 -0
  31. package/generators/copyright/license.js +105 -0
  32. package/generators/datasource/index.js +341 -0
  33. package/generators/datasource/templates/datasource.ts.ejs +22 -0
  34. package/generators/discover/import-discovered-model.js +70 -0
  35. package/generators/discover/index.js +349 -0
  36. package/generators/example/downloader.js +16 -0
  37. package/generators/example/index.js +176 -0
  38. package/generators/extension/index.js +34 -5
  39. package/generators/extension/templates/README.md.ejs +32 -0
  40. package/generators/extension/templates/{test → src/__tests__}/acceptance/README.md +0 -0
  41. package/generators/extension/templates/{test → src/__tests__}/integration/README.md +0 -0
  42. package/generators/extension/templates/{test → src/__tests__}/unit/README.md +0 -0
  43. package/generators/extension/templates/src/component.ts.ejs +22 -0
  44. package/generators/extension/templates/src/controllers/README.md +3 -2
  45. package/generators/extension/templates/src/decorators/README.md +10 -4
  46. package/generators/extension/templates/src/index.ts.ejs +3 -0
  47. package/generators/extension/templates/src/keys.ts.ejs +11 -0
  48. package/generators/extension/templates/src/mixins/README.md +77 -21
  49. package/generators/extension/templates/src/providers/README.md +51 -25
  50. package/generators/extension/templates/src/repositories/README.md +1 -1
  51. package/generators/extension/templates/src/types.ts.ejs +15 -0
  52. package/generators/import-lb3-models/index.js +197 -0
  53. package/generators/import-lb3-models/lb3app-loader.js +31 -0
  54. package/generators/import-lb3-models/migrate-model.js +249 -0
  55. package/generators/import-lb3-models/model-names.js +32 -0
  56. package/generators/interceptor/index.js +178 -0
  57. package/generators/interceptor/templates/interceptor-template.ts.ejs +62 -0
  58. package/generators/model/index.js +536 -0
  59. package/generators/model/property-definition.js +85 -0
  60. package/generators/model/templates/model.ts.ejs +42 -0
  61. package/generators/observer/index.js +132 -0
  62. package/generators/observer/templates/observer-template.ts.ejs +40 -0
  63. package/generators/openapi/README.md +211 -0
  64. package/generators/openapi/index.js +535 -0
  65. package/generators/openapi/schema-helper.js +447 -0
  66. package/generators/openapi/spec-helper.js +484 -0
  67. package/generators/openapi/spec-loader.js +75 -0
  68. package/generators/openapi/templates/src/controllers/controller-template.ts.ejs +43 -0
  69. package/generators/openapi/templates/src/datasources/datasource.ts.ejs +42 -0
  70. package/generators/openapi/templates/src/models/model-template.ts.ejs +71 -0
  71. package/generators/openapi/templates/src/models/type-template.ts.ejs +13 -0
  72. package/generators/openapi/templates/src/services/service-proxy-template.ts.ejs +55 -0
  73. package/generators/openapi/utils.js +322 -0
  74. package/generators/project/templates/.eslintignore +4 -0
  75. package/generators/project/templates/.eslintrc.js.ejs +3 -0
  76. package/generators/project/templates/.mocharc.json +5 -0
  77. package/generators/project/templates/.prettierignore +0 -2
  78. package/generators/project/templates/.prettierrc +2 -1
  79. package/generators/project/templates/.vscode/launch.json +38 -0
  80. package/generators/project/templates/.vscode/settings.json +32 -0
  81. package/generators/project/templates/.vscode/tasks.json +29 -0
  82. package/generators/project/templates/DEVELOPING.md +36 -0
  83. package/generators/project/templates/_.gitignore +3 -5
  84. package/generators/project/templates/package.json.ejs +175 -0
  85. package/generators/project/templates/package.plain.json.ejs +176 -0
  86. package/generators/project/templates/tsconfig.json.ejs +39 -0
  87. package/generators/relation/base-relation.generator.js +220 -0
  88. package/generators/relation/belongs-to-relation.generator.js +196 -0
  89. package/generators/relation/has-many-relation.generator.js +200 -0
  90. package/generators/relation/has-many-through-relation.generator.js +331 -0
  91. package/generators/relation/has-one-relation.generator.js +200 -0
  92. package/generators/relation/index.js +795 -0
  93. package/generators/relation/references-many-relation.generator.js +142 -0
  94. package/generators/relation/templates/controller-relation-template-belongs-to.ts.ejs +38 -0
  95. package/generators/relation/templates/controller-relation-template-has-many-through.ts.ejs +110 -0
  96. package/generators/relation/templates/controller-relation-template-has-many.ts.ejs +110 -0
  97. package/generators/relation/templates/controller-relation-template-has-one.ts.ejs +110 -0
  98. package/generators/relation/utils.generator.js +260 -0
  99. package/generators/repository/index.js +576 -0
  100. package/generators/repository/templates/src/repositories/repository-crud-default-template.ts.ejs +21 -0
  101. package/generators/repository/templates/src/repositories/repository-kv-template.ts.ejs +19 -0
  102. package/generators/rest-crud/crud-rest-component.js +63 -0
  103. package/generators/rest-crud/index.js +401 -0
  104. package/generators/rest-crud/templates/src/model-endpoints/model.rest-config-template.ts.ejs +10 -0
  105. package/generators/service/index.js +351 -0
  106. package/generators/service/templates/local-service-class-template.ts.ejs +10 -0
  107. package/generators/service/templates/local-service-provider-template.ts.ejs +19 -0
  108. package/generators/service/templates/remote-service-proxy-template.ts.ejs +21 -0
  109. package/generators/update/index.js +55 -0
  110. package/intl/cs/messages.json +204 -0
  111. package/intl/de/messages.json +204 -0
  112. package/intl/en/messages.json +204 -0
  113. package/intl/es/messages.json +204 -0
  114. package/intl/fr/messages.json +204 -0
  115. package/intl/it/messages.json +204 -0
  116. package/intl/ja/messages.json +204 -0
  117. package/intl/ko/messages.json +204 -0
  118. package/intl/nl/messages.json +204 -0
  119. package/intl/pl/messages.json +204 -0
  120. package/intl/pt/messages.json +204 -0
  121. package/intl/ru/messages.json +204 -0
  122. package/intl/tr/messages.json +204 -0
  123. package/intl/zh-Hans/messages.json +204 -0
  124. package/intl/zh-Hant/messages.json +204 -0
  125. package/lib/artifact-generator.js +138 -39
  126. package/lib/ast-helper.js +214 -0
  127. package/lib/base-generator.js +509 -0
  128. package/lib/cli.js +233 -0
  129. package/lib/connectors.json +894 -0
  130. package/lib/debug.js +16 -0
  131. package/lib/globalize.js +12 -0
  132. package/lib/model-discoverer.js +118 -0
  133. package/lib/project-generator.js +154 -57
  134. package/lib/tab-completion.js +127 -0
  135. package/lib/update-index.js +44 -0
  136. package/lib/utils.js +689 -20
  137. package/lib/version-helper.js +299 -0
  138. package/package.json +183 -39
  139. package/CHANGELOG.md +0 -86
  140. package/bin/cli.js +0 -66
  141. package/generators/app/templates/index.js +0 -14
  142. package/generators/app/templates/src/application.ts +0 -27
  143. package/generators/app/templates/src/controllers/ping-controller.ts +0 -25
  144. package/generators/app/templates/src/index.ts +0 -25
  145. package/generators/app/templates/test/ping-controller.test.ts +0 -46
  146. package/generators/extension/templates/index.js +0 -8
  147. package/generators/extension/templates/src/component.ts +0 -14
  148. package/generators/extension/templates/src/index.ts +0 -6
  149. package/generators/project/templates/.npmrc +0 -1
  150. package/generators/project/templates/.yo-rc.json +0 -1
  151. package/generators/project/templates/README.md +0 -4
  152. package/generators/project/templates/index.d.ts +0 -6
  153. package/generators/project/templates/index.ts +0 -11
  154. package/generators/project/templates/package.json +0 -79
  155. package/generators/project/templates/package.plain.json +0 -82
  156. package/generators/project/templates/test/mocha.opts +0 -1
  157. package/generators/project/templates/tsconfig.json +0 -29
  158. package/generators/project/templates/tslint.build.json +0 -17
  159. package/generators/project/templates/tslint.json +0 -33
@@ -0,0 +1,299 @@
1
+ // Copyright IBM Corp. 2019,2020. All Rights Reserved.
2
+ // Node module: @loopback/cli
3
+ // This file is licensed under the MIT License.
4
+ // License text available at https://opensource.org/licenses/MIT
5
+
6
+ 'use strict';
7
+
8
+ const fse = require('fs-extra');
9
+ const semver = require('semver');
10
+ const chalk = require('chalk');
11
+ const latestVersion = require('latest-version');
12
+
13
+ const cliPkg = require('../package.json');
14
+ const g = require('./globalize');
15
+ const templateDeps = cliPkg.config.templateDependencies;
16
+
17
+ /**
18
+ * Print @loopback/* versions
19
+ * @param log - A function to log information
20
+ */
21
+ function printVersions(log = console.log) {
22
+ const ver = cliPkg.version;
23
+ log('@loopback/cli version: %s', ver);
24
+ log('\n@loopback/* dependencies:');
25
+ for (const d in templateDeps) {
26
+ if (d.startsWith('@loopback/') && d !== '@loopback/cli') {
27
+ log(' - %s: %s', d, templateDeps[d]);
28
+ }
29
+ }
30
+ }
31
+
32
+ /**
33
+ * Check project dependencies against module versions from the cli template
34
+ * @param generator - Yeoman generator instance
35
+ */
36
+ async function checkDependencies(generator) {
37
+ const pkg = generator.fs.readJSON(generator.destinationPath('package.json'));
38
+ generator.packageJson = pkg;
39
+
40
+ const isUpdate = generator.command === 'update';
41
+ const pkgDeps = pkg
42
+ ? {
43
+ dependencies: {...pkg.dependencies},
44
+ devDependencies: {...pkg.devDependencies},
45
+ peerDependencies: {...pkg.peerDependencies},
46
+ }
47
+ : {};
48
+
49
+ if (!pkg) {
50
+ if (isUpdate) {
51
+ printVersions(generator.log);
52
+ await checkCliVersion(generator.log);
53
+ return;
54
+ }
55
+ const err = new Error(
56
+ 'No package.json found in ' +
57
+ generator.destinationRoot() +
58
+ '. ' +
59
+ 'The command must be run in a LoopBack project.',
60
+ );
61
+ generator.exit(err);
62
+ return;
63
+ }
64
+
65
+ const dependentPackage = '@loopback/core';
66
+
67
+ const projectDepsNames = isUpdate
68
+ ? Object.keys(
69
+ // Check dependencies, devDependencies, and peerDependencies
70
+ {
71
+ ...pkgDeps.dependencies,
72
+ ...pkgDeps.devDependencies,
73
+ ...pkgDeps.peerDependencies,
74
+ },
75
+ )
76
+ : Object.keys(pkgDeps.dependencies);
77
+
78
+ const isLBProj = isUpdate
79
+ ? projectDepsNames.some(n => n.startsWith('@loopback/'))
80
+ : projectDepsNames.includes(dependentPackage);
81
+
82
+ if (!isLBProj) {
83
+ const err = new Error(
84
+ 'No `@loopback/core` package found in the "dependencies" section of ' +
85
+ generator.destinationPath('package.json') +
86
+ '. ' +
87
+ 'The command must be run in a LoopBack project.',
88
+ );
89
+ generator.exit(err);
90
+ return;
91
+ }
92
+
93
+ const incompatibleDeps = {
94
+ dependencies: {},
95
+ devDependencies: {},
96
+ peerDependencies: {},
97
+ };
98
+
99
+ let found = false;
100
+ for (const d in templateDeps) {
101
+ for (const s in incompatibleDeps) {
102
+ const versionRange = pkgDeps[s][d];
103
+ if (!versionRange) continue;
104
+ const templateDep = templateDeps[d];
105
+ // https://github.com/loopbackio/loopback-next/issues/2028
106
+ // https://github.com/npm/node-semver/pull/238
107
+ // semver.intersects does not like `*`, `x`, or `X`
108
+ if (versionRange.match(/^\*|x|X/)) continue;
109
+ if (generator.options.semver === false) {
110
+ // For `lb4 update` command, check exact matches
111
+ if (versionRange !== templateDep) {
112
+ incompatibleDeps[s][d] = [versionRange, templateDep];
113
+ found = true;
114
+ }
115
+ continue;
116
+ }
117
+ if (semver.intersects(versionRange, templateDep)) continue;
118
+ incompatibleDeps[s][d] = [versionRange, templateDep];
119
+ found = true;
120
+ }
121
+ }
122
+ if (!found) {
123
+ // No incompatible dependencies
124
+ if (generator.command === 'update') {
125
+ generator.log(
126
+ chalk.green(
127
+ `The project dependencies are compatible with @loopback/cli@${cliPkg.version}`,
128
+ ),
129
+ );
130
+ }
131
+ return;
132
+ }
133
+
134
+ const originalCliVersion = generator.config.get('update') || '<unknown>';
135
+ generator.log(
136
+ chalk.red(
137
+ g.f(
138
+ 'The project was originally generated by @loopback/cli@%s.',
139
+ originalCliVersion,
140
+ ),
141
+ ),
142
+ );
143
+
144
+ generator.log(
145
+ chalk.red(
146
+ g.f(
147
+ 'The following dependencies are incompatible with @loopback/cli@%s:',
148
+ cliPkg.version,
149
+ ),
150
+ ),
151
+ );
152
+ for (const s in incompatibleDeps) {
153
+ generator.log(s);
154
+ for (const d in incompatibleDeps[s]) {
155
+ generator.log(
156
+ chalk.yellow('- %s: %s (cli %s)'),
157
+ d,
158
+ ...incompatibleDeps[s][d],
159
+ );
160
+ }
161
+ }
162
+ return incompatibleDeps;
163
+ }
164
+
165
+ /**
166
+ * Update project dependencies with module versions from the cli template
167
+ * @param pkg - Package json object for the project
168
+ * @param generator - Yeoman generator instance
169
+ */
170
+ function updateDependencies(generator) {
171
+ const pkg =
172
+ generator.packageJson ||
173
+ generator.fs.readJSON(generator.destinationPath('package.json'));
174
+ const depUpdates = [];
175
+ for (const d in templateDeps) {
176
+ if (
177
+ pkg.dependencies &&
178
+ pkg.dependencies[d] &&
179
+ pkg.dependencies[d] !== templateDeps[d]
180
+ ) {
181
+ depUpdates.push(
182
+ `- Dependency ${d}: ${pkg.dependencies[d]} => ${templateDeps[d]}`,
183
+ );
184
+ pkg.dependencies[d] = templateDeps[d];
185
+ }
186
+ if (
187
+ pkg.devDependencies &&
188
+ pkg.devDependencies[d] &&
189
+ pkg.devDependencies[d] !== templateDeps[d]
190
+ ) {
191
+ depUpdates.push(
192
+ `- DevDependency ${d}: ${pkg.devDependencies[d]} => ${templateDeps[d]}`,
193
+ );
194
+ pkg.devDependencies[d] = templateDeps[d];
195
+ }
196
+ if (
197
+ pkg.peerDependencies &&
198
+ pkg.peerDependencies[d] &&
199
+ pkg.peerDependencies[d] !== templateDeps[d]
200
+ ) {
201
+ depUpdates.push(
202
+ `- PeerDependency ${d}: ${pkg.devDependencies[d]} => ${templateDeps[d]}`,
203
+ );
204
+ pkg.devDependencies[d] = templateDeps[d];
205
+ }
206
+ }
207
+ if (depUpdates.length) {
208
+ depUpdates.sort().forEach(d => generator.log(d));
209
+ }
210
+ generator.log(
211
+ chalk.red('Upgrading dependencies may break the current project.'),
212
+ );
213
+ generator.fs.writeJSON(generator.destinationPath('package.json'), pkg);
214
+ // Remove `node_modules` force a fresh install
215
+ if (generator.command === 'update' && !generator.options['skip-install']) {
216
+ fse.removeSync(generator.destinationPath('node_modules'));
217
+ }
218
+ generator.pkgManagerInstall();
219
+ }
220
+
221
+ /**
222
+ * Check the LoopBack project dependencies and versions
223
+ * @param generator - Yeoman generator instance
224
+ */
225
+ async function checkLoopBackProject(generator) {
226
+ if (generator.shouldExit()) return false;
227
+
228
+ const incompatibleDeps = await checkDependencies(generator);
229
+ if (incompatibleDeps == null) return false;
230
+ if (
231
+ Object.keys({
232
+ ...incompatibleDeps.dependencies,
233
+ ...incompatibleDeps.devDependencies,
234
+ ...incompatibleDeps.peerDependencies,
235
+ }) === 0
236
+ )
237
+ return false;
238
+
239
+ const choices = [
240
+ {
241
+ name: g.f('Upgrade project dependencies'),
242
+ value: 'upgrade',
243
+ },
244
+ {
245
+ name: g.f('Skip upgrading project dependencies'),
246
+ value: 'continue',
247
+ },
248
+ ];
249
+ if (generator.command !== 'update') {
250
+ choices.unshift({
251
+ name: g.f('Abort now'),
252
+ value: 'abort',
253
+ });
254
+ }
255
+ const prompts = [
256
+ {
257
+ name: 'decision',
258
+ message: g.f('How do you want to proceed?'),
259
+ type: 'list',
260
+ choices,
261
+ default: 0,
262
+ },
263
+ ];
264
+ const answers = await generator.prompt(prompts);
265
+ if (answers && answers.decision === 'continue') {
266
+ return false;
267
+ }
268
+ if (answers && answers.decision === 'upgrade') {
269
+ updateDependencies(generator);
270
+ return true;
271
+ }
272
+ generator.exit(new Error('Incompatible dependencies'));
273
+ }
274
+
275
+ /**
276
+ * Check if the current cli is out of date
277
+ * @param log - Log function
278
+ */
279
+ async function checkCliVersion(log = console.log) {
280
+ const latestCliVersion = await latestVersion('@loopback/cli');
281
+ if (latestCliVersion !== cliPkg.version) {
282
+ const current = chalk.grey(cliPkg.version);
283
+ const latest = chalk.green(latestCliVersion);
284
+ const cmd = chalk.cyan(`npm i -g ${cliPkg.name}`);
285
+ const message = `
286
+ Update available ${current} ${chalk.reset(' → ')} ${latest}
287
+ Run ${cmd} to update.`;
288
+ log(message);
289
+ } else {
290
+ log(chalk.green(`${cliPkg.name}@${cliPkg.version} is up to date.`));
291
+ }
292
+ }
293
+
294
+ exports.printVersions = printVersions;
295
+ exports.checkCliVersion = checkCliVersion;
296
+ exports.checkDependencies = checkDependencies;
297
+ exports.updateDependencies = updateDependencies;
298
+ exports.checkLoopBackProject = checkLoopBackProject;
299
+ exports.cliPkg = cliPkg;
package/package.json CHANGED
@@ -1,54 +1,198 @@
1
1
  {
2
2
  "name": "@loopback/cli",
3
- "version": "4.0.0-alpha.9",
4
3
  "description": "Yeoman generator for LoopBack 4",
5
- "homepage": "https://github.com/strongloop/loopback-next/tree/master/packages/cli",
6
- "author": {
7
- "name": "IBM"
4
+ "version": "4.0.0",
5
+ "keywords": [
6
+ "LoopBack",
7
+ "CLI",
8
+ "yeoman-generator"
9
+ ],
10
+ "license": "MIT",
11
+ "bin": {
12
+ "lb4": "bin/cli-main.js"
13
+ },
14
+ "main": "generators/app/index.js",
15
+ "author": "IBM Corp.",
16
+ "copyright.owner": "IBM Corp.",
17
+ "homepage": "https://github.com/loopbackio/loopback-next/tree/master/packages/cli",
18
+ "repository": {
19
+ "type": "git",
20
+ "url": "https://github.com/loopbackio/loopback-next.git",
21
+ "directory": "packages/cli"
8
22
  },
9
23
  "engines": {
10
- "node": ">=6"
24
+ "node": "14 || 16 || 17 || 18"
25
+ },
26
+ "scripts": {
27
+ "test": "lb-mocha --lang en_US.UTF-8 \"test/**/*.js\"",
28
+ "smoke-test": "lb-mocha --allow-console-logs \"smoke-test/**/*.smoke.js\"",
29
+ "build:globalize": "slt-globalize -e && git add \"intl/en/messages.json\""
30
+ },
31
+ "publishConfig": {
32
+ "access": "public"
11
33
  },
12
34
  "files": [
13
35
  "bin",
14
36
  "lib",
15
- "generators"
37
+ "generators",
38
+ "intl",
39
+ ".yo-rc.json"
16
40
  ],
17
- "bin": {
18
- "lb4": "bin/cli.js"
19
- },
20
- "main": "generators/app/index.js",
21
- "keywords": [
22
- "LoopBack",
23
- "CLI",
24
- "yeoman-generator"
25
- ],
26
- "devDependencies": {
27
- "@loopback/testlab": "^4.0.0-alpha.14",
28
- "mem-fs": "^1.1.3",
29
- "mem-fs-editor": "^3.0.2",
30
- "mocha": "^4.0.1",
31
- "nsp": "^3.1.0",
32
- "sinon": "^4.1.2",
33
- "yeoman-assert": "^3.1.0",
34
- "yeoman-test": "^1.7.0"
35
- },
36
41
  "dependencies": {
37
- "camelcase-keys": "^4.1.0",
38
- "debug": "^3.1.0",
39
- "lodash": "^4.17.4",
40
- "minimist": "^1.2.0",
41
- "regenerate": "^1.3.3",
42
- "unicode-10.0.0": "^0.7.4",
43
- "yeoman-generator": "^2.0.1"
42
+ "@lerna/project": "^4.0.0",
43
+ "@openapi-contrib/openapi-schema-to-json-schema": "^3.1.2",
44
+ "@phenomnomnominal/tsquery": "^4.2.0",
45
+ "camelcase-keys": "^7.0.2",
46
+ "chalk": "^4.1.2",
47
+ "change-case": "^4.1.2",
48
+ "debug": "^4.3.4",
49
+ "fs-extra": "^10.1.0",
50
+ "glob": "^8.0.1",
51
+ "inquirer-autocomplete-prompt": "^2.0.0",
52
+ "json5": "^2.2.1",
53
+ "latest-version": "^5.1.0",
54
+ "lodash": "^4.17.21",
55
+ "minimatch": "^5.0.1",
56
+ "minimist": "^1.2.6",
57
+ "mkdirp": "^1.0.4",
58
+ "natural-compare": "^1.4.0",
59
+ "pacote": "^13.3.0",
60
+ "pluralize": "^8.0.0",
61
+ "regenerate": "^1.4.2",
62
+ "semver": "^7.3.7",
63
+ "slash": "^3.0.0",
64
+ "spdx-license-list": "^6.5.0",
65
+ "stringify-object": "^3.3.0",
66
+ "strong-globalize": "^6.0.5",
67
+ "swagger-parser": "^10.0.3",
68
+ "swagger2openapi": "^7.0.8",
69
+ "tabtab": "^3.0.2",
70
+ "terminal-link": "^2.1.1",
71
+ "tildify": "^2.0.0",
72
+ "ts-morph": "^12.2.0",
73
+ "typescript": "~4.6.4",
74
+ "unicode-10.0.0": "^0.7.5",
75
+ "untildify": "^4.0.0",
76
+ "update-notifier": "^5.1.0",
77
+ "url-slug": "^3.0.3",
78
+ "validate-npm-package-name": "^4.0.0",
79
+ "write-file-atomic": "^4.0.1",
80
+ "yeoman-environment": "^2.10.3",
81
+ "yeoman-generator": "^4.13.0"
44
82
  },
45
- "scripts": {
46
- "prepublishOnly": "nsp check",
47
- "test": "mocha test/**/*.js"
83
+ "devDependencies": {
84
+ "@loopback/build": "^9.0.0",
85
+ "@loopback/eslint-config": "^13.0.0",
86
+ "@loopback/testlab": "^5.0.0",
87
+ "@types/ejs": "^3.1.0",
88
+ "@types/fs-extra": "^9.0.13",
89
+ "@types/minimatch": "^3.0.5",
90
+ "@types/node": "^12.20.50",
91
+ "loopback": "^3.28.0",
92
+ "loopback-datasource-juggler": "^4.27.1",
93
+ "mem-fs": "^2.2.1",
94
+ "mem-fs-editor": "^9.4.0",
95
+ "mock-stdin": "^1.0.0",
96
+ "rimraf": "^3.0.2",
97
+ "sinon": "^11.1.2",
98
+ "strong-globalize-cli": "7.1.0",
99
+ "yeoman-assert": "^3.1.1",
100
+ "yeoman-test": "^4.0.2"
48
101
  },
49
- "repository": {
50
- "type": "git",
51
- "url": "https://github.com/strongloop/loopback-next"
102
+ "config": {
103
+ "templateDependencies": {
104
+ "tslib": "^2.0.0",
105
+ "@types/mocha": "^9.1.1",
106
+ "@types/node": "^12.20.50",
107
+ "cross-spawn": "^7.0.3",
108
+ "debug": "^4.3.4",
109
+ "fs-extra": "^10.1.0",
110
+ "mocha": "^10.0.0",
111
+ "nyc": "^15.1.0",
112
+ "prettier": "^2.6.2",
113
+ "rimraf": "^3.0.2",
114
+ "source-map-support": "^0.5.21",
115
+ "typescript": "~4.6.4",
116
+ "@loopback/authentication": "^9.0.0",
117
+ "@loopback/boot": "^5.0.0",
118
+ "@loopback/build": "^9.0.0",
119
+ "@loopback/cli": "^4.0.0",
120
+ "@loopback/context": "^5.0.0",
121
+ "@loopback/core": "^4.0.0",
122
+ "@loopback/metadata": "^5.0.0",
123
+ "@loopback/openapi-spec-builder": "^5.0.0",
124
+ "@loopback/openapi-v3": "^8.0.0",
125
+ "@loopback/repository-json-schema": "^6.0.0",
126
+ "@loopback/repository": "^5.0.0",
127
+ "@loopback/rest": "^12.0.0",
128
+ "@loopback/testlab": "^5.0.0",
129
+ "@loopback/docs": "^5.0.0",
130
+ "glob": "^8.0.1",
131
+ "@loopback/example-hello-world": "^5.0.0",
132
+ "@loopback/example-log-extension": "^5.0.0",
133
+ "@loopback/example-rpc-server": "^5.0.0",
134
+ "@loopback/example-todo": "^6.0.0",
135
+ "@loopback/example-soap-calculator": "^5.0.0",
136
+ "@loopback/service-proxy": "^5.0.0",
137
+ "@loopback/http-caching-proxy": "^4.0.0",
138
+ "@loopback/http-server": "^4.0.0",
139
+ "@loopback/example-todo-list": "^6.0.0",
140
+ "@loopback/dist-util": "^0.4.0",
141
+ "@loopback/rest-explorer": "^5.0.0",
142
+ "@loopback/eslint-config": "^13.0.0",
143
+ "express-composition": "^1.1.0",
144
+ "@loopback/example-express-composition": "^5.0.0",
145
+ "@loopback/example-greeter-extension": "^5.0.0",
146
+ "@loopback/booter-lb3app": "^4.0.0",
147
+ "@loopback/example-lb3-application": "^5.0.0",
148
+ "eslint": "^8.14.0",
149
+ "eslint-plugin-mocha": "10.0.3",
150
+ "@loopback/example-greeting-app": "^5.0.0",
151
+ "@loopback/example-context": "^5.0.0",
152
+ "@typescript-eslint/eslint-plugin": "^5.22.0",
153
+ "@typescript-eslint/parser": "^5.22.0",
154
+ "eslint-plugin-eslint-plugin": "^4.1.0",
155
+ "eslint-config-prettier": "^8.5.0",
156
+ "@loopback/repository-tests": "^0.21.0",
157
+ "@loopback/health": "^0.11.0",
158
+ "@loopback/authorization": "^0.12.0",
159
+ "@loopback/rest-crud": "^0.14.0",
160
+ "@loopback/security": "^0.8.0",
161
+ "@loopback/authentication-passport": "^5.0.0",
162
+ "@loopback/example-metrics-prometheus": "^0.10.0",
163
+ "@loopback/metrics": "^0.11.0",
164
+ "@loopback/model-api-builder": "^4.0.0",
165
+ "@loopback/logging": "^0.9.0",
166
+ "@loopback/example-access-control-migration": "^5.0.0",
167
+ "@loopback/example-file-transfer": "^4.0.0",
168
+ "@loopback/example-rest-crud": "^4.0.0",
169
+ "@loopback/apiconnect": "^0.10.0",
170
+ "@loopback/example-validation-app": "^4.0.0",
171
+ "@loopback/cron": "^0.9.0",
172
+ "@loopback/example-multi-tenancy": "^0.13.0",
173
+ "@loopback/example-passport-login": "^4.0.0",
174
+ "@loopback/authentication-jwt": "^0.12.0",
175
+ "@loopback/context-explorer": "^0.8.0",
176
+ "@loopback/express": "^5.0.0",
177
+ "@types/js-yaml": "^3.12.4",
178
+ "js-yaml": "^3.13.1",
179
+ "@loopback/example-todo-jwt": "^4.0.0",
180
+ "@loopback/mock-oauth2-provider": "^0.6.0",
181
+ "lodash": "^4.17.21",
182
+ "@loopback/pooling": "^0.8.0",
183
+ "@loopback/typeorm": "^0.7.0",
184
+ "@loopback/example-graphql": "^0.7.0",
185
+ "@loopback/graphql": "^0.8.0",
186
+ "@loopback/filter": "^3.0.0",
187
+ "@loopback/rest-msgpack": "^0.8.0",
188
+ "@loopback/example-binding-resolution": "^0.7.0",
189
+ "@loopback/example-webpack": "^0.8.0",
190
+ "@loopback/example-socketio": "^0.6.0",
191
+ "@loopback/socketio": "^0.6.0",
192
+ "@loopback/monorepo": "^0.5.0",
193
+ "@loopback/tsdocs": "^4.0.0",
194
+ "@loopback/example-references-many": "^6.0.0"
195
+ }
52
196
  },
53
- "license": "MIT"
197
+ "gitHead": "61453a3d7a16f9f37875a3f2c2a071568eb3e3af"
54
198
  }
package/CHANGELOG.md DELETED
@@ -1,86 +0,0 @@
1
- # Change Log
2
-
3
- All notable changes to this project will be documented in this file.
4
- See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
-
6
- <a name="4.0.0-alpha.9"></a>
7
- # [4.0.0-alpha.9](https://github.com/strongloop/loopback-next/compare/@loopback/cli@4.0.0-alpha.8...@loopback/cli@4.0.0-alpha.9) (2017-12-01)
8
-
9
-
10
- ### Features
11
-
12
- * **cli:** remove default option for controller ([#768](https://github.com/strongloop/loopback-next/issues/768)) ([cc41fd6](https://github.com/strongloop/loopback-next/commit/cc41fd6))
13
-
14
-
15
-
16
-
17
- <a name="4.0.0-alpha.8"></a>
18
- # [4.0.0-alpha.8](https://github.com/strongloop/loopback-next/compare/@loopback/cli@4.0.0-alpha.7...@loopback/cli@4.0.0-alpha.8) (2017-11-30)
19
-
20
-
21
- ### Features
22
-
23
- * **cli:** Tooling for empty controller ([#762](https://github.com/strongloop/loopback-next/issues/762)) ([14e7897](https://github.com/strongloop/loopback-next/commit/14e7897))
24
-
25
-
26
-
27
-
28
- <a name="4.0.0-alpha.7"></a>
29
- # [4.0.0-alpha.7](https://github.com/strongloop/loopback-next/compare/@loopback/cli@4.0.0-alpha.6...@loopback/cli@4.0.0-alpha.7) (2017-11-29)
30
-
31
-
32
-
33
-
34
- **Note:** Version bump only for package @loopback/cli
35
-
36
- <a name="4.0.0-alpha.6"></a>
37
- # [4.0.0-alpha.6](https://github.com/strongloop/loopback-next/compare/@loopback/cli@4.0.0-alpha.5...@loopback/cli@4.0.0-alpha.6) (2017-11-09)
38
-
39
-
40
- ### Bug Fixes
41
-
42
- * Fix CLI to include .gitignore in the templates ([842a191](https://github.com/strongloop/loopback-next/commit/842a191))
43
-
44
-
45
-
46
-
47
- <a name="4.0.0-alpha.5"></a>
48
- # [4.0.0-alpha.5](https://github.com/strongloop/loopback-next/compare/@loopback/cli@4.0.0-alpha.4...@loopback/cli@4.0.0-alpha.5) (2017-11-06)
49
-
50
-
51
- ### Bug Fixes
52
-
53
- * Add start script for apps ([5ba3734](https://github.com/strongloop/loopback-next/commit/5ba3734))
54
-
55
-
56
-
57
-
58
- <a name="4.0.0-alpha.4"></a>
59
- # [4.0.0-alpha.4](https://github.com/strongloop/loopback-next/compare/@loopback/cli@4.0.0-alpha.3...@loopback/cli@4.0.0-alpha.4) (2017-11-06)
60
-
61
-
62
- ### Bug Fixes
63
-
64
- * Fix cli templates ([2ebf69f](https://github.com/strongloop/loopback-next/commit/2ebf69f))
65
-
66
-
67
-
68
-
69
- <a name="4.0.0-alpha.3"></a>
70
- # [4.0.0-alpha.3](https://github.com/strongloop/loopback-next/compare/@loopback/cli@4.0.0-alpha.2...@loopback/cli@4.0.0-alpha.3) (2017-11-06)
71
-
72
-
73
- ### Bug Fixes
74
-
75
- * Fix help text for cli ([8f41c2e](https://github.com/strongloop/loopback-next/commit/8f41c2e))
76
-
77
-
78
-
79
-
80
- <a name="4.0.0-alpha.2"></a>
81
- # 4.0.0-alpha.2 (2017-11-06)
82
-
83
-
84
- ### Features
85
-
86
- * Add experimental CLI for LoopBack 4 ([707f692](https://github.com/strongloop/loopback-next/commit/707f692))
package/bin/cli.js DELETED
@@ -1,66 +0,0 @@
1
- #!/usr/bin/env node
2
- // Copyright IBM Corp. 2017. All Rights Reserved.
3
- // Node module: @loopback/cli
4
- // This file is licensed under the MIT License.
5
- // License text available at https://opensource.org/licenses/MIT
6
-
7
- 'use strict';
8
-
9
- const assert = require('assert');
10
- const camelCaseKeys = require('camelcase-keys');
11
- const debug = require('debug')('loopback:cli');
12
- const minimist = require('minimist');
13
- const path = require('path');
14
- const yeoman = require('yeoman-environment');
15
-
16
- const opts = minimist(process.argv.slice(2), {
17
- alias: {
18
- help: 'h',
19
- version: 'v',
20
- commands: 'l',
21
- },
22
- });
23
-
24
- if (opts.version) {
25
- const ver = require('../package.json').version;
26
- console.log('Version: %s', ver);
27
- return;
28
- }
29
-
30
- var env = yeoman.createEnv();
31
-
32
- env.register(path.join(__dirname, '../generators/app'), 'loopback4:app');
33
- env.register(path.join(__dirname, '../generators/extension'), 'loopback4:extension');
34
- env.register(path.join(__dirname, '../generators/controller'), 'loopback4:controller');
35
-
36
- // list generators
37
- if (opts.commands) {
38
- console.log('Available commands: ');
39
- var list = Object.keys(env.getGeneratorsMeta())
40
- .filter(name => /^loopback4:/.test(name))
41
- .map(name => name.replace(/^loopback4:/, ' lb4 '));
42
- console.log(list.join('\n'));
43
- return;
44
- }
45
-
46
- const args = opts._;
47
- const originalCommand = args.shift();
48
- let command = 'loopback4:' + (originalCommand || 'app');
49
- const supportedCommands = env.getGeneratorsMeta();
50
-
51
- if (!(command in supportedCommands)) {
52
- command = 'loopback4:app';
53
- args.unshift(originalCommand);
54
- args.unshift(command);
55
- } else {
56
- args.unshift(command);
57
- }
58
-
59
- debug('invoking generator', args);
60
-
61
- // `yo` is adding flags converted to CamelCase
62
- const options = camelCaseKeys(opts, {exclude: ['--', /^\w$/, 'argv']});
63
- Object.assign(options, opts);
64
-
65
- debug('env.run %j %j', args, options);
66
- env.run(args, options);