@loopback/example-references-many 6.0.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.
Files changed (110) hide show
  1. package/.dockerignore +5 -0
  2. package/.eslintrc.js +8 -0
  3. package/.prettierignore +2 -0
  4. package/.prettierrc +7 -0
  5. package/.vscode/settings.json +20 -0
  6. package/.vscode/tasks.json +29 -0
  7. package/CHANGELOG.md +25 -0
  8. package/Dockerfile +28 -0
  9. package/LICENSE +25 -0
  10. package/README.md +49 -0
  11. package/data/db.json +18 -0
  12. package/dist/__tests__/acceptance/account.acceptance.d.ts +1 -0
  13. package/dist/__tests__/acceptance/account.acceptance.js +111 -0
  14. package/dist/__tests__/acceptance/account.acceptance.js.map +1 -0
  15. package/dist/__tests__/acceptance/customer.acceptance.d.ts +1 -0
  16. package/dist/__tests__/acceptance/customer.acceptance.js +163 -0
  17. package/dist/__tests__/acceptance/customer.acceptance.js.map +1 -0
  18. package/dist/__tests__/acceptance/home-page.acceptance.d.ts +1 -0
  19. package/dist/__tests__/acceptance/home-page.acceptance.js +31 -0
  20. package/dist/__tests__/acceptance/home-page.acceptance.js.map +1 -0
  21. package/dist/__tests__/acceptance/test-helper.d.ts +7 -0
  22. package/dist/__tests__/acceptance/test-helper.js +20 -0
  23. package/dist/__tests__/acceptance/test-helper.js.map +1 -0
  24. package/dist/__tests__/helpers.d.ts +26 -0
  25. package/dist/__tests__/helpers.js +101 -0
  26. package/dist/__tests__/helpers.js.map +1 -0
  27. package/dist/__tests__/integration/customer.repository.integration.d.ts +1 -0
  28. package/dist/__tests__/integration/customer.repository.integration.js +61 -0
  29. package/dist/__tests__/integration/customer.repository.integration.js.map +1 -0
  30. package/dist/__tests__/unit/controllers/account.controller.unit.d.ts +1 -0
  31. package/dist/__tests__/unit/controllers/account.controller.unit.js +106 -0
  32. package/dist/__tests__/unit/controllers/account.controller.unit.js.map +1 -0
  33. package/dist/__tests__/unit/controllers/customer.controller.unit.d.ts +1 -0
  34. package/dist/__tests__/unit/controllers/customer.controller.unit.js +108 -0
  35. package/dist/__tests__/unit/controllers/customer.controller.unit.js.map +1 -0
  36. package/dist/application.d.ts +272 -0
  37. package/dist/application.js +41 -0
  38. package/dist/application.js.map +1 -0
  39. package/dist/controllers/account.controller.d.ts +15 -0
  40. package/dist/controllers/account.controller.js +192 -0
  41. package/dist/controllers/account.controller.js.map +1 -0
  42. package/dist/controllers/customer.controller.d.ts +15 -0
  43. package/dist/controllers/customer.controller.js +192 -0
  44. package/dist/controllers/customer.controller.js.map +1 -0
  45. package/dist/controllers/index.d.ts +2 -0
  46. package/dist/controllers/index.js +10 -0
  47. package/dist/controllers/index.js.map +1 -0
  48. package/dist/datasources/db.datasource.d.ts +12 -0
  49. package/dist/datasources/db.datasource.js +34 -0
  50. package/dist/datasources/db.datasource.js.map +1 -0
  51. package/dist/datasources/index.d.ts +1 -0
  52. package/dist/datasources/index.js +9 -0
  53. package/dist/datasources/index.js.map +1 -0
  54. package/dist/index.d.ts +3 -0
  55. package/dist/index.js +44 -0
  56. package/dist/index.js.map +1 -0
  57. package/dist/migrate.d.ts +1 -0
  58. package/dist/migrate.js +25 -0
  59. package/dist/migrate.js.map +1 -0
  60. package/dist/models/account.model.d.ts +9 -0
  61. package/dist/models/account.model.js +35 -0
  62. package/dist/models/account.model.js.map +1 -0
  63. package/dist/models/customer.model.d.ts +13 -0
  64. package/dist/models/customer.model.js +45 -0
  65. package/dist/models/customer.model.js.map +1 -0
  66. package/dist/models/index.d.ts +2 -0
  67. package/dist/models/index.js +10 -0
  68. package/dist/models/index.js.map +1 -0
  69. package/dist/openapi-spec.d.ts +1 -0
  70. package/dist/openapi-spec.js +28 -0
  71. package/dist/openapi-spec.js.map +1 -0
  72. package/dist/repositories/account.repository.d.ts +6 -0
  73. package/dist/repositories/account.repository.js +23 -0
  74. package/dist/repositories/account.repository.js.map +1 -0
  75. package/dist/repositories/customer.repository.d.ts +11 -0
  76. package/dist/repositories/customer.repository.js +29 -0
  77. package/dist/repositories/customer.repository.js.map +1 -0
  78. package/dist/repositories/index.d.ts +2 -0
  79. package/dist/repositories/index.js +10 -0
  80. package/dist/repositories/index.js.map +1 -0
  81. package/dist/sequence.d.ts +3 -0
  82. package/dist/sequence.js +12 -0
  83. package/dist/sequence.js.map +1 -0
  84. package/package.json +78 -0
  85. package/public/index.html +72 -0
  86. package/src/__tests__/acceptance/account.acceptance.ts +139 -0
  87. package/src/__tests__/acceptance/customer.acceptance.ts +198 -0
  88. package/src/__tests__/acceptance/home-page.acceptance.ts +36 -0
  89. package/src/__tests__/acceptance/test-helper.ts +29 -0
  90. package/src/__tests__/helpers.ts +119 -0
  91. package/src/__tests__/integration/customer.repository.integration.ts +80 -0
  92. package/src/__tests__/unit/controllers/account.controller.unit.ts +127 -0
  93. package/src/__tests__/unit/controllers/customer.controller.unit.ts +136 -0
  94. package/src/application.ts +49 -0
  95. package/src/controllers/account.controller.ts +177 -0
  96. package/src/controllers/customer.controller.ts +177 -0
  97. package/src/controllers/index.ts +7 -0
  98. package/src/datasources/db.datasource.ts +34 -0
  99. package/src/datasources/index.ts +6 -0
  100. package/src/index.ts +42 -0
  101. package/src/migrate.ts +25 -0
  102. package/src/models/account.model.ts +31 -0
  103. package/src/models/customer.model.ts +40 -0
  104. package/src/models/index.ts +7 -0
  105. package/src/openapi-spec.ts +28 -0
  106. package/src/repositories/account.repository.ts +19 -0
  107. package/src/repositories/customer.repository.ts +42 -0
  108. package/src/repositories/index.ts +7 -0
  109. package/src/sequence.ts +8 -0
  110. package/tsconfig.json +39 -0
@@ -0,0 +1,177 @@
1
+ // Copyright IBM Corp. and LoopBack contributors 2022. All Rights Reserved.
2
+ // Node module: @loopback/example-references-many
3
+ // This file is licensed under the MIT License.
4
+ // License text available at https://opensource.org/licenses/MIT
5
+
6
+ import {
7
+ Count,
8
+ CountSchema,
9
+ Filter,
10
+ FilterExcludingWhere,
11
+ repository,
12
+ Where,
13
+ } from '@loopback/repository';
14
+ import {
15
+ del,
16
+ get,
17
+ getModelSchemaRef,
18
+ param,
19
+ patch,
20
+ post,
21
+ put,
22
+ requestBody,
23
+ } from '@loopback/rest';
24
+ import {Customer} from '../models';
25
+ import {CustomerRepository} from '../repositories';
26
+
27
+ export class CustomerController {
28
+ constructor(
29
+ @repository(CustomerRepository)
30
+ public customerRepository: CustomerRepository,
31
+ ) {}
32
+
33
+ @post('/customers', {
34
+ responses: {
35
+ '200': {
36
+ description: 'Customer model instance',
37
+ content: {'application/json': {schema: getModelSchemaRef(Customer)}},
38
+ },
39
+ },
40
+ })
41
+ async create(
42
+ @requestBody({
43
+ content: {
44
+ 'application/json': {
45
+ schema: getModelSchemaRef(Customer, {
46
+ title: 'NewCustomer',
47
+ exclude: ['id'],
48
+ }),
49
+ },
50
+ },
51
+ })
52
+ customer: Omit<Customer, 'id'>,
53
+ ): Promise<Customer> {
54
+ return this.customerRepository.create(customer);
55
+ }
56
+
57
+ @get('/customers/count', {
58
+ responses: {
59
+ '200': {
60
+ description: 'Customer model count',
61
+ content: {'application/json': {schema: CountSchema}},
62
+ },
63
+ },
64
+ })
65
+ async count(@param.where(Customer) where?: Where<Customer>): Promise<Count> {
66
+ return this.customerRepository.count(where);
67
+ }
68
+
69
+ @get('/customers', {
70
+ responses: {
71
+ '200': {
72
+ description: 'Array of Customer model instances',
73
+ content: {
74
+ 'application/json': {
75
+ schema: {
76
+ type: 'array',
77
+ items: getModelSchemaRef(Customer, {includeRelations: true}),
78
+ },
79
+ },
80
+ },
81
+ },
82
+ },
83
+ })
84
+ async find(
85
+ @param.filter(Customer) filter?: Filter<Customer>,
86
+ ): Promise<Customer[]> {
87
+ return this.customerRepository.find(filter);
88
+ }
89
+
90
+ @patch('/customers', {
91
+ responses: {
92
+ '200': {
93
+ description: 'Customer PATCH success count',
94
+ content: {'application/json': {schema: CountSchema}},
95
+ },
96
+ },
97
+ })
98
+ async updateAll(
99
+ @requestBody({
100
+ content: {
101
+ 'application/json': {
102
+ schema: getModelSchemaRef(Customer, {partial: true}),
103
+ },
104
+ },
105
+ })
106
+ customer: Customer,
107
+ @param.where(Customer) where?: Where<Customer>,
108
+ ): Promise<Count> {
109
+ return this.customerRepository.updateAll(customer, where);
110
+ }
111
+
112
+ @get('/customers/{id}', {
113
+ responses: {
114
+ '200': {
115
+ description: 'Customer model instance',
116
+ content: {
117
+ 'application/json': {
118
+ schema: getModelSchemaRef(Customer, {includeRelations: true}),
119
+ },
120
+ },
121
+ },
122
+ },
123
+ })
124
+ async findById(
125
+ @param.path.number('id') id: number,
126
+ @param.filter(Customer, {exclude: 'where'})
127
+ filter?: FilterExcludingWhere<Customer>,
128
+ ): Promise<Customer> {
129
+ return this.customerRepository.findById(id, filter);
130
+ }
131
+
132
+ @patch('/customers/{id}', {
133
+ responses: {
134
+ '204': {
135
+ description: 'Customer PATCH success',
136
+ },
137
+ },
138
+ })
139
+ async updateById(
140
+ @param.path.number('id') id: number,
141
+ @requestBody({
142
+ content: {
143
+ 'application/json': {
144
+ schema: getModelSchemaRef(Customer, {partial: true}),
145
+ },
146
+ },
147
+ })
148
+ customer: Customer,
149
+ ): Promise<void> {
150
+ await this.customerRepository.updateById(id, customer);
151
+ }
152
+
153
+ @del('/customers/{id}', {
154
+ responses: {
155
+ '204': {
156
+ description: 'Customer DELETE success',
157
+ },
158
+ },
159
+ })
160
+ async deleteById(@param.path.number('id') id: number): Promise<void> {
161
+ await this.customerRepository.deleteById(id);
162
+ }
163
+
164
+ @put('/customers/{id}', {
165
+ responses: {
166
+ '204': {
167
+ description: 'Customer PUT success',
168
+ },
169
+ },
170
+ })
171
+ async replaceById(
172
+ @param.path.number('id') id: number,
173
+ @requestBody() customer: Customer,
174
+ ): Promise<void> {
175
+ await this.customerRepository.replaceById(id, customer);
176
+ }
177
+ }
@@ -0,0 +1,7 @@
1
+ // Copyright IBM Corp. and LoopBack contributors 2022. All Rights Reserved.
2
+ // Node module: @loopback/example-references-many
3
+ // This file is licensed under the MIT License.
4
+ // License text available at https://opensource.org/licenses/MIT
5
+
6
+ export * from './account.controller';
7
+ export * from './customer.controller';
@@ -0,0 +1,34 @@
1
+ // Copyright IBM Corp. and LoopBack contributors 2022. All Rights Reserved.
2
+ // Node module: @loopback/example-references-many
3
+ // This file is licensed under the MIT License.
4
+ // License text available at https://opensource.org/licenses/MIT
5
+
6
+ import {inject, lifeCycleObserver, LifeCycleObserver} from '@loopback/core';
7
+ import {juggler} from '@loopback/repository';
8
+
9
+ const config = {
10
+ name: 'db',
11
+ connector: 'memory',
12
+ localStorage: '',
13
+ file: './data/db.json',
14
+ };
15
+
16
+ // Observe application's life cycle to disconnect the datasource when
17
+ // application is stopped. This allows the application to be shut down
18
+ // gracefully. The `stop()` method is inherited from `juggler.DataSource`.
19
+ // Learn more at https://loopback.io/doc/en/lb4/Life-cycle.html
20
+ @lifeCycleObserver('datasource')
21
+ export class DbDataSource
22
+ extends juggler.DataSource
23
+ implements LifeCycleObserver
24
+ {
25
+ static dataSourceName = 'db';
26
+ static readonly defaultConfig = config;
27
+
28
+ constructor(
29
+ @inject('datasources.config.db', {optional: true})
30
+ dsConfig: object = config,
31
+ ) {
32
+ super(dsConfig);
33
+ }
34
+ }
@@ -0,0 +1,6 @@
1
+ // Copyright IBM Corp. and LoopBack contributors 2018,2020 All Rights Reserved.
2
+ // Node module: @loopback/example-references-many
3
+ // This file is licensed under the MIT License.
4
+ // License text available at https://opensource.org/licenses/MIT
5
+
6
+ export * from './db.datasource';
package/src/index.ts ADDED
@@ -0,0 +1,42 @@
1
+ // Copyright IBM Corp. and LoopBack contributors 2022. All Rights Reserved.
2
+ // Node module: @loopback/example-references-many
3
+ // This file is licensed under the MIT License.
4
+ // License text available at https://opensource.org/licenses/MIT
5
+
6
+ import {ApplicationConfig, ReferencesManyApplication} from './application';
7
+
8
+ export * from './application';
9
+
10
+ export async function main(options: ApplicationConfig = {}) {
11
+ const app = new ReferencesManyApplication(options);
12
+ await app.boot();
13
+ await app.start();
14
+
15
+ const url = app.restServer.url;
16
+ console.log(`Server is running at ${url}`);
17
+ return app;
18
+ }
19
+
20
+ if (require.main === module) {
21
+ // Run the application
22
+ const config = {
23
+ rest: {
24
+ port: +(process.env.PORT ?? 3000),
25
+ host: process.env.HOST,
26
+ // The `gracePeriodForClose` provides a graceful close for http/https
27
+ // servers with keep-alive clients. The default value is `Infinity`
28
+ // (don't force-close). If you want to immediately destroy all sockets
29
+ // upon stop, set its value to `0`.
30
+ // See https://www.npmjs.com/package/stoppable
31
+ gracePeriodForClose: 5000, // 5 seconds
32
+ openApiSpec: {
33
+ // useful when used with OpenAPI-to-GraphQL to locate your application
34
+ setServersFromRequest: true,
35
+ },
36
+ },
37
+ };
38
+ main(config).catch(err => {
39
+ console.error('Cannot start the application.', err);
40
+ process.exit(1);
41
+ });
42
+ }
package/src/migrate.ts ADDED
@@ -0,0 +1,25 @@
1
+ // Copyright IBM Corp. and LoopBack contributors 2022. All Rights Reserved.
2
+ // Node module: @loopback/example-references-many
3
+ // This file is licensed under the MIT License.
4
+ // License text available at https://opensource.org/licenses/MIT
5
+
6
+ import {ReferencesManyApplication} from './application';
7
+
8
+ export async function migrate(args: string[]) {
9
+ const existingSchema = args.includes('--rebuild') ? 'drop' : 'alter';
10
+ console.log('Migrating schemas (%s existing schema)', existingSchema);
11
+
12
+ const app = new ReferencesManyApplication();
13
+ await app.boot();
14
+ await app.migrateSchema({existingSchema});
15
+
16
+ // Connectors usually keep a pool of opened connections,
17
+ // this keeps the process running even after all work is done.
18
+ // We need to exit explicitly.
19
+ process.exit(0);
20
+ }
21
+
22
+ migrate(process.argv).catch(err => {
23
+ console.error('Cannot migrate database schema', err);
24
+ process.exit(1);
25
+ });
@@ -0,0 +1,31 @@
1
+ // Copyright IBM Corp. and LoopBack contributors 2022. All Rights Reserved.
2
+ // Node module: @loopback/example-references-many
3
+ // This file is licensed under the MIT License.
4
+ // License text available at https://opensource.org/licenses/MIT
5
+ import {Entity, model, property} from '@loopback/repository';
6
+
7
+ @model()
8
+ export class Account extends Entity {
9
+ @property({
10
+ type: 'number',
11
+ id: true,
12
+ generated: false,
13
+ })
14
+ id: number;
15
+
16
+ @property({
17
+ type: 'number',
18
+ default: 0,
19
+ })
20
+ balance: number;
21
+
22
+ constructor(data?: Partial<Account>) {
23
+ super(data);
24
+ }
25
+ }
26
+
27
+ export interface AccountRelations {
28
+ // describe navigational properties here
29
+ }
30
+
31
+ export type AccountWithRelations = Account & AccountRelations;
@@ -0,0 +1,40 @@
1
+ // Copyright IBM Corp. and LoopBack contributors 2022. All Rights Reserved.
2
+ // Node module: @loopback/example-references-many
3
+ // This file is licensed under the MIT License.
4
+ // License text available at https://opensource.org/licenses/MIT
5
+
6
+ import {Entity, model, property, referencesMany} from '@loopback/repository';
7
+ import {Account, AccountWithRelations} from './account.model';
8
+
9
+ @model()
10
+ export class Customer extends Entity {
11
+ @property({
12
+ type: 'number',
13
+ id: true,
14
+ generated: true,
15
+ })
16
+ id: number;
17
+
18
+ @property({
19
+ type: 'string',
20
+ })
21
+ firstName: string;
22
+
23
+ @property({
24
+ type: 'string',
25
+ })
26
+ lastName: string;
27
+
28
+ @referencesMany(() => Account)
29
+ accountIds?: number[];
30
+
31
+ constructor(data?: Partial<Customer>) {
32
+ super(data);
33
+ }
34
+ }
35
+
36
+ export interface CustomerRelations {
37
+ accounts?: AccountWithRelations;
38
+ }
39
+
40
+ export type CustomerWithRelations = Customer & CustomerRelations;
@@ -0,0 +1,7 @@
1
+ // Copyright IBM Corp. and LoopBack contributors 2018,2020 All Rights Reserved.
2
+ // Node module: @loopback/example-references-many
3
+ // This file is licensed under the MIT License.
4
+ // License text available at https://opensource.org/licenses/MIT
5
+
6
+ export * from './account.model';
7
+ export * from './customer.model';
@@ -0,0 +1,28 @@
1
+ // Copyright IBM Corp. and LoopBack contributors 2020. All Rights Reserved.
2
+ // Node module: @loopback/example-references-many
3
+ // This file is licensed under the MIT License.
4
+ // License text available at https://opensource.org/licenses/MIT
5
+
6
+ import {ApplicationConfig} from '@loopback/core';
7
+ import {ReferencesManyApplication} from './application';
8
+
9
+ /**
10
+ * Export the OpenAPI spec from the application
11
+ */
12
+ async function exportOpenApiSpec(): Promise<void> {
13
+ const config: ApplicationConfig = {
14
+ rest: {
15
+ port: +(process.env.PORT ?? 3000),
16
+ host: process.env.HOST ?? 'localhost',
17
+ },
18
+ };
19
+ const outFile = process.argv[2] ?? '';
20
+ const app = new ReferencesManyApplication(config);
21
+ await app.boot();
22
+ await app.exportOpenApiSpec(outFile);
23
+ }
24
+
25
+ exportOpenApiSpec().catch(err => {
26
+ console.error('Fail to export OpenAPI spec from the application.', err);
27
+ process.exit(1);
28
+ });
@@ -0,0 +1,19 @@
1
+ // Copyright IBM Corp. and LoopBack contributors 2022. All Rights Reserved.
2
+ // Node module: @loopback/example-references-many
3
+ // This file is licensed under the MIT License.
4
+ // License text available at https://opensource.org/licenses/MIT
5
+
6
+ import {inject} from '@loopback/core';
7
+ import {DefaultCrudRepository} from '@loopback/repository';
8
+ import {DbDataSource} from '../datasources';
9
+ import {Account, AccountRelations} from '../models';
10
+
11
+ export class AccountRepository extends DefaultCrudRepository<
12
+ Account,
13
+ typeof Account.prototype.id,
14
+ AccountRelations
15
+ > {
16
+ constructor(@inject('datasources.db') dataSource: DbDataSource) {
17
+ super(Account, dataSource);
18
+ }
19
+ }
@@ -0,0 +1,42 @@
1
+ // Copyright IBM Corp. and LoopBack contributors 2022. All Rights Reserved.
2
+ // Node module: @loopback/example-references-many
3
+ // This file is licensed under the MIT License.
4
+ // License text available at https://opensource.org/licenses/MIT
5
+
6
+ import {Getter, inject} from '@loopback/core';
7
+ import {
8
+ DefaultCrudRepository,
9
+ ReferencesManyAccessor,
10
+ repository,
11
+ } from '@loopback/repository';
12
+ import {DbDataSource} from '../datasources';
13
+ import {Account, Customer, CustomerRelations} from '../models';
14
+ import {AccountRepository} from './account.repository';
15
+
16
+ export class CustomerRepository extends DefaultCrudRepository<
17
+ Customer,
18
+ typeof Customer.prototype.id,
19
+ CustomerRelations
20
+ > {
21
+ public readonly accounts: ReferencesManyAccessor<
22
+ Account,
23
+ typeof Account.prototype.id
24
+ >;
25
+
26
+ constructor(
27
+ @inject('datasources.db') dataSource: DbDataSource,
28
+ @repository.getter('AccountRepository')
29
+ protected accountRepositoryGetter: Getter<AccountRepository>,
30
+ @repository.getter('CustomerRepository')
31
+ protected customerRepositoryGetter: Getter<CustomerRepository>,
32
+ ) {
33
+ super(Customer, dataSource);
34
+
35
+ this.accounts = this.createReferencesManyAccessorFor(
36
+ 'accounts',
37
+ accountRepositoryGetter,
38
+ );
39
+
40
+ this.registerInclusionResolver('accounts', this.accounts.inclusionResolver);
41
+ }
42
+ }
@@ -0,0 +1,7 @@
1
+ // Copyright IBM Corp. and LoopBack contributors 2022. All Rights Reserved.
2
+ // Node module: @loopback/example-references-many
3
+ // This file is licensed under the MIT License.
4
+ // License text available at https://opensource.org/licenses/MIT
5
+
6
+ export * from './account.repository';
7
+ export * from './customer.repository';
@@ -0,0 +1,8 @@
1
+ // Copyright IBM Corp. and LoopBack contributors 2022. All Rights Reserved.
2
+ // Node module: @loopback/example-references-many
3
+ // This file is licensed under the MIT License.
4
+ // License text available at https://opensource.org/licenses/MIT
5
+
6
+ import {MiddlewareSequence} from '@loopback/rest';
7
+
8
+ export class MySequence extends MiddlewareSequence {}
package/tsconfig.json ADDED
@@ -0,0 +1,39 @@
1
+ {
2
+ "$schema": "http://json.schemastore.org/tsconfig",
3
+ "extends": "@loopback/build/config/tsconfig.common.json",
4
+ "compilerOptions": {
5
+ "outDir": "dist",
6
+ "rootDir": "src",
7
+ "composite": true
8
+ },
9
+ "include": [
10
+ "src/**/*",
11
+ "src/**/*.json"
12
+ ],
13
+ "references": [
14
+ {
15
+ "path": "../../packages/boot/tsconfig.json"
16
+ },
17
+ {
18
+ "path": "../../packages/core/tsconfig.json"
19
+ },
20
+ {
21
+ "path": "../../packages/http-caching-proxy/tsconfig.json"
22
+ },
23
+ {
24
+ "path": "../../packages/repository/tsconfig.json"
25
+ },
26
+ {
27
+ "path": "../../packages/rest-explorer/tsconfig.json"
28
+ },
29
+ {
30
+ "path": "../../packages/rest/tsconfig.json"
31
+ },
32
+ {
33
+ "path": "../../packages/service-proxy/tsconfig.json"
34
+ },
35
+ {
36
+ "path": "../../packages/testlab/tsconfig.json"
37
+ }
38
+ ]
39
+ }