@loopback/cli 4.2.0 → 4.2.1

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.
@@ -7,8 +7,7 @@
7
7
 
8
8
  const fse = require('fs-extra');
9
9
  const _ = require('lodash');
10
- const {promisify} = require('util');
11
- const glob = promisify(require('glob'));
10
+ const {glob} = require('glob');
12
11
 
13
12
  const defaultFS = {
14
13
  write: fse.writeFile,
@@ -38,7 +37,7 @@ async function jsOrTsFiles(cwd, paths = []) {
38
37
  });
39
38
  }
40
39
  paths = await Promise.all(globs);
41
- paths = _.flatten(paths);
40
+ paths = _.map(_.flatten(paths), pathString => pathString.replace(/\\/g, '/'));
42
41
  return _.filter(paths, /\.(js|ts)$/);
43
42
  }
44
43
 
@@ -132,7 +132,6 @@ module.exports = class DiscoveryGenerator extends ArtifactGenerator {
132
132
  path.resolve(dsDir, `${utils.toFileName(s)}.datasource.js`),
133
133
  ),
134
134
  );
135
-
136
135
  if (this.options.dataSource) {
137
136
  if (
138
137
  this.dataSourceChoices
@@ -309,6 +308,11 @@ module.exports = class DiscoveryGenerator extends ArtifactGenerator {
309
308
  // eslint-disable-next-line @typescript-eslint/prefer-for-of
310
309
  for (let i = 0; i < this.discoveringModels.length; i++) {
311
310
  const modelInfo = this.discoveringModels[i];
311
+ // passing connector specific options from the cli through connectorDiscoveryOptions
312
+ let discoveryOptions = {};
313
+ if (this.options.connectorDiscoveryOptions) {
314
+ discoveryOptions = JSON.parse(this.options.connectorDiscoveryOptions);
315
+ }
312
316
  debug(`Discovering: ${modelInfo.name}...`);
313
317
  const modelDefinition = await modelMaker.discoverSingleModel(
314
318
  this.artifactInfo.dataSource,
@@ -317,6 +321,7 @@ module.exports = class DiscoveryGenerator extends ArtifactGenerator {
317
321
  schema: modelInfo.owner,
318
322
  disableCamelCase: this.artifactInfo.disableCamelCase,
319
323
  associations: this.options.relations,
324
+ ...discoveryOptions,
320
325
  },
321
326
  );
322
327
  if (this.options.optionalId) {
@@ -77,6 +77,7 @@ module.exports = class BaseRelationGenerator extends ArtifactGenerator {
77
77
  const imports = this._getRepositoryRequiredImports(
78
78
  options.destinationModel,
79
79
  this.artifactInfo.dstRepositoryClassName,
80
+ options.sourceModel,
80
81
  );
81
82
 
82
83
  relationUtils.addRequiredImports(
@@ -187,8 +188,12 @@ module.exports = class BaseRelationGenerator extends ArtifactGenerator {
187
188
  this.artifactInfo.relationName = options.relationName;
188
189
  }
189
190
 
190
- _getRepositoryRequiredImports(dstModelClassName, dstRepositoryClassName) {
191
- return [
191
+ _getRepositoryRequiredImports(
192
+ dstModelClassName,
193
+ dstRepositoryClassName,
194
+ srcModelClass,
195
+ ) {
196
+ const imports = [
192
197
  {
193
198
  name: dstModelClassName,
194
199
  module: '../models',
@@ -201,11 +206,14 @@ module.exports = class BaseRelationGenerator extends ArtifactGenerator {
201
206
  name: 'Getter',
202
207
  module: '@loopback/core',
203
208
  },
204
- {
209
+ ];
210
+ if (dstModelClassName !== srcModelClass) {
211
+ imports.push({
205
212
  name: dstRepositoryClassName,
206
213
  module: `./${utils.toFileName(dstModelClassName)}.repository`,
207
- },
208
- ];
214
+ });
215
+ }
216
+ return imports;
209
217
  }
210
218
 
211
219
  _getRepositoryRelationPropertyName() {
@@ -106,7 +106,11 @@ module.exports = class BelongsToRelationGenerator extends (
106
106
  );
107
107
 
108
108
  relationUtils.addProperty(sourceClass, modelProperty);
109
- const imports = relationUtils.getRequiredImports(targetModel, relationType);
109
+ const imports = relationUtils.getRequiredImports(
110
+ targetModel,
111
+ relationType,
112
+ sourceModel,
113
+ );
110
114
  relationUtils.addRequiredImports(sourceFile, imports);
111
115
 
112
116
  sourceClass.formatText();
@@ -147,6 +151,7 @@ module.exports = class BelongsToRelationGenerator extends (
147
151
  const importsArray = super._getRepositoryRequiredImports(
148
152
  dstModelClassName,
149
153
  dstRepositoryClassName,
154
+ this.artifactInfo.srcModelClass,
150
155
  );
151
156
  importsArray.push({
152
157
  name: 'BelongsToAccessor',
@@ -6,8 +6,8 @@ import {
6
6
  get,
7
7
  getModelSchemaRef,
8
8
  } from '@loopback/rest';
9
- import {
10
- <%= sourceModelClassName %>,
9
+ import {<%if (sourceModelClassName != targetModelClassName) { %>
10
+ <%= sourceModelClassName %>,<% } %>
11
11
  <%= targetModelClassName %>,
12
12
  } from '../models';
13
13
  import {<%= sourceRepositoryClassName %>} from '../repositories';
@@ -209,17 +209,20 @@ exports.addRequiredImports = function (sourceFile, imports) {
209
209
  }
210
210
  };
211
211
 
212
- exports.getRequiredImports = function (targetModel, relationType) {
213
- return [
214
- {
215
- name: targetModel,
216
- module: './' + utils.toFileName(targetModel) + '.model',
217
- },
212
+ exports.getRequiredImports = function (targetModel, relationType, sourceModel) {
213
+ const requiredImports = [
218
214
  {
219
215
  name: relationType,
220
216
  module: '@loopback/repository',
221
217
  },
222
218
  ];
219
+ if (sourceModel !== targetModel) {
220
+ requiredImports.push({
221
+ name: targetModel,
222
+ module: './' + utils.toFileName(targetModel) + '.model',
223
+ });
224
+ }
225
+ return requiredImports;
223
226
  };
224
227
 
225
228
  exports.addCurrentImport = function (sourceFile, currentImport) {
@@ -8,8 +8,9 @@ import {<%= modelName %>} from '../models';
8
8
  import {<%=repositoryBaseClass %>} from './<%=repositoryBaseFile %>';
9
9
  <% } -%>
10
10
 
11
- export class <%= className %>Repository extends <%= repositoryBaseClass %><
12
- <%= modelName %>
11
+ <% if (isRepositoryBaseBuiltin) { %>export class <%= className %>Repository extends <%= repositoryTypeClass %><
12
+ <%} else { %>export class <%= className %>Repository extends <%= repositoryBaseClass %><
13
+ <% } %><%= modelName %>
13
14
  > {
14
15
  constructor(
15
16
  @inject('datasources.<%= dataSourceName %>') dataSource: <%= dataSourceClassName %>,
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@loopback/cli",
3
3
  "description": "Yeoman generator for LoopBack 4",
4
- "version": "4.2.0",
4
+ "version": "4.2.1",
5
5
  "keywords": [
6
6
  "LoopBack",
7
7
  "CLI",
@@ -40,26 +40,26 @@
40
40
  ],
41
41
  "dependencies": {
42
42
  "@lerna/project": "^6.4.1",
43
- "@openapi-contrib/openapi-schema-to-json-schema": "^3.2.0",
44
- "@phenomnomnominal/tsquery": "^5.0.0",
43
+ "@openapi-contrib/openapi-schema-to-json-schema": "^3.3.2",
44
+ "@phenomnomnominal/tsquery": "^5.0.1",
45
45
  "camelcase-keys": "^7.0.2",
46
46
  "chalk": "^4.1.2",
47
47
  "change-case": "^4.1.2",
48
48
  "debug": "^4.3.4",
49
- "fs-extra": "^10.1.0",
50
- "glob": "^8.1.0",
49
+ "fs-extra": "^11.1.1",
50
+ "glob": "^10.0.0",
51
51
  "inquirer-autocomplete-prompt": "^2.0.0",
52
52
  "json5": "^2.2.3",
53
53
  "latest-version": "^5.1.0",
54
54
  "lodash": "^4.17.21",
55
- "minimatch": "^6.2.0",
55
+ "minimatch": "^9.0.0",
56
56
  "minimist": "^1.2.8",
57
- "mkdirp": "^2.1.5",
57
+ "mkdirp": "^3.0.0",
58
58
  "natural-compare": "^1.4.0",
59
- "pacote": "^15.0.8",
59
+ "pacote": "^15.1.1",
60
60
  "pluralize": "^8.0.0",
61
61
  "regenerate": "^1.4.2",
62
- "semver": "^7.3.8",
62
+ "semver": "^7.4.0",
63
63
  "slash": "^3.0.0",
64
64
  "spdx-license-list": "^6.6.0",
65
65
  "stringify-object": "^3.3.0",
@@ -70,7 +70,7 @@
70
70
  "terminal-link": "^2.1.1",
71
71
  "tildify": "^2.0.0",
72
72
  "ts-morph": "^17.0.1",
73
- "typescript": "~4.9.4",
73
+ "typescript": "~4.9.5",
74
74
  "unicode-10.0.0": "^0.7.5",
75
75
  "untildify": "^4.0.0",
76
76
  "update-notifier": "^5.1.0",
@@ -81,23 +81,23 @@
81
81
  "yeoman-generator": "^5.8.0"
82
82
  },
83
83
  "devDependencies": {
84
- "@lerna/bootstrap": "^6.5.1",
85
- "@loopback/build": "^9.0.9",
86
- "@loopback/eslint-config": "^13.0.9",
87
- "@loopback/testlab": "^5.0.9",
84
+ "@lerna/bootstrap": "6.5.1",
85
+ "@loopback/build": "^9.0.10",
86
+ "@loopback/eslint-config": "^13.0.10",
87
+ "@loopback/testlab": "^5.0.10",
88
88
  "@types/ejs": "^3.1.2",
89
- "@types/fs-extra": "^9.0.13",
89
+ "@types/fs-extra": "^11.0.1",
90
90
  "@types/minimatch": "^5.1.2",
91
- "@types/node": "^14.18.36",
91
+ "@types/node": "^14.18.42",
92
92
  "@types/yeoman-environment": "^2.10.8",
93
93
  "@types/yeoman-generator": "^5.2.11",
94
94
  "loopback": "^3.28.0",
95
- "loopback-datasource-juggler": "^4.28.2",
96
- "mem-fs": "^2.2.1",
95
+ "loopback-datasource-juggler": "^4.28.3",
96
+ "mem-fs": "^2.3.0",
97
97
  "mem-fs-editor": "^9.7.0",
98
98
  "mock-stdin": "^1.0.0",
99
- "rimraf": "^3.0.2",
100
- "sinon": "^15.0.1",
99
+ "rimraf": "^5.0.0",
100
+ "sinon": "^15.0.3",
101
101
  "strong-globalize-cli": "7.1.0",
102
102
  "yeoman-assert": "^3.1.1",
103
103
  "yeoman-test": "^6.3.0"
@@ -106,97 +106,97 @@
106
106
  "templateDependencies": {
107
107
  "tslib": "^2.0.0",
108
108
  "@types/mocha": "^10.0.1",
109
- "@types/node": "^14.18.36",
109
+ "@types/node": "^14.18.42",
110
110
  "cross-spawn": "^7.0.3",
111
111
  "debug": "^4.3.4",
112
- "fs-extra": "^10.1.0",
112
+ "fs-extra": "^11.1.1",
113
113
  "mocha": "^10.2.0",
114
114
  "nyc": "^15.1.0",
115
- "prettier": "^2.8.4",
116
- "rimraf": "^3.0.2",
115
+ "prettier": "^2.8.7",
116
+ "rimraf": "^5.0.0",
117
117
  "source-map-support": "^0.5.21",
118
- "typescript": "~4.9.4",
119
- "@loopback/authentication": "^9.0.9",
120
- "@loopback/boot": "^5.0.9",
121
- "@loopback/build": "^9.0.9",
122
- "@loopback/cli": "^4.2.0",
123
- "@loopback/context": "^5.0.9",
124
- "@loopback/core": "^4.0.9",
125
- "@loopback/metadata": "^5.0.9",
126
- "@loopback/openapi-spec-builder": "^5.0.9",
127
- "@loopback/openapi-v3": "^8.0.9",
128
- "@loopback/repository-json-schema": "^6.1.3",
129
- "@loopback/repository": "^5.1.4",
130
- "@loopback/rest": "^12.0.9",
131
- "@loopback/testlab": "^5.0.9",
132
- "@loopback/docs": "^5.2.0",
133
- "glob": "^8.1.0",
134
- "@loopback/example-hello-world": "^5.0.9",
135
- "@loopback/example-log-extension": "^5.0.9",
136
- "@loopback/example-rpc-server": "^5.0.9",
137
- "@loopback/example-todo": "^6.0.9",
138
- "@loopback/example-soap-calculator": "^5.0.9",
139
- "@loopback/service-proxy": "^5.0.9",
140
- "@loopback/http-caching-proxy": "^4.0.9",
141
- "@loopback/http-server": "^4.0.9",
142
- "@loopback/example-todo-list": "^6.0.9",
118
+ "typescript": "~4.9.5",
119
+ "@loopback/authentication": "^9.0.10",
120
+ "@loopback/boot": "^5.0.10",
121
+ "@loopback/build": "^9.0.10",
122
+ "@loopback/cli": "^4.2.1",
123
+ "@loopback/context": "^5.0.10",
124
+ "@loopback/core": "^4.0.10",
125
+ "@loopback/metadata": "^5.0.10",
126
+ "@loopback/openapi-spec-builder": "^5.0.10",
127
+ "@loopback/openapi-v3": "^8.0.10",
128
+ "@loopback/repository-json-schema": "^6.1.4",
129
+ "@loopback/repository": "^5.1.5",
130
+ "@loopback/rest": "^12.0.10",
131
+ "@loopback/testlab": "^5.0.10",
132
+ "@loopback/docs": "^5.2.1",
133
+ "glob": "^10.0.0",
134
+ "@loopback/example-hello-world": "^5.0.10",
135
+ "@loopback/example-log-extension": "^5.0.10",
136
+ "@loopback/example-rpc-server": "^5.0.10",
137
+ "@loopback/example-todo": "^6.0.10",
138
+ "@loopback/example-soap-calculator": "^5.0.10",
139
+ "@loopback/service-proxy": "^5.0.10",
140
+ "@loopback/http-caching-proxy": "^4.0.10",
141
+ "@loopback/http-server": "^4.0.10",
142
+ "@loopback/example-todo-list": "^6.0.10",
143
143
  "@loopback/dist-util": "^0.4.0",
144
- "@loopback/rest-explorer": "^5.0.9",
145
- "@loopback/eslint-config": "^13.0.9",
144
+ "@loopback/rest-explorer": "^5.0.10",
145
+ "@loopback/eslint-config": "^13.0.10",
146
146
  "express-composition": "^1.1.0",
147
- "@loopback/example-express-composition": "^5.0.9",
148
- "@loopback/example-greeter-extension": "^5.0.9",
149
- "@loopback/booter-lb3app": "^4.0.9",
150
- "@loopback/example-lb3-application": "^5.0.9",
151
- "eslint": "^8.35.0",
147
+ "@loopback/example-express-composition": "^5.0.10",
148
+ "@loopback/example-greeter-extension": "^5.0.10",
149
+ "@loopback/booter-lb3app": "^4.0.10",
150
+ "@loopback/example-lb3-application": "^5.0.10",
151
+ "eslint": "^8.38.0",
152
152
  "eslint-plugin-mocha": "^10.1.0",
153
- "@loopback/example-greeting-app": "^5.0.9",
154
- "@loopback/example-context": "^5.0.9",
155
- "@typescript-eslint/eslint-plugin": "^5.54.0",
156
- "@typescript-eslint/parser": "^5.54.0",
153
+ "@loopback/example-greeting-app": "^5.0.10",
154
+ "@loopback/example-context": "^5.0.10",
155
+ "@typescript-eslint/eslint-plugin": "^5.58.0",
156
+ "@typescript-eslint/parser": "^5.58.0",
157
157
  "eslint-plugin-eslint-plugin": "^5.0.8",
158
- "eslint-config-prettier": "^8.7.0",
159
- "@loopback/repository-tests": "^0.21.9",
160
- "@loopback/health": "^0.11.9",
161
- "@loopback/authorization": "^0.12.9",
162
- "@loopback/rest-crud": "^0.15.8",
163
- "@loopback/security": "^0.8.9",
164
- "@loopback/authentication-passport": "^5.0.9",
165
- "@loopback/example-metrics-prometheus": "^0.10.9",
166
- "@loopback/metrics": "^0.11.9",
167
- "@loopback/model-api-builder": "^4.0.9",
168
- "@loopback/logging": "^0.9.9",
169
- "@loopback/example-access-control-migration": "^5.0.9",
170
- "@loopback/example-file-transfer": "^4.0.9",
171
- "@loopback/example-rest-crud": "^4.0.9",
172
- "@loopback/apiconnect": "^0.10.9",
173
- "@loopback/example-validation-app": "^4.0.9",
174
- "@loopback/cron": "^0.9.9",
175
- "@loopback/example-multi-tenancy": "^0.13.9",
176
- "@loopback/example-passport-login": "^4.0.9",
177
- "@loopback/authentication-jwt": "^0.12.9",
178
- "@loopback/context-explorer": "^0.8.9",
179
- "@loopback/express": "^5.0.9",
158
+ "eslint-config-prettier": "^8.8.0",
159
+ "@loopback/repository-tests": "^0.21.10",
160
+ "@loopback/health": "^0.11.10",
161
+ "@loopback/authorization": "^0.12.10",
162
+ "@loopback/rest-crud": "^0.15.9",
163
+ "@loopback/security": "^0.8.10",
164
+ "@loopback/authentication-passport": "^5.0.10",
165
+ "@loopback/example-metrics-prometheus": "^0.10.10",
166
+ "@loopback/metrics": "^0.11.10",
167
+ "@loopback/model-api-builder": "^4.0.10",
168
+ "@loopback/logging": "^0.9.10",
169
+ "@loopback/example-access-control-migration": "^5.0.10",
170
+ "@loopback/example-file-transfer": "^4.0.10",
171
+ "@loopback/example-rest-crud": "^4.0.10",
172
+ "@loopback/apiconnect": "^0.10.10",
173
+ "@loopback/example-validation-app": "^4.0.10",
174
+ "@loopback/cron": "^0.9.10",
175
+ "@loopback/example-multi-tenancy": "^0.13.10",
176
+ "@loopback/example-passport-login": "^4.0.10",
177
+ "@loopback/authentication-jwt": "^0.12.10",
178
+ "@loopback/context-explorer": "^0.8.10",
179
+ "@loopback/express": "^5.0.10",
180
180
  "@types/js-yaml": "^3.12.4",
181
181
  "js-yaml": "^3.13.1",
182
- "@loopback/example-todo-jwt": "^4.0.9",
183
- "@loopback/mock-oauth2-provider": "^0.6.9",
182
+ "@loopback/example-todo-jwt": "^4.0.10",
183
+ "@loopback/mock-oauth2-provider": "^0.6.10",
184
184
  "lodash": "^4.17.21",
185
- "@loopback/pooling": "^0.8.9",
186
- "@loopback/typeorm": "^0.7.9",
187
- "@loopback/example-graphql": "^0.7.9",
188
- "@loopback/graphql": "^0.8.9",
189
- "@loopback/filter": "^3.0.9",
190
- "@loopback/rest-msgpack": "^0.8.9",
191
- "@loopback/example-binding-resolution": "^0.7.9",
192
- "@loopback/example-webpack": "^0.8.9",
193
- "@loopback/example-socketio": "^0.6.9",
194
- "@loopback/socketio": "^0.6.9",
195
- "@loopback/monorepo": "^0.5.9",
196
- "@loopback/tsdocs": "^4.0.9",
197
- "@loopback/example-references-many": "^6.0.9",
198
- "@loopback/sequelize": "^0.1.0"
185
+ "@loopback/pooling": "^0.8.10",
186
+ "@loopback/typeorm": "^0.7.10",
187
+ "@loopback/example-graphql": "^0.7.10",
188
+ "@loopback/graphql": "^0.8.10",
189
+ "@loopback/filter": "^3.0.10",
190
+ "@loopback/rest-msgpack": "^0.8.10",
191
+ "@loopback/example-binding-resolution": "^0.7.10",
192
+ "@loopback/example-webpack": "^0.8.10",
193
+ "@loopback/example-socketio": "^0.6.10",
194
+ "@loopback/socketio": "^0.6.10",
195
+ "@loopback/monorepo": "^0.5.10",
196
+ "@loopback/tsdocs": "^4.0.10",
197
+ "@loopback/example-references-many": "^6.0.10",
198
+ "@loopback/sequelize": "^0.2.0"
199
199
  }
200
200
  },
201
- "gitHead": "6bee26c2dad33cc4668cd0a4a127c9e7596dfef9"
201
+ "gitHead": "3a98ded2622420d0f09dbc3c0fe961c0234b097f"
202
202
  }