@dismissible/nestjs-api 2.0.2-canary.2913ba8.0 → 2.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -6
- package/package.json +22 -22
- package/src/app.setup.js +2 -2
- package/src/app.setup.js.map +1 -1
- package/src/cors/cors.factory.js +2 -3
- package/src/cors/cors.factory.js.map +1 -1
- package/src/dismissible-nest-factory.js +3 -1
- package/src/dismissible-nest-factory.js.map +1 -1
- package/src/helmet/helmet.factory.js +2 -3
- package/src/helmet/helmet.factory.js.map +1 -1
- package/src/swagger/swagger.factory.js +2 -3
- package/src/swagger/swagger.factory.js.map +1 -1
- package/src/validation/validation.factory.js +1 -2
- package/src/validation/validation.factory.js.map +1 -1
package/README.md
CHANGED
|
@@ -109,12 +109,13 @@ export class AppModule {}
|
|
|
109
109
|
|
|
110
110
|
The API provides the following REST endpoints:
|
|
111
111
|
|
|
112
|
-
| Endpoint | Method | Description
|
|
113
|
-
| ----------------------------------- | ------ |
|
|
114
|
-
| `/health` | GET | Health check endpoint
|
|
115
|
-
| `/v1/users/{userId}/items/{itemId}` | GET | Get or create a dismissible item
|
|
116
|
-
| `/v1/users/{userId}/items/{itemId}` | DELETE | Dismiss an item
|
|
117
|
-
| `/v1/users/{userId}/items/{itemId}` | POST | Restore a previously dismissed item
|
|
112
|
+
| Endpoint | Method | Description |
|
|
113
|
+
| ----------------------------------- | ------ | ------------------------------------------- |
|
|
114
|
+
| `/health` | GET | Health check endpoint |
|
|
115
|
+
| `/v1/users/{userId}/items/{itemId}` | GET | Get or create a dismissible item |
|
|
116
|
+
| `/v1/users/{userId}/items/{itemId}` | DELETE | Dismiss an item |
|
|
117
|
+
| `/v1/users/{userId}/items/{itemId}` | POST | Restore a previously dismissed item |
|
|
118
|
+
| `/v1/users/{userId}/items` | POST | Batch get or create multiple items (max 50) |
|
|
118
119
|
|
|
119
120
|
Enable Swagger documentation by setting `DISMISSIBLE_SWAGGER_ENABLED=true` and visit `/docs` for interactive API docs.
|
|
120
121
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dismissible/nestjs-api",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.3",
|
|
4
4
|
"description": "Dismissible API application",
|
|
5
5
|
"main": "./src/index.js",
|
|
6
6
|
"types": "./src/index.d.ts",
|
|
@@ -30,26 +30,26 @@
|
|
|
30
30
|
"storage:setup:dynamodb": "npx dismissible-dynamodb-setup"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@dismissible/nestjs-core": "2.0.
|
|
34
|
-
"@dismissible/nestjs-item": "2.0.
|
|
35
|
-
"@dismissible/nestjs-jwt-auth-hook": "2.0.
|
|
36
|
-
"@dismissible/nestjs-storage": "2.0.
|
|
37
|
-
"@dismissible/nestjs-postgres-storage": "2.0.
|
|
38
|
-
"@dismissible/nestjs-dynamodb-storage": "2.0.
|
|
39
|
-
"@dismissible/nestjs-logger": "2.0.
|
|
40
|
-
"@dismissible/nestjs-rate-limiter-hook": "2.0.
|
|
41
|
-
"@nestjs/common": "11.1.11",
|
|
42
|
-
"@nestjs/core": "11.1.11",
|
|
43
|
-
"@nestjs/platform-fastify": "11.1.11",
|
|
44
|
-
"fastify": "5.6.2",
|
|
45
|
-
"@fastify/helmet": "13.0.2",
|
|
46
|
-
"@fastify/static": "8.3.0",
|
|
47
|
-
"@nestjs/swagger": "11.2.3",
|
|
48
|
-
"class-transformer": "0.5.1",
|
|
49
|
-
"class-validator": "0.14.3",
|
|
50
|
-
"nest-typed-config": "2.10.1",
|
|
51
|
-
"reflect-metadata": "0.2.2",
|
|
52
|
-
"rxjs": "7.8.2"
|
|
33
|
+
"@dismissible/nestjs-core": "^2.0.3",
|
|
34
|
+
"@dismissible/nestjs-item": "^2.0.3",
|
|
35
|
+
"@dismissible/nestjs-jwt-auth-hook": "^2.0.3",
|
|
36
|
+
"@dismissible/nestjs-storage": "^2.0.3",
|
|
37
|
+
"@dismissible/nestjs-postgres-storage": "^2.0.3",
|
|
38
|
+
"@dismissible/nestjs-dynamodb-storage": "^2.0.3",
|
|
39
|
+
"@dismissible/nestjs-logger": "^2.0.3",
|
|
40
|
+
"@dismissible/nestjs-rate-limiter-hook": "^2.0.3",
|
|
41
|
+
"@nestjs/common": "^11.1.11",
|
|
42
|
+
"@nestjs/core": "^11.1.11",
|
|
43
|
+
"@nestjs/platform-fastify": "^11.1.11",
|
|
44
|
+
"fastify": "^5.6.2",
|
|
45
|
+
"@fastify/helmet": "^13.0.2",
|
|
46
|
+
"@fastify/static": "^8.3.0",
|
|
47
|
+
"@nestjs/swagger": "^11.2.3",
|
|
48
|
+
"class-transformer": "^0.5.1",
|
|
49
|
+
"class-validator": "^0.14.3",
|
|
50
|
+
"nest-typed-config": "^2.10.1",
|
|
51
|
+
"reflect-metadata": "^0.2.2",
|
|
52
|
+
"rxjs": "^7.8.2"
|
|
53
53
|
},
|
|
54
54
|
"keywords": [
|
|
55
55
|
"nestjs",
|
|
@@ -65,4 +65,4 @@
|
|
|
65
65
|
"access": "public"
|
|
66
66
|
},
|
|
67
67
|
"type": "commonjs"
|
|
68
|
-
}
|
|
68
|
+
}
|
package/src/app.setup.js
CHANGED
|
@@ -8,8 +8,8 @@ const validation_1 = require("./validation");
|
|
|
8
8
|
const nestjs_logger_1 = require("@dismissible/nestjs-logger");
|
|
9
9
|
async function configureApp(app) {
|
|
10
10
|
const logger = app.get(nestjs_logger_1.DISMISSIBLE_LOGGER);
|
|
11
|
-
|
|
12
|
-
logger.
|
|
11
|
+
app.useLogger(logger);
|
|
12
|
+
logger.log('Configuring application');
|
|
13
13
|
await (0, helmet_1.configureAppWithHelmet)(app);
|
|
14
14
|
(0, cors_1.configureAppWithCors)(app);
|
|
15
15
|
(0, validation_1.configureAppWithValidation)(app);
|
package/src/app.setup.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.setup.js","sourceRoot":"","sources":["../../../api/src/app.setup.ts"],"names":[],"mappings":";;AAOA,oCASC;AAfD,uCAAoD;AACpD,iCAA8C;AAC9C,qCAAkD;AAClD,6CAA0D;AAC1D,8DAAoF;AAE7E,KAAK,UAAU,YAAY,CAAC,GAAqB;IACtD,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAqB,kCAAkB,CAAC,CAAC;IAC/D,
|
|
1
|
+
{"version":3,"file":"app.setup.js","sourceRoot":"","sources":["../../../api/src/app.setup.ts"],"names":[],"mappings":";;AAOA,oCASC;AAfD,uCAAoD;AACpD,iCAA8C;AAC9C,qCAAkD;AAClD,6CAA0D;AAC1D,8DAAoF;AAE7E,KAAK,UAAU,YAAY,CAAC,GAAqB;IACtD,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAqB,kCAAkB,CAAC,CAAC;IAC/D,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACtB,MAAM,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;IAEtC,MAAM,IAAA,+BAAsB,EAAC,GAAG,CAAC,CAAC;IAClC,IAAA,2BAAoB,EAAC,GAAG,CAAC,CAAC;IAC1B,IAAA,uCAA0B,EAAC,GAAG,CAAC,CAAC;IAChC,IAAA,iCAAuB,EAAC,GAAG,CAAC,CAAC;AAC/B,CAAC"}
|
package/src/cors/cors.factory.js
CHANGED
|
@@ -5,7 +5,6 @@ const cors_config_1 = require("./cors.config");
|
|
|
5
5
|
const nestjs_logger_1 = require("@dismissible/nestjs-logger");
|
|
6
6
|
function configureAppWithCors(app) {
|
|
7
7
|
const logger = app.get(nestjs_logger_1.DISMISSIBLE_LOGGER);
|
|
8
|
-
logger.setContext('CORS');
|
|
9
8
|
const corsConfig = app.get(cors_config_1.CorsConfig);
|
|
10
9
|
if (corsConfig.enabled) {
|
|
11
10
|
// origins is guaranteed to be non-empty when enabled via @ValidateIf + @ArrayNotEmpty
|
|
@@ -20,10 +19,10 @@ function configureAppWithCors(app) {
|
|
|
20
19
|
credentials: corsConfig.credentials ?? true,
|
|
21
20
|
maxAge: corsConfig.maxAge ?? 86400,
|
|
22
21
|
});
|
|
23
|
-
logger.
|
|
22
|
+
logger.log('CORS is enabled', { corsConfig });
|
|
24
23
|
}
|
|
25
24
|
else {
|
|
26
|
-
logger.
|
|
25
|
+
logger.log('CORS is disabled');
|
|
27
26
|
}
|
|
28
27
|
}
|
|
29
28
|
//# sourceMappingURL=cors.factory.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cors.factory.js","sourceRoot":"","sources":["../../../../api/src/cors/cors.factory.ts"],"names":[],"mappings":";;AAIA,
|
|
1
|
+
{"version":3,"file":"cors.factory.js","sourceRoot":"","sources":["../../../../api/src/cors/cors.factory.ts"],"names":[],"mappings":";;AAIA,oDAqBC;AAxBD,+CAA2C;AAC3C,8DAAoF;AAEpF,SAAgB,oBAAoB,CAAC,GAAqB;IACxD,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAqB,kCAAkB,CAAC,CAAC;IAC/D,MAAM,UAAU,GAAG,GAAG,CAAC,GAAG,CAAC,wBAAU,CAAC,CAAC;IAEvC,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;QACvB,sFAAsF;QACtF,GAAG,CAAC,UAAU,CAAC;YACb,MAAM,EAAE,UAAU,CAAC,OAAQ;YAC3B,OAAO,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC;YACnE,cAAc,EAAE,UAAU,CAAC,cAAc,IAAI;gBAC3C,cAAc;gBACd,eAAe;gBACf,cAAc;aACf;YACD,WAAW,EAAE,UAAU,CAAC,WAAW,IAAI,IAAI;YAC3C,MAAM,EAAE,UAAU,CAAC,MAAM,IAAI,KAAK;SACnC,CAAC,CAAC;QACH,MAAM,CAAC,GAAG,CAAC,iBAAiB,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;IAChD,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IACjC,CAAC;AACH,CAAC"}
|
|
@@ -6,15 +6,17 @@ const platform_fastify_1 = require("@nestjs/platform-fastify");
|
|
|
6
6
|
const app_module_1 = require("./app.module");
|
|
7
7
|
const server_config_1 = require("./server/server.config");
|
|
8
8
|
const app_setup_1 = require("./app.setup");
|
|
9
|
+
const nestjs_logger_1 = require("@dismissible/nestjs-logger");
|
|
9
10
|
class DismissibleNestApplication {
|
|
10
11
|
constructor(app) {
|
|
11
12
|
this.app = app;
|
|
12
13
|
}
|
|
13
14
|
async start() {
|
|
14
15
|
const serverConfig = this.app.get(server_config_1.ServerConfig);
|
|
16
|
+
const logger = this.app.get(nestjs_logger_1.DISMISSIBLE_LOGGER);
|
|
15
17
|
const port = serverConfig.port ?? 3000;
|
|
16
18
|
await this.app.listen(port, '0.0.0.0');
|
|
17
|
-
|
|
19
|
+
logger.log(`🚀 Application is running on: http://localhost:${port}`);
|
|
18
20
|
}
|
|
19
21
|
getNestApplication() {
|
|
20
22
|
return this.app;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dismissible-nest-factory.js","sourceRoot":"","sources":["../../../api/src/dismissible-nest-factory.ts"],"names":[],"mappings":";;;AACA,uCAA2C;AAC3C,+DAAkF;AAClF,6CAAyC;AACzC,0DAAsD;AACtD,2CAA2C;
|
|
1
|
+
{"version":3,"file":"dismissible-nest-factory.js","sourceRoot":"","sources":["../../../api/src/dismissible-nest-factory.ts"],"names":[],"mappings":";;;AACA,uCAA2C;AAC3C,+DAAkF;AAClF,6CAAyC;AACzC,0DAAsD;AACtD,2CAA2C;AAE3C,8DAAoF;AAmBpF,MAAM,0BAA0B;IAC9B,YAA6B,GAA2B;QAA3B,QAAG,GAAH,GAAG,CAAwB;IAAG,CAAC;IAE5D,KAAK,CAAC,KAAK;QACT,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,4BAAY,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,kCAAkB,CAAC,CAAC;QAChD,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,IAAI,IAAI,CAAC;QACvC,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACvC,MAAM,CAAC,GAAG,CAAC,kDAAkD,IAAI,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,kBAAkB;QAChB,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;CACF;AAED,MAAa,sBAAsB;IACjC,MAAM,CAAC,KAAK,CAAC,MAAM,CACjB,OAAwC;QAExC,MAAM,GAAG,GAAG,MAAM,kBAAW,CAAC,MAAM,CAClC,sBAAS,CAAC,OAAO,CAAC,OAAO,CAAC,EAC1B,IAAI,iCAAc,CAAC;YACjB,SAAS,EAAE,EAAE,GAAG,IAAI,EAAE,OAAO;SAC9B,CAAC,CACH,CAAC;QACF,MAAM,IAAA,wBAAY,EAAC,GAAG,CAAC,CAAC;QAExB,OAAO,IAAI,0BAA0B,CAAC,GAAG,CAAC,CAAC;IAC7C,CAAC;CACF;AAdD,wDAcC"}
|
|
@@ -7,7 +7,6 @@ const helmet_config_1 = require("./helmet.config");
|
|
|
7
7
|
const nestjs_logger_1 = require("@dismissible/nestjs-logger");
|
|
8
8
|
async function configureAppWithHelmet(app) {
|
|
9
9
|
const logger = app.get(nestjs_logger_1.DISMISSIBLE_LOGGER);
|
|
10
|
-
logger.setContext('Helmet');
|
|
11
10
|
const helmetConfig = app.get(helmet_config_1.HelmetConfig);
|
|
12
11
|
if (helmetConfig.enabled) {
|
|
13
12
|
const fastifyApp = app;
|
|
@@ -20,10 +19,10 @@ async function configureAppWithHelmet(app) {
|
|
|
20
19
|
preload: helmetConfig.hstsPreload ?? false,
|
|
21
20
|
},
|
|
22
21
|
});
|
|
23
|
-
logger.
|
|
22
|
+
logger.log('Helmet is enabled', { helmetConfig });
|
|
24
23
|
}
|
|
25
24
|
else {
|
|
26
|
-
logger.
|
|
25
|
+
logger.log('Helmet is disabled');
|
|
27
26
|
}
|
|
28
27
|
}
|
|
29
28
|
//# sourceMappingURL=helmet.factory.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helmet.factory.js","sourceRoot":"","sources":["../../../../api/src/helmet/helmet.factory.ts"],"names":[],"mappings":";;AAMA,
|
|
1
|
+
{"version":3,"file":"helmet.factory.js","sourceRoot":"","sources":["../../../../api/src/helmet/helmet.factory.ts"],"names":[],"mappings":";;AAMA,wDAmBC;;AAvBD,qEAA4C;AAC5C,mDAA+C;AAC/C,8DAAoF;AAE7E,KAAK,UAAU,sBAAsB,CAAC,GAAqB;IAChE,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAqB,kCAAkB,CAAC,CAAC;IAC/D,MAAM,YAAY,GAAG,GAAG,CAAC,GAAG,CAAC,4BAAY,CAAC,CAAC;IAE3C,IAAI,YAAY,CAAC,OAAO,EAAE,CAAC;QACzB,MAAM,UAAU,GAAG,GAA6B,CAAC;QACjD,MAAM,UAAU,CAAC,QAAQ,CAAC,gBAAa,EAAE;YACvC,qBAAqB,EAAE,YAAY,CAAC,qBAAqB,IAAI,IAAI;YACjE,yBAAyB,EAAE,YAAY,CAAC,yBAAyB,IAAI,IAAI;YACzE,IAAI,EAAE;gBACJ,MAAM,EAAE,YAAY,CAAC,UAAU,IAAI,QAAQ;gBAC3C,iBAAiB,EAAE,YAAY,CAAC,qBAAqB,IAAI,IAAI;gBAC7D,OAAO,EAAE,YAAY,CAAC,WAAW,IAAI,KAAK;aAC3C;SACF,CAAC,CAAC;QACH,MAAM,CAAC,GAAG,CAAC,mBAAmB,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC;IACpD,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IACnC,CAAC;AACH,CAAC"}
|
|
@@ -9,10 +9,9 @@ const swaggerDocumentOptions = {
|
|
|
9
9
|
};
|
|
10
10
|
function configureAppWithSwagger(app) {
|
|
11
11
|
const logger = app.get(nestjs_logger_1.DISMISSIBLE_LOGGER);
|
|
12
|
-
logger.setContext('Swagger');
|
|
13
12
|
const swaggerConfig = app.get(swagger_config_1.SwaggerConfig);
|
|
14
13
|
if (swaggerConfig.enabled) {
|
|
15
|
-
logger.
|
|
14
|
+
logger.log('Swagger is enabled', { swaggerConfig });
|
|
16
15
|
const { path = 'docs' } = swaggerConfig;
|
|
17
16
|
const config = new swagger_1.DocumentBuilder()
|
|
18
17
|
.setTitle('Dismissible')
|
|
@@ -25,7 +24,7 @@ function configureAppWithSwagger(app) {
|
|
|
25
24
|
});
|
|
26
25
|
}
|
|
27
26
|
else {
|
|
28
|
-
logger.
|
|
27
|
+
logger.log('Swagger is disabled');
|
|
29
28
|
}
|
|
30
29
|
}
|
|
31
30
|
//# sourceMappingURL=swagger.factory.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"swagger.factory.js","sourceRoot":"","sources":["../../../../api/src/swagger/swagger.factory.ts"],"names":[],"mappings":";;AASA,
|
|
1
|
+
{"version":3,"file":"swagger.factory.js","sourceRoot":"","sources":["../../../../api/src/swagger/swagger.factory.ts"],"names":[],"mappings":";;AASA,0DAqBC;AA7BD,6CAAyF;AACzF,qDAAiD;AACjD,8DAAoF;AAEpF,MAAM,sBAAsB,GAA2B;IACrD,kBAAkB,EAAE,CAAC,cAAsB,EAAE,SAAiB,EAAE,EAAE,CAAC,SAAS;CAC7E,CAAC;AAEF,SAAgB,uBAAuB,CAAC,GAAqB;IAC3D,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAqB,kCAAkB,CAAC,CAAC;IAC/D,MAAM,aAAa,GAAG,GAAG,CAAC,GAAG,CAAC,8BAAa,CAAC,CAAC;IAE7C,IAAI,aAAa,CAAC,OAAO,EAAE,CAAC;QAC1B,MAAM,CAAC,GAAG,CAAC,oBAAoB,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC;QACpD,MAAM,EAAE,IAAI,GAAG,MAAM,EAAE,GAAG,aAAa,CAAC;QAExC,MAAM,MAAM,GAAG,IAAI,yBAAe,EAAE;aACjC,QAAQ,CAAC,aAAa,CAAC;aACvB,cAAc,CAAC,8CAA8C,CAAC;aAC9D,UAAU,CAAC,KAAK,CAAC;aACjB,KAAK,EAAE,CAAC;QAEX,MAAM,eAAe,GAAG,GAAG,EAAE,CAAC,uBAAa,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,sBAAsB,CAAC,CAAC;QAChG,uBAAa,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,eAAe,EAAE;YAC9C,eAAe,EAAE,IAAI;SACtB,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IACpC,CAAC;AACH,CAAC"}
|
|
@@ -6,9 +6,8 @@ const validation_config_1 = require("./validation.config");
|
|
|
6
6
|
const nestjs_logger_1 = require("@dismissible/nestjs-logger");
|
|
7
7
|
function configureAppWithValidation(app) {
|
|
8
8
|
const logger = app.get(nestjs_logger_1.DISMISSIBLE_LOGGER);
|
|
9
|
-
logger.setContext('Validation');
|
|
10
9
|
const validationConfig = app.get(validation_config_1.ValidationConfig);
|
|
11
|
-
logger.
|
|
10
|
+
logger.log('Registering ValidationPipe', { validationConfig });
|
|
12
11
|
app.useGlobalPipes(new common_1.ValidationPipe({
|
|
13
12
|
whitelist: validationConfig.whitelist ?? true,
|
|
14
13
|
forbidNonWhitelisted: validationConfig.forbidNonWhitelisted ?? true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.factory.js","sourceRoot":"","sources":["../../../../api/src/validation/validation.factory.ts"],"names":[],"mappings":";;AAIA,
|
|
1
|
+
{"version":3,"file":"validation.factory.js","sourceRoot":"","sources":["../../../../api/src/validation/validation.factory.ts"],"names":[],"mappings":";;AAIA,gEAaC;AAjBD,2CAAkE;AAClE,2DAAuD;AACvD,8DAAoF;AAEpF,SAAgB,0BAA0B,CAAC,GAAqB;IAC9D,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAqB,kCAAkB,CAAC,CAAC;IAC/D,MAAM,gBAAgB,GAAG,GAAG,CAAC,GAAG,CAAC,oCAAgB,CAAC,CAAC;IAEnD,MAAM,CAAC,GAAG,CAAC,4BAA4B,EAAE,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAC/D,GAAG,CAAC,cAAc,CAChB,IAAI,uBAAc,CAAC;QACjB,SAAS,EAAE,gBAAgB,CAAC,SAAS,IAAI,IAAI;QAC7C,oBAAoB,EAAE,gBAAgB,CAAC,oBAAoB,IAAI,IAAI;QACnE,SAAS,EAAE,gBAAgB,CAAC,SAAS,IAAI,IAAI;QAC7C,oBAAoB,EAAE,gBAAgB,CAAC,oBAAoB,IAAI,IAAI;KACpE,CAAC,CACH,CAAC;AACJ,CAAC"}
|