@volcanicminds/backend 0.9.2 → 0.9.4

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 CHANGED
@@ -5,26 +5,138 @@
5
5
 
6
6
  # volcanic-backend
7
7
 
8
+ A Node.js framework based on Fastify to build robust APIs quickly, featuring an automatic routing system, integrated authentication, and a powerful data access layer.
9
+
8
10
  ## Based on
9
11
 
10
- Based on [Fastify](https://www.fastify.io) ([GitHub](https://github.com/fastify/fastify)).
12
+ **Volcanic Backend** is a powerful, opinionated, and extensible Node.js framework for creating robust and scalable RESTful and GraphQL APIs. It's built on modern, high-performance libraries like [Fastify](https://www.fastify.io) and can be optionally paired with [Apollo Server](https://www.apollographql.com).
11
13
 
12
- Based on [Apollo Server](https://www.apollographql.com) ([GitHub](https://github.com/apollographql/apollo-server)).
14
+ The framework provides a comprehensive set of built-in features including a filesystem-based router, JWT authentication, role-based access control, task scheduling, and seamless database integration, allowing developers to focus on business logic rather than boilerplate.
13
15
 
14
16
  And, what you see in [package.json](package.json).
15
17
 
16
- ## How to install
18
+ ## Core Philosophy
17
19
 
18
- ```ts
20
+ - **Convention over Configuration**: A clear and consistent project structure for APIs, controllers, and routes simplifies development and reduces boilerplate.
21
+ - **Extensibility**: Easily extendable with custom plugins, hooks, and middleware to fit any project's needs.
22
+ - **Database Agnostic**: Designed to work seamlessly with `@volcanicminds/typeorm`, supporting both SQL (e.g., PostgreSQL) and NoSQL (e.g., MongoDB) databases.
23
+ - **Feature-Rich**: Out-of-the-box support for JWT authentication, role-based access control (RBAC), automatic Swagger/OpenAPI documentation, and much more.
24
+
25
+ ## Quick Start
26
+
27
+ ### Installation
28
+
29
+ ```sh
19
30
  yarn add @volcanicminds/backend
20
31
  ```
21
32
 
33
+ For database interactions, it is highly recommended to also install the companion package:
34
+
35
+ ```sh
36
+ yarn add @volcanicminds/typeorm
37
+ ```
38
+
39
+ ### Minimal Working Example
40
+
41
+ This example demonstrates how to set up a basic server with a single endpoint.
42
+
43
+ **1. Create your server entrypoint (`index.ts`):**
44
+
45
+ ```typescript
46
+ // index.ts
47
+ import { start } from '@volcanicminds/backend'
48
+ import { start as startDatabase, userManager } from '@volcanicminds/typeorm'
49
+ import { myDbConfig } from './src/config/database' // Assume you have a db config file
50
+
51
+ async function main() {
52
+ // 1. Initialize the database connection (optional but recommended)
53
+ await startDatabase(myDbConfig)
54
+
55
+ // 2. Start the Volcanic Backend server
56
+ // We pass the 'userManager' from the typeorm package to enable authentication
57
+ await start({ userManager })
58
+ }
59
+
60
+ main().catch((err) => {
61
+ console.error(err)
62
+ process.exit(1)
63
+ })
64
+ ```
65
+
66
+ **2. Define a route (`src/api/hello/routes.ts`):**
67
+
68
+ ```typescript
69
+ // src/api/hello/routes.ts
70
+ module.exports = {
71
+ routes: [
72
+ {
73
+ method: 'GET',
74
+ path: '/',
75
+ handler: 'world.sayHello'
76
+ }
77
+ ]
78
+ }
79
+ ```
80
+
81
+ **3. Create the controller (`src/api/hello/controller/world.ts`):**
82
+
83
+ ```typescript
84
+ // src/api/hello/controller/world.ts
85
+ import { FastifyReply, FastifyRequest } from '@volcanicminds/backend'
86
+
87
+ export function sayHello(req: FastifyRequest, reply: FastifyReply) {
88
+ reply.send({ message: 'Hello, World!' })
89
+ }
90
+ ```
91
+
92
+ **4. Run your server:**
93
+
94
+ ```sh
95
+ yarn dev
96
+ ```
97
+
98
+ Now you can visit `http://localhost:2230/hello` and you will see `{"message":"Hello, World!"}`.
99
+
22
100
  ## How to upgrade packages
23
101
 
24
102
  ```ts
25
103
  yarn upgrade-deps
26
104
  ```
27
105
 
106
+ ## Project Structure
107
+
108
+ A typical project using `volcanic-backend` follows a convention-based structure to keep your code organized and predictable.
109
+
110
+ ```
111
+ .
112
+ ├── src/
113
+ │ ├── api/
114
+ │ │ └── products/ # A feature or resource module
115
+ │ │ ├── controller/
116
+ │ │ │ └── product.ts # Business logic for products
117
+ │ │ └── routes.ts # Route definitions for products
118
+ │ │
119
+ │ ├── config/
120
+ │ │ ├── database.ts # Database connection settings
121
+ │ │ ├── plugins.ts # Configuration for Fastify plugins (CORS, Helmet, etc.)
122
+ │ │ └── roles.ts # Custom role definitions
123
+ │ │
124
+ │ ├── entities/
125
+ │ │ └── product.e.ts # TypeORM entity definitions
126
+ │ │
127
+ │ ├── hooks/
128
+ │ │ └── onRequest.ts # Custom logic for the 'onRequest' lifecycle hook
129
+ │ │
130
+ │ ├── middleware/
131
+ │ │ └── myMiddleware.ts # Custom middleware functions
132
+ │ │
133
+ │ └── schemas/
134
+ │ └── product.ts # JSON schemas for validation and Swagger
135
+
136
+ ├── .env # Environment variables
137
+ └── index.ts # Server entrypoint
138
+ ```
139
+
28
140
  ## Environment (example)
29
141
 
30
142
  ```ruby
@@ -76,6 +188,37 @@ yarn test -t 'Logging'
76
188
 
77
189
  Refer to jest for more options.
78
190
 
191
+ ## Configuration Reference
192
+
193
+ ### Environment Variables
194
+
195
+ The framework is configured via `.env` variables. Below is a comprehensive list:
196
+
197
+ | Variable | Description | Required | Default |
198
+ | ------------------------ | ----------------------------------------------------------------------- | :------: | ------------------- |
199
+ | `NODE_ENV` | The application environment. | No | `development` |
200
+ | `HOST` | The host address for the server to listen on. Use `0.0.0.0` for Docker. | No | `0.0.0.0` |
201
+ | `PORT` | The port for the server to listen on. | No | `2230` |
202
+ | `JWT_SECRET` | Secret key for signing JWTs. | **Yes** | |
203
+ | `JWT_EXPIRES_IN` | Expiration time for JWTs (e.g., `5d`, `12h`). | No | `5d` |
204
+ | `JWT_REFRESH` | Enable refresh tokens. | No | `true` |
205
+ | `JWT_REFRESH_SECRET` | Secret key for signing refresh tokens. | **Yes**¹ | |
206
+ | `JWT_REFRESH_EXPIRES_IN` | Expiration time for refresh tokens. | No | `180d` |
207
+ | `LOG_LEVEL` | Logging verbosity (`trace`, `debug`, `info`, `warn`, `error`, `fatal`). | No | `info` |
208
+ | `LOG_COLORIZE` | Enable colorized log output. | No | `true` |
209
+ | `LOG_TIMESTAMP` | Enable timestamps in logs. | No | `true` |
210
+ | `LOG_TIMESTAMP_READABLE` | Use a human-readable timestamp format. | No | `true` |
211
+ | `LOG_FASTIFY` | Enable Fastify's built-in logger. | No | `false` |
212
+ | `GRAPHQL` | Enable the Apollo Server for GraphQL. | No | `false` |
213
+ | `SWAGGER` | Enable Swagger/OpenAPI documentation. | No | `true` |
214
+ | `SWAGGER_HOST` | The base URL for the API, used in Swagger docs. | No | `localhost:2230` |
215
+ | `SWAGGER_TITLE` | The title of the API documentation. | No | `API Documentation` |
216
+ | `SWAGGER_DESCRIPTION` | The description for the API documentation. | No | |
217
+ | `SWAGGER_VERSION` | The version of the API. | No | `0.1.0` |
218
+ | `SWAGGER_PREFIX_URL` | The path where Swagger UI is available. | No | `/api-docs` |
219
+
220
+ ¹ Required if `JWT_REFRESH` is enabled.
221
+
79
222
  ## Logging levels
80
223
 
81
224
  In the .env file you can change log settings in this way:
@@ -217,8 +360,14 @@ import multipart from '@fastify/multipart'
217
360
  import rawBody from 'fastify-raw-body'
218
361
  ```
219
362
 
363
+ ## Core Concepts: Routes and Controllers
364
+
365
+ The routing system is one of the core strengths of the framework. It's file-system based, meaning the framework automatically discovers and registers any `routes.ts` file within the `src/api/` directory.
366
+
220
367
  ## Routes
221
368
 
369
+ At its simplest, a route needs only a `method`, `path`, and `handler`. The handler is a string that points to a function in a controller file.
370
+
222
371
  Minimal setup (routes.ts):
223
372
 
224
373
  ```ts
@@ -268,11 +417,11 @@ module.exports = {
268
417
  version: false, // swagger
269
418
  response: {
270
419
  200: {
271
- description: 'Successful response',
420
+ $description: 'Successful response',
272
421
  type: 'object',
273
422
  properties: {
274
423
  id: { type: 'number' }
275
- }
424
+ }$
276
425
  }
277
426
  } // swagger
278
427
  }
@@ -281,8 +430,57 @@ module.exports = {
281
430
  }
282
431
  ```
283
432
 
433
+ **Securing a Route with Roles:**
434
+ You can easily protect routes using Role-Based Access Control (RBAC). The framework includes built-in roles (`public`, `admin`) and allows you to define your own.
435
+
436
+ ```typescript
437
+ {
438
+ method: 'POST',
439
+ path: '/',
440
+ handler: 'product.create',
441
+ roles: [roles.admin] // Only users with the 'admin' role can access this
442
+ }
443
+ ```
444
+
445
+ **Adding Middleware:**
446
+ Apply custom logic before your controller is executed using middleware. The framework comes with `global.isAuthenticated` to ensure a user is logged in.
447
+
448
+ ```typescript
449
+ {
450
+ method: 'GET',
451
+ path: '/:id',
452
+ handler: 'product.findOne',
453
+ middlewares: ['global.isAuthenticated'] // Requires a valid JWT, accessible to any role
454
+ }
455
+ ```
456
+
457
+ **Documenting with Swagger (`config`):**
458
+ The `config` object allows you to enrich your route with information for the automatically generated Swagger/OpenAPI documentation.
459
+
460
+ ```typescript
461
+ {
462
+ method: 'GET',
463
+ path: '/:id',
464
+ handler: 'product.findOne',
465
+ middlewares: ['global.isAuthenticated'],
466
+ config: {
467
+ title: 'Find a Product',
468
+ description: 'Retrieves a single product by its unique ID.',
469
+ params: { $ref: 'onlyIdSchema#' }, // References a JSON schema for validation
470
+ response: {
471
+ 200: {
472
+ description: 'Successful response',
473
+ $ref: 'productSchema#'
474
+ }
475
+ }
476
+ }
477
+ }
478
+ ```
479
+
284
480
  ## Controllers
285
481
 
482
+ Controllers contain the functions that handle requests. The `req` object is enriched with helpers to simplify data access.
483
+
286
484
  ```ts
287
485
  // src/api/example/controller/demo.ts
288
486
  import { FastifyReply, FastifyRequest } from '@volcanicminds/backend'
@@ -300,6 +498,57 @@ Useful methods / objects:
300
498
  - `req.roles()` to grab **Roles** (as `string[]`) from `req.user` if compiled.
301
499
  - `req.hasRole(role:Role)` to check if the **Role** is appliable for `req.user`.
302
500
 
501
+ ### Advanced Data Access with `req.data()` and `@volcanicminds/typeorm`
502
+
503
+ The real power is unlocked when combining `req.data()` with `@volcanicminds/typeorm`.
504
+
505
+ ```typescript
506
+ // src/api/products/controller/product.ts
507
+ import { FastifyReply, FastifyRequest } from '@volcanicminds/backend'
508
+ import { executeFindQuery } from '@volcanicminds/typeorm'
509
+
510
+ // The 'repository' global is populated by @volcanicminds/typeorm
511
+ declare var repository: any
512
+
513
+ export async function find(req: FastifyRequest, reply: FastifyReply) {
514
+ // req.data() automatically gets all query string (or body!) parameters
515
+ // executeFindQuery translates them into a full TypeORM query with pagination, sorting, and filtering
516
+ const { headers, records } = await executeFindQuery(
517
+ repository.products, // The TypeORM repository for the 'Product' entity
518
+ { category: true }, // Eagerly load the 'category' relation
519
+ req.data()
520
+ )
521
+
522
+ // The 'headers' object contains pagination metadata (v-total, v-pageCount, etc.)
523
+ return reply.headers(headers).send(records)
524
+ }
525
+ ```
526
+
527
+ This single controller function can handle a wide variety of requests without any additional code, such as:
528
+
529
+ - `GET /products?pageSize=10`
530
+ - `GET /products?sort=price:desc`
531
+ - `GET /products?name:containsi=widget&category.name:eq=Tools`
532
+
533
+ **Database Synergy with `@volcanicminds/typeorm`**
534
+
535
+ While `volcanic-backend` can be used with any data layer, it is designed for seamless integration with its companion package, `@volcanicminds/typeorm`. This combination provides a powerful, query-string-driven API out-of-the-box.
536
+
537
+ **How it Works:**
538
+
539
+ 1. **Client Request**: A client sends a request with query parameters for filtering, sorting, and pagination.
540
+ `GET /api/products?page=1&sort=name:asc&price:gt=100`
541
+
542
+ 2. **`volcanic-backend` Controller**: The controller uses the `req.data()` helper to grab all query parameters.
543
+
544
+ 3. **`volcanic-typeorm` Translation**: The `executeFindQuery` function from `@volcanicminds/typeorm` receives these parameters and uses its internal `applyQuery` engine to translate them into a rich TypeORM query object, including `where`, `order`, `skip`, and `take` clauses. It automatically handles the syntax for different databases (e.g., `ILIKE` for PostgreSQL, `$regex` for MongoDB).
545
+
546
+ 4. **Database Execution**: TypeORM executes the optimized query against the database.
547
+
548
+ 5. **Response with Headers**: `executeFindQuery` returns the records and a set of custom pagination headers (`v-total`, `v-pageCount`, etc.), which the controller then sends back to the client.
549
+
550
+ This powerful synergy allows you to build complex, high-performance data endpoints with minimal effort. Please refer to the `@volcanicminds/typeorm` `README.md` for a complete guide on its advanced query syntax.
551
+
303
552
  ## Roles
304
553
 
305
554
  By default, there are some basic roles:
package/combine.js ADDED
@@ -0,0 +1,124 @@
1
+ const fs = require('fs')
2
+ const path = require('path')
3
+
4
+ const MAIN_DIRECTORY = './'
5
+ const INCLUDE_FILES = ['package.json', 'tsconfig.json', 'README.md', '.nvmrc', 'index.ts', 'index.d.ts']
6
+ const SUB_DIRECTORIES = ['lib', 'types']
7
+ const OUTPUT_FILE = 'OUTPUT.md'
8
+
9
+ /**
10
+ * Recursively collects .js and .ts files from a given directory.
11
+ *
12
+ * @param {string} directory - _The directory to scan recursively._
13
+ * @returns {Array<{ relativePath: string }>} - _List of file objects with relative paths._
14
+ */
15
+ const getFilesFromDirectory = (directory) => {
16
+ let filesList = []
17
+ const items = fs.readdirSync(directory)
18
+
19
+ items.forEach((item) => {
20
+ const itemPath = path.join(directory, item)
21
+ const stats = fs.statSync(itemPath)
22
+
23
+ if (stats.isDirectory()) {
24
+ filesList = filesList.concat(getFilesFromDirectory(itemPath))
25
+ } else if (
26
+ item.endsWith('.html') ||
27
+ item.endsWith('.vue') ||
28
+ item.endsWith('.css') ||
29
+ item.endsWith('.json') ||
30
+ item.endsWith('.js') ||
31
+ item.endsWith('.ts') ||
32
+ item.endsWith('.md')
33
+ ) {
34
+ filesList.push({ relativePath: path.relative(MAIN_DIRECTORY, itemPath) })
35
+ }
36
+ })
37
+
38
+ return filesList
39
+ }
40
+
41
+ /**
42
+ * Retrieves files from the specified subdirectories.
43
+ *
44
+ * @returns {Object} - _Object containing individual subdirectory files and a combined list._
45
+ */
46
+ const getFilesFromSubDirectories = () => {
47
+ const subDirectoryFiles = {}
48
+ let combinedFiles = []
49
+
50
+ SUB_DIRECTORIES.forEach((dir) => {
51
+ const files = getFilesFromDirectory(dir)
52
+ subDirectoryFiles[dir] = files
53
+ combinedFiles = combinedFiles.concat(files)
54
+ })
55
+
56
+ return { subDirectoryFiles, combinedFiles }
57
+ }
58
+
59
+ async function generateMarkdown() {
60
+ const rootFiles = fs
61
+ .readdirSync(MAIN_DIRECTORY)
62
+ .filter(
63
+ (file) =>
64
+ file.endsWith('.html') ||
65
+ (file.endsWith('.ts') && file !== 'combine.ts') ||
66
+ (file.endsWith('.js') && file !== 'combine.js') ||
67
+ INCLUDE_FILES.includes(file)
68
+ )
69
+ .map((file) => ({ relativePath: file }))
70
+
71
+ const { subDirectoryFiles, combinedFiles } = getFilesFromSubDirectories()
72
+ const allFiles = [...rootFiles, ...combinedFiles]
73
+ const currentISOString = new Date().toISOString()
74
+
75
+ const markdownLines = []
76
+ markdownLines.push('# Full Project - Updated At ' + currentISOString, '')
77
+ markdownLines.push('Below are all the files, materials and documentation of the project to analyze.', '')
78
+ markdownLines.push('```bash')
79
+ markdownLines.push('./')
80
+
81
+ rootFiles.forEach((file) => {
82
+ markdownLines.push(`├── ${file.relativePath}`)
83
+ })
84
+
85
+ if (SUB_DIRECTORIES.length > 0) {
86
+ SUB_DIRECTORIES.forEach((dir) => {
87
+ markdownLines.push(`├── ${dir}`)
88
+
89
+ const sortedSubFiles = subDirectoryFiles[dir].sort((a, b) => a.relativePath.localeCompare(b.relativePath))
90
+ sortedSubFiles.forEach((file) => {
91
+ const displayPath = file.relativePath.replace(new RegExp(`^(${SUB_DIRECTORIES.join('|')})[\\\\/]`), '')
92
+ markdownLines.push(` ├── ${displayPath}`)
93
+ })
94
+ })
95
+ }
96
+ markdownLines.push('```', '')
97
+
98
+ markdownLines.push('## Source Files Index', '')
99
+ allFiles.forEach((file) => {
100
+ const filePath = file.relativePath
101
+
102
+ const slug = filePath.replace(/[\/.]/g, '-')
103
+ markdownLines.push(`- [${filePath}](#file-${slug})`)
104
+ })
105
+ markdownLines.push('')
106
+
107
+ for (const file of allFiles) {
108
+ const filePath = file.relativePath
109
+ const fullPath = path.join(MAIN_DIRECTORY, filePath)
110
+
111
+ const language = filePath.endsWith('.md') ? 'markdown' : filePath.endsWith('.ts') ? 'typescript' : 'javascript'
112
+
113
+ const fileContent = fs.readFileSync(fullPath, 'utf-8')
114
+ markdownLines.push(`## File: ${filePath}`, '')
115
+ markdownLines.push('```' + language)
116
+ markdownLines.push(fileContent)
117
+ markdownLines.push('```', '')
118
+ }
119
+
120
+ fs.writeFileSync(OUTPUT_FILE, markdownLines.join('\n'))
121
+ console.log(`Markdown file generated: ${OUTPUT_FILE}`)
122
+ }
123
+
124
+ generateMarkdown()
package/dist/index.js CHANGED
@@ -143,7 +143,7 @@ function addFastifySwagger(server) {
143
143
  }
144
144
  });
145
145
  yield server.register(swagger_ui_1.default, {
146
- routePrefix: SWAGGER_PREFIX_URL || '/documentation',
146
+ routePrefix: SWAGGER_PREFIX_URL || '/api-docs',
147
147
  uiConfig: {
148
148
  docExpansion: 'list',
149
149
  deepLinking: true,
@@ -348,7 +348,7 @@ const start = (decorators) => __awaiter(void 0, void 0, void 0, function* () {
348
348
  log.info(`All stuff loaded in ${elapsed} sec`);
349
349
  log.info(`Server ready 🚀 at ${address}`);
350
350
  const loadSwagger = (0, yn_1.default)(process.env.SWAGGER, false);
351
- loadSwagger && log.info(`Swagger ready ✨ at ${address}${process.env.SWAGGER_PREFIX_URL || '/documentation'}`);
351
+ loadSwagger && log.info(`Swagger ready ✨ at ${address}${process.env.SWAGGER_PREFIX_URL || '/api-docs'}`);
352
352
  });
353
353
  global.server = server;
354
354
  yield loaderSchedules.start(server, schedules);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEZ,oDAA2B;AAC3B,gBAAM,CAAC,MAAM,EAAE,CAAA;AAEf,uDAA8B;AA+YrB,aA/YF,YAAE,CA+YE;AA9YX,+DAAsC;AACtC,sDAAuC;AACvC,8CAAmD;AA4Y/B,gGA5YX,wBAAe,OA4YW;AA3YnC,oEAAqD;AACrD,gEAAiD;AACjD,kEAAmD;AACnD,gEAAiD;AACjD,oEAAqD;AACrD,sEAAuD;AACvD,4EAA6D;AAC7D,mEAAoD;AACpD,wEAAyD;AAEzD,sDAAkD;AAClD,uDAAuC;AACvC,+DAAsC;AACtC,qEAA2C;AAC3C,gDAAmD;AAEnD,yDAAgC;AAChC,6DAAoC;AACpC,iEAAwC;AACxC,qEAA2C;AAC3C,mEAA0C;AAC1C,wEAAsC;AAEtC,2CAA6C;AAC7C,oEAAkF;AAClF,kDAAmE;AACnE,uEAA8C;AAC9C,uEAA6C;AAG7C,MAAM,CAAC,GAAG,GAAG,gBAAM,CAAA;AAEnB,SAAe,YAAY,CAAC,MAAuB;;QACjD,GAAG,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAA;QAC1C,MAAM,MAAM,GAAG,IAAI,qBAAY,CAAY;YACzC,QAAQ,EAAR,mBAAQ;YACR,SAAS,EAAT,mBAAS;YACT,OAAO,EAAE,CAAC,IAAA,kCAAwB,EAAC,MAAM,CAAC,CAAC;SAC5C,CAAC,CAAA;QAEF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,OAAO,MAAM,CAAA;IACf,CAAC;CAAA;AAED,SAAe,gBAAgB,CAAC,MAAuB,EAAE,MAAsC;;QAC7F,IAAI,MAAM,EAAE,CAAC;YACX,GAAG,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAA;YAC/B,MAAM,MAAM,CAAC,QAAQ,CAAC,IAAA,iBAAa,EAAC,MAAM,CAAC,EAAE;gBAC3C,OAAO,EAAE,2BAAiB;aAC3B,CAAC,CAAA;QASJ,CAAC;IACH,CAAC;CAAA;AAED,SAAe,iBAAiB,CAAC,MAAuB;;QACtD,GAAG,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAA;QAE9B,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QACzB,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QAE3B,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,CAAA;QAClC,MAAM,IAAI,YAAY,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC9C,CAAC;CAAA;AAED,SAAe,iBAAiB,CAAC,MAAuB;;QACtD,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,eAAe,EAAE,kBAAkB,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,GAAG,CAAA;QAEtH,MAAM,WAAW,GAAG,IAAA,YAAE,EAAC,OAAO,EAAE,KAAK,CAAC,CAAA;QACtC,IAAI,WAAW,EAAE,CAAC;YAChB,GAAG,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAA;YAE/B,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;YACxB,MAAM,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAA;YAEzE,MAAM,MAAM,CAAC,QAAQ,CAAC,iBAAO,EAAE;gBAC7B,OAAO,EAAE;oBACP,IAAI,EAAE;wBACJ,KAAK,EAAE,aAAa,IAAI,4BAA4B;wBACpD,WAAW,EAAE,mBAAmB,IAAI,2CAA2C;wBAC/E,OAAO,EAAE,eAAe,IAAI,OAAO;qBACpC;oBACD,IAAI,EAAE,YAAY,IAAI,gBAAgB;oBACtC,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;oBAC1B,QAAQ,EAAE,CAAC,kBAAkB,CAAC;oBAC9B,QAAQ,EAAE,CAAC,kBAAkB,CAAC;iBAC/B;gBACD,OAAO,EAAE;oBACP,IAAI,EAAE;wBACJ,KAAK,EAAE,aAAa,IAAI,4BAA4B;wBACpD,WAAW,EAAE,mBAAmB,IAAI,2CAA2C;wBAC/E,OAAO,EAAE,eAAe,IAAI,OAAO;qBACpC;oBACD,OAAO,EAAE;wBACP;4BACE,GAAG,EAAE,YAAY,IAAI,uBAAuB;yBAC7C;qBACF;oBACD,UAAU,EAAE;wBACV,eAAe,EAAE;4BACf,MAAM,EAAE;gCACN,IAAI,EAAE,MAAM;gCACZ,MAAM,EAAE,QAAQ;6BACjB;yBACF;qBACF;iBACF;aACF,CAAC,CAAA;YAEF,MAAM,MAAM,CAAC,QAAQ,CAAC,oBAAS,EAAE;gBAC/B,WAAW,EAAE,kBAAkB,IAAI,gBAAgB;gBACnD,QAAQ,EAAE;oBACR,YAAY,EAAE,MAAM;oBACpB,WAAW,EAAE,IAAI;oBACjB,wBAAwB,EAAE,CAAC;iBAC5B;gBACD,IAAI,EAAE;oBACJ,IAAI,EAAE,WAAW;oBACjB,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;iBACzC;gBACD,KAAK,EAAE;oBACL,KAAK,EAAE,aAAa;iBACrB;aACK,CAAC,CAAA;QACX,CAAC;IACH,CAAC;CAAA;AAED,SAAe,kBAAkB,CAAC,MAAuB;;;QACvD,MAAM,EAAE,SAAS,GAAG,KAAK,EAAE,GAAG,CAAA,MAAA,MAAM,CAAC,MAAM,0CAAE,OAAO,KAAI,EAAE,CAAA;QAC1D,IAAI,SAAS,EAAE,CAAC;YACd,GAAG,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAA;YAEjC,MAAM,MAAM,CAAC,QAAQ,CAAC,0BAAe,CAAC,CAAA;QACxC,CAAC;IACH,CAAC;CAAA;AAED,MAAM,KAAK,GAAG,CAAO,UAAU,EAAE,EAAE;IACjC,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAA;IAClC,IAAI,CAAC,KAAK,CAAC,gBAAM,CAAC,CAAA;IAElB,MAAM,CAAC,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,CAAA;IACnC,MAAM,CAAC,KAAK,GAAG,WAAW,CAAC,IAAI,EAAE,CAAA;IACjC,MAAM,CAAC,CAAC,GAAG,iBAAiB,CAAC,IAAI,EAAE,CAAA;IAEnC,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,cAAc,CAAC,IAAI,EAAE,CAAA;IAC1D,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAC1B,MAAM,CAAC,cAAc,GAAG,cAAc,CAAA;IAEtC,MAAM,IAAI,GAAG,IAAA,YAAE,EAAC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,gBAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;IACxG,MAAM,MAAM,GAAoB,IAAA,iBAAO,GAAE,CAAA;IAEzC,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,SAAS,EAAE,IAAI,EAAE,IAAI,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,GAAG,CAAA;IAC5E,MAAM,EACJ,UAAU,GAAG,EAAE,EACf,cAAc,GAAG,KAAK,EACtB,WAAW,GAAG,MAAM,EACpB,kBAAkB,GAAG,EAAE,EACvB,sBAAsB,GAAG,MAAM,EAChC,GAAG,OAAO,CAAC,GAAG,CAAA;IAEf,MAAM,cAAc,GAAG,IAAA,YAAE,EAAC,WAAW,EAAE,IAAI,CAAC,CAAA;IAC5C,MAAM,UAAU,GAAG,IAAA,YAAE,EAAC,OAAO,EAAE,KAAK,CAAC,CAAA;IACrC,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,EAAE,CAAA;IAGpC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,KAAI,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,0BAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAA;IAC3E,CAAC,UAAU,KAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,CAAA,IAAI,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,gBAAM,EAAE,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAA;IAEvF,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,EAAE,CAAC;QACvB,MAAM,MAAM,CAAC,QAAQ,CAAC,oBAAS,EAAE,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC,CAAA;QACzD,MAAM,CAAC,kBAAkB,CACvB;YACE,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC;gBAC3B,GAAG,EAAE,EAAE;gBACP,UAAU,EAAE,KAAK;aAClB,CAAC;SACH,EACD,UAAU,GAAG,EAAE,KAAK;YAClB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;QACxB,CAAC,CACF,CAAA;IACH,CAAC;IAED,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,KAAI,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,mBAAS,EAAE,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,CAAA;IACjF,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,KAAI,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,cAAI,EAAE,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAA;IAClE,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,KAAI,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,kBAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAA;IAG9E,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,wBAAwB,cAAc,EAAE,CAAC,CAAA;IAC5D,MAAM,MAAM,CAAC,QAAQ,CAAC,aAAY,EAAE;QAClC,MAAM,EAAE,UAAU;QAClB,IAAI,EAAE,EAAE,SAAS,EAAE,cAAc,EAAE;KACpC,CAAC,CAAA;IAEF,IAAI,cAAc,EAAE,CAAC;QACnB,MAAM,MAAM,CAAC,QAAQ,CAAC,aAAY,EAAE;YAClC,SAAS,EAAE,cAAc;YACzB,MAAM,EAAE,kBAAkB,IAAI,UAAU;YACxC,IAAI,EAAE,EAAE,SAAS,EAAE,sBAAsB,EAAE;SAC5C,CAAC,CAAA;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IAC7D,MAAM,iBAAiB,CAAC,MAAM,CAAC,CAAA;IAC/B,MAAM,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACtC,MAAM,iBAAiB,CAAC,MAAM,CAAC,CAAA;IAC/B,MAAM,kBAAkB,CAAC,MAAM,CAAC,CAAA;IAEhC,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI,EAAE,CAAA;IAGxC,UAAU,mBACR,WAAW,EAAE;YACX,aAAa;gBACX,OAAO,KAAK,CAAA;YACd,CAAC;YACD,WAAW,CAAC,IAAS;gBACnB,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;YAC1F,CAAC;YACD,UAAU,CAAC,IAAS;gBAClB,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;YAC1F,CAAC;YACD,eAAe,CAAC,IAAS;gBACvB,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;YAC1F,CAAC;YACD,cAAc,CAAC,EAAU,EAAE,IAAS;gBAClC,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;YAC1F,CAAC;YACD,gBAAgB,CAAC,EAAU;gBACzB,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;YAC1F,CAAC;YACD,mBAAmB,CAAC,KAAa;gBAC/B,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;YAC1F,CAAC;YACD,+BAA+B,CAAC,IAAY;gBAC1C,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;YAC1F,CAAC;YACD,gCAAgC,CAAC,IAAY;gBAC3C,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;YAC1F,CAAC;YACD,sBAAsB,CAAC,QAAgB;gBACrC,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;YAC1F,CAAC;YACD,wBAAwB,CAAC,UAAkB;gBACzC,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;YAC1F,CAAC;YACD,sBAAsB,CAAC,KAAa,EAAE,QAAgB;gBACpD,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;YAC1F,CAAC;YACD,cAAc,CAAC,KAAa,EAAE,QAAgB,EAAE,WAAmB;gBACjE,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;YAC1F,CAAC;YACD,cAAc,CAAC,KAAa;gBAC1B,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;YAC1F,CAAC;YACD,gBAAgB,CAAC,IAAS;gBACxB,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;YAC1F,CAAC;YACD,aAAa,CAAC,IAAS,EAAE,QAAgB;gBACvC,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;YAC1F,CAAC;YACD,aAAa,CAAC,EAAU,EAAE,MAAc;gBACtC,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;YAC1F,CAAC;YACD,eAAe,CAAC,IAAS;gBACvB,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;YAC1F,CAAC;YACD,UAAU,CAAC,IAAS;gBAClB,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;YAC1F,CAAC;YACD,SAAS,CAAC,IAAS;gBACjB,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;YAC1F,CAAC;YACD,eAAe,CAAC,EAAU;gBACxB,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;YAC1F,CAAC;SACgB,EACnB,YAAY,EAAE;YACZ,aAAa;gBACX,OAAO,KAAK,CAAA;YACd,CAAC;YACD,YAAY,CAAC,IAAS;gBACpB,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;YAC1F,CAAC;YACD,WAAW,CAAC,IAAS;gBACnB,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;YAC1F,CAAC;YACD,eAAe,CAAC,EAAU;gBACxB,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;YAC1F,CAAC;YACD,eAAe,CAAC,EAAU,EAAE,KAAU;gBACpC,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;YAC1F,CAAC;YACD,iBAAiB,CAAC,EAAU;gBAC1B,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;YAC1F,CAAC;YACD,yBAAyB,CAAC,EAAU;gBAClC,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;YAC1F,CAAC;YACD,cAAc,CAAC,EAAU,EAAE,MAAc;gBACvC,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;YAC1F,CAAC;YACD,gBAAgB,CAAC,EAAU;gBACzB,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;YAC1F,CAAC;YACD,UAAU,CAAC,IAAS;gBAClB,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;YAC1F,CAAC;YACD,SAAS,CAAC,IAAS;gBACjB,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;YAC1F,CAAC;YACD,eAAe,CAAC,EAAU;gBACxB,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;YAC1F,CAAC;SACiB,EACpB,eAAe,EAAE;YACf,aAAa;gBACX,OAAO,KAAK,CAAA;YACd,CAAC;YACD,kBAAkB;gBAChB,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;YAC1F,CAAC;YACD,UAAU,CAAC,UAAU,EAAE,QAAQ;gBAC7B,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;YAC1F,CAAC;YACD,SAAS,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY;gBACpE,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;YAC1F,CAAC;SACoB,IACpB,UAAU,CACd,CAAA;IAED,MAAM,OAAO,CAAC,GAAG,CACf,MAAM,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAO,GAAG,EAAE,EAAE;QAC9C,MAAM,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAA;IAC7C,CAAC,CAAA,CAAC,CACH,CAAA;IAED,MAAM,MAAM;SACT,MAAM,CAAC;QACN,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC;QAClB,IAAI,EAAE,IAAI;KACX,CAAC;SACD,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;QAChB,MAAM,OAAO,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,GAAG,GAAG,CAAA;QACpD,GAAG,CAAC,IAAI,CAAC,uBAAuB,OAAO,MAAM,CAAC,CAAA;QAC9C,GAAG,CAAC,IAAI,CAAC,sBAAsB,OAAO,EAAE,CAAC,CAAA;QAEzC,MAAM,WAAW,GAAG,IAAA,YAAE,EAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;QAClD,WAAW,IAAI,GAAG,CAAC,IAAI,CAAC,sBAAsB,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,gBAAgB,EAAE,CAAC,CAAA;IAC/G,CAAC,CAAC,CAAA;IAEJ,MAAM,CAAC,MAAM,GAAG,MAAM,CAAA;IAGtB,MAAM,eAAe,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;IAC9C,OAAO,MAAM,CAAA;AACf,CAAC,CAAA,CAAA;AA+BY,sBAAK;AAClB,MAAM,CAAC,OAAO,GAAG,EAAE,EAAE,EAAF,YAAE,EAAE,KAAK,EAAE,eAAe,EAAf,wBAAe,EAAE,CAAA;AAC/C,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE,EAAE,EAAF,YAAE,EAAE,KAAK,EAAE,eAAe,EAAf,wBAAe,EAAE,CAAA;AACtD,MAAM,CAAC,OAAO,CAAC,OAAO,GAAG,EAAE,EAAE,EAAF,YAAE,EAAE,KAAK,EAAE,eAAe,EAAf,wBAAe,EAAE,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@volcanicminds/backend",
3
- "version": "0.9.2",
3
+ "version": "0.9.4",
4
4
  "codename": "turin",
5
5
  "license": "MIT",
6
6
  "description": "The volcanic (minds) backend",
@@ -48,7 +48,8 @@
48
48
  "test:full": "cross-env PORT=2231 NODE_ENV=memory BROWSER=false mocha ./test/index.spec.ts -t 100000",
49
49
  "reset": "yarn && yarn up && yarn compile",
50
50
  "upgrade-deps": "yarn upgrade-interactive",
51
- "upgrade-pkg": "yarn npm-upgrade"
51
+ "upgrade-pkg": "yarn npm-upgrade",
52
+ "combine": "node combine.js"
52
53
  },
53
54
  "dependencies": {
54
55
  "@apollo/server": "^4.11.0",
package/index.ts CHANGED
@@ -124,7 +124,7 @@ async function addFastifySwagger(server: FastifyInstance) {
124
124
  })
125
125
 
126
126
  await server.register(swaggerUI, {
127
- routePrefix: SWAGGER_PREFIX_URL || '/documentation',
127
+ routePrefix: SWAGGER_PREFIX_URL || '/api-docs',
128
128
  uiConfig: {
129
129
  docExpansion: 'list',
130
130
  deepLinking: true,
@@ -363,7 +363,7 @@ const start = async (decorators) => {
363
363
  log.info(`Server ready 🚀 at ${address}`)
364
364
 
365
365
  const loadSwagger = yn(process.env.SWAGGER, false)
366
- loadSwagger && log.info(`Swagger ready ✨ at ${address}${process.env.SWAGGER_PREFIX_URL || '/documentation'}`)
366
+ loadSwagger && log.info(`Swagger ready ✨ at ${address}${process.env.SWAGGER_PREFIX_URL || '/api-docs'}`)
367
367
  })
368
368
 
369
369
  global.server = server
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@volcanicminds/backend",
3
- "version": "0.9.2",
3
+ "version": "0.9.4",
4
4
  "codename": "turin",
5
5
  "license": "MIT",
6
6
  "description": "The volcanic (minds) backend",
@@ -48,7 +48,8 @@
48
48
  "test:full": "cross-env PORT=2231 NODE_ENV=memory BROWSER=false mocha ./test/index.spec.ts -t 100000",
49
49
  "reset": "yarn && yarn up && yarn compile",
50
50
  "upgrade-deps": "yarn upgrade-interactive",
51
- "upgrade-pkg": "yarn npm-upgrade"
51
+ "upgrade-pkg": "yarn npm-upgrade",
52
+ "combine": "node combine.js"
52
53
  },
53
54
  "dependencies": {
54
55
  "@apollo/server": "^4.11.0",