mirror of
https://github.com/nestjs/nest.git
synced 2026-02-26 06:35:32 +00:00
Compare commits
97 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ad08626ea7 | ||
|
|
d893469018 | ||
|
|
c09337ded2 | ||
|
|
566301232b | ||
|
|
429dfa1382 | ||
|
|
4eacd875c1 | ||
|
|
0b24affe6e | ||
|
|
d478feb65f | ||
|
|
27efd41459 | ||
|
|
1ccaeab23c | ||
|
|
efcfd0261f | ||
|
|
3b0c968ee5 | ||
|
|
8a9310909b | ||
|
|
3f3a3c2d8b | ||
|
|
bdba706ed5 | ||
|
|
9e22b7a470 | ||
|
|
95a6defd32 | ||
|
|
f7715defaf | ||
|
|
2b70d17062 | ||
|
|
9e9b11b23f | ||
|
|
b6ba905768 | ||
|
|
25806abac0 | ||
|
|
cd6d5cbe4a | ||
|
|
dad922ae2e | ||
|
|
89e5b74a06 | ||
|
|
5b39d537de | ||
|
|
8fcd80b32b | ||
|
|
816bc91be0 | ||
|
|
380d230716 | ||
|
|
e8f188e78b | ||
|
|
d22f7496e0 | ||
|
|
ac3c8c78c4 | ||
|
|
9739aa6a1a | ||
|
|
df4d99d92e | ||
|
|
03e1a91b85 | ||
|
|
a4de5f93e8 | ||
|
|
839acdf232 | ||
|
|
ab8ec345d4 | ||
|
|
fd859f4ac7 | ||
|
|
bf41df7da3 | ||
|
|
bd494201d6 | ||
|
|
6cb41a5e00 | ||
|
|
eb2c6df9ba | ||
|
|
248596ba59 | ||
|
|
8172c09435 | ||
|
|
d68bead326 | ||
|
|
fd310916c6 | ||
|
|
840071dbdb | ||
|
|
f59cf5e81c | ||
|
|
b1b024e7c7 | ||
|
|
44a655d820 | ||
|
|
009f6d2fc3 | ||
|
|
e682c4c1cf | ||
|
|
2e3b51ba06 | ||
|
|
db3d442d19 | ||
|
|
50716eb0cd | ||
|
|
8cd150d55c | ||
|
|
dd23098856 | ||
|
|
e500beaaf1 | ||
|
|
4c16d2010c | ||
|
|
39c3dfe3c6 | ||
|
|
f4b3c7fd04 | ||
|
|
76923e7849 | ||
|
|
ced2acff61 | ||
|
|
8e5b1f426c | ||
|
|
1ff1389c9c | ||
|
|
976cdf3d59 | ||
|
|
c488f2552b | ||
|
|
14b728c57b | ||
|
|
75a4e1a52d | ||
|
|
40233bf0c4 | ||
|
|
d531742278 | ||
|
|
bb8a650154 | ||
|
|
22048db7b7 | ||
|
|
e950798ea9 | ||
|
|
3f68733084 | ||
|
|
a2f4b342e2 | ||
|
|
b0d735d90b | ||
|
|
7696f43a07 | ||
|
|
2a7fc84470 | ||
|
|
62f1fa3a79 | ||
|
|
aa2ee95f54 | ||
|
|
75b45775bf | ||
|
|
a052e0cac2 | ||
|
|
d1ec1e2640 | ||
|
|
57cd765bb1 | ||
|
|
7b759d52e6 | ||
|
|
6b9ed77cda | ||
|
|
ad154067e0 | ||
|
|
1da899f2c0 | ||
|
|
1d9930eb3c | ||
|
|
c1d006dbbc | ||
|
|
bf8791f20c | ||
|
|
14fc05f7ff | ||
|
|
29ab36bfe8 | ||
|
|
18c27cd790 | ||
|
|
bb7e9d7837 |
@@ -1,3 +1,4 @@
|
||||
import { Scope } from '@nestjs/common';
|
||||
import { UnknownDependenciesException } from '@nestjs/core/errors/exceptions/unknown-dependencies.exception';
|
||||
import { Test } from '@nestjs/testing';
|
||||
import { expect } from 'chai';
|
||||
@@ -38,6 +39,42 @@ describe('Optional factory provider deps', () => {
|
||||
const factoryProvider = moduleRef.get('FACTORY');
|
||||
expect(factoryProvider).to.equal(defaultValue);
|
||||
});
|
||||
it('"undefined" should be injected into the factory function (scoped provider)', async () => {
|
||||
const MY_PROVIDER = 'MY_PROVIDER';
|
||||
const FIRST_OPTIONAL_DEPENDENCY = 'FIRST_OPTIONAL_DEPENDENCY';
|
||||
const SECOND_OPTIONAL_DEPENDENCY = 'SECOND_OPTIONAL_DEPENDENCY';
|
||||
|
||||
const module = await Test.createTestingModule({
|
||||
providers: [
|
||||
{
|
||||
provide: SECOND_OPTIONAL_DEPENDENCY,
|
||||
useValue: 'second',
|
||||
},
|
||||
{
|
||||
provide: MY_PROVIDER,
|
||||
scope: Scope.REQUEST,
|
||||
inject: [
|
||||
{
|
||||
token: FIRST_OPTIONAL_DEPENDENCY,
|
||||
optional: true,
|
||||
},
|
||||
{
|
||||
token: SECOND_OPTIONAL_DEPENDENCY,
|
||||
optional: true,
|
||||
},
|
||||
],
|
||||
useFactory: (first?: string, second?: string) => {
|
||||
return { first, second };
|
||||
},
|
||||
},
|
||||
],
|
||||
}).compile();
|
||||
|
||||
expect(await module.resolve(MY_PROVIDER)).to.deep.equal({
|
||||
first: undefined,
|
||||
second: 'second',
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
describe('otherwise', () => {
|
||||
|
||||
@@ -6,7 +6,6 @@ import { ExpressModule } from '../src/express.module';
|
||||
|
||||
describe('Raw body (Express Application)', () => {
|
||||
let app: NestExpressApplication;
|
||||
const body = '{ "amount":0.0 }';
|
||||
|
||||
beforeEach(async () => {
|
||||
const moduleFixture = await Test.createTestingModule({
|
||||
@@ -16,33 +15,63 @@ describe('Raw body (Express Application)', () => {
|
||||
app = moduleFixture.createNestApplication<NestExpressApplication>({
|
||||
rawBody: true,
|
||||
});
|
||||
});
|
||||
|
||||
it('should return exact post body', async () => {
|
||||
await app.init();
|
||||
const response = await request(app.getHttpServer())
|
||||
.post('/')
|
||||
.set('Content-Type', 'application/json')
|
||||
.send(body)
|
||||
.expect(201);
|
||||
|
||||
expect(response.body).to.eql({
|
||||
parsed: {
|
||||
amount: 0,
|
||||
},
|
||||
raw: '{ "amount":0.0 }',
|
||||
});
|
||||
});
|
||||
|
||||
it('should work if post body is empty', async () => {
|
||||
await app.init();
|
||||
await request(app.getHttpServer())
|
||||
.post('/')
|
||||
.set('Content-Type', 'application/json')
|
||||
.expect(201);
|
||||
});
|
||||
|
||||
afterEach(async () => {
|
||||
await app.close();
|
||||
});
|
||||
|
||||
describe('application/json', () => {
|
||||
const body = '{ "amount":0.0 }';
|
||||
|
||||
it('should return exact post body', async () => {
|
||||
const response = await request(app.getHttpServer())
|
||||
.post('/')
|
||||
.set('Content-Type', 'application/json')
|
||||
.send(body)
|
||||
.expect(201);
|
||||
|
||||
expect(response.body).to.eql({
|
||||
parsed: {
|
||||
amount: 0,
|
||||
},
|
||||
raw: body,
|
||||
});
|
||||
});
|
||||
|
||||
it('should work if post body is empty', async () => {
|
||||
await request(app.getHttpServer())
|
||||
.post('/')
|
||||
.set('Content-Type', 'application/json')
|
||||
.expect(201);
|
||||
});
|
||||
});
|
||||
|
||||
describe('application/x-www-form-urlencoded', () => {
|
||||
const body = 'content=this is a post\'s content by "Nest"';
|
||||
|
||||
it('should return exact post body', async () => {
|
||||
const response = await request(app.getHttpServer())
|
||||
.post('/')
|
||||
.set('Content-Type', 'application/x-www-form-urlencoded')
|
||||
.send(body)
|
||||
.expect(201);
|
||||
|
||||
expect(response.body).to.eql({
|
||||
parsed: {
|
||||
content: 'this is a post\'s content by "Nest"',
|
||||
},
|
||||
raw: body,
|
||||
});
|
||||
});
|
||||
|
||||
it('should work if post body is empty', async () => {
|
||||
await request(app.getHttpServer())
|
||||
.post('/')
|
||||
.set('Content-Type', 'application/x-www-form-urlencoded')
|
||||
.expect(201);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -8,7 +8,6 @@ import { FastifyModule } from '../src/fastify.module';
|
||||
|
||||
describe('Raw body (Fastify Application)', () => {
|
||||
let app: NestFastifyApplication;
|
||||
const body = '{ "amount":0.0 }';
|
||||
|
||||
beforeEach(async () => {
|
||||
const moduleFixture = await Test.createTestingModule({
|
||||
@@ -21,43 +20,79 @@ describe('Raw body (Fastify Application)', () => {
|
||||
rawBody: true,
|
||||
},
|
||||
);
|
||||
});
|
||||
|
||||
it('should return exact post body', async () => {
|
||||
await app.init();
|
||||
const response = await app.inject({
|
||||
method: 'POST',
|
||||
url: '/',
|
||||
headers: { 'content-type': 'application/json' },
|
||||
payload: body,
|
||||
});
|
||||
|
||||
expect(JSON.parse(response.body)).to.eql({
|
||||
parsed: {
|
||||
amount: 0,
|
||||
},
|
||||
raw: '{ "amount":0.0 }',
|
||||
});
|
||||
});
|
||||
|
||||
it('should fail if post body is empty', async () => {
|
||||
await app.init();
|
||||
const response = await app.inject({
|
||||
method: 'POST',
|
||||
url: '/',
|
||||
headers: {
|
||||
'content-type': 'application/json',
|
||||
accept: 'application/json',
|
||||
},
|
||||
});
|
||||
|
||||
// Unlike Express, when you send a POST request without a body
|
||||
// with Fastify, Fastify will throw an error because it isn't valid
|
||||
// JSON. See fastify/fastify#297.
|
||||
expect(response.statusCode).to.equal(400);
|
||||
});
|
||||
|
||||
afterEach(async () => {
|
||||
await app.close();
|
||||
});
|
||||
|
||||
describe('application/json', () => {
|
||||
const body = '{ "amount":0.0 }';
|
||||
|
||||
it('should return exact post body', async () => {
|
||||
const response = await app.inject({
|
||||
method: 'POST',
|
||||
url: '/',
|
||||
headers: { 'content-type': 'application/json' },
|
||||
payload: body,
|
||||
});
|
||||
|
||||
expect(JSON.parse(response.body)).to.eql({
|
||||
parsed: {
|
||||
amount: 0,
|
||||
},
|
||||
raw: body,
|
||||
});
|
||||
});
|
||||
|
||||
it('should fail if post body is empty', async () => {
|
||||
const response = await app.inject({
|
||||
method: 'POST',
|
||||
url: '/',
|
||||
headers: {
|
||||
'content-type': 'application/json',
|
||||
accept: 'application/json',
|
||||
},
|
||||
});
|
||||
|
||||
// Unlike Express, when you send a POST request without a body
|
||||
// with Fastify, Fastify will throw an error because it isn't valid
|
||||
// JSON. See fastify/fastify#297.
|
||||
expect(response.statusCode).to.equal(400);
|
||||
});
|
||||
});
|
||||
|
||||
describe('application/x-www-form-urlencoded', () => {
|
||||
const body = 'content=this is a post\'s content by "Nest"';
|
||||
|
||||
it('should return exact post body', async () => {
|
||||
const response = await app.inject({
|
||||
method: 'POST',
|
||||
url: '/',
|
||||
headers: { 'content-type': 'application/x-www-form-urlencoded' },
|
||||
payload: body,
|
||||
});
|
||||
|
||||
expect(JSON.parse(response.body)).to.eql({
|
||||
parsed: {
|
||||
content: 'this is a post\'s content by "Nest"',
|
||||
},
|
||||
raw: body,
|
||||
});
|
||||
});
|
||||
|
||||
it('should work if post body is empty', async () => {
|
||||
const response = await app.inject({
|
||||
method: 'POST',
|
||||
url: '/',
|
||||
headers: {
|
||||
'content-type': 'application/x-www-form-urlencoded',
|
||||
},
|
||||
});
|
||||
|
||||
expect(response.statusCode).to.equal(201);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -65,4 +65,7 @@ describe('Express FileSend', () => {
|
||||
expect(res.text).to.be.eq(readmeString);
|
||||
});
|
||||
});
|
||||
it('should return an error if the file does not exist', async () => {
|
||||
return request(app.getHttpServer()).get('/file/not/exist').expect(400);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -31,4 +31,9 @@ export class AppController {
|
||||
getFileWithHeaders(): StreamableFile {
|
||||
return this.appService.getFileWithHeaders();
|
||||
}
|
||||
|
||||
@Get('file/not/exist')
|
||||
getNonExistantFile(): StreamableFile {
|
||||
return this.appService.getFileThatDoesNotExist();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,4 +35,8 @@ export class AppService {
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
getFileThatDoesNotExist(): StreamableFile {
|
||||
return new StreamableFile(createReadStream('does-not-exist.txt'));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,5 +3,5 @@
|
||||
"packages": [
|
||||
"packages/*"
|
||||
],
|
||||
"version": "9.0.2"
|
||||
"version": "9.0.5"
|
||||
}
|
||||
|
||||
477
package-lock.json
generated
477
package-lock.json
generated
@@ -1431,6 +1431,11 @@
|
||||
"vary": "^1.1.2"
|
||||
}
|
||||
},
|
||||
"@fastify/deepmerge": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/@fastify/deepmerge/-/deepmerge-1.1.0.tgz",
|
||||
"integrity": "sha512-E8Hfdvs1bG6u0N4vN5Nty6JONUfTdOciyD5rn8KnEsLKIenvOVcr210BQR9t34PRkNyjqnMLGk3e0BsaxRdL+g=="
|
||||
},
|
||||
"@fastify/error": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@fastify/error/-/error-3.0.0.tgz",
|
||||
@@ -1601,13 +1606,13 @@
|
||||
"dev": true
|
||||
},
|
||||
"@graphql-tools/merge": {
|
||||
"version": "8.2.13",
|
||||
"resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.2.13.tgz",
|
||||
"integrity": "sha512-lhzjCa6wCthOYl7B6UzER3SGjU2WjSGnW0WGr8giMYsrtf6G3vIRotMcSVMlhDzyyMIOn7uPULOUt3/kaJ/rIA==",
|
||||
"version": "8.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.3.0.tgz",
|
||||
"integrity": "sha512-xRa7RAQok/0DD2YnjuqikMrr7dUAxTpdGtZ7BkvUUGhYs3B3p7reCAfvOVr1DJAqVToP7hdlMk+S5+Ylk+AaqA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@graphql-tools/utils": "8.6.12",
|
||||
"tslib": "~2.4.0"
|
||||
"@graphql-tools/utils": "8.8.0",
|
||||
"tslib": "^2.4.0"
|
||||
}
|
||||
},
|
||||
"@graphql-tools/mock": {
|
||||
@@ -1620,60 +1625,27 @@
|
||||
"@graphql-tools/utils": "8.8.0",
|
||||
"fast-json-stable-stringify": "^2.1.0",
|
||||
"tslib": "^2.4.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"@graphql-tools/merge": {
|
||||
"version": "8.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.3.0.tgz",
|
||||
"integrity": "sha512-xRa7RAQok/0DD2YnjuqikMrr7dUAxTpdGtZ7BkvUUGhYs3B3p7reCAfvOVr1DJAqVToP7hdlMk+S5+Ylk+AaqA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@graphql-tools/utils": "8.8.0",
|
||||
"tslib": "^2.4.0"
|
||||
}
|
||||
},
|
||||
"@graphql-tools/schema": {
|
||||
"version": "8.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-8.5.0.tgz",
|
||||
"integrity": "sha512-VeFtKjM3SA9/hCJJfr95aEdC3G0xIKM9z0Qdz4i+eC1g2fdZYnfWFt2ucW4IME+2TDd0enHlKzaV0qk2SLVUww==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@graphql-tools/merge": "8.3.0",
|
||||
"@graphql-tools/utils": "8.8.0",
|
||||
"tslib": "^2.4.0",
|
||||
"value-or-promise": "1.0.11"
|
||||
}
|
||||
},
|
||||
"@graphql-tools/utils": {
|
||||
"version": "8.8.0",
|
||||
"resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.8.0.tgz",
|
||||
"integrity": "sha512-KJrtx05uSM/cPYFdTnGAS1doL5bftJLAiFCDMZ8Vkifztz3BFn3gpFiy/o4wDtM8s39G46mxmt2Km/RmeltfGw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"tslib": "^2.4.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"@graphql-tools/schema": {
|
||||
"version": "8.3.13",
|
||||
"resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-8.3.13.tgz",
|
||||
"integrity": "sha512-e+bx1VHj1i5v4HmhCYCar0lqdoLmkRi/CfV07rTqHR6CRDbIb/S/qDCajHLt7FCovQ5ozlI5sRVbBhzfq5H0PQ==",
|
||||
"version": "8.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-8.5.0.tgz",
|
||||
"integrity": "sha512-VeFtKjM3SA9/hCJJfr95aEdC3G0xIKM9z0Qdz4i+eC1g2fdZYnfWFt2ucW4IME+2TDd0enHlKzaV0qk2SLVUww==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@graphql-tools/merge": "8.2.13",
|
||||
"@graphql-tools/utils": "8.6.12",
|
||||
"tslib": "~2.4.0",
|
||||
"@graphql-tools/merge": "8.3.0",
|
||||
"@graphql-tools/utils": "8.8.0",
|
||||
"tslib": "^2.4.0",
|
||||
"value-or-promise": "1.0.11"
|
||||
}
|
||||
},
|
||||
"@graphql-tools/utils": {
|
||||
"version": "8.6.12",
|
||||
"resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.6.12.tgz",
|
||||
"integrity": "sha512-WQ91O40RC+UJgZ9K+IzevSf8oolR1QE+WQ21Oyc2fgDYYiqT0eSf+HVyhZr/8x9rVjn3N9HeqCsywbdmbljg0w==",
|
||||
"version": "8.8.0",
|
||||
"resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.8.0.tgz",
|
||||
"integrity": "sha512-KJrtx05uSM/cPYFdTnGAS1doL5bftJLAiFCDMZ8Vkifztz3BFn3gpFiy/o4wDtM8s39G46mxmt2Km/RmeltfGw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"tslib": "~2.4.0"
|
||||
"tslib": "^2.4.0"
|
||||
}
|
||||
},
|
||||
"@graphql-typed-document-node/core": {
|
||||
@@ -1691,18 +1663,54 @@
|
||||
"requires": {
|
||||
"@grpc/proto-loader": "^0.6.4",
|
||||
"@types/node": ">=12.12.47"
|
||||
},
|
||||
"dependencies": {
|
||||
"@grpc/proto-loader": {
|
||||
"version": "0.6.13",
|
||||
"resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.6.13.tgz",
|
||||
"integrity": "sha512-FjxPYDRTn6Ec3V0arm1FtSpmP6V50wuph2yILpyvTKzjc76oDdoihXqM1DzOW5ubvCC8GivfCnNtfaRE8myJ7g==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@types/long": "^4.0.1",
|
||||
"lodash.camelcase": "^4.3.0",
|
||||
"long": "^4.0.0",
|
||||
"protobufjs": "^6.11.3",
|
||||
"yargs": "^16.2.0"
|
||||
}
|
||||
},
|
||||
"protobufjs": {
|
||||
"version": "6.11.3",
|
||||
"resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.3.tgz",
|
||||
"integrity": "sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@protobufjs/aspromise": "^1.1.2",
|
||||
"@protobufjs/base64": "^1.1.2",
|
||||
"@protobufjs/codegen": "^2.0.4",
|
||||
"@protobufjs/eventemitter": "^1.1.0",
|
||||
"@protobufjs/fetch": "^1.1.0",
|
||||
"@protobufjs/float": "^1.0.2",
|
||||
"@protobufjs/inquire": "^1.1.0",
|
||||
"@protobufjs/path": "^1.1.2",
|
||||
"@protobufjs/pool": "^1.1.0",
|
||||
"@protobufjs/utf8": "^1.1.0",
|
||||
"@types/long": "^4.0.1",
|
||||
"@types/node": ">=13.7.0",
|
||||
"long": "^4.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"@grpc/proto-loader": {
|
||||
"version": "0.6.13",
|
||||
"resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.6.13.tgz",
|
||||
"integrity": "sha512-FjxPYDRTn6Ec3V0arm1FtSpmP6V50wuph2yILpyvTKzjc76oDdoihXqM1DzOW5ubvCC8GivfCnNtfaRE8myJ7g==",
|
||||
"version": "0.7.0",
|
||||
"resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.0.tgz",
|
||||
"integrity": "sha512-SGPZtVmqOvNfPFOA/nNPn+0Weqa5wubBgQ56+JgTbeLY2VezwtMjwPPFzh0kvQccwWT3a2TXT0ZGK/pJoOTk1A==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@types/long": "^4.0.1",
|
||||
"lodash.camelcase": "^4.3.0",
|
||||
"long": "^4.0.0",
|
||||
"protobufjs": "^6.11.3",
|
||||
"protobufjs": "^7.0.0",
|
||||
"yargs": "^16.2.0"
|
||||
}
|
||||
},
|
||||
@@ -1954,9 +1962,9 @@
|
||||
}
|
||||
},
|
||||
"@nestjs/apollo": {
|
||||
"version": "10.0.16",
|
||||
"resolved": "https://registry.npmjs.org/@nestjs/apollo/-/apollo-10.0.16.tgz",
|
||||
"integrity": "sha512-aN9jR0Y3F9wWxQ3qiVLbJ9GIKnqrG9QbztQbjIv1ODByKEXJnhvqXlCDTDj32DFYkZudsUjQEbdOda3EQNR5DQ==",
|
||||
"version": "10.0.17",
|
||||
"resolved": "https://registry.npmjs.org/@nestjs/apollo/-/apollo-10.0.17.tgz",
|
||||
"integrity": "sha512-FQUaMtxQgn42jD2z2Z1Stqct4WO9SUj/dtDCj/b9XWW9GPWf8l8LRR8ftEiyrDBG7f0A2m2B0hSHhIpkGcFNOQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"iterall": "1.3.0",
|
||||
@@ -2152,6 +2160,12 @@
|
||||
"requires": {
|
||||
"is-number": "^7.0.0"
|
||||
}
|
||||
},
|
||||
"ws": {
|
||||
"version": "8.8.0",
|
||||
"resolved": "https://registry.npmjs.org/ws/-/ws-8.8.0.tgz",
|
||||
"integrity": "sha512-JDAgSYQ1ksuwqfChJusw1LSJ8BizJ2e/vVu5Lxjq3YvNJNlROv1ui4i+c/kUUrPheBvQl4c5UbERhTwKa6QBJQ==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -2162,9 +2176,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"@nestjs/mongoose": {
|
||||
"version": "9.1.1",
|
||||
"resolved": "https://registry.npmjs.org/@nestjs/mongoose/-/mongoose-9.1.1.tgz",
|
||||
"integrity": "sha512-sKZKI+walquKbCu3wSgO9X6a8MAkfsOlUTdPGv6IFo9NtTSp4sdrfiWFk2rQVc1N05J4Jdt94fnPKWJf+7U8uQ==",
|
||||
"version": "9.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@nestjs/mongoose/-/mongoose-9.2.0.tgz",
|
||||
"integrity": "sha512-fC33b8nwR7C3y6hlTyKjiHQVU57SFOd3Dwa6alWj3BOhK5bHt8Ld6qOK2G35/XXPHjtSIk3LIKEqwyK5xGcmBA==",
|
||||
"dev": true
|
||||
},
|
||||
"@nestjs/typeorm": {
|
||||
@@ -2974,9 +2988,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"@types/node": {
|
||||
"version": "18.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.0.3.tgz",
|
||||
"integrity": "sha512-HzNRZtp4eepNitP+BD6k2L6DROIDG4Q0fm4x+dwfsr6LGmROENnok75VGw40628xf+iR24WeMFcHuuBDUAzzsQ=="
|
||||
"version": "18.0.6",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.0.6.tgz",
|
||||
"integrity": "sha512-/xUq6H2aQm261exT6iZTMifUySEt4GR5KX8eYyY+C4MSNPqSh9oNIP7tz2GLKTlFaiBbgZNxffoR3CVRG+cljw=="
|
||||
},
|
||||
"@types/normalize-package-data": {
|
||||
"version": "2.4.0",
|
||||
@@ -3753,9 +3767,9 @@
|
||||
}
|
||||
},
|
||||
"apollo-server-core": {
|
||||
"version": "3.9.0",
|
||||
"resolved": "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-3.9.0.tgz",
|
||||
"integrity": "sha512-WS54C33cTriDaBIcj7ijWv/fgeJICcrQKlP1Cn6pnZp/eumpMraezLeJ3gFWAXprOuR2E3fZe64lNlup0fMu8w==",
|
||||
"version": "3.10.0",
|
||||
"resolved": "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-3.10.0.tgz",
|
||||
"integrity": "sha512-ln5drIk3oW/ycYhcYL9TvM7vRf7OZwJrgHWlnjnMakozBQIBSumdMi4pN001DhU9mVBWTfnmBv3CdcxJdGXIvA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@apollo/utils.keyvaluecache": "^1.0.1",
|
||||
@@ -3767,11 +3781,11 @@
|
||||
"@graphql-tools/schema": "^8.0.0",
|
||||
"@josephg/resolvable": "^1.0.0",
|
||||
"apollo-datasource": "^3.3.2",
|
||||
"apollo-reporting-protobuf": "^3.3.1",
|
||||
"apollo-reporting-protobuf": "^3.3.2",
|
||||
"apollo-server-env": "^4.2.1",
|
||||
"apollo-server-errors": "^3.3.1",
|
||||
"apollo-server-plugin-base": "^3.6.1",
|
||||
"apollo-server-types": "^3.6.1",
|
||||
"apollo-server-plugin-base": "^3.6.2",
|
||||
"apollo-server-types": "^3.6.2",
|
||||
"async-retry": "^1.2.1",
|
||||
"fast-json-stable-stringify": "^2.1.0",
|
||||
"graphql-tag": "^2.11.0",
|
||||
@@ -3780,6 +3794,56 @@
|
||||
"sha.js": "^2.4.11",
|
||||
"uuid": "^8.0.0",
|
||||
"whatwg-mimetype": "^3.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"@apollo/protobufjs": {
|
||||
"version": "1.2.4",
|
||||
"resolved": "https://registry.npmjs.org/@apollo/protobufjs/-/protobufjs-1.2.4.tgz",
|
||||
"integrity": "sha512-npVJ9NVU/pynj+SCU+fambvTneJDyCnif738DnZ7pCxdDtzeEz7WkpSIq5wNUmWm5Td55N+S2xfqZ+WP4hDLng==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@protobufjs/aspromise": "^1.1.2",
|
||||
"@protobufjs/base64": "^1.1.2",
|
||||
"@protobufjs/codegen": "^2.0.4",
|
||||
"@protobufjs/eventemitter": "^1.1.0",
|
||||
"@protobufjs/fetch": "^1.1.0",
|
||||
"@protobufjs/float": "^1.0.2",
|
||||
"@protobufjs/inquire": "^1.1.0",
|
||||
"@protobufjs/path": "^1.1.2",
|
||||
"@protobufjs/pool": "^1.1.0",
|
||||
"@protobufjs/utf8": "^1.1.0",
|
||||
"@types/long": "^4.0.0",
|
||||
"@types/node": "^10.1.0",
|
||||
"long": "^4.0.0"
|
||||
}
|
||||
},
|
||||
"@types/node": {
|
||||
"version": "10.17.60",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz",
|
||||
"integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==",
|
||||
"dev": true
|
||||
},
|
||||
"apollo-reporting-protobuf": {
|
||||
"version": "3.3.2",
|
||||
"resolved": "https://registry.npmjs.org/apollo-reporting-protobuf/-/apollo-reporting-protobuf-3.3.2.tgz",
|
||||
"integrity": "sha512-j1tx9tmkVdsLt1UPzBrvz90PdjAeKW157WxGn+aXlnnGfVjZLIRXX3x5t1NWtXvB7rVaAsLLILLtDHW382TSoQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@apollo/protobufjs": "1.2.4"
|
||||
}
|
||||
},
|
||||
"apollo-server-types": {
|
||||
"version": "3.6.2",
|
||||
"resolved": "https://registry.npmjs.org/apollo-server-types/-/apollo-server-types-3.6.2.tgz",
|
||||
"integrity": "sha512-9Z54S7NB+qW1VV+kmiqwU2Q6jxWfX89HlSGCGOo3zrkrperh85LrzABgN9S92+qyeHYd72noMDg2aI039sF3dg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@apollo/utils.keyvaluecache": "^1.0.1",
|
||||
"@apollo/utils.logger": "^1.0.0",
|
||||
"apollo-reporting-protobuf": "^3.3.2",
|
||||
"apollo-server-env": "^4.2.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"apollo-server-env": {
|
||||
@@ -3798,9 +3862,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"apollo-server-express": {
|
||||
"version": "3.9.0",
|
||||
"resolved": "https://registry.npmjs.org/apollo-server-express/-/apollo-server-express-3.9.0.tgz",
|
||||
"integrity": "sha512-scSeHy9iB7W3OiF3uLQEzad9Jm9tEfDF8ACsJb2P+xX69uqg6zizsrQvj3qRhazCO7FKMcMu9zQFR0hy7zKbUA==",
|
||||
"version": "3.10.0",
|
||||
"resolved": "https://registry.npmjs.org/apollo-server-express/-/apollo-server-express-3.10.0.tgz",
|
||||
"integrity": "sha512-ww3tZq9I/x3Oxtux8xlHAZcSB0NNQ17lRlY6yCLk1F+jCzdcjuj0x8XNg0GdTrMowt5v43o786bU9VYKD5OVnA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@types/accepts": "^1.3.5",
|
||||
@@ -3809,8 +3873,8 @@
|
||||
"@types/express": "4.17.13",
|
||||
"@types/express-serve-static-core": "4.17.29",
|
||||
"accepts": "^1.3.5",
|
||||
"apollo-server-core": "^3.9.0",
|
||||
"apollo-server-types": "^3.6.1",
|
||||
"apollo-server-core": "^3.10.0",
|
||||
"apollo-server-types": "^3.6.2",
|
||||
"body-parser": "^1.19.0",
|
||||
"cors": "^2.8.5",
|
||||
"parseurl": "^1.3.3"
|
||||
@@ -3840,24 +3904,112 @@
|
||||
}
|
||||
},
|
||||
"apollo-server-plugin-base": {
|
||||
"version": "3.6.1",
|
||||
"resolved": "https://registry.npmjs.org/apollo-server-plugin-base/-/apollo-server-plugin-base-3.6.1.tgz",
|
||||
"integrity": "sha512-bFpxzWO0LTTtSAkGVBeaAtnQXJ5ZCi8eaLN/eMSju8RByifmF3Kr6gAqcOZhOH/geQEt3Y6G8n3bR0eHTGxljQ==",
|
||||
"version": "3.6.2",
|
||||
"resolved": "https://registry.npmjs.org/apollo-server-plugin-base/-/apollo-server-plugin-base-3.6.2.tgz",
|
||||
"integrity": "sha512-erWXjLOO1u7fxQkbxJ2cwSO7p0tYzNied91I1SJ9tikXZ/2eZUyDyvrpI+4g70kOdEi+AmJ5Fo8ahEXKJ75zdg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"apollo-server-types": "^3.6.1"
|
||||
"apollo-server-types": "^3.6.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"@apollo/protobufjs": {
|
||||
"version": "1.2.4",
|
||||
"resolved": "https://registry.npmjs.org/@apollo/protobufjs/-/protobufjs-1.2.4.tgz",
|
||||
"integrity": "sha512-npVJ9NVU/pynj+SCU+fambvTneJDyCnif738DnZ7pCxdDtzeEz7WkpSIq5wNUmWm5Td55N+S2xfqZ+WP4hDLng==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@protobufjs/aspromise": "^1.1.2",
|
||||
"@protobufjs/base64": "^1.1.2",
|
||||
"@protobufjs/codegen": "^2.0.4",
|
||||
"@protobufjs/eventemitter": "^1.1.0",
|
||||
"@protobufjs/fetch": "^1.1.0",
|
||||
"@protobufjs/float": "^1.0.2",
|
||||
"@protobufjs/inquire": "^1.1.0",
|
||||
"@protobufjs/path": "^1.1.2",
|
||||
"@protobufjs/pool": "^1.1.0",
|
||||
"@protobufjs/utf8": "^1.1.0",
|
||||
"@types/long": "^4.0.0",
|
||||
"@types/node": "^10.1.0",
|
||||
"long": "^4.0.0"
|
||||
}
|
||||
},
|
||||
"@types/node": {
|
||||
"version": "10.17.60",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz",
|
||||
"integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==",
|
||||
"dev": true
|
||||
},
|
||||
"apollo-reporting-protobuf": {
|
||||
"version": "3.3.2",
|
||||
"resolved": "https://registry.npmjs.org/apollo-reporting-protobuf/-/apollo-reporting-protobuf-3.3.2.tgz",
|
||||
"integrity": "sha512-j1tx9tmkVdsLt1UPzBrvz90PdjAeKW157WxGn+aXlnnGfVjZLIRXX3x5t1NWtXvB7rVaAsLLILLtDHW382TSoQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@apollo/protobufjs": "1.2.4"
|
||||
}
|
||||
},
|
||||
"apollo-server-types": {
|
||||
"version": "3.6.2",
|
||||
"resolved": "https://registry.npmjs.org/apollo-server-types/-/apollo-server-types-3.6.2.tgz",
|
||||
"integrity": "sha512-9Z54S7NB+qW1VV+kmiqwU2Q6jxWfX89HlSGCGOo3zrkrperh85LrzABgN9S92+qyeHYd72noMDg2aI039sF3dg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@apollo/utils.keyvaluecache": "^1.0.1",
|
||||
"@apollo/utils.logger": "^1.0.0",
|
||||
"apollo-reporting-protobuf": "^3.3.2",
|
||||
"apollo-server-env": "^4.2.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"apollo-server-types": {
|
||||
"version": "3.6.1",
|
||||
"resolved": "https://registry.npmjs.org/apollo-server-types/-/apollo-server-types-3.6.1.tgz",
|
||||
"integrity": "sha512-XOPlBlRdwP00PrG03OffGGWuzyei+J9t1rAnvyHsSdP0JCgQWigHJfvL1N9Bhgi4UTjl9JadKOJh1znLNlqIFQ==",
|
||||
"version": "3.6.2",
|
||||
"resolved": "https://registry.npmjs.org/apollo-server-types/-/apollo-server-types-3.6.2.tgz",
|
||||
"integrity": "sha512-9Z54S7NB+qW1VV+kmiqwU2Q6jxWfX89HlSGCGOo3zrkrperh85LrzABgN9S92+qyeHYd72noMDg2aI039sF3dg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@apollo/utils.keyvaluecache": "^1.0.1",
|
||||
"@apollo/utils.logger": "^1.0.0",
|
||||
"apollo-reporting-protobuf": "^3.3.1",
|
||||
"apollo-reporting-protobuf": "^3.3.2",
|
||||
"apollo-server-env": "^4.2.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"@apollo/protobufjs": {
|
||||
"version": "1.2.4",
|
||||
"resolved": "https://registry.npmjs.org/@apollo/protobufjs/-/protobufjs-1.2.4.tgz",
|
||||
"integrity": "sha512-npVJ9NVU/pynj+SCU+fambvTneJDyCnif738DnZ7pCxdDtzeEz7WkpSIq5wNUmWm5Td55N+S2xfqZ+WP4hDLng==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@protobufjs/aspromise": "^1.1.2",
|
||||
"@protobufjs/base64": "^1.1.2",
|
||||
"@protobufjs/codegen": "^2.0.4",
|
||||
"@protobufjs/eventemitter": "^1.1.0",
|
||||
"@protobufjs/fetch": "^1.1.0",
|
||||
"@protobufjs/float": "^1.0.2",
|
||||
"@protobufjs/inquire": "^1.1.0",
|
||||
"@protobufjs/path": "^1.1.2",
|
||||
"@protobufjs/pool": "^1.1.0",
|
||||
"@protobufjs/utf8": "^1.1.0",
|
||||
"@types/long": "^4.0.0",
|
||||
"@types/node": "^10.1.0",
|
||||
"long": "^4.0.0"
|
||||
}
|
||||
},
|
||||
"@types/node": {
|
||||
"version": "10.17.60",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz",
|
||||
"integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==",
|
||||
"dev": true
|
||||
},
|
||||
"apollo-reporting-protobuf": {
|
||||
"version": "3.3.2",
|
||||
"resolved": "https://registry.npmjs.org/apollo-reporting-protobuf/-/apollo-reporting-protobuf-3.3.2.tgz",
|
||||
"integrity": "sha512-j1tx9tmkVdsLt1UPzBrvz90PdjAeKW157WxGn+aXlnnGfVjZLIRXX3x5t1NWtXvB7rVaAsLLILLtDHW382TSoQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@apollo/protobufjs": "1.2.4"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"apollo-upload-client": {
|
||||
@@ -4698,15 +4850,14 @@
|
||||
"dev": true
|
||||
},
|
||||
"avvio": {
|
||||
"version": "8.1.3",
|
||||
"resolved": "https://registry.npmjs.org/avvio/-/avvio-8.1.3.tgz",
|
||||
"integrity": "sha512-tl9TC0yDRKzP6gFLkrInqPyx8AkfBC/0QRnwkE9Jo31+OJjLrE/73GJuE0QgSB0Vpv38CTJJZGqU9hczowclWw==",
|
||||
"version": "8.2.0",
|
||||
"resolved": "https://registry.npmjs.org/avvio/-/avvio-8.2.0.tgz",
|
||||
"integrity": "sha512-bbCQdg7bpEv6kGH41RO/3B2/GMMmJSo2iBK+X8AWN9mujtfUipMDfIjsgHCfpnKqoGEQrrmCDKSa5OQ19+fDmg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"archy": "^1.0.0",
|
||||
"debug": "^4.0.0",
|
||||
"fastq": "^1.6.1",
|
||||
"queue-microtask": "^1.1.2"
|
||||
"fastq": "^1.6.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"debug": {
|
||||
@@ -6276,9 +6427,9 @@
|
||||
}
|
||||
},
|
||||
"concurrently": {
|
||||
"version": "7.2.2",
|
||||
"resolved": "https://registry.npmjs.org/concurrently/-/concurrently-7.2.2.tgz",
|
||||
"integrity": "sha512-DcQkI0ruil5BA/g7Xy3EWySGrFJovF5RYAYxwGvv9Jf9q9B1v3jPFP2tl6axExNf1qgF30kjoNYrangZ0ey4Aw==",
|
||||
"version": "7.3.0",
|
||||
"resolved": "https://registry.npmjs.org/concurrently/-/concurrently-7.3.0.tgz",
|
||||
"integrity": "sha512-IiDwm+8DOcFEInca494A8V402tNTQlJaYq78RF2rijOrKEk/AOHTxhN4U1cp7GYKYX5Q6Ymh1dLTBlzIMN0ikA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"chalk": "^4.1.0",
|
||||
@@ -8595,9 +8746,9 @@
|
||||
}
|
||||
},
|
||||
"core-js": {
|
||||
"version": "3.23.4",
|
||||
"resolved": "https://registry.npmjs.org/core-js/-/core-js-3.23.4.tgz",
|
||||
"integrity": "sha512-vjsKqRc1RyAJC3Ye2kYqgfdThb3zYnx9CrqoCcjMOENMtQPC7ZViBvlDxwYU/2z2NI/IPuiXw5mT4hWhddqjzQ==",
|
||||
"version": "3.23.5",
|
||||
"resolved": "https://registry.npmjs.org/core-js/-/core-js-3.23.5.tgz",
|
||||
"integrity": "sha512-7Vh11tujtAZy82da4duVreQysIoO2EvVrur7y6IzZkH1IHPSekuDi8Vuw1+YKjkbfWLRD7Nc9ICQ/sIUDutcyg==",
|
||||
"dev": true
|
||||
},
|
||||
"core-util-is": {
|
||||
@@ -8999,7 +9150,8 @@
|
||||
"deepmerge": {
|
||||
"version": "4.2.2",
|
||||
"resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz",
|
||||
"integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg=="
|
||||
"integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==",
|
||||
"dev": true
|
||||
},
|
||||
"default-compare": {
|
||||
"version": "1.0.0",
|
||||
@@ -10843,13 +10995,13 @@
|
||||
"dev": true
|
||||
},
|
||||
"fast-json-stringify": {
|
||||
"version": "5.0.6",
|
||||
"resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-5.0.6.tgz",
|
||||
"integrity": "sha512-iZM2VJ19wBOjznp9AQ3PEXTAvwcwJXDsz5xEoTs+31s/lCyOYrqHicXHzt0VoLz16pZStsWx3HIvRFB6AQaWeA==",
|
||||
"version": "5.1.0",
|
||||
"resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-5.1.0.tgz",
|
||||
"integrity": "sha512-IybGfbUc1DQgyrp9Myhwlr1Z5vjV37mBkdgcbuvsvUxv5fayG+cHlTQQpXH9nMwUPgp+5Y3RT7QDgx5zJ9NS3A==",
|
||||
"requires": {
|
||||
"@fastify/deepmerge": "^1.0.0",
|
||||
"ajv": "^8.10.0",
|
||||
"ajv-formats": "^2.1.1",
|
||||
"deepmerge": "^4.2.2",
|
||||
"fast-uri": "^2.1.0",
|
||||
"rfdc": "^1.2.0"
|
||||
},
|
||||
@@ -10895,12 +11047,12 @@
|
||||
"integrity": "sha512-qKRta6N7BWEFVlyonVY/V+BMLgFqktCUV0QjT259ekAIlbVrMaFnFLxJ4s/JPl4tou56S1BzPufI60bLe29fHA=="
|
||||
},
|
||||
"fastify": {
|
||||
"version": "4.2.0",
|
||||
"resolved": "https://registry.npmjs.org/fastify/-/fastify-4.2.0.tgz",
|
||||
"integrity": "sha512-0QXEp+8ceKc0fwVakeBLM/1Ss/+fc7a3auuygT+1GjbSAgHfwqxSucUuu0rYjziu32UgEZXfjItYN/a89HWKhw==",
|
||||
"version": "4.2.1",
|
||||
"resolved": "https://registry.npmjs.org/fastify/-/fastify-4.2.1.tgz",
|
||||
"integrity": "sha512-eyAWHN9+8IPTnhvGz+leseASGV/JZ75Y+jXXV7tid4awUjCMInY1gazZXuTD95xUW+Ve5vfgLjQ2i1i0/XJjdw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@fastify/ajv-compiler": "^3.1.0",
|
||||
"@fastify/ajv-compiler": "^3.1.1",
|
||||
"@fastify/error": "^3.0.0",
|
||||
"@fastify/fast-json-stringify-compiler": "^4.0.0",
|
||||
"abstract-logging": "^2.0.1",
|
||||
@@ -10916,12 +11068,6 @@
|
||||
"tiny-lru": "^8.0.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"@fastify/error": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@fastify/error/-/error-3.0.0.tgz",
|
||||
"integrity": "sha512-dPRyT40GiHRzSCll3/Jn2nPe25+E1VXc9tDwRAIKwFCxd5Np5wzgz1tmooWG3sV0qKgrBibihVoCna2ru4SEFg==",
|
||||
"dev": true
|
||||
},
|
||||
"process-warning": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/process-warning/-/process-warning-2.0.0.tgz",
|
||||
@@ -14058,9 +14204,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"ioredis": {
|
||||
"version": "5.1.0",
|
||||
"resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.1.0.tgz",
|
||||
"integrity": "sha512-HYHnvwxFwefeUBj0hZFejLvd8Q/YNAfnZlZG/hSRxkRhXMs1H8soMEVccHd1WlLrKkynorXBsAtqDGskOdAfVQ==",
|
||||
"version": "5.2.1",
|
||||
"resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.2.1.tgz",
|
||||
"integrity": "sha512-+rgPUIawiT+L3am9FbUcwjI7R7KtLDUSJNYWF82NZmlUXCZELws7iJkVDuECQoNUHqZTf/EGn3uw9IA+PlBiyg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@ioredis/commands": "^1.1.1",
|
||||
@@ -15664,40 +15810,21 @@
|
||||
}
|
||||
},
|
||||
"light-my-request": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/light-my-request/-/light-my-request-5.0.0.tgz",
|
||||
"integrity": "sha512-0OPHKV+uHgBOnRokzL1LqeMCnSAo5l/rZS7kyB6G1I8qxGCvhXpq1M6WK565Y9A5CSn50l3DVaHnJ5FCdpguZQ==",
|
||||
"version": "5.2.0",
|
||||
"resolved": "https://registry.npmjs.org/light-my-request/-/light-my-request-5.2.0.tgz",
|
||||
"integrity": "sha512-U5Dga8U59VKydIAnHt2XvPVyDfaHsDIpoO+/FPrm4Qnn1tHeczNnLrGjI1bko6BFWgFwTXjTiQN6PkohWiwwcA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ajv": "^8.1.0",
|
||||
"cookie": "^0.5.0",
|
||||
"process-warning": "^1.0.0",
|
||||
"process-warning": "^2.0.0",
|
||||
"set-cookie-parser": "^2.4.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"ajv": {
|
||||
"version": "8.11.0",
|
||||
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz",
|
||||
"integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"fast-deep-equal": "^3.1.1",
|
||||
"json-schema-traverse": "^1.0.0",
|
||||
"require-from-string": "^2.0.2",
|
||||
"uri-js": "^4.2.2"
|
||||
}
|
||||
},
|
||||
"cookie": {
|
||||
"version": "0.5.0",
|
||||
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
|
||||
"integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
|
||||
"dev": true
|
||||
},
|
||||
"json-schema-traverse": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
|
||||
"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -16147,7 +16274,7 @@
|
||||
"lodash.defaults": {
|
||||
"version": "4.2.0",
|
||||
"resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz",
|
||||
"integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=",
|
||||
"integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==",
|
||||
"dev": true
|
||||
},
|
||||
"lodash.escape": {
|
||||
@@ -17655,18 +17782,24 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"denque": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/denque/-/denque-2.0.1.tgz",
|
||||
"integrity": "sha512-tfiWc6BQLXNLpNiR5iGd0Ocu3P3VpxfzFiqubLgMfhfOw9WyvgJBd46CClNn9k3qfbjvT//0cf7AlYRX/OslMQ==",
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz",
|
||||
"integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==",
|
||||
"dev": true
|
||||
},
|
||||
"ip": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz",
|
||||
"integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==",
|
||||
"dev": true
|
||||
},
|
||||
"socks": {
|
||||
"version": "2.6.2",
|
||||
"resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz",
|
||||
"integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==",
|
||||
"version": "2.7.0",
|
||||
"resolved": "https://registry.npmjs.org/socks/-/socks-2.7.0.tgz",
|
||||
"integrity": "sha512-scnOe9y4VuiNUULJN72GrM26BNOjVsfPXI+j+98PkyEfsIXroa5ofyjT+FzGvn/xHs73U2JtoBYAVx9Hl4quSA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ip": "^1.1.5",
|
||||
"ip": "^2.0.0",
|
||||
"smart-buffer": "^4.2.0"
|
||||
}
|
||||
}
|
||||
@@ -17683,9 +17816,9 @@
|
||||
}
|
||||
},
|
||||
"mongoose": {
|
||||
"version": "6.4.4",
|
||||
"resolved": "https://registry.npmjs.org/mongoose/-/mongoose-6.4.4.tgz",
|
||||
"integrity": "sha512-r6sp96veRNhNIWFtHHe4Lqak+ilgiExYnnMLhYTGdzjIMR90G1ayx0JKFVdHuC6dKNHGFX0ETJGbf36N8Romjg==",
|
||||
"version": "6.4.5",
|
||||
"resolved": "https://registry.npmjs.org/mongoose/-/mongoose-6.4.5.tgz",
|
||||
"integrity": "sha512-2E56DnJ4z5pWnBH4/pFGWuDFRn1Wt/JxU31Hcu0ZZtsd8I6piHavLawC9ND6GgyBpHov/aVLPLXtzB+HPKeKQg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"bson": "^4.6.2",
|
||||
@@ -19418,9 +19551,9 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"readable-stream": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.0.0.tgz",
|
||||
"integrity": "sha512-Mf7ilWBP6AV3tF3MjtBrHMH3roso7wIrpgzCwt9ybvqiJQVWIEBMnp/W+S//yvYSsUUi2cJIwD7q7m57l0AqZw==",
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.1.0.tgz",
|
||||
"integrity": "sha512-sVisi3+P2lJ2t0BPbpK629j8wRW06yKGJUcaLAGXPAUhyUxVJm7VsCTit1PFgT4JHUDMrGNR+ZjSKpzGaRF3zw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"abort-controller": "^3.0.0"
|
||||
@@ -19631,9 +19764,9 @@
|
||||
}
|
||||
},
|
||||
"process-warning": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/process-warning/-/process-warning-1.0.0.tgz",
|
||||
"integrity": "sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==",
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/process-warning/-/process-warning-2.0.0.tgz",
|
||||
"integrity": "sha512-+MmoAXoUX+VTHAlwns0h+kFUWFs/3FZy+ZuchkgjyOu3oioLAo2LB5aCfKPh2+P9O18i3m43tUEv3YqttSy0Ww==",
|
||||
"dev": true
|
||||
},
|
||||
"progress": {
|
||||
@@ -19703,9 +19836,9 @@
|
||||
}
|
||||
},
|
||||
"protobufjs": {
|
||||
"version": "6.11.3",
|
||||
"resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.3.tgz",
|
||||
"integrity": "sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg==",
|
||||
"version": "7.0.0",
|
||||
"resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.0.0.tgz",
|
||||
"integrity": "sha512-ffNIEm+quOcYtQvHdW406v1NQmZSuqVklxsXk076BtuFnlYZfigLU+JOMrTD8TUOyqHYbRI/fSVNvgd25YeN3w==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@protobufjs/aspromise": "^1.1.2",
|
||||
@@ -19720,7 +19853,15 @@
|
||||
"@protobufjs/utf8": "^1.1.0",
|
||||
"@types/long": "^4.0.1",
|
||||
"@types/node": ">=13.7.0",
|
||||
"long": "^4.0.0"
|
||||
"long": "^5.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"long": {
|
||||
"version": "5.2.0",
|
||||
"resolved": "https://registry.npmjs.org/long/-/long-5.2.0.tgz",
|
||||
"integrity": "sha512-9RTUNjK60eJbx3uz+TEGF7fUr29ZDxR5QzXcyDpeSfeH28S9ycINflOgOlppit5U+4kNTe83KQnMEerw7GmE8w==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"proxy-addr": {
|
||||
@@ -19806,12 +19947,6 @@
|
||||
"integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==",
|
||||
"dev": true
|
||||
},
|
||||
"queue-microtask": {
|
||||
"version": "1.2.3",
|
||||
"resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
|
||||
"integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
|
||||
"dev": true
|
||||
},
|
||||
"quick-format-unescaped": {
|
||||
"version": "4.0.4",
|
||||
"resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz",
|
||||
@@ -20479,9 +20614,9 @@
|
||||
}
|
||||
},
|
||||
"rxjs": {
|
||||
"version": "7.5.5",
|
||||
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.5.tgz",
|
||||
"integrity": "sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==",
|
||||
"version": "7.5.6",
|
||||
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.6.tgz",
|
||||
"integrity": "sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw==",
|
||||
"requires": {
|
||||
"tslib": "^2.1.0"
|
||||
}
|
||||
@@ -20674,9 +20809,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"set-cookie-parser": {
|
||||
"version": "2.4.8",
|
||||
"resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.4.8.tgz",
|
||||
"integrity": "sha512-edRH8mBKEWNVIVMKejNnuJxleqYE/ZSdcT8/Nem9/mmosx12pctd80s2Oy00KNZzrogMZS5mauK2/ymL1bvlvg==",
|
||||
"version": "2.5.0",
|
||||
"resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.5.0.tgz",
|
||||
"integrity": "sha512-cHMAtSXilfyBePduZEBVPTCftTQWz6ehWJD5YNUg4mqvRosrrjKbo4WS8JkB0/RxonMoohHm7cOGH60mDkRQ9w==",
|
||||
"dev": true
|
||||
},
|
||||
"set-value": {
|
||||
@@ -22404,9 +22539,9 @@
|
||||
}
|
||||
},
|
||||
"ts-node": {
|
||||
"version": "10.8.2",
|
||||
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.8.2.tgz",
|
||||
"integrity": "sha512-LYdGnoGddf1D6v8REPtIH+5iq/gTDuZqv2/UJUU7tKjuEU8xVZorBM+buCGNjj+pGEud+sOoM4CX3/YzINpENA==",
|
||||
"version": "10.9.1",
|
||||
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz",
|
||||
"integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@cspotcode/source-map-support": "^0.8.0",
|
||||
@@ -23590,9 +23725,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"ws": {
|
||||
"version": "8.8.0",
|
||||
"resolved": "https://registry.npmjs.org/ws/-/ws-8.8.0.tgz",
|
||||
"integrity": "sha512-JDAgSYQ1ksuwqfChJusw1LSJ8BizJ2e/vVu5Lxjq3YvNJNlROv1ui4i+c/kUUrPheBvQl4c5UbERhTwKa6QBJQ==",
|
||||
"version": "8.8.1",
|
||||
"resolved": "https://registry.npmjs.org/ws/-/ws-8.8.1.tgz",
|
||||
"integrity": "sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==",
|
||||
"dev": true
|
||||
},
|
||||
"xdg-basedir": {
|
||||
|
||||
32
package.json
32
package.json
@@ -58,14 +58,14 @@
|
||||
"cli-color": "2.0.3",
|
||||
"cors": "2.8.5",
|
||||
"express": "4.18.1",
|
||||
"fast-json-stringify": "5.0.6",
|
||||
"fast-json-stringify": "5.1.0",
|
||||
"fast-safe-stringify": "2.1.1",
|
||||
"graphql-subscriptions": "2.0.0",
|
||||
"iterare": "1.2.1",
|
||||
"object-hash": "3.0.0",
|
||||
"path-to-regexp": "3.2.0",
|
||||
"reflect-metadata": "0.1.13",
|
||||
"rxjs": "7.5.5",
|
||||
"rxjs": "7.5.6",
|
||||
"socket.io": "4.5.1",
|
||||
"tslib": "2.4.0",
|
||||
"uuid": "8.3.2"
|
||||
@@ -81,10 +81,10 @@
|
||||
"@fastify/static": "6.4.0",
|
||||
"@fastify/view": "7.0.0",
|
||||
"@grpc/grpc-js": "1.6.7",
|
||||
"@grpc/proto-loader": "0.6.13",
|
||||
"@nestjs/apollo": "10.0.16",
|
||||
"@grpc/proto-loader": "0.7.0",
|
||||
"@nestjs/apollo": "10.0.17",
|
||||
"@nestjs/graphql": "10.0.18",
|
||||
"@nestjs/mongoose": "9.1.1",
|
||||
"@nestjs/mongoose": "9.2.0",
|
||||
"@nestjs/typeorm": "9.0.0",
|
||||
"@types/amqplib": "0.8.2",
|
||||
"@types/bytes": "3.1.1",
|
||||
@@ -96,7 +96,7 @@
|
||||
"@types/gulp": "4.0.9",
|
||||
"@types/http-errors": "1.8.2",
|
||||
"@types/mocha": "9.1.1",
|
||||
"@types/node": "18.0.3",
|
||||
"@types/node": "18.0.6",
|
||||
"@types/redis": "4.0.11",
|
||||
"@types/reflect-metadata": "0.1.0",
|
||||
"@types/sinon": "10.0.12",
|
||||
@@ -106,8 +106,8 @@
|
||||
"@typescript-eslint/parser": "4.33.0",
|
||||
"amqp-connection-manager": "4.1.3",
|
||||
"amqplib": "0.10.0",
|
||||
"apollo-server-core": "3.9.0",
|
||||
"apollo-server-express": "3.9.0",
|
||||
"apollo-server-core": "3.10.0",
|
||||
"apollo-server-express": "3.10.0",
|
||||
"artillery": "1.7.9",
|
||||
"body-parser": "1.20.0",
|
||||
"bytes": "3.1.2",
|
||||
@@ -117,9 +117,9 @@
|
||||
"chai-as-promised": "7.1.1",
|
||||
"clang-format": "1.8.0",
|
||||
"commitlint-circle": "1.0.0",
|
||||
"concurrently": "7.2.2",
|
||||
"concurrently": "7.3.0",
|
||||
"conventional-changelog": "3.1.25",
|
||||
"core-js": "3.23.4",
|
||||
"core-js": "3.23.5",
|
||||
"coveralls": "3.1.1",
|
||||
"delete-empty": "3.0.0",
|
||||
"engine.io-client": "6.2.2",
|
||||
@@ -128,7 +128,7 @@
|
||||
"eslint-plugin-import": "2.26.0",
|
||||
"eventsource": "2.0.2",
|
||||
"fancy-log": "2.0.0",
|
||||
"fastify": "4.2.0",
|
||||
"fastify": "4.2.1",
|
||||
"graphql": "15.8.0",
|
||||
"graphql-tools": "8.3.0",
|
||||
"gulp": "4.0.2",
|
||||
@@ -140,17 +140,17 @@
|
||||
"http-errors": "2.0.0",
|
||||
"husky": "8.0.1",
|
||||
"imports-loader": "4.0.0",
|
||||
"ioredis": "5.1.0",
|
||||
"ioredis": "5.2.1",
|
||||
"json-loader": "0.5.7",
|
||||
"kafkajs": "2.1.0",
|
||||
"lerna": "2.11.0",
|
||||
"lerna-changelog": "2.2.0",
|
||||
"light-my-request": "5.0.0",
|
||||
"light-my-request": "5.2.0",
|
||||
"lint-staged": "13.0.3",
|
||||
"markdown-table": "2.0.0",
|
||||
"merge-graphql-schemas": "1.7.8",
|
||||
"mocha": "10.0.0",
|
||||
"mongoose": "6.4.4",
|
||||
"mongoose": "6.4.5",
|
||||
"mqtt": "4.3.7",
|
||||
"multer": "1.4.4",
|
||||
"mysql2": "2.3.3",
|
||||
@@ -166,11 +166,11 @@
|
||||
"subscriptions-transport-ws": "0.11.0",
|
||||
"supertest": "6.2.4",
|
||||
"ts-morph": "15.1.0",
|
||||
"ts-node": "10.8.2",
|
||||
"ts-node": "10.9.1",
|
||||
"typeorm": "0.3.7",
|
||||
"typescript": "4.7.4",
|
||||
"wrk": "1.2.1",
|
||||
"ws": "8.8.0"
|
||||
"ws": "8.8.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 12.9.0"
|
||||
|
||||
@@ -3,9 +3,22 @@ import { types } from 'util';
|
||||
import { isFunction } from '../utils/shared.utils';
|
||||
import { StreamableFileOptions } from './streamable-options.interface';
|
||||
|
||||
export interface StreamableHandlerResponse {
|
||||
statusCode: number;
|
||||
send: (msg: string) => void;
|
||||
}
|
||||
|
||||
export class StreamableFile {
|
||||
private readonly stream: Readable;
|
||||
|
||||
protected handleError: (
|
||||
err: Error,
|
||||
response: StreamableHandlerResponse,
|
||||
) => void = (err: Error, res) => {
|
||||
res.statusCode = 400;
|
||||
res.send(err.message);
|
||||
};
|
||||
|
||||
constructor(buffer: Uint8Array, options?: StreamableFileOptions);
|
||||
constructor(readable: Readable, options?: StreamableFileOptions);
|
||||
constructor(
|
||||
@@ -38,4 +51,18 @@ export class StreamableFile {
|
||||
length,
|
||||
};
|
||||
}
|
||||
|
||||
get errorHandler(): (
|
||||
err: Error,
|
||||
response: StreamableHandlerResponse,
|
||||
) => void {
|
||||
return this.handleError;
|
||||
}
|
||||
|
||||
setErrorHandler(
|
||||
handler: (err: Error, response: StreamableHandlerResponse) => void,
|
||||
) {
|
||||
this.handleError = handler;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -43,7 +43,7 @@ export interface ConfigurableModuleAsyncOptions<
|
||||
* Function returning options (or a Promise resolving to options) to configure the
|
||||
* cache module.
|
||||
*/
|
||||
useFactory?: (...args: unknown[]) => Promise<ModuleOptions> | ModuleOptions;
|
||||
useFactory?: (...args: any[]) => Promise<ModuleOptions> | ModuleOptions;
|
||||
/**
|
||||
* Dependencies that a Factory may inject.
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@nestjs/common",
|
||||
"version": "9.0.2",
|
||||
"version": "9.0.5",
|
||||
"description": "Nest - modern, fast, powerful node.js web framework (@common)",
|
||||
"author": "Kamil Mysliwiec",
|
||||
"homepage": "https://nestjs.com",
|
||||
|
||||
26
packages/core/injector/helpers/provider-classifier.ts
Normal file
26
packages/core/injector/helpers/provider-classifier.ts
Normal file
@@ -0,0 +1,26 @@
|
||||
import {
|
||||
ClassProvider,
|
||||
FactoryProvider,
|
||||
Provider,
|
||||
ValueProvider,
|
||||
} from '@nestjs/common';
|
||||
import { isUndefined } from '@nestjs/common/utils/shared.utils';
|
||||
|
||||
export function isClassProvider<T = any>(
|
||||
provider: Provider,
|
||||
): provider is ClassProvider<T> {
|
||||
return Boolean((provider as ClassProvider<T>)?.useClass);
|
||||
}
|
||||
|
||||
export function isValueProvider<T = any>(
|
||||
provider: Provider,
|
||||
): provider is ValueProvider<T> {
|
||||
const providerValue = (provider as ValueProvider)?.useValue;
|
||||
return !isUndefined(providerValue);
|
||||
}
|
||||
|
||||
export function isFactoryProvider<T = any>(
|
||||
provider: Provider,
|
||||
): provider is FactoryProvider<T> {
|
||||
return Boolean((provider as FactoryProvider).useFactory);
|
||||
}
|
||||
@@ -778,7 +778,7 @@ export class Injector {
|
||||
inquirer?: InstanceWrapper,
|
||||
parentInquirer?: InstanceWrapper,
|
||||
): Promise<any[]> {
|
||||
const hosts = await Promise.all(
|
||||
const hosts: Array<InstanceWrapper<any> | undefined> = await Promise.all(
|
||||
metadata.map(async item =>
|
||||
this.resolveScopedComponentHost(
|
||||
item,
|
||||
@@ -791,7 +791,7 @@ export class Injector {
|
||||
const inquirerId = this.getInquirerId(inquirer);
|
||||
return hosts.map(
|
||||
item =>
|
||||
item.getInstanceByContextId(
|
||||
item?.getInstanceByContextId(
|
||||
this.getContextId(contextId, item),
|
||||
inquirerId,
|
||||
).instance,
|
||||
|
||||
@@ -13,6 +13,11 @@ import {
|
||||
} from '@nestjs/common/utils/shared.utils';
|
||||
import { iterate } from 'iterare';
|
||||
import { STATIC_CONTEXT } from './constants';
|
||||
import {
|
||||
isClassProvider,
|
||||
isFactoryProvider,
|
||||
isValueProvider,
|
||||
} from './helpers/provider-classifier';
|
||||
import { InstanceToken, Module } from './module';
|
||||
|
||||
export const INSTANCE_METADATA_SYMBOL = Symbol.for('instance_metadata:cache');
|
||||
@@ -384,22 +389,23 @@ export class InstanceWrapper<T = any> {
|
||||
}
|
||||
|
||||
public mergeWith(provider: Provider) {
|
||||
if (!isUndefined((provider as ValueProvider).useValue)) {
|
||||
if (isValueProvider(provider)) {
|
||||
this.metatype = null;
|
||||
this.inject = null;
|
||||
|
||||
this.scope = Scope.DEFAULT;
|
||||
|
||||
this.setInstanceByContextId(STATIC_CONTEXT, {
|
||||
instance: (provider as ValueProvider).useValue,
|
||||
instance: provider.useValue,
|
||||
isResolved: true,
|
||||
isPending: false,
|
||||
});
|
||||
} else if ((provider as ClassProvider).useClass) {
|
||||
} else if (isClassProvider(provider)) {
|
||||
this.inject = null;
|
||||
this.metatype = (provider as ClassProvider).useClass;
|
||||
} else if ((provider as FactoryProvider).useFactory) {
|
||||
this.metatype = (provider as FactoryProvider).useFactory;
|
||||
this.inject = (provider as FactoryProvider).inject || [];
|
||||
this.metatype = provider.useClass;
|
||||
} else if (isFactoryProvider(provider)) {
|
||||
this.metatype = provider.useFactory;
|
||||
this.inject = provider.inject || [];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@nestjs/core",
|
||||
"version": "9.0.2",
|
||||
"version": "9.0.5",
|
||||
"description": "Nest - modern, fast, powerful node.js web framework (@core)",
|
||||
"author": "Kamil Mysliwiec",
|
||||
"license": "MIT",
|
||||
@@ -36,7 +36,7 @@
|
||||
"uuid": "8.3.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@nestjs/common": "9.0.2"
|
||||
"@nestjs/common": "9.0.5"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@nestjs/common": "^9.0.0",
|
||||
|
||||
132
packages/core/test/injector/helpers/provider-classifier.spec.ts
Normal file
132
packages/core/test/injector/helpers/provider-classifier.spec.ts
Normal file
@@ -0,0 +1,132 @@
|
||||
import { ClassProvider, FactoryProvider, ValueProvider } from '@nestjs/common';
|
||||
import { expect } from 'chai';
|
||||
import {
|
||||
isClassProvider,
|
||||
isFactoryProvider,
|
||||
isValueProvider,
|
||||
} from '../../../injector/helpers/provider-classifier';
|
||||
|
||||
describe('provider classifier', () => {
|
||||
describe('isClassProvider', () => {
|
||||
it('should return true if useClass is present', () => {
|
||||
const classProvider: ClassProvider = {
|
||||
useClass: class TestClass {},
|
||||
provide: 'token',
|
||||
};
|
||||
|
||||
expect(isClassProvider(classProvider)).to.be.true;
|
||||
});
|
||||
|
||||
it('should return false if useClass is undefined', () => {
|
||||
const classProvider: ClassProvider = {
|
||||
useClass: undefined,
|
||||
provide: 'token',
|
||||
};
|
||||
|
||||
expect(isClassProvider(classProvider)).to.be.false;
|
||||
});
|
||||
|
||||
it('should return false if useClass is not present', () => {
|
||||
const classProvider = {
|
||||
provide: 'token',
|
||||
};
|
||||
|
||||
expect(isClassProvider(classProvider as ClassProvider)).to.be.false;
|
||||
});
|
||||
|
||||
it('should return false if provider is undefined', () => {
|
||||
const classProvider = undefined;
|
||||
|
||||
expect(isClassProvider(classProvider as ClassProvider)).to.be.false;
|
||||
});
|
||||
});
|
||||
|
||||
describe('isValueProvider', () => {
|
||||
it('should return true if useValue is not undefined', () => {
|
||||
const valueProvider: ValueProvider = {
|
||||
useValue: 'value',
|
||||
provide: 'token',
|
||||
};
|
||||
|
||||
expect(isValueProvider(valueProvider)).to.be.true;
|
||||
});
|
||||
|
||||
it('should return true if useValue is "false"', () => {
|
||||
const valueProvider: ValueProvider = {
|
||||
useValue: false,
|
||||
provide: 'token',
|
||||
};
|
||||
|
||||
expect(isValueProvider(valueProvider)).to.be.true;
|
||||
});
|
||||
|
||||
it('should return true if useValue is "null"', () => {
|
||||
const valueProvider: ValueProvider = {
|
||||
useValue: null,
|
||||
provide: 'token',
|
||||
};
|
||||
|
||||
expect(isValueProvider(valueProvider)).to.be.true;
|
||||
});
|
||||
|
||||
it('should return true if useValue is an empty string', () => {
|
||||
const valueProvider: ValueProvider = {
|
||||
useValue: null,
|
||||
provide: '',
|
||||
};
|
||||
|
||||
expect(isValueProvider(valueProvider)).to.be.true;
|
||||
});
|
||||
|
||||
it('should return false if useValue is undefined', () => {
|
||||
const valueProvider: ValueProvider = {
|
||||
useValue: undefined,
|
||||
provide: 'token',
|
||||
};
|
||||
|
||||
expect(isValueProvider(valueProvider)).to.be.false;
|
||||
});
|
||||
|
||||
it('should return false if useValue is not present', () => {
|
||||
const valueProvider = {
|
||||
provide: 'token',
|
||||
};
|
||||
|
||||
expect(isValueProvider(valueProvider as ValueProvider)).to.be.false;
|
||||
});
|
||||
|
||||
it('should return false if provider is undefined', () => {
|
||||
const valueProvider = undefined;
|
||||
|
||||
expect(isValueProvider(valueProvider as ValueProvider)).to.be.false;
|
||||
});
|
||||
});
|
||||
|
||||
describe('isFactoryProvider', () => {
|
||||
it('should return true if useFactory is present', () => {
|
||||
const factoryProvider: FactoryProvider = {
|
||||
provide: 'token',
|
||||
useFactory: () => {},
|
||||
};
|
||||
|
||||
expect(isFactoryProvider(factoryProvider)).to.be.true;
|
||||
});
|
||||
|
||||
it('should return false if useFactory is not present', () => {
|
||||
const factoryProvider = {
|
||||
provide: 'token',
|
||||
};
|
||||
|
||||
expect(isFactoryProvider(factoryProvider as FactoryProvider)).to.be.false;
|
||||
});
|
||||
|
||||
it('should return false if useFactory is undefined', () => {
|
||||
const factoryProvider: FactoryProvider = {
|
||||
provide: 'token',
|
||||
useFactory: undefined,
|
||||
};
|
||||
|
||||
expect(isFactoryProvider(factoryProvider as FactoryProvider)).to.be.false;
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -434,4 +434,68 @@ describe('InstanceWrapper', () => {
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('mergeWith', () => {
|
||||
describe('when provider is a ValueProvider', () => {
|
||||
it('should provide the given value in the STATIC_CONTEXT', () => {
|
||||
const wrapper = new InstanceWrapper();
|
||||
wrapper.mergeWith({
|
||||
useValue: 'value',
|
||||
provide: 'token',
|
||||
});
|
||||
|
||||
expect(
|
||||
wrapper.getInstanceByContextId(STATIC_CONTEXT).instance,
|
||||
).to.be.equal('value');
|
||||
});
|
||||
});
|
||||
|
||||
describe('when provider is a ClassProvider', () => {
|
||||
it('should alter the instance wrapper metatype with the given class', () => {
|
||||
const wrapper = new InstanceWrapper();
|
||||
|
||||
wrapper.mergeWith({
|
||||
useClass: TestClass,
|
||||
provide: 'token',
|
||||
});
|
||||
|
||||
expect(wrapper.metatype).to.be.eql(TestClass);
|
||||
});
|
||||
});
|
||||
|
||||
describe('when provider is a FactoryProvider', () => {
|
||||
describe('and it has injected dependencies', () => {
|
||||
it('should alter the instance wrapper metatype and inject attributes with the given values', () => {
|
||||
const wrapper = new InstanceWrapper();
|
||||
|
||||
const factory = (_dependency1: any, _dependency2: any) => {};
|
||||
const injectedDependencies = ['dependency1', 'dependency2'];
|
||||
|
||||
wrapper.mergeWith({
|
||||
provide: 'token',
|
||||
useFactory: factory,
|
||||
inject: injectedDependencies,
|
||||
});
|
||||
|
||||
expect(wrapper.metatype).to.be.eql(factory);
|
||||
expect(wrapper.inject).to.be.eq(injectedDependencies);
|
||||
});
|
||||
});
|
||||
|
||||
describe('and it has no injected dependencies', () => {
|
||||
it('should alter the instance wrapper metatype with the given values', () => {
|
||||
const wrapper = new InstanceWrapper();
|
||||
const factory = (_dependency1: any, _dependency2: any) => {};
|
||||
|
||||
wrapper.mergeWith({
|
||||
provide: 'token',
|
||||
useFactory: factory,
|
||||
});
|
||||
|
||||
expect(wrapper.metatype).to.be.eql(factory);
|
||||
expect(wrapper.inject).to.be.eql([]);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -16,6 +16,7 @@ import {
|
||||
RQM_DEFAULT_QUEUE,
|
||||
RQM_DEFAULT_QUEUE_OPTIONS,
|
||||
RQM_DEFAULT_URL,
|
||||
RQM_DEFAULT_NO_ASSERT,
|
||||
} from '../constants';
|
||||
import { RmqUrl } from '../external/rmq-url.interface';
|
||||
import { ReadPacket, RmqOptions, WritePacket } from '../interfaces';
|
||||
@@ -38,6 +39,7 @@ export class ClientRMQ extends ClientProxy {
|
||||
protected responseEmitter: EventEmitter;
|
||||
protected replyQueue: string;
|
||||
protected persistent: boolean;
|
||||
protected noAssert: boolean;
|
||||
|
||||
constructor(protected readonly options: RmqOptions['options']) {
|
||||
super();
|
||||
@@ -51,6 +53,9 @@ export class ClientRMQ extends ClientProxy {
|
||||
this.getOptionsProp(this.options, 'replyQueue') || REPLY_QUEUE;
|
||||
this.persistent =
|
||||
this.getOptionsProp(this.options, 'persistent') || RQM_DEFAULT_PERSISTENT;
|
||||
this.noAssert =
|
||||
this.getOptionsProp(this.options, 'noAssert') || RQM_DEFAULT_NO_ASSERT;
|
||||
|
||||
loadPackage('amqplib', ClientRMQ.name, () => require('amqplib'));
|
||||
rqmPackage = loadPackage('amqp-connection-manager', ClientRMQ.name, () =>
|
||||
require('amqp-connection-manager'),
|
||||
@@ -143,7 +148,9 @@ export class ClientRMQ extends ClientProxy {
|
||||
this.getOptionsProp(this.options, 'isGlobalPrefetchCount') ||
|
||||
RQM_DEFAULT_IS_GLOBAL_PREFETCH_COUNT;
|
||||
|
||||
await channel.assertQueue(this.queue, this.queueOptions);
|
||||
if (!this.queueOptions.noAssert) {
|
||||
await channel.assertQueue(this.queue, this.queueOptions);
|
||||
}
|
||||
await channel.prefetch(prefetchCount, isGlobalPrefetchCount);
|
||||
|
||||
this.responseEmitter = new EventEmitter();
|
||||
|
||||
@@ -39,6 +39,7 @@ export const RQM_DEFAULT_IS_GLOBAL_PREFETCH_COUNT = false;
|
||||
export const RQM_DEFAULT_QUEUE_OPTIONS = {};
|
||||
export const RQM_DEFAULT_NOACK = true;
|
||||
export const RQM_DEFAULT_PERSISTENT = false;
|
||||
export const RQM_DEFAULT_NO_ASSERT = false;
|
||||
export const GRPC_DEFAULT_PROTO_LOADER = '@grpc/proto-loader';
|
||||
|
||||
export const NO_EVENT_HANDLER = (text: TemplateStringsArray, pattern: string) =>
|
||||
|
||||
@@ -6,6 +6,7 @@ type KafkaContextArgs = [
|
||||
partition: number,
|
||||
topic: string,
|
||||
consumer: Consumer,
|
||||
heartbeat: () => Promise<void>,
|
||||
];
|
||||
|
||||
export class KafkaContext extends BaseRpcContext<KafkaContextArgs> {
|
||||
@@ -40,4 +41,11 @@ export class KafkaContext extends BaseRpcContext<KafkaContextArgs> {
|
||||
getConsumer() {
|
||||
return this.args[3];
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the Kafka heartbeat callback.
|
||||
*/
|
||||
getHeartbeat() {
|
||||
return this.args[4];
|
||||
}
|
||||
}
|
||||
|
||||
377
packages/microservices/external/kafka.interface.ts
vendored
377
packages/microservices/external/kafka.interface.ts
vendored
@@ -5,7 +5,6 @@
|
||||
*/
|
||||
|
||||
/// <reference types="node" />
|
||||
|
||||
import * as net from 'net';
|
||||
import * as tls from 'tls';
|
||||
|
||||
@@ -17,17 +16,44 @@ type XOR<T, U> = T | U extends object
|
||||
export declare class Kafka {
|
||||
constructor(config: KafkaConfig);
|
||||
producer(config?: ProducerConfig): Producer;
|
||||
consumer(config?: ConsumerConfig): Consumer;
|
||||
consumer(config: ConsumerConfig): Consumer;
|
||||
admin(config?: AdminConfig): Admin;
|
||||
logger(): Logger;
|
||||
}
|
||||
|
||||
export type BrokersFunction = () => string[] | Promise<string[]>;
|
||||
|
||||
type SaslAuthenticationRequest = {
|
||||
encode: () => Buffer | Promise<Buffer>;
|
||||
};
|
||||
type SaslAuthenticationResponse<ParseResult> = {
|
||||
decode: (rawResponse: Buffer) => Buffer | Promise<Buffer>;
|
||||
parse: (data: Buffer) => ParseResult;
|
||||
};
|
||||
|
||||
type Authenticator = {
|
||||
authenticate: () => Promise<void>;
|
||||
};
|
||||
|
||||
type AuthenticationProviderArgs = {
|
||||
host: string;
|
||||
port: number;
|
||||
logger: Logger;
|
||||
saslAuthenticate: <ParseResult>(
|
||||
request: SaslAuthenticationRequest,
|
||||
response?: SaslAuthenticationResponse<ParseResult>,
|
||||
) => Promise<ParseResult | void>;
|
||||
};
|
||||
|
||||
type Mechanism = {
|
||||
mechanism: string;
|
||||
authenticationProvider: (args: AuthenticationProviderArgs) => Authenticator;
|
||||
};
|
||||
|
||||
export interface KafkaConfig {
|
||||
brokers: string[] | BrokersFunction;
|
||||
ssl?: tls.ConnectionOptions | boolean;
|
||||
sasl?: SASLOptions;
|
||||
sasl?: SASLOptions | Mechanism;
|
||||
clientId?: string;
|
||||
connectionTimeout?: number;
|
||||
authenticationTimeout?: number;
|
||||
@@ -101,11 +127,18 @@ export interface PartitionerArgs {
|
||||
|
||||
export type ICustomPartitioner = () => (args: PartitionerArgs) => number;
|
||||
export type DefaultPartitioner = ICustomPartitioner;
|
||||
export type JavaCompatiblePartitioner = ICustomPartitioner;
|
||||
export type LegacyPartitioner = ICustomPartitioner;
|
||||
|
||||
export let Partitioners: {
|
||||
DefaultPartitioner: DefaultPartitioner;
|
||||
JavaCompatiblePartitioner: JavaCompatiblePartitioner;
|
||||
LegacyPartitioner: LegacyPartitioner;
|
||||
/**
|
||||
* @deprecated Use DefaultPartitioner instead
|
||||
*
|
||||
* The JavaCompatiblePartitioner was renamed DefaultPartitioner
|
||||
* and made to be the default in 2.0.0.
|
||||
*/
|
||||
JavaCompatiblePartitioner: DefaultPartitioner;
|
||||
};
|
||||
|
||||
export type PartitionMetadata = {
|
||||
@@ -118,7 +151,7 @@ export type PartitionMetadata = {
|
||||
};
|
||||
|
||||
export interface IHeaders {
|
||||
[key: string]: Buffer | string | undefined;
|
||||
[key: string]: Buffer | string | (Buffer | string)[] | undefined;
|
||||
}
|
||||
|
||||
export interface ConsumerConfig {
|
||||
@@ -141,7 +174,11 @@ export interface ConsumerConfig {
|
||||
rackId?: string;
|
||||
}
|
||||
|
||||
export type PartitionAssigner = (config: { cluster: Cluster }) => Assigner;
|
||||
export type PartitionAssigner = (config: {
|
||||
cluster: Cluster;
|
||||
groupId: string;
|
||||
logger: Logger;
|
||||
}) => Assigner;
|
||||
|
||||
export interface CoordinatorMetadata {
|
||||
errorCode: number;
|
||||
@@ -153,6 +190,10 @@ export interface CoordinatorMetadata {
|
||||
}
|
||||
|
||||
export type Cluster = {
|
||||
getNodeIds(): number[];
|
||||
metadata(): Promise<BrokerMetadata>;
|
||||
removeBroker(options: { host: string; port: number }): void;
|
||||
addMultipleTargetTopics(topics: string[]): Promise<void>;
|
||||
isConnected(): boolean;
|
||||
connect(): Promise<void>;
|
||||
disconnect(): Promise<void>;
|
||||
@@ -178,10 +219,7 @@ export type Cluster = {
|
||||
partitions: Array<{ partition: number }>;
|
||||
} & XOR<{ fromBeginning: boolean }, { fromTimestamp: number }>
|
||||
>,
|
||||
): Promise<{
|
||||
topic: string;
|
||||
partitions: Array<{ partition: number; offset: string }>;
|
||||
}>;
|
||||
): Promise<TopicOffsets[]>;
|
||||
};
|
||||
|
||||
export type Assignment = { [topic: string]: number[] };
|
||||
@@ -211,6 +249,7 @@ export interface RetryOptions {
|
||||
factor?: number;
|
||||
multiplier?: number;
|
||||
retries?: number;
|
||||
restartOnFailure?: (e: Error) => Promise<boolean>;
|
||||
}
|
||||
|
||||
export interface AdminConfig {
|
||||
@@ -222,7 +261,7 @@ export interface ITopicConfig {
|
||||
numPartitions?: number;
|
||||
replicationFactor?: number;
|
||||
replicaAssignment?: object[];
|
||||
configEntries?: object[];
|
||||
configEntries?: IResourceConfigEntry[];
|
||||
}
|
||||
|
||||
export interface ITopicPartitionConfig {
|
||||
@@ -236,20 +275,6 @@ export interface ITopicMetadata {
|
||||
partitions: PartitionMetadata[];
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated
|
||||
* Use ConfigResourceTypes or AclResourceTypes
|
||||
*/
|
||||
export enum ResourceTypes {
|
||||
UNKNOWN = 0,
|
||||
ANY = 1,
|
||||
TOPIC = 2,
|
||||
GROUP = 3,
|
||||
CLUSTER = 4,
|
||||
TRANSACTIONAL_ID = 5,
|
||||
DELEGATION_TOKEN = 6,
|
||||
}
|
||||
|
||||
export enum AclResourceTypes {
|
||||
UNKNOWN = 0,
|
||||
ANY = 1,
|
||||
@@ -267,6 +292,16 @@ export enum ConfigResourceTypes {
|
||||
BROKER_LOGGER = 8,
|
||||
}
|
||||
|
||||
export enum ConfigSource {
|
||||
UNKNOWN = 0,
|
||||
TOPIC_CONFIG = 1,
|
||||
DYNAMIC_BROKER_CONFIG = 2,
|
||||
DYNAMIC_DEFAULT_BROKER_CONFIG = 3,
|
||||
STATIC_BROKER_CONFIG = 4,
|
||||
DEFAULT_CONFIG = 5,
|
||||
DYNAMIC_BROKER_LOGGER_CONFIG = 6,
|
||||
}
|
||||
|
||||
export enum AclPermissionTypes {
|
||||
UNKNOWN = 0,
|
||||
ANY = 1,
|
||||
@@ -299,7 +334,7 @@ export enum ResourcePatternTypes {
|
||||
}
|
||||
|
||||
export interface ResourceConfigQuery {
|
||||
type: ResourceTypes | ConfigResourceTypes;
|
||||
type: ConfigResourceTypes;
|
||||
name: string;
|
||||
configNames?: string[];
|
||||
}
|
||||
@@ -308,6 +343,7 @@ export interface ConfigEntries {
|
||||
configName: string;
|
||||
configValue: string;
|
||||
isDefault: boolean;
|
||||
configSource: ConfigSource;
|
||||
isSensitive: boolean;
|
||||
readOnly: boolean;
|
||||
configSynonyms: ConfigSynonyms[];
|
||||
@@ -316,7 +352,7 @@ export interface ConfigEntries {
|
||||
export interface ConfigSynonyms {
|
||||
configName: string;
|
||||
configValue: string;
|
||||
configSource: number;
|
||||
configSource: ConfigSource;
|
||||
}
|
||||
|
||||
export interface DescribeConfigResponse {
|
||||
@@ -325,15 +361,20 @@ export interface DescribeConfigResponse {
|
||||
errorCode: number;
|
||||
errorMessage: string;
|
||||
resourceName: string;
|
||||
resourceType: ResourceTypes | ConfigResourceTypes;
|
||||
resourceType: ConfigResourceTypes;
|
||||
}[];
|
||||
throttleTime: number;
|
||||
}
|
||||
|
||||
export interface IResourceConfig {
|
||||
type: ResourceTypes | ConfigResourceTypes;
|
||||
export interface IResourceConfigEntry {
|
||||
name: string;
|
||||
configEntries: { name: string; value: string }[];
|
||||
value: string;
|
||||
}
|
||||
|
||||
export interface IResourceConfig {
|
||||
type: ConfigResourceTypes;
|
||||
name: string;
|
||||
configEntries: IResourceConfigEntry[];
|
||||
}
|
||||
|
||||
type ValueOf<T> = T[keyof T];
|
||||
@@ -387,11 +428,11 @@ export type RequestQueueSizeEvent = InstrumentationEvent<{
|
||||
queueSize: number;
|
||||
}>;
|
||||
|
||||
export interface SeekEntry {
|
||||
partition: number;
|
||||
offset: string;
|
||||
}
|
||||
export type SeekEntry = PartitionOffset;
|
||||
|
||||
export type FetchOffsetsPartition = PartitionOffset & {
|
||||
metadata: string | null;
|
||||
};
|
||||
export interface Acl {
|
||||
principal: string;
|
||||
host: string;
|
||||
@@ -408,7 +449,7 @@ export interface AclResource {
|
||||
export type AclEntry = Acl & AclResource;
|
||||
|
||||
export type DescribeAclResource = AclResource & {
|
||||
acl: Acl[];
|
||||
acls: Acl[];
|
||||
};
|
||||
|
||||
export interface DescribeAclResponse {
|
||||
@@ -472,9 +513,9 @@ export type Admin = {
|
||||
}): Promise<{ topics: Array<ITopicMetadata> }>;
|
||||
fetchOffsets(options: {
|
||||
groupId: string;
|
||||
topic: string;
|
||||
topics?: string[];
|
||||
resolveOffsets?: boolean;
|
||||
}): Promise<Array<SeekEntry & { metadata: string | null }>>;
|
||||
}): Promise<Array<{ topic: string; partitions: FetchOffsetsPartition[] }>>;
|
||||
fetchTopicOffsets(
|
||||
topic: string,
|
||||
): Promise<Array<SeekEntry & { high: string; low: string }>>;
|
||||
@@ -517,10 +558,30 @@ export type Admin = {
|
||||
}): Promise<void>;
|
||||
logger(): Logger;
|
||||
on(
|
||||
eventName: ValueOf<AdminEvents>,
|
||||
listener: (...args: any[]) => void,
|
||||
eventName: AdminEvents['CONNECT'],
|
||||
listener: (event: ConnectEvent) => void,
|
||||
): RemoveInstrumentationEventListener<typeof eventName>;
|
||||
events: AdminEvents;
|
||||
on(
|
||||
eventName: AdminEvents['DISCONNECT'],
|
||||
listener: (event: DisconnectEvent) => void,
|
||||
): RemoveInstrumentationEventListener<typeof eventName>;
|
||||
on(
|
||||
eventName: AdminEvents['REQUEST'],
|
||||
listener: (event: RequestEvent) => void,
|
||||
): RemoveInstrumentationEventListener<typeof eventName>;
|
||||
on(
|
||||
eventName: AdminEvents['REQUEST_QUEUE_SIZE'],
|
||||
listener: (event: RequestQueueSizeEvent) => void,
|
||||
): RemoveInstrumentationEventListener<typeof eventName>;
|
||||
on(
|
||||
eventName: AdminEvents['REQUEST_TIMEOUT'],
|
||||
listener: (event: RequestTimeoutEvent) => void,
|
||||
): RemoveInstrumentationEventListener<typeof eventName>;
|
||||
on(
|
||||
eventName: ValueOf<AdminEvents>,
|
||||
listener: (event: InstrumentationEvent<any>) => void,
|
||||
): RemoveInstrumentationEventListener<typeof eventName>;
|
||||
readonly events: AdminEvents;
|
||||
};
|
||||
|
||||
export let PartitionAssigners: { roundRobin: PartitionAssigner };
|
||||
@@ -575,38 +636,44 @@ export type Logger = {
|
||||
error: (message: string, extra?: object) => void;
|
||||
warn: (message: string, extra?: object) => void;
|
||||
debug: (message: string, extra?: object) => void;
|
||||
|
||||
namespace: (namespace: string, logLevel?: logLevel) => Logger;
|
||||
setLogLevel: (logLevel: logLevel) => void;
|
||||
};
|
||||
|
||||
export interface BrokerMetadata {
|
||||
brokers: Array<{ nodeId: number; host: string; port: number; rack?: string }>;
|
||||
topicMetadata: Array<{
|
||||
topicErrorCode: number;
|
||||
topic: string;
|
||||
partitionMetadata: PartitionMetadata[];
|
||||
}>;
|
||||
}
|
||||
|
||||
export interface ApiVersions {
|
||||
[apiKey: number]: {
|
||||
minVersion: number;
|
||||
maxVersion: number;
|
||||
};
|
||||
}
|
||||
|
||||
export type Broker = {
|
||||
isConnected(): boolean;
|
||||
connect(): Promise<void>;
|
||||
disconnect(): Promise<void>;
|
||||
apiVersions(): Promise<{
|
||||
[apiKey: number]: { minVersion: number; maxVersion: number };
|
||||
}>;
|
||||
metadata(topics: string[]): Promise<{
|
||||
brokers: Array<{
|
||||
nodeId: number;
|
||||
host: string;
|
||||
port: number;
|
||||
rack?: string;
|
||||
}>;
|
||||
topicMetadata: Array<{
|
||||
topicErrorCode: number;
|
||||
topic: number;
|
||||
partitionMetadata: PartitionMetadata[];
|
||||
}>;
|
||||
}>;
|
||||
apiVersions(): Promise<ApiVersions>;
|
||||
metadata(topics: string[]): Promise<BrokerMetadata>;
|
||||
describeGroups: (options: { groupIds: string[] }) => Promise<any>;
|
||||
offsetCommit(request: {
|
||||
groupId: string;
|
||||
groupGenerationId: number;
|
||||
memberId: string;
|
||||
retentionTime?: number;
|
||||
topics: Array<{
|
||||
topic: string;
|
||||
partitions: Array<{ partition: number; offset: string }>;
|
||||
}>;
|
||||
topics: TopicOffsets[];
|
||||
}): Promise<any>;
|
||||
offsetFetch(request: { groupId: string; topics: TopicOffsets[] }): Promise<{
|
||||
responses: TopicOffsets[];
|
||||
}>;
|
||||
fetch(request: {
|
||||
replicaId?: number;
|
||||
isolationLevel?: number;
|
||||
@@ -623,17 +690,45 @@ export type Broker = {
|
||||
}>;
|
||||
rackId?: string;
|
||||
}): Promise<any>;
|
||||
produce(request: {
|
||||
topicData: Array<{
|
||||
topic: string;
|
||||
partitions: Array<{
|
||||
partition: number;
|
||||
firstSequence?: number;
|
||||
messages: Message[];
|
||||
}>;
|
||||
}>;
|
||||
transactionalId?: string;
|
||||
producerId?: number;
|
||||
producerEpoch?: number;
|
||||
acks?: number;
|
||||
timeout?: number;
|
||||
compression?: CompressionTypes;
|
||||
}): Promise<any>;
|
||||
};
|
||||
|
||||
export type KafkaMessage = {
|
||||
key: Buffer;
|
||||
interface MessageSetEntry {
|
||||
key: Buffer | null;
|
||||
value: Buffer | null;
|
||||
timestamp: string;
|
||||
size: number;
|
||||
attributes: number;
|
||||
offset: string;
|
||||
headers?: IHeaders;
|
||||
};
|
||||
size: number;
|
||||
headers?: never;
|
||||
}
|
||||
|
||||
interface RecordBatchEntry {
|
||||
key: Buffer | null;
|
||||
value: Buffer | null;
|
||||
timestamp: string;
|
||||
attributes: number;
|
||||
offset: string;
|
||||
headers: IHeaders;
|
||||
size?: never;
|
||||
}
|
||||
|
||||
export type KafkaMessage = MessageSetEntry | RecordBatchEntry;
|
||||
|
||||
export interface ProducerRecord {
|
||||
topic: string;
|
||||
@@ -697,10 +792,30 @@ export type Producer = Sender & {
|
||||
connect(): Promise<void>;
|
||||
disconnect(): Promise<void>;
|
||||
isIdempotent(): boolean;
|
||||
events: ProducerEvents;
|
||||
readonly events: ProducerEvents;
|
||||
on(
|
||||
eventName: ProducerEvents['CONNECT'],
|
||||
listener: (event: ConnectEvent) => void,
|
||||
): RemoveInstrumentationEventListener<typeof eventName>;
|
||||
on(
|
||||
eventName: ProducerEvents['DISCONNECT'],
|
||||
listener: (event: DisconnectEvent) => void,
|
||||
): RemoveInstrumentationEventListener<typeof eventName>;
|
||||
on(
|
||||
eventName: ProducerEvents['REQUEST'],
|
||||
listener: (event: RequestEvent) => void,
|
||||
): RemoveInstrumentationEventListener<typeof eventName>;
|
||||
on(
|
||||
eventName: ProducerEvents['REQUEST_QUEUE_SIZE'],
|
||||
listener: (event: RequestQueueSizeEvent) => void,
|
||||
): RemoveInstrumentationEventListener<typeof eventName>;
|
||||
on(
|
||||
eventName: ProducerEvents['REQUEST_TIMEOUT'],
|
||||
listener: (event: RequestTimeoutEvent) => void,
|
||||
): RemoveInstrumentationEventListener<typeof eventName>;
|
||||
on(
|
||||
eventName: ValueOf<ProducerEvents>,
|
||||
listener: (...args: any[]) => void,
|
||||
listener: (event: InstrumentationEvent<any>) => void,
|
||||
): RemoveInstrumentationEventListener<typeof eventName>;
|
||||
transaction(): Promise<Transaction>;
|
||||
logger(): Logger;
|
||||
@@ -750,16 +865,18 @@ export type GroupDescriptions = {
|
||||
};
|
||||
|
||||
export type TopicPartitions = { topic: string; partitions: number[] };
|
||||
export type TopicPartitionOffsetAndMetadata = {
|
||||
|
||||
export type TopicPartition = {
|
||||
topic: string;
|
||||
partition: number;
|
||||
};
|
||||
export type TopicPartitionOffset = TopicPartition & {
|
||||
offset: string;
|
||||
};
|
||||
export type TopicPartitionOffsetAndMetadata = TopicPartitionOffset & {
|
||||
metadata?: string | null;
|
||||
};
|
||||
|
||||
// TODO: Remove with 2.x
|
||||
export type TopicPartitionOffsetAndMedata = TopicPartitionOffsetAndMetadata;
|
||||
|
||||
export type Batch = {
|
||||
topic: string;
|
||||
partition: number;
|
||||
@@ -795,6 +912,7 @@ export type ConsumerEvents = {
|
||||
DISCONNECT: 'consumer.disconnect';
|
||||
STOP: 'consumer.stop';
|
||||
CRASH: 'consumer.crash';
|
||||
REBALANCING: 'consumer.rebalancing';
|
||||
RECEIVED_UNSUBSCRIBED_TOPICS: 'consumer.received_unsubscribed_topics';
|
||||
REQUEST: 'consumer.network.request';
|
||||
REQUEST_TIMEOUT: 'consumer.network.request_timeout';
|
||||
@@ -809,13 +927,7 @@ export type ConsumerCommitOffsetsEvent = InstrumentationEvent<{
|
||||
groupId: string;
|
||||
memberId: string;
|
||||
groupGenerationId: number;
|
||||
topics: {
|
||||
topic: string;
|
||||
partitions: {
|
||||
offset: string;
|
||||
partition: string;
|
||||
}[];
|
||||
}[];
|
||||
topics: TopicOffsets[];
|
||||
}>;
|
||||
export interface IMemberAssignment {
|
||||
[key: string]: number[];
|
||||
@@ -829,9 +941,11 @@ export type ConsumerGroupJoinEvent = InstrumentationEvent<{
|
||||
memberId: string;
|
||||
memberAssignment: IMemberAssignment;
|
||||
}>;
|
||||
export type ConsumerFetchStartEvent = InstrumentationEvent<{ nodeId: number }>;
|
||||
export type ConsumerFetchEvent = InstrumentationEvent<{
|
||||
numberOfBatches: number;
|
||||
duration: number;
|
||||
nodeId: number;
|
||||
}>;
|
||||
interface IBatchProcessEvent {
|
||||
topic: string;
|
||||
@@ -853,6 +967,10 @@ export type ConsumerCrashEvent = InstrumentationEvent<{
|
||||
groupId: string;
|
||||
restart: boolean;
|
||||
}>;
|
||||
export type ConsumerRebalancingEvent = InstrumentationEvent<{
|
||||
groupId: string;
|
||||
memberId: string;
|
||||
}>;
|
||||
export type ConsumerReceivedUnsubcribedTopicsEvent = InstrumentationEvent<{
|
||||
groupId: string;
|
||||
generationId: number;
|
||||
@@ -870,12 +988,15 @@ export interface EachMessagePayload {
|
||||
topic: string;
|
||||
partition: number;
|
||||
message: KafkaMessage;
|
||||
heartbeat(): Promise<void>;
|
||||
pause(): () => void;
|
||||
}
|
||||
|
||||
export interface EachBatchPayload {
|
||||
batch: Batch;
|
||||
resolveOffset(offset: string): void;
|
||||
heartbeat(): Promise<void>;
|
||||
pause(): () => void;
|
||||
commitOffsetsIfNecessary(offsets?: Offsets): Promise<void>;
|
||||
uncommittedOffsets(): OffsetsByTopicPartition;
|
||||
isRunning(): boolean;
|
||||
@@ -894,45 +1015,117 @@ export type ConsumerEachMessagePayload = EachMessagePayload;
|
||||
*/
|
||||
export type ConsumerEachBatchPayload = EachBatchPayload;
|
||||
|
||||
export type EachBatchHandler = (payload: EachBatchPayload) => Promise<void>;
|
||||
export type EachMessageHandler = (payload: EachMessagePayload) => Promise<void>;
|
||||
|
||||
export type ConsumerRunConfig = {
|
||||
autoCommit?: boolean;
|
||||
autoCommitInterval?: number | null;
|
||||
autoCommitThreshold?: number | null;
|
||||
eachBatchAutoResolve?: boolean;
|
||||
partitionsConsumedConcurrently?: number;
|
||||
eachBatch?: (payload: EachBatchPayload) => Promise<void>;
|
||||
eachMessage?: (payload: EachMessagePayload) => Promise<void>;
|
||||
eachBatch?: EachBatchHandler;
|
||||
eachMessage?: EachMessageHandler;
|
||||
};
|
||||
|
||||
/**
|
||||
* @deprecated Replaced by ConsumerSubscribeTopics
|
||||
*/
|
||||
export type ConsumerSubscribeTopic = {
|
||||
topic: string | RegExp;
|
||||
fromBeginning?: boolean;
|
||||
};
|
||||
export type ConsumerSubscribeTopics = {
|
||||
topics: (string | RegExp)[];
|
||||
fromBeginning?: boolean;
|
||||
};
|
||||
|
||||
export type Consumer = {
|
||||
connect(): Promise<void>;
|
||||
disconnect(): Promise<void>;
|
||||
subscribe(topic: ConsumerSubscribeTopic): Promise<void>;
|
||||
subscribe(
|
||||
subscription: ConsumerSubscribeTopics | ConsumerSubscribeTopic,
|
||||
): Promise<void>;
|
||||
stop(): Promise<void>;
|
||||
run(config?: ConsumerRunConfig): Promise<void>;
|
||||
commitOffsets(
|
||||
topicPartitions: Array<TopicPartitionOffsetAndMetadata>,
|
||||
): Promise<void>;
|
||||
seek(topicPartition: {
|
||||
topic: string;
|
||||
partition: number;
|
||||
offset: string;
|
||||
}): void;
|
||||
seek(topicPartitionOffset: TopicPartitionOffset): void;
|
||||
describeGroup(): Promise<GroupDescription>;
|
||||
pause(topics: Array<{ topic: string; partitions?: number[] }>): void;
|
||||
paused(): TopicPartitions[];
|
||||
resume(topics: Array<{ topic: string; partitions?: number[] }>): void;
|
||||
on(
|
||||
eventName: ConsumerEvents['HEARTBEAT'],
|
||||
listener: (event: ConsumerHeartbeatEvent) => void,
|
||||
): RemoveInstrumentationEventListener<typeof eventName>;
|
||||
on(
|
||||
eventName: ConsumerEvents['COMMIT_OFFSETS'],
|
||||
listener: (event: ConsumerCommitOffsetsEvent) => void,
|
||||
): RemoveInstrumentationEventListener<typeof eventName>;
|
||||
on(
|
||||
eventName: ConsumerEvents['GROUP_JOIN'],
|
||||
listener: (event: ConsumerGroupJoinEvent) => void,
|
||||
): RemoveInstrumentationEventListener<typeof eventName>;
|
||||
on(
|
||||
eventName: ConsumerEvents['FETCH_START'],
|
||||
listener: (event: ConsumerFetchStartEvent) => void,
|
||||
): RemoveInstrumentationEventListener<typeof eventName>;
|
||||
on(
|
||||
eventName: ConsumerEvents['FETCH'],
|
||||
listener: (event: ConsumerFetchEvent) => void,
|
||||
): RemoveInstrumentationEventListener<typeof eventName>;
|
||||
on(
|
||||
eventName: ConsumerEvents['START_BATCH_PROCESS'],
|
||||
listener: (event: ConsumerStartBatchProcessEvent) => void,
|
||||
): RemoveInstrumentationEventListener<typeof eventName>;
|
||||
on(
|
||||
eventName: ConsumerEvents['END_BATCH_PROCESS'],
|
||||
listener: (event: ConsumerEndBatchProcessEvent) => void,
|
||||
): RemoveInstrumentationEventListener<typeof eventName>;
|
||||
on(
|
||||
eventName: ConsumerEvents['CONNECT'],
|
||||
listener: (event: ConnectEvent) => void,
|
||||
): RemoveInstrumentationEventListener<typeof eventName>;
|
||||
on(
|
||||
eventName: ConsumerEvents['DISCONNECT'],
|
||||
listener: (event: DisconnectEvent) => void,
|
||||
): RemoveInstrumentationEventListener<typeof eventName>;
|
||||
on(
|
||||
eventName: ConsumerEvents['STOP'],
|
||||
listener: (event: InstrumentationEvent<null>) => void,
|
||||
): RemoveInstrumentationEventListener<typeof eventName>;
|
||||
on(
|
||||
eventName: ConsumerEvents['CRASH'],
|
||||
listener: (event: ConsumerCrashEvent) => void,
|
||||
): RemoveInstrumentationEventListener<typeof eventName>;
|
||||
on(
|
||||
eventName: ConsumerEvents['REBALANCING'],
|
||||
listener: (event: ConsumerRebalancingEvent) => void,
|
||||
): RemoveInstrumentationEventListener<typeof eventName>;
|
||||
on(
|
||||
eventName: ConsumerEvents['RECEIVED_UNSUBSCRIBED_TOPICS'],
|
||||
listener: (event: ConsumerReceivedUnsubcribedTopicsEvent) => void,
|
||||
): RemoveInstrumentationEventListener<typeof eventName>;
|
||||
on(
|
||||
eventName: ConsumerEvents['REQUEST'],
|
||||
listener: (event: RequestEvent) => void,
|
||||
): RemoveInstrumentationEventListener<typeof eventName>;
|
||||
on(
|
||||
eventName: ConsumerEvents['REQUEST_TIMEOUT'],
|
||||
listener: (event: RequestTimeoutEvent) => void,
|
||||
): RemoveInstrumentationEventListener<typeof eventName>;
|
||||
on(
|
||||
eventName: ConsumerEvents['REQUEST_QUEUE_SIZE'],
|
||||
listener: (event: RequestQueueSizeEvent) => void,
|
||||
): RemoveInstrumentationEventListener<typeof eventName>;
|
||||
on(
|
||||
eventName: ValueOf<ConsumerEvents>,
|
||||
listener: (...args: any[]) => void,
|
||||
listener: (event: InstrumentationEvent<any>) => void,
|
||||
): RemoveInstrumentationEventListener<typeof eventName>;
|
||||
logger(): Logger;
|
||||
events: ConsumerEvents;
|
||||
readonly events: ConsumerEvents;
|
||||
};
|
||||
|
||||
export enum CompressionTypes {
|
||||
@@ -943,7 +1136,7 @@ export enum CompressionTypes {
|
||||
ZSTD = 4,
|
||||
}
|
||||
|
||||
export let CompressionCodecs: {
|
||||
export var CompressionCodecs: {
|
||||
[CompressionTypes.GZIP]: () => any;
|
||||
[CompressionTypes.Snappy]: () => any;
|
||||
[CompressionTypes.LZ4]: () => any;
|
||||
@@ -955,6 +1148,7 @@ export declare class KafkaJSError extends Error {
|
||||
readonly name: string;
|
||||
readonly retriable: boolean;
|
||||
readonly helpUrl?: string;
|
||||
readonly cause?: Error;
|
||||
|
||||
constructor(e: Error | string, metadata?: KafkaJSErrorMetadata);
|
||||
}
|
||||
@@ -977,7 +1171,6 @@ export declare class KafkaJSOffsetOutOfRange extends KafkaJSProtocolError {
|
||||
|
||||
export declare class KafkaJSNumberOfRetriesExceeded extends KafkaJSNonRetriableError {
|
||||
readonly stack: string;
|
||||
readonly originalError: Error;
|
||||
readonly retryCount: number;
|
||||
readonly retryTime: number;
|
||||
constructor(
|
||||
|
||||
@@ -86,7 +86,8 @@ export interface TcpOptions {
|
||||
export interface RedisOptions {
|
||||
transport?: Transport.REDIS;
|
||||
options?: {
|
||||
url?: string;
|
||||
host?: string;
|
||||
port?: number;
|
||||
retryAttempts?: number;
|
||||
retryDelay?: number;
|
||||
serializer?: Serializer;
|
||||
@@ -181,6 +182,7 @@ export interface RmqOptions {
|
||||
replyQueue?: string;
|
||||
persistent?: boolean;
|
||||
headers?: Record<string, string>;
|
||||
noAssert?: boolean;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@nestjs/microservices",
|
||||
"version": "9.0.2",
|
||||
"version": "9.0.5",
|
||||
"description": "Nest - modern, fast, powerful node.js web framework (@microservices)",
|
||||
"author": "Kamil Mysliwiec",
|
||||
"license": "MIT",
|
||||
@@ -21,8 +21,8 @@
|
||||
"tslib": "2.4.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@nestjs/common": "9.0.2",
|
||||
"@nestjs/core": "9.0.2"
|
||||
"@nestjs/common": "9.0.5",
|
||||
"@nestjs/core": "9.0.5"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@grpc/grpc-js": "*",
|
||||
|
||||
@@ -167,6 +167,7 @@ export class ServerKafka extends Server implements CustomTransportStrategy {
|
||||
payload.partition,
|
||||
payload.topic,
|
||||
this.consumer,
|
||||
payload.heartbeat,
|
||||
]);
|
||||
const handler = this.getHandlerByPattern(packet.pattern);
|
||||
// if the correlation id or reply topic is not set
|
||||
|
||||
@@ -16,6 +16,7 @@ import {
|
||||
RQM_DEFAULT_QUEUE,
|
||||
RQM_DEFAULT_QUEUE_OPTIONS,
|
||||
RQM_DEFAULT_URL,
|
||||
RQM_DEFAULT_NO_ASSERT,
|
||||
} from '../constants';
|
||||
import { RmqContext } from '../ctx-host';
|
||||
import { Transport } from '../enums';
|
||||
@@ -40,6 +41,7 @@ export class ServerRMQ extends Server implements CustomTransportStrategy {
|
||||
protected readonly prefetchCount: number;
|
||||
protected readonly queueOptions: any;
|
||||
protected readonly isGlobalPrefetchCount: boolean;
|
||||
protected readonly noAssert: boolean;
|
||||
|
||||
constructor(protected readonly options: RmqOptions['options']) {
|
||||
super();
|
||||
@@ -55,6 +57,8 @@ export class ServerRMQ extends Server implements CustomTransportStrategy {
|
||||
this.queueOptions =
|
||||
this.getOptionsProp(this.options, 'queueOptions') ||
|
||||
RQM_DEFAULT_QUEUE_OPTIONS;
|
||||
this.noAssert =
|
||||
this.getOptionsProp(this.options, 'noAssert') || RQM_DEFAULT_NO_ASSERT;
|
||||
|
||||
this.loadPackage('amqplib', ServerRMQ.name, () => require('amqplib'));
|
||||
rqmPackage = this.loadPackage(
|
||||
@@ -115,7 +119,9 @@ export class ServerRMQ extends Server implements CustomTransportStrategy {
|
||||
public async setupChannel(channel: any, callback: Function) {
|
||||
const noAck = this.getOptionsProp(this.options, 'noAck', RQM_DEFAULT_NOACK);
|
||||
|
||||
await channel.assertQueue(this.queue, this.queueOptions);
|
||||
if (!this.queueOptions.noAssert) {
|
||||
await channel.assertQueue(this.queue, this.queueOptions);
|
||||
}
|
||||
await channel.prefetch(this.prefetchCount, this.isGlobalPrefetchCount);
|
||||
channel.consume(
|
||||
this.queue,
|
||||
|
||||
@@ -22,6 +22,8 @@ describe('ClientKafka', () => {
|
||||
const timestamp = new Date().toISOString();
|
||||
const attributes = 1;
|
||||
const messageValue = 'test-message';
|
||||
const heartbeat = async () => {};
|
||||
const pause = () => () => {};
|
||||
|
||||
// message
|
||||
const message: KafkaMessage = {
|
||||
@@ -57,6 +59,8 @@ describe('ClientKafka', () => {
|
||||
},
|
||||
message,
|
||||
),
|
||||
heartbeat,
|
||||
pause,
|
||||
};
|
||||
|
||||
const payloadDisposed: EachMessagePayload = {
|
||||
@@ -75,6 +79,8 @@ describe('ClientKafka', () => {
|
||||
value: { test: true },
|
||||
},
|
||||
),
|
||||
heartbeat,
|
||||
pause,
|
||||
};
|
||||
|
||||
const payloadError: EachMessagePayload = {
|
||||
@@ -93,6 +99,8 @@ describe('ClientKafka', () => {
|
||||
value: null,
|
||||
},
|
||||
),
|
||||
heartbeat,
|
||||
pause,
|
||||
};
|
||||
|
||||
const payloadWithoutCorrelation: EachMessagePayload = {
|
||||
@@ -104,6 +112,8 @@ describe('ClientKafka', () => {
|
||||
},
|
||||
message,
|
||||
),
|
||||
heartbeat,
|
||||
pause,
|
||||
};
|
||||
|
||||
// deserialized payload
|
||||
@@ -118,6 +128,8 @@ describe('ClientKafka', () => {
|
||||
},
|
||||
deserializedMessage,
|
||||
),
|
||||
heartbeat,
|
||||
pause,
|
||||
};
|
||||
|
||||
const deserializedPayloadDisposed: EachMessagePayload = {
|
||||
@@ -136,6 +148,8 @@ describe('ClientKafka', () => {
|
||||
value: { test: true },
|
||||
},
|
||||
),
|
||||
heartbeat,
|
||||
pause,
|
||||
};
|
||||
|
||||
const deserializedPayloadError: EachMessagePayload = {
|
||||
@@ -154,6 +168,8 @@ describe('ClientKafka', () => {
|
||||
value: null,
|
||||
},
|
||||
),
|
||||
heartbeat,
|
||||
pause,
|
||||
};
|
||||
|
||||
let client: ClientKafka;
|
||||
|
||||
@@ -3,12 +3,12 @@ import { KafkaContext } from '../../ctx-host';
|
||||
import { Consumer, KafkaMessage } from '../../external/kafka.interface';
|
||||
|
||||
describe('KafkaContext', () => {
|
||||
const args = ['test', { test: true }, undefined, { test: 'consumer' }];
|
||||
const args = ['test', { test: true }, undefined, { test: 'consumer' }, () => {}];
|
||||
let context: KafkaContext;
|
||||
|
||||
beforeEach(() => {
|
||||
context = new KafkaContext(
|
||||
args as [KafkaMessage, number, string, Consumer],
|
||||
args as [KafkaMessage, number, string, Consumer, () => Promise<void>],
|
||||
);
|
||||
});
|
||||
describe('getTopic', () => {
|
||||
@@ -31,4 +31,9 @@ describe('KafkaContext', () => {
|
||||
expect(context.getConsumer()).to.deep.eq({ test: 'consumer' });
|
||||
});
|
||||
});
|
||||
describe('getHeartbeat', () => {
|
||||
it('should return heartbeat callback', () => {
|
||||
expect(context.getHeartbeat()).to.be.eql(args[4]);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -26,6 +26,8 @@ describe('ServerKafka', () => {
|
||||
const key = '1';
|
||||
const timestamp = new Date().toISOString();
|
||||
const messageValue = 'test-message';
|
||||
const heartbeat = async () => {};
|
||||
const pause = () => () => {};
|
||||
|
||||
const eventMessage: KafkaMessage = {
|
||||
key: Buffer.from(key),
|
||||
@@ -44,6 +46,8 @@ describe('ServerKafka', () => {
|
||||
},
|
||||
eventMessage,
|
||||
),
|
||||
heartbeat,
|
||||
pause,
|
||||
};
|
||||
|
||||
const eventWithCorrelationIdPayload: EachMessagePayload = {
|
||||
@@ -57,6 +61,8 @@ describe('ServerKafka', () => {
|
||||
},
|
||||
eventMessage,
|
||||
),
|
||||
heartbeat,
|
||||
pause,
|
||||
};
|
||||
|
||||
const message: KafkaMessage = Object.assign(
|
||||
@@ -73,6 +79,8 @@ describe('ServerKafka', () => {
|
||||
topic,
|
||||
partition: 0,
|
||||
message,
|
||||
heartbeat,
|
||||
pause,
|
||||
};
|
||||
|
||||
let server: ServerKafka;
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import {
|
||||
InternalServerErrorException,
|
||||
Logger,
|
||||
RawBodyRequest,
|
||||
RequestMethod,
|
||||
StreamableFile,
|
||||
@@ -25,13 +26,16 @@ import { RouterMethodFactory } from '@nestjs/core/helpers/router-method-factory'
|
||||
import {
|
||||
json as bodyParserJson,
|
||||
OptionsJson,
|
||||
OptionsUrlencoded,
|
||||
urlencoded as bodyParserUrlencoded,
|
||||
} from 'body-parser';
|
||||
import * as cors from 'cors';
|
||||
import * as express from 'express';
|
||||
import * as http from 'http';
|
||||
import * as https from 'https';
|
||||
import { PassThrough, pipeline } from 'stream';
|
||||
import { ServeStaticOptions } from '../interfaces/serve-static-options.interface';
|
||||
import { getBodyParserOptions } from './utils/get-body-parser-options.util';
|
||||
|
||||
type VersionedRoute = <
|
||||
TRequest extends Record<string, any> = any,
|
||||
@@ -44,6 +48,7 @@ type VersionedRoute = <
|
||||
|
||||
export class ExpressAdapter extends AbstractHttpAdapter {
|
||||
private readonly routerMethodFactory = new RouterMethodFactory();
|
||||
private readonly logger = new Logger(ExpressAdapter.name);
|
||||
|
||||
constructor(instance?: any) {
|
||||
super(instance || express());
|
||||
@@ -76,7 +81,17 @@ export class ExpressAdapter extends AbstractHttpAdapter {
|
||||
) {
|
||||
response.setHeader('Content-Length', streamHeaders.length);
|
||||
}
|
||||
return body.getStream().pipe(response);
|
||||
return pipeline(
|
||||
body.getStream().once('error', (err: Error) => {
|
||||
body.errorHandler(err, response);
|
||||
}),
|
||||
response,
|
||||
(err: Error) => {
|
||||
if (err) {
|
||||
this.logger.error(err.message, err.stack);
|
||||
}
|
||||
},
|
||||
);
|
||||
}
|
||||
return isObject(body) ? response.json(body) : response.send(String(body));
|
||||
}
|
||||
@@ -194,21 +209,15 @@ export class ExpressAdapter extends AbstractHttpAdapter {
|
||||
}
|
||||
|
||||
public registerParserMiddleware(prefix?: string, rawBody?: boolean) {
|
||||
let bodyParserJsonOptions: OptionsJson | undefined;
|
||||
if (rawBody === true) {
|
||||
bodyParserJsonOptions = {
|
||||
verify: (req: RawBodyRequest<http.IncomingMessage>, _res, buffer) => {
|
||||
if (Buffer.isBuffer(buffer)) {
|
||||
req.rawBody = buffer;
|
||||
}
|
||||
return true;
|
||||
},
|
||||
};
|
||||
}
|
||||
const bodyParserJsonOptions = getBodyParserOptions<OptionsJson>(rawBody);
|
||||
const bodyParserUrlencodedOptions = getBodyParserOptions<OptionsUrlencoded>(
|
||||
rawBody,
|
||||
{ extended: true },
|
||||
);
|
||||
|
||||
const parserMiddleware = {
|
||||
jsonParser: bodyParserJson(bodyParserJsonOptions),
|
||||
urlencodedParser: bodyParserUrlencoded({ extended: true }),
|
||||
urlencodedParser: bodyParserUrlencoded(bodyParserUrlencodedOptions),
|
||||
};
|
||||
Object.keys(parserMiddleware)
|
||||
.filter(parser => !this.isMiddlewareApplied(parser))
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
import type { RawBodyRequest } from '@nestjs/common';
|
||||
import type { Options } from 'body-parser';
|
||||
import type { IncomingMessage, ServerResponse } from 'http';
|
||||
|
||||
const rawBodyParser = (
|
||||
req: RawBodyRequest<IncomingMessage>,
|
||||
_res: ServerResponse,
|
||||
buffer: Buffer,
|
||||
) => {
|
||||
if (Buffer.isBuffer(buffer)) {
|
||||
req.rawBody = buffer;
|
||||
}
|
||||
return true;
|
||||
};
|
||||
|
||||
export function getBodyParserOptions<ParserOptions extends Options>(
|
||||
rawBody: boolean,
|
||||
options?: ParserOptions | undefined,
|
||||
): ParserOptions {
|
||||
let parserOptions: ParserOptions = options ?? ({} as ParserOptions);
|
||||
|
||||
if (rawBody === true) {
|
||||
parserOptions = {
|
||||
...parserOptions,
|
||||
verify: rawBodyParser,
|
||||
};
|
||||
}
|
||||
|
||||
return parserOptions;
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@nestjs/platform-express",
|
||||
"version": "9.0.2",
|
||||
"version": "9.0.5",
|
||||
"description": "Nest - modern, fast, powerful node.js web framework (@platform-express)",
|
||||
"author": "Kamil Mysliwiec",
|
||||
"license": "MIT",
|
||||
@@ -24,8 +24,8 @@
|
||||
"tslib": "2.4.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@nestjs/common": "9.0.2",
|
||||
"@nestjs/core": "9.0.2"
|
||||
"@nestjs/common": "9.0.5",
|
||||
"@nestjs/core": "9.0.5"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@nestjs/common": "^9.0.0",
|
||||
|
||||
@@ -41,6 +41,8 @@ import {
|
||||
InjectOptions,
|
||||
Response as LightMyRequestResponse,
|
||||
} from 'light-my-request';
|
||||
// `querystring` is used internally in fastify for registering urlencoded body parser.
|
||||
import { parse as querystringParse } from 'querystring';
|
||||
import {
|
||||
FastifyStaticOptions,
|
||||
PointOfViewOptions,
|
||||
@@ -454,13 +456,9 @@ export class FastifyAdapter<
|
||||
if (this._isParserRegistered) {
|
||||
return;
|
||||
}
|
||||
this.register(
|
||||
import('@fastify/formbody') as Parameters<TInstance['register']>[0],
|
||||
);
|
||||
|
||||
if (rawBody) {
|
||||
this.registerContentParserWithRawBody();
|
||||
}
|
||||
this.registerUrlencodedContentParser(rawBody);
|
||||
this.registerJsonContentParser(rawBody);
|
||||
|
||||
this._isParserRegistered = true;
|
||||
}
|
||||
@@ -509,16 +507,18 @@ export class FastifyAdapter<
|
||||
return !('status' in response);
|
||||
}
|
||||
|
||||
private registerContentParserWithRawBody() {
|
||||
private registerJsonContentParser(rawBody?: boolean) {
|
||||
const { bodyLimit } = this.getInstance().initialConfig;
|
||||
|
||||
this.getInstance().addContentTypeParser<Buffer>(
|
||||
'application/json',
|
||||
{ parseAs: 'buffer' },
|
||||
{ parseAs: 'buffer', bodyLimit },
|
||||
(
|
||||
req: RawBodyRequest<FastifyRequest<unknown, TServer, TRawRequest>>,
|
||||
body: Buffer,
|
||||
done,
|
||||
) => {
|
||||
if (Buffer.isBuffer(body)) {
|
||||
if (rawBody === true && Buffer.isBuffer(body)) {
|
||||
req.rawBody = body;
|
||||
}
|
||||
|
||||
@@ -533,6 +533,26 @@ export class FastifyAdapter<
|
||||
);
|
||||
}
|
||||
|
||||
private registerUrlencodedContentParser(rawBody?: boolean) {
|
||||
const { bodyLimit } = this.getInstance().initialConfig;
|
||||
|
||||
this.getInstance().addContentTypeParser<Buffer>(
|
||||
'application/x-www-form-urlencoded',
|
||||
{ parseAs: 'buffer', bodyLimit },
|
||||
(
|
||||
req: RawBodyRequest<FastifyRequest<unknown, TServer, TRawRequest>>,
|
||||
body: Buffer,
|
||||
done,
|
||||
) => {
|
||||
if (rawBody === true && Buffer.isBuffer(body)) {
|
||||
req.rawBody = body;
|
||||
}
|
||||
|
||||
done(null, querystringParse(body.toString()));
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
private async registerMiddie() {
|
||||
this.isMiddieRegistered = true;
|
||||
await this.register(
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@nestjs/platform-fastify",
|
||||
"version": "9.0.2",
|
||||
"version": "9.0.5",
|
||||
"description": "Nest - modern, fast, powerful node.js web framework (@platform-fastify)",
|
||||
"author": "Kamil Mysliwiec",
|
||||
"license": "MIT",
|
||||
@@ -20,8 +20,8 @@
|
||||
"@fastify/cors": "8.0.0",
|
||||
"@fastify/formbody": "7.0.1",
|
||||
"@fastify/middie": "8.0.0",
|
||||
"fastify": "4.2.0",
|
||||
"light-my-request": "5.0.0",
|
||||
"fastify": "4.2.1",
|
||||
"light-my-request": "5.2.0",
|
||||
"path-to-regexp": "3.2.0",
|
||||
"tslib": "2.4.0"
|
||||
},
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@nestjs/platform-socket.io",
|
||||
"version": "9.0.2",
|
||||
"version": "9.0.5",
|
||||
"description": "Nest - modern, fast, powerful node.js web framework (@platform-socket.io)",
|
||||
"author": "Kamil Mysliwiec",
|
||||
"license": "MIT",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@nestjs/platform-ws",
|
||||
"version": "9.0.2",
|
||||
"version": "9.0.5",
|
||||
"description": "Nest - modern, fast, powerful node.js web framework (@platform-ws)",
|
||||
"author": "Kamil Mysliwiec",
|
||||
"license": "MIT",
|
||||
@@ -18,7 +18,7 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"tslib": "2.4.0",
|
||||
"ws": "8.8.0"
|
||||
"ws": "8.8.1"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@nestjs/common": "^9.0.0",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@nestjs/testing",
|
||||
"version": "9.0.2",
|
||||
"version": "9.0.5",
|
||||
"description": "Nest - modern, fast, powerful node.js web framework (@testing)",
|
||||
"author": "Kamil Mysliwiec",
|
||||
"license": "MIT",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@nestjs/websockets",
|
||||
"version": "9.0.2",
|
||||
"version": "9.0.5",
|
||||
"description": "Nest - modern, fast, powerful node.js web framework (@websockets)",
|
||||
"author": "Kamil Mysliwiec",
|
||||
"license": "MIT",
|
||||
@@ -17,8 +17,8 @@
|
||||
"tslib": "2.4.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@nestjs/common": "9.0.2",
|
||||
"@nestjs/core": "9.0.2"
|
||||
"@nestjs/common": "9.0.5",
|
||||
"@nestjs/core": "9.0.5"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@nestjs/common": "^9.0.0",
|
||||
|
||||
73
sample/28-sse/package-lock.json
generated
73
sample/28-sse/package-lock.json
generated
@@ -1390,6 +1390,30 @@
|
||||
"node": ">=6.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@jridgewell/source-map": {
|
||||
"version": "0.3.2",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz",
|
||||
"integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@jridgewell/gen-mapping": "^0.3.0",
|
||||
"@jridgewell/trace-mapping": "^0.3.9"
|
||||
}
|
||||
},
|
||||
"node_modules/@jridgewell/source-map/node_modules/@jridgewell/gen-mapping": {
|
||||
"version": "0.3.2",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
|
||||
"integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@jridgewell/set-array": "^1.0.1",
|
||||
"@jridgewell/sourcemap-codec": "^1.4.10",
|
||||
"@jridgewell/trace-mapping": "^0.3.9"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@jridgewell/sourcemap-codec": {
|
||||
"version": "1.4.14",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
|
||||
@@ -7798,13 +7822,14 @@
|
||||
}
|
||||
},
|
||||
"node_modules/terser": {
|
||||
"version": "5.10.0",
|
||||
"resolved": "https://registry.npmjs.org/terser/-/terser-5.10.0.tgz",
|
||||
"integrity": "sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==",
|
||||
"version": "5.14.2",
|
||||
"resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz",
|
||||
"integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@jridgewell/source-map": "^0.3.2",
|
||||
"acorn": "^8.5.0",
|
||||
"commander": "^2.20.0",
|
||||
"source-map": "~0.7.2",
|
||||
"source-map-support": "~0.5.20"
|
||||
},
|
||||
"bin": {
|
||||
@@ -7812,14 +7837,6 @@
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"acorn": "^8.5.0"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"acorn": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/terser-webpack-plugin": {
|
||||
@@ -9612,6 +9629,29 @@
|
||||
"integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
|
||||
"dev": true
|
||||
},
|
||||
"@jridgewell/source-map": {
|
||||
"version": "0.3.2",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz",
|
||||
"integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jridgewell/gen-mapping": "^0.3.0",
|
||||
"@jridgewell/trace-mapping": "^0.3.9"
|
||||
},
|
||||
"dependencies": {
|
||||
"@jridgewell/gen-mapping": {
|
||||
"version": "0.3.2",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
|
||||
"integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jridgewell/set-array": "^1.0.1",
|
||||
"@jridgewell/sourcemap-codec": "^1.4.10",
|
||||
"@jridgewell/trace-mapping": "^0.3.9"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"@jridgewell/sourcemap-codec": {
|
||||
"version": "1.4.14",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
|
||||
@@ -14440,13 +14480,14 @@
|
||||
}
|
||||
},
|
||||
"terser": {
|
||||
"version": "5.10.0",
|
||||
"resolved": "https://registry.npmjs.org/terser/-/terser-5.10.0.tgz",
|
||||
"integrity": "sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==",
|
||||
"version": "5.14.2",
|
||||
"resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz",
|
||||
"integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jridgewell/source-map": "^0.3.2",
|
||||
"acorn": "^8.5.0",
|
||||
"commander": "^2.20.0",
|
||||
"source-map": "~0.7.2",
|
||||
"source-map-support": "~0.5.20"
|
||||
},
|
||||
"dependencies": {
|
||||
|
||||
73
sample/29-file-upload/package-lock.json
generated
73
sample/29-file-upload/package-lock.json
generated
@@ -1380,6 +1380,30 @@
|
||||
"node": ">=6.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@jridgewell/source-map": {
|
||||
"version": "0.3.2",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz",
|
||||
"integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@jridgewell/gen-mapping": "^0.3.0",
|
||||
"@jridgewell/trace-mapping": "^0.3.9"
|
||||
}
|
||||
},
|
||||
"node_modules/@jridgewell/source-map/node_modules/@jridgewell/gen-mapping": {
|
||||
"version": "0.3.2",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
|
||||
"integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@jridgewell/set-array": "^1.0.1",
|
||||
"@jridgewell/sourcemap-codec": "^1.4.10",
|
||||
"@jridgewell/trace-mapping": "^0.3.9"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@jridgewell/sourcemap-codec": {
|
||||
"version": "1.4.14",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
|
||||
@@ -7799,13 +7823,14 @@
|
||||
}
|
||||
},
|
||||
"node_modules/terser": {
|
||||
"version": "5.10.0",
|
||||
"resolved": "https://registry.npmjs.org/terser/-/terser-5.10.0.tgz",
|
||||
"integrity": "sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==",
|
||||
"version": "5.14.2",
|
||||
"resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz",
|
||||
"integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@jridgewell/source-map": "^0.3.2",
|
||||
"acorn": "^8.5.0",
|
||||
"commander": "^2.20.0",
|
||||
"source-map": "~0.7.2",
|
||||
"source-map-support": "~0.5.20"
|
||||
},
|
||||
"bin": {
|
||||
@@ -7813,14 +7838,6 @@
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"acorn": "^8.5.0"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"acorn": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/terser-webpack-plugin": {
|
||||
@@ -9604,6 +9621,29 @@
|
||||
"integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
|
||||
"dev": true
|
||||
},
|
||||
"@jridgewell/source-map": {
|
||||
"version": "0.3.2",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz",
|
||||
"integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jridgewell/gen-mapping": "^0.3.0",
|
||||
"@jridgewell/trace-mapping": "^0.3.9"
|
||||
},
|
||||
"dependencies": {
|
||||
"@jridgewell/gen-mapping": {
|
||||
"version": "0.3.2",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
|
||||
"integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jridgewell/set-array": "^1.0.1",
|
||||
"@jridgewell/sourcemap-codec": "^1.4.10",
|
||||
"@jridgewell/trace-mapping": "^0.3.9"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"@jridgewell/sourcemap-codec": {
|
||||
"version": "1.4.14",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
|
||||
@@ -14446,13 +14486,14 @@
|
||||
}
|
||||
},
|
||||
"terser": {
|
||||
"version": "5.10.0",
|
||||
"resolved": "https://registry.npmjs.org/terser/-/terser-5.10.0.tgz",
|
||||
"integrity": "sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==",
|
||||
"version": "5.14.2",
|
||||
"resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz",
|
||||
"integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jridgewell/source-map": "^0.3.2",
|
||||
"acorn": "^8.5.0",
|
||||
"commander": "^2.20.0",
|
||||
"source-map": "~0.7.2",
|
||||
"source-map-support": "~0.5.20"
|
||||
},
|
||||
"dependencies": {
|
||||
|
||||
73
sample/30-event-emitter/package-lock.json
generated
73
sample/30-event-emitter/package-lock.json
generated
@@ -1394,6 +1394,30 @@
|
||||
"node": ">=6.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@jridgewell/source-map": {
|
||||
"version": "0.3.2",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz",
|
||||
"integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@jridgewell/gen-mapping": "^0.3.0",
|
||||
"@jridgewell/trace-mapping": "^0.3.9"
|
||||
}
|
||||
},
|
||||
"node_modules/@jridgewell/source-map/node_modules/@jridgewell/gen-mapping": {
|
||||
"version": "0.3.2",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
|
||||
"integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@jridgewell/set-array": "^1.0.1",
|
||||
"@jridgewell/sourcemap-codec": "^1.4.10",
|
||||
"@jridgewell/trace-mapping": "^0.3.9"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@jridgewell/sourcemap-codec": {
|
||||
"version": "1.4.14",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
|
||||
@@ -8037,13 +8061,14 @@
|
||||
}
|
||||
},
|
||||
"node_modules/terser": {
|
||||
"version": "5.10.0",
|
||||
"resolved": "https://registry.npmjs.org/terser/-/terser-5.10.0.tgz",
|
||||
"integrity": "sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==",
|
||||
"version": "5.14.2",
|
||||
"resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz",
|
||||
"integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@jridgewell/source-map": "^0.3.2",
|
||||
"acorn": "^8.5.0",
|
||||
"commander": "^2.20.0",
|
||||
"source-map": "~0.7.2",
|
||||
"source-map-support": "~0.5.20"
|
||||
},
|
||||
"bin": {
|
||||
@@ -8051,14 +8076,6 @@
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"acorn": "^8.5.0"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"acorn": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/terser-webpack-plugin": {
|
||||
@@ -9907,6 +9924,29 @@
|
||||
"integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
|
||||
"dev": true
|
||||
},
|
||||
"@jridgewell/source-map": {
|
||||
"version": "0.3.2",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz",
|
||||
"integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jridgewell/gen-mapping": "^0.3.0",
|
||||
"@jridgewell/trace-mapping": "^0.3.9"
|
||||
},
|
||||
"dependencies": {
|
||||
"@jridgewell/gen-mapping": {
|
||||
"version": "0.3.2",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
|
||||
"integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jridgewell/set-array": "^1.0.1",
|
||||
"@jridgewell/sourcemap-codec": "^1.4.10",
|
||||
"@jridgewell/trace-mapping": "^0.3.9"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"@jridgewell/sourcemap-codec": {
|
||||
"version": "1.4.14",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
|
||||
@@ -14923,13 +14963,14 @@
|
||||
}
|
||||
},
|
||||
"terser": {
|
||||
"version": "5.10.0",
|
||||
"resolved": "https://registry.npmjs.org/terser/-/terser-5.10.0.tgz",
|
||||
"integrity": "sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==",
|
||||
"version": "5.14.2",
|
||||
"resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz",
|
||||
"integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jridgewell/source-map": "^0.3.2",
|
||||
"acorn": "^8.5.0",
|
||||
"commander": "^2.20.0",
|
||||
"source-map": "~0.7.2",
|
||||
"source-map-support": "~0.5.20"
|
||||
},
|
||||
"dependencies": {
|
||||
|
||||
@@ -1787,6 +1787,30 @@
|
||||
"node": ">=6.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@jridgewell/source-map": {
|
||||
"version": "0.3.2",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz",
|
||||
"integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@jridgewell/gen-mapping": "^0.3.0",
|
||||
"@jridgewell/trace-mapping": "^0.3.9"
|
||||
}
|
||||
},
|
||||
"node_modules/@jridgewell/source-map/node_modules/@jridgewell/gen-mapping": {
|
||||
"version": "0.3.2",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
|
||||
"integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@jridgewell/set-array": "^1.0.1",
|
||||
"@jridgewell/sourcemap-codec": "^1.4.10",
|
||||
"@jridgewell/trace-mapping": "^0.3.9"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@jridgewell/sourcemap-codec": {
|
||||
"version": "1.4.14",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
|
||||
@@ -9731,13 +9755,14 @@
|
||||
}
|
||||
},
|
||||
"node_modules/terser": {
|
||||
"version": "5.10.0",
|
||||
"resolved": "https://registry.npmjs.org/terser/-/terser-5.10.0.tgz",
|
||||
"integrity": "sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==",
|
||||
"version": "5.14.2",
|
||||
"resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz",
|
||||
"integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@jridgewell/source-map": "^0.3.2",
|
||||
"acorn": "^8.5.0",
|
||||
"commander": "^2.20.0",
|
||||
"source-map": "~0.7.2",
|
||||
"source-map-support": "~0.5.20"
|
||||
},
|
||||
"bin": {
|
||||
@@ -9745,14 +9770,6 @@
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"acorn": "^8.5.0"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"acorn": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/terser-webpack-plugin": {
|
||||
@@ -11999,6 +12016,29 @@
|
||||
"integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
|
||||
"dev": true
|
||||
},
|
||||
"@jridgewell/source-map": {
|
||||
"version": "0.3.2",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz",
|
||||
"integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jridgewell/gen-mapping": "^0.3.0",
|
||||
"@jridgewell/trace-mapping": "^0.3.9"
|
||||
},
|
||||
"dependencies": {
|
||||
"@jridgewell/gen-mapping": {
|
||||
"version": "0.3.2",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
|
||||
"integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jridgewell/set-array": "^1.0.1",
|
||||
"@jridgewell/sourcemap-codec": "^1.4.10",
|
||||
"@jridgewell/trace-mapping": "^0.3.9"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"@jridgewell/sourcemap-codec": {
|
||||
"version": "1.4.14",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
|
||||
@@ -17941,13 +17981,14 @@
|
||||
}
|
||||
},
|
||||
"terser": {
|
||||
"version": "5.10.0",
|
||||
"resolved": "https://registry.npmjs.org/terser/-/terser-5.10.0.tgz",
|
||||
"integrity": "sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==",
|
||||
"version": "5.14.2",
|
||||
"resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz",
|
||||
"integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jridgewell/source-map": "^0.3.2",
|
||||
"acorn": "^8.5.0",
|
||||
"commander": "^2.20.0",
|
||||
"source-map": "~0.7.2",
|
||||
"source-map-support": "~0.5.20"
|
||||
},
|
||||
"dependencies": {
|
||||
|
||||
@@ -1796,6 +1796,30 @@
|
||||
"node": ">=6.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@jridgewell/source-map": {
|
||||
"version": "0.3.2",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz",
|
||||
"integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@jridgewell/gen-mapping": "^0.3.0",
|
||||
"@jridgewell/trace-mapping": "^0.3.9"
|
||||
}
|
||||
},
|
||||
"node_modules/@jridgewell/source-map/node_modules/@jridgewell/gen-mapping": {
|
||||
"version": "0.3.2",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
|
||||
"integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@jridgewell/set-array": "^1.0.1",
|
||||
"@jridgewell/sourcemap-codec": "^1.4.10",
|
||||
"@jridgewell/trace-mapping": "^0.3.9"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@jridgewell/sourcemap-codec": {
|
||||
"version": "1.4.14",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
|
||||
@@ -9742,13 +9766,14 @@
|
||||
}
|
||||
},
|
||||
"node_modules/terser": {
|
||||
"version": "5.10.0",
|
||||
"resolved": "https://registry.npmjs.org/terser/-/terser-5.10.0.tgz",
|
||||
"integrity": "sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==",
|
||||
"version": "5.14.2",
|
||||
"resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz",
|
||||
"integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@jridgewell/source-map": "^0.3.2",
|
||||
"acorn": "^8.5.0",
|
||||
"commander": "^2.20.0",
|
||||
"source-map": "~0.7.2",
|
||||
"source-map-support": "~0.5.20"
|
||||
},
|
||||
"bin": {
|
||||
@@ -9756,14 +9781,6 @@
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"acorn": "^8.5.0"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"acorn": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/terser-webpack-plugin": {
|
||||
@@ -12012,6 +12029,29 @@
|
||||
"integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
|
||||
"dev": true
|
||||
},
|
||||
"@jridgewell/source-map": {
|
||||
"version": "0.3.2",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz",
|
||||
"integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jridgewell/gen-mapping": "^0.3.0",
|
||||
"@jridgewell/trace-mapping": "^0.3.9"
|
||||
},
|
||||
"dependencies": {
|
||||
"@jridgewell/gen-mapping": {
|
||||
"version": "0.3.2",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
|
||||
"integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jridgewell/set-array": "^1.0.1",
|
||||
"@jridgewell/sourcemap-codec": "^1.4.10",
|
||||
"@jridgewell/trace-mapping": "^0.3.9"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"@jridgewell/sourcemap-codec": {
|
||||
"version": "1.4.14",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
|
||||
@@ -17958,13 +17998,14 @@
|
||||
}
|
||||
},
|
||||
"terser": {
|
||||
"version": "5.10.0",
|
||||
"resolved": "https://registry.npmjs.org/terser/-/terser-5.10.0.tgz",
|
||||
"integrity": "sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==",
|
||||
"version": "5.14.2",
|
||||
"resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz",
|
||||
"integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jridgewell/source-map": "^0.3.2",
|
||||
"acorn": "^8.5.0",
|
||||
"commander": "^2.20.0",
|
||||
"source-map": "~0.7.2",
|
||||
"source-map-support": "~0.5.20"
|
||||
},
|
||||
"dependencies": {
|
||||
|
||||
@@ -1796,6 +1796,30 @@
|
||||
"node": ">=6.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@jridgewell/source-map": {
|
||||
"version": "0.3.2",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz",
|
||||
"integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@jridgewell/gen-mapping": "^0.3.0",
|
||||
"@jridgewell/trace-mapping": "^0.3.9"
|
||||
}
|
||||
},
|
||||
"node_modules/@jridgewell/source-map/node_modules/@jridgewell/gen-mapping": {
|
||||
"version": "0.3.2",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
|
||||
"integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@jridgewell/set-array": "^1.0.1",
|
||||
"@jridgewell/sourcemap-codec": "^1.4.10",
|
||||
"@jridgewell/trace-mapping": "^0.3.9"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@jridgewell/sourcemap-codec": {
|
||||
"version": "1.4.14",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
|
||||
@@ -9742,13 +9766,14 @@
|
||||
}
|
||||
},
|
||||
"node_modules/terser": {
|
||||
"version": "5.10.0",
|
||||
"resolved": "https://registry.npmjs.org/terser/-/terser-5.10.0.tgz",
|
||||
"integrity": "sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==",
|
||||
"version": "5.14.2",
|
||||
"resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz",
|
||||
"integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@jridgewell/source-map": "^0.3.2",
|
||||
"acorn": "^8.5.0",
|
||||
"commander": "^2.20.0",
|
||||
"source-map": "~0.7.2",
|
||||
"source-map-support": "~0.5.20"
|
||||
},
|
||||
"bin": {
|
||||
@@ -9756,14 +9781,6 @@
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"acorn": "^8.5.0"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"acorn": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/terser-webpack-plugin": {
|
||||
@@ -12012,6 +12029,29 @@
|
||||
"integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
|
||||
"dev": true
|
||||
},
|
||||
"@jridgewell/source-map": {
|
||||
"version": "0.3.2",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz",
|
||||
"integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jridgewell/gen-mapping": "^0.3.0",
|
||||
"@jridgewell/trace-mapping": "^0.3.9"
|
||||
},
|
||||
"dependencies": {
|
||||
"@jridgewell/gen-mapping": {
|
||||
"version": "0.3.2",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
|
||||
"integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jridgewell/set-array": "^1.0.1",
|
||||
"@jridgewell/sourcemap-codec": "^1.4.10",
|
||||
"@jridgewell/trace-mapping": "^0.3.9"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"@jridgewell/sourcemap-codec": {
|
||||
"version": "1.4.14",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
|
||||
@@ -17958,13 +17998,14 @@
|
||||
}
|
||||
},
|
||||
"terser": {
|
||||
"version": "5.10.0",
|
||||
"resolved": "https://registry.npmjs.org/terser/-/terser-5.10.0.tgz",
|
||||
"integrity": "sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==",
|
||||
"version": "5.14.2",
|
||||
"resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz",
|
||||
"integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jridgewell/source-map": "^0.3.2",
|
||||
"acorn": "^8.5.0",
|
||||
"commander": "^2.20.0",
|
||||
"source-map": "~0.7.2",
|
||||
"source-map-support": "~0.5.20"
|
||||
},
|
||||
"dependencies": {
|
||||
|
||||
@@ -1787,6 +1787,30 @@
|
||||
"node": ">=6.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@jridgewell/source-map": {
|
||||
"version": "0.3.2",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz",
|
||||
"integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@jridgewell/gen-mapping": "^0.3.0",
|
||||
"@jridgewell/trace-mapping": "^0.3.9"
|
||||
}
|
||||
},
|
||||
"node_modules/@jridgewell/source-map/node_modules/@jridgewell/gen-mapping": {
|
||||
"version": "0.3.2",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
|
||||
"integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@jridgewell/set-array": "^1.0.1",
|
||||
"@jridgewell/sourcemap-codec": "^1.4.10",
|
||||
"@jridgewell/trace-mapping": "^0.3.9"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@jridgewell/sourcemap-codec": {
|
||||
"version": "1.4.14",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
|
||||
@@ -9740,13 +9764,14 @@
|
||||
}
|
||||
},
|
||||
"node_modules/terser": {
|
||||
"version": "5.10.0",
|
||||
"resolved": "https://registry.npmjs.org/terser/-/terser-5.10.0.tgz",
|
||||
"integrity": "sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==",
|
||||
"version": "5.14.2",
|
||||
"resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz",
|
||||
"integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@jridgewell/source-map": "^0.3.2",
|
||||
"acorn": "^8.5.0",
|
||||
"commander": "^2.20.0",
|
||||
"source-map": "~0.7.2",
|
||||
"source-map-support": "~0.5.20"
|
||||
},
|
||||
"bin": {
|
||||
@@ -9754,14 +9779,6 @@
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"acorn": "^8.5.0"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"acorn": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/terser-webpack-plugin": {
|
||||
@@ -12008,6 +12025,29 @@
|
||||
"integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
|
||||
"dev": true
|
||||
},
|
||||
"@jridgewell/source-map": {
|
||||
"version": "0.3.2",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz",
|
||||
"integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jridgewell/gen-mapping": "^0.3.0",
|
||||
"@jridgewell/trace-mapping": "^0.3.9"
|
||||
},
|
||||
"dependencies": {
|
||||
"@jridgewell/gen-mapping": {
|
||||
"version": "0.3.2",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
|
||||
"integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jridgewell/set-array": "^1.0.1",
|
||||
"@jridgewell/sourcemap-codec": "^1.4.10",
|
||||
"@jridgewell/trace-mapping": "^0.3.9"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"@jridgewell/sourcemap-codec": {
|
||||
"version": "1.4.14",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
|
||||
@@ -17956,13 +17996,14 @@
|
||||
}
|
||||
},
|
||||
"terser": {
|
||||
"version": "5.10.0",
|
||||
"resolved": "https://registry.npmjs.org/terser/-/terser-5.10.0.tgz",
|
||||
"integrity": "sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==",
|
||||
"version": "5.14.2",
|
||||
"resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz",
|
||||
"integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jridgewell/source-map": "^0.3.2",
|
||||
"acorn": "^8.5.0",
|
||||
"commander": "^2.20.0",
|
||||
"source-map": "~0.7.2",
|
||||
"source-map-support": "~0.5.20"
|
||||
},
|
||||
"dependencies": {
|
||||
|
||||
@@ -1796,6 +1796,30 @@
|
||||
"node": ">=6.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@jridgewell/source-map": {
|
||||
"version": "0.3.2",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz",
|
||||
"integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@jridgewell/gen-mapping": "^0.3.0",
|
||||
"@jridgewell/trace-mapping": "^0.3.9"
|
||||
}
|
||||
},
|
||||
"node_modules/@jridgewell/source-map/node_modules/@jridgewell/gen-mapping": {
|
||||
"version": "0.3.2",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
|
||||
"integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@jridgewell/set-array": "^1.0.1",
|
||||
"@jridgewell/sourcemap-codec": "^1.4.10",
|
||||
"@jridgewell/trace-mapping": "^0.3.9"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@jridgewell/sourcemap-codec": {
|
||||
"version": "1.4.14",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
|
||||
@@ -9733,13 +9757,14 @@
|
||||
}
|
||||
},
|
||||
"node_modules/terser": {
|
||||
"version": "5.10.0",
|
||||
"resolved": "https://registry.npmjs.org/terser/-/terser-5.10.0.tgz",
|
||||
"integrity": "sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==",
|
||||
"version": "5.14.2",
|
||||
"resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz",
|
||||
"integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@jridgewell/source-map": "^0.3.2",
|
||||
"acorn": "^8.5.0",
|
||||
"commander": "^2.20.0",
|
||||
"source-map": "~0.7.2",
|
||||
"source-map-support": "~0.5.20"
|
||||
},
|
||||
"bin": {
|
||||
@@ -9747,14 +9772,6 @@
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"acorn": "^8.5.0"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"acorn": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/terser-webpack-plugin": {
|
||||
@@ -12003,6 +12020,29 @@
|
||||
"integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
|
||||
"dev": true
|
||||
},
|
||||
"@jridgewell/source-map": {
|
||||
"version": "0.3.2",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz",
|
||||
"integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jridgewell/gen-mapping": "^0.3.0",
|
||||
"@jridgewell/trace-mapping": "^0.3.9"
|
||||
},
|
||||
"dependencies": {
|
||||
"@jridgewell/gen-mapping": {
|
||||
"version": "0.3.2",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
|
||||
"integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jridgewell/set-array": "^1.0.1",
|
||||
"@jridgewell/sourcemap-codec": "^1.4.10",
|
||||
"@jridgewell/trace-mapping": "^0.3.9"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"@jridgewell/sourcemap-codec": {
|
||||
"version": "1.4.14",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
|
||||
@@ -17943,13 +17983,14 @@
|
||||
}
|
||||
},
|
||||
"terser": {
|
||||
"version": "5.10.0",
|
||||
"resolved": "https://registry.npmjs.org/terser/-/terser-5.10.0.tgz",
|
||||
"integrity": "sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==",
|
||||
"version": "5.14.2",
|
||||
"resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz",
|
||||
"integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jridgewell/source-map": "^0.3.2",
|
||||
"acorn": "^8.5.0",
|
||||
"commander": "^2.20.0",
|
||||
"source-map": "~0.7.2",
|
||||
"source-map-support": "~0.5.20"
|
||||
},
|
||||
"dependencies": {
|
||||
|
||||
@@ -9729,9 +9729,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/terser": {
|
||||
"version": "5.14.1",
|
||||
"resolved": "https://registry.npmjs.org/terser/-/terser-5.14.1.tgz",
|
||||
"integrity": "sha512-+ahUAE+iheqBTDxXhTisdA8hgvbEG1hHOQ9xmNjeUJSoi6DU/gMrKNcfZjHkyY6Alnuyc+ikYJaxxfHkT3+WuQ==",
|
||||
"version": "5.14.2",
|
||||
"resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz",
|
||||
"integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@jridgewell/source-map": "^0.3.2",
|
||||
@@ -18046,9 +18046,9 @@
|
||||
}
|
||||
},
|
||||
"terser": {
|
||||
"version": "5.14.1",
|
||||
"resolved": "https://registry.npmjs.org/terser/-/terser-5.14.1.tgz",
|
||||
"integrity": "sha512-+ahUAE+iheqBTDxXhTisdA8hgvbEG1hHOQ9xmNjeUJSoi6DU/gMrKNcfZjHkyY6Alnuyc+ikYJaxxfHkT3+WuQ==",
|
||||
"version": "5.14.2",
|
||||
"resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz",
|
||||
"integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jridgewell/source-map": "^0.3.2",
|
||||
|
||||
Reference in New Issue
Block a user