@kollors/deep-json-server 1.0.0-alpha.2 → 1.0.0-alpha.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 +33 -16
- package/README.ru.md +33 -16
- package/dist/index.d.ts +2 -1
- package/dist/index.js.map +1 -1
- package/dist/src/cli.d.ts +2 -2
- package/dist/src/cli.js +22 -15
- package/dist/src/cli.js.map +1 -1
- package/dist/src/config.d.ts +12 -1
- package/dist/src/config.js +40 -5
- package/dist/src/config.js.map +1 -1
- package/dist/src/constants.d.ts +1 -1
- package/dist/src/constants.js +1 -1
- package/dist/src/database.d.ts +0 -1
- package/dist/src/database.js +12 -10
- package/dist/src/database.js.map +1 -1
- package/dist/src/engine.d.ts +17 -6
- package/dist/src/engine.js +30 -30
- package/dist/src/engine.js.map +1 -1
- package/dist/src/errors.d.ts +1 -1
- package/dist/src/files/contract.d.ts +0 -30
- package/dist/src/files/contract.js +6 -47
- package/dist/src/files/contract.js.map +1 -1
- package/dist/src/files/disk-store.d.ts +2 -1
- package/dist/src/files/disk-store.js +24 -14
- package/dist/src/files/disk-store.js.map +1 -1
- package/dist/src/files/http.d.ts +31 -0
- package/dist/src/files/http.js +44 -0
- package/dist/src/files/http.js.map +1 -0
- package/dist/src/files/index.d.ts +1 -1
- package/dist/src/files/index.js +1 -1
- package/dist/src/files/index.js.map +1 -1
- package/dist/src/files/memory-store.js +8 -7
- package/dist/src/files/memory-store.js.map +1 -1
- package/dist/src/files/openapi.js +2 -4
- package/dist/src/files/openapi.js.map +1 -1
- package/dist/src/files/routes.js +3 -2
- package/dist/src/files/routes.js.map +1 -1
- package/dist/src/graphql/entry.d.ts +3 -0
- package/dist/src/graphql/entry.js +3 -0
- package/dist/src/graphql/entry.js.map +1 -0
- package/dist/src/graphql/preflight.d.ts +3 -3
- package/dist/src/graphql/preflight.js +4 -2
- package/dist/src/graphql/preflight.js.map +1 -1
- package/dist/src/graphql/public.d.ts +3 -0
- package/dist/src/graphql/public.js +11 -0
- package/dist/src/graphql/public.js.map +1 -0
- package/dist/src/graphql/resolvers.d.ts +8 -0
- package/dist/src/graphql/resolvers.js +38 -0
- package/dist/src/graphql/resolvers.js.map +1 -0
- package/dist/src/graphql/routes.js +3 -4
- package/dist/src/graphql/routes.js.map +1 -1
- package/dist/src/graphql/write.d.ts +1 -0
- package/dist/src/graphql/write.js +7 -0
- package/dist/src/graphql/write.js.map +1 -0
- package/dist/src/graphql.d.ts +1 -2
- package/dist/src/graphql.js +7 -21
- package/dist/src/graphql.js.map +1 -1
- package/dist/src/http/errors.d.ts +6 -0
- package/dist/src/http/errors.js +3 -0
- package/dist/src/http/errors.js.map +1 -0
- package/dist/src/model.d.ts +1 -0
- package/dist/src/model.js +20 -4
- package/dist/src/model.js.map +1 -1
- package/dist/src/openapi/document.js +12 -8
- package/dist/src/openapi/document.js.map +1 -1
- package/dist/src/openapi/entry.d.ts +3 -0
- package/dist/src/openapi/entry.js +2 -0
- package/dist/src/openapi/entry.js.map +1 -0
- package/dist/src/openapi/helpers.d.ts +17 -0
- package/dist/src/openapi/helpers.js +4 -0
- package/dist/src/openapi/helpers.js.map +1 -0
- package/dist/src/openapi/index.js +6 -4
- package/dist/src/openapi/index.js.map +1 -1
- package/dist/src/openapi/public.d.ts +17 -0
- package/dist/src/openapi/public.js +18 -0
- package/dist/src/openapi/public.js.map +1 -0
- package/dist/src/pagination.d.ts +7 -0
- package/dist/src/pagination.js +12 -0
- package/dist/src/pagination.js.map +1 -0
- package/dist/src/paths.d.ts +6 -0
- package/dist/src/paths.js +47 -0
- package/dist/src/paths.js.map +1 -0
- package/dist/src/query/filter.d.ts +1 -2
- package/dist/src/query/filter.js +2 -0
- package/dist/src/query/filter.js.map +1 -1
- package/dist/src/query/options.js +4 -2
- package/dist/src/query/options.js.map +1 -1
- package/dist/src/relation-metadata.d.ts +0 -1
- package/dist/src/relation-metadata.js +0 -1
- package/dist/src/relation-metadata.js.map +1 -1
- package/dist/src/rest/options.js +1 -1
- package/dist/src/rest/options.js.map +1 -1
- package/dist/src/rest/projection.d.ts +3 -3
- package/dist/src/rest/projection.js +8 -7
- package/dist/src/rest/projection.js.map +1 -1
- package/dist/src/rest/routes.js +6 -6
- package/dist/src/rest/routes.js.map +1 -1
- package/dist/src/schema.d.ts +6 -15
- package/dist/src/schema.js +7 -17
- package/dist/src/schema.js.map +1 -1
- package/dist/src/server/public.d.ts +3 -0
- package/dist/src/server/public.js +2 -0
- package/dist/src/server/public.js.map +1 -0
- package/dist/src/server.d.ts +3 -2
- package/dist/src/server.js +43 -36
- package/dist/src/server.js.map +1 -1
- package/dist/src/utils.d.ts +0 -7
- package/dist/src/utils.js +0 -4
- package/dist/src/utils.js.map +1 -1
- package/package.json +13 -1
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
A JSON-backed mock server with REST, GraphQL, nested queries, binary files and schema exports. Requires Node.js 22 or newer.
|
|
6
6
|
|
|
7
|
-
**1.0.0-alpha.
|
|
7
|
+
**1.0.0-alpha.3 is a prerelease.** When upgrading from 0.x, update your model schema and query parameters using the examples below.
|
|
8
8
|
|
|
9
9
|
## Installation
|
|
10
10
|
|
|
@@ -12,7 +12,7 @@ A JSON-backed mock server with REST, GraphQL, nested queries, binary files and s
|
|
|
12
12
|
npm install @kollors/deep-json-server@alpha
|
|
13
13
|
```
|
|
14
14
|
|
|
15
|
-
To install a specific version, use `@1.0.0-alpha.
|
|
15
|
+
To install a specific version, use `@1.0.0-alpha.3`.
|
|
16
16
|
|
|
17
17
|
## Quick start
|
|
18
18
|
|
|
@@ -51,7 +51,7 @@ The user list is available at `http://127.0.0.1:4001/users`.
|
|
|
51
51
|
| `openapi.enabled` | Enable the specification endpoint; default `false` |
|
|
52
52
|
| `openapi.endpoint` | Specification path; default `/openapi.json` |
|
|
53
53
|
| `openapi.path` | YAML export destination |
|
|
54
|
-
| `openapi.info` | Optional `title
|
|
54
|
+
| `openapi.info` | Optional metadata object: required `title` and `version`, optional `description` |
|
|
55
55
|
| `graphql.enabled` | Enable GraphQL HTTP endpoint; default `false` |
|
|
56
56
|
| `graphql.endpoint` | Endpoint path; default `/graphql` |
|
|
57
57
|
| `graphql.path` | GraphQL SDL export destination |
|
|
@@ -62,7 +62,9 @@ The user list is available at `http://127.0.0.1:4001/users`.
|
|
|
62
62
|
| `files.data` | In-memory binary files |
|
|
63
63
|
| `files.directory`, `files.metadata` | Disk storage directory and metadata JSON file; both required |
|
|
64
64
|
|
|
65
|
-
Relative paths resolve from the configuration file's directory. When passing a configuration object to `createServer()`, paths resolve from the working directory. The server works with a copy of in-memory input.
|
|
65
|
+
Relative paths resolve from the configuration file's directory. When passing a configuration object to `createServer()`, paths resolve from the working directory. The server works with a copy of in-memory input and metadata.
|
|
66
|
+
|
|
67
|
+
Set `server.port` to `0` to let the operating system choose an available port. The OpenAPI endpoint uses a relative server URL.
|
|
66
68
|
|
|
67
69
|
| CLI flag | Action |
|
|
68
70
|
|---|---|
|
|
@@ -84,7 +86,17 @@ npx deep-json-server generate graphql server.config.js
|
|
|
84
86
|
npx deep-json-server generate openapi,graphql server.config.js
|
|
85
87
|
```
|
|
86
88
|
|
|
87
|
-
The command reads `database.schema` and writes schemas to `openapi.path` and `graphql.path`.
|
|
89
|
+
The command reads `database.schema` and writes schemas to `openapi.path` and `graphql.path`. A configuration for generation only can contain:
|
|
90
|
+
|
|
91
|
+
```js
|
|
92
|
+
export default {
|
|
93
|
+
database: { schema: './schema.json' },
|
|
94
|
+
openapi: { path: './generated/openapi.yaml' },
|
|
95
|
+
graphql: { path: './generated/schema.graphql' },
|
|
96
|
+
};
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
Each format needs its own output file. The command rejects destinations that would overwrite the configuration, database, schema or file metadata.
|
|
88
100
|
|
|
89
101
|
## Model schema
|
|
90
102
|
|
|
@@ -122,7 +134,9 @@ Examples: [database](examples/database.json), [model schema](examples/schema.jso
|
|
|
122
134
|
| OpenAPI 3.0.3 export | Available | Error when requested |
|
|
123
135
|
| GraphQL SDL / API | Available | Error when requested |
|
|
124
136
|
|
|
125
|
-
Explicit schemas are strict: undeclared fields and collections are rejected, except storage keys inferred from relations. Existing data is validated on startup. Generation uses the model definitions.
|
|
137
|
+
Explicit schemas are strict: undeclared fields and collections are rejected, except storage keys inferred from relations. Existing data is validated on startup. Generation uses the model definitions.
|
|
138
|
+
|
|
139
|
+
Schemaless REST generates an `id` and preserves arbitrary JSON fields. Filters and individual field selections use identifier-style names; other fields are returned through `scope=*`. Fields with mixed value types can be read, but using them in `where`, `order` or `nested` requires an explicit schema.
|
|
126
140
|
|
|
127
141
|
### Fields
|
|
128
142
|
|
|
@@ -134,7 +148,7 @@ The `type` property accepts `string`, `number`, `boolean`, `object`, or a model
|
|
|
134
148
|
| `description`, `example` | Documentation and example value |
|
|
135
149
|
| `required`, `nullable` | Defaults `false`; presence and explicit null are separate |
|
|
136
150
|
| `default` | Value when omitted on create/replace; PATCH does not insert defaults |
|
|
137
|
-
| `enum` | Allowed
|
|
151
|
+
| `enum` | Allowed strings, numbers or booleans; for arrays, allowed element values |
|
|
138
152
|
| `primary` | Root primary key; mandatory, unique, non-null and immutable |
|
|
139
153
|
| `generated` | `uuid` for strings, `increment` for numbers; server supplies the value |
|
|
140
154
|
| `readOnly`, `writeOnly` | Output-only or input-only; mutually exclusive |
|
|
@@ -149,6 +163,8 @@ Each model requires exactly one primary key of type `string` or `number`, declar
|
|
|
149
163
|
|
|
150
164
|
For example, a `LocalUser` with primary key `username` and `password: {"type":"string","required":true,"writeOnly":true}` has `localUser(username: ...)` and `/localUsers/{username}`. A `writeOnly` field accepts input and is excluded from responses, `scope`, filters and ordering.
|
|
151
165
|
|
|
166
|
+
Objects used in GraphQL must have at least one field visible in responses; REST also accepts empty objects.
|
|
167
|
+
|
|
152
168
|
### Relations
|
|
153
169
|
|
|
154
170
|
```json
|
|
@@ -441,30 +457,31 @@ Content-Type: application/json
|
|
|
441
457
|
|
|
442
458
|
`PATCH` returns the updated metadata with status `200`; if a file already exists at the new path, the server returns `409`. `DELETE` returns `204` without a response body. A missing file returns `404` on every path-based operation. File paths in URLs are relative to `files.directory`, and all returned URLs are relative to the server origin.
|
|
443
459
|
|
|
444
|
-
In disk mode, the binary is stored at `<files.directory>/<directory>/<name>`.
|
|
460
|
+
In disk mode, the binary is stored at `<files.directory>/<directory>/<name>`. Metadata stores `directory`, `mimeType` and `name`; the server reads the size from the file and builds its URLs. Directories and the metadata file are created when needed.
|
|
461
|
+
|
|
462
|
+
Use one server process per disk database and file store. Stop it before editing stored files or metadata manually. Storage paths cannot contain symbolic links. Uploads and renames cannot overwrite the database, counters, schema, loaded configuration or metadata file.
|
|
445
463
|
|
|
446
464
|
Send the file as a binary request body. In a browser, use `xhr.send(file)` and track progress through `XMLHttpRequest.upload.onprogress`. The default maximum size is 100 MiB and can be changed through `server.maxFileSize`. Missing or unsafe headers and paths return `400`, an exceeded limit returns `413`, and a missing, malformed, or Fastify-unsupported `Content-Type` returns `400` or `415`, depending on which validation stage rejects it.
|
|
447
465
|
|
|
448
466
|
## Programmatic API
|
|
449
467
|
|
|
450
468
|
```js
|
|
451
|
-
import { createServer } from '@kollors/deep-json-server';
|
|
469
|
+
import { createServer } from '@kollors/deep-json-server/server';
|
|
452
470
|
import config from './server.config.js';
|
|
453
471
|
|
|
454
472
|
const facade = await createServer(config);
|
|
455
|
-
const openapi = await facade.openapi();
|
|
456
|
-
const sdl = await facade.graphql();
|
|
457
473
|
const server = facade.fastify();
|
|
458
474
|
await server.listen();
|
|
459
475
|
// await server.close();
|
|
460
476
|
```
|
|
461
477
|
|
|
462
|
-
The `openapi()` and `graphql()` methods return schemas. `fastify()` returns the server instance for configuration and startup. The database and enabled services initialize on `ready()`, `listen()` or the first `inject()`; initialization errors stop startup. Override server features with `createServer(config, { files: false, graphql: true, openapi: true })`.
|
|
478
|
+
The `openapi()` and `graphql()` methods return schemas and require `database.schema`. `fastify()` returns the server instance for configuration and startup. The database and enabled services initialize on `ready()`, `listen()` or the first `inject()`; initialization errors stop startup. Override server features with `createServer(config, { files: false, graphql: true, openapi: true })`.
|
|
463
479
|
|
|
464
|
-
Generators can
|
|
480
|
+
The root import `@kollors/deep-json-server` also provides these functions. Server adapters load when enabled. Generators can be used independently:
|
|
465
481
|
|
|
466
482
|
```js
|
|
467
|
-
import { generateOpenapi,
|
|
483
|
+
import { generateOpenapi, writeOpenapi } from '@kollors/deep-json-server/openapi';
|
|
484
|
+
import { generateGraphql, writeGraphql } from '@kollors/deep-json-server/graphql';
|
|
468
485
|
|
|
469
486
|
const document = await generateOpenapi('./schema.json', { files: true });
|
|
470
487
|
const sdl = await generateGraphql('./schema.json');
|
|
@@ -472,7 +489,7 @@ await writeOpenapi(document, './generated/openapi.yaml');
|
|
|
472
489
|
await writeGraphql(sdl, './generated/schema.graphql');
|
|
473
490
|
```
|
|
474
491
|
|
|
475
|
-
`generateOpenapi()` also accepts `host`, `port`, `pageSize`, `maxPageSize` and `info`. Pass a schema object instead of a path if preferred. Servers and generators use their own copy of the model.
|
|
492
|
+
`generateOpenapi()` also accepts `host`, `port`, `pageSize`, `maxPageSize` and `info`. Pass a schema object instead of a path if preferred. Servers and generators use their own copy of the model. Pagination sizes must be positive integers; `pageSize` cannot exceed `maxPageSize`.
|
|
476
493
|
|
|
477
494
|
## Storage and development
|
|
478
495
|
|
|
@@ -487,6 +504,6 @@ npm run verify
|
|
|
487
504
|
|
|
488
505
|
The command checks types, code style, test coverage and installation from the package archive.
|
|
489
506
|
|
|
490
|
-
To publish a new alpha, update the version in `package.json` and push to `main`. GitHub Actions creates the version tag and publishes to npm `alpha` through trusted publishing. Already published versions are skipped. If the tag exists but publication failed, a retry uses that tag and verifies that the package files match it. Pushing a version tag also triggers publication; stable versions publish to `latest`.
|
|
507
|
+
To publish a new alpha, update the version in `package.json`, `package-lock.json` and `src/constants.ts`, then push to `main`. GitHub Actions creates the version tag and publishes to npm `alpha` through trusted publishing. Already published versions are skipped. If the tag exists but publication failed, a retry uses that tag and verifies that the package files match it. Pushing a version tag also triggers publication; stable versions publish to `latest`.
|
|
491
508
|
|
|
492
509
|
License: MIT.
|
package/README.ru.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
JSON-сервер для имитации API: REST, GraphQL, вложенные запросы, бинарные файлы и экспорт схем. Требуется Node.js 22 или новее.
|
|
6
6
|
|
|
7
|
-
**1.0.0-alpha.
|
|
7
|
+
**1.0.0-alpha.3 — предварительная версия.** При переходе с 0.x обновите схему моделей и параметры запросов по примерам ниже.
|
|
8
8
|
|
|
9
9
|
## Установка
|
|
10
10
|
|
|
@@ -12,7 +12,7 @@ JSON-сервер для имитации API: REST, GraphQL, вложенные
|
|
|
12
12
|
npm install @kollors/deep-json-server@alpha
|
|
13
13
|
```
|
|
14
14
|
|
|
15
|
-
Для установки конкретной версии укажите `@1.0.0-alpha.
|
|
15
|
+
Для установки конкретной версии укажите `@1.0.0-alpha.3`.
|
|
16
16
|
|
|
17
17
|
## Быстрый старт
|
|
18
18
|
|
|
@@ -51,7 +51,7 @@ npx deep-json-server server.config.js
|
|
|
51
51
|
| `openapi.enabled` | Включить HTTP-маршрут спецификации; по умолчанию `false` |
|
|
52
52
|
| `openapi.endpoint` | Путь спецификации; по умолчанию `/openapi.json` |
|
|
53
53
|
| `openapi.path` | Путь экспорта YAML |
|
|
54
|
-
| `openapi.info` |
|
|
54
|
+
| `openapi.info` | Необязательный объект метаданных: обязательные `title` и `version`, необязательный `description` |
|
|
55
55
|
| `graphql.enabled` | Включить GraphQL HTTP API; по умолчанию `false` |
|
|
56
56
|
| `graphql.endpoint` | Путь GraphQL; по умолчанию `/graphql` |
|
|
57
57
|
| `graphql.path` | Путь экспорта GraphQL SDL |
|
|
@@ -62,7 +62,9 @@ npx deep-json-server server.config.js
|
|
|
62
62
|
| `files.data` | Бинарные файлы в памяти |
|
|
63
63
|
| `files.directory`, `files.metadata` | Каталог файлов и JSON метаданных; необходимы оба |
|
|
64
64
|
|
|
65
|
-
Относительные пути отсчитываются от каталога конфигурационного файла. При вызове `createServer()` с объектом конфигурации — от рабочего каталога. Сервер работает с копией переданных данных в
|
|
65
|
+
Относительные пути отсчитываются от каталога конфигурационного файла. При вызове `createServer()` с объектом конфигурации — от рабочего каталога. Сервер работает с копией переданных данных в памяти и метаданных.
|
|
66
|
+
|
|
67
|
+
Значение `server.port: 0` позволяет системе выбрать свободный порт. OpenAPI на HTTP-эндпоинте использует относительный адрес сервера.
|
|
66
68
|
|
|
67
69
|
| Флаг CLI | Действие |
|
|
68
70
|
|---|---|
|
|
@@ -84,7 +86,17 @@ npx deep-json-server generate graphql server.config.js
|
|
|
84
86
|
npx deep-json-server generate openapi,graphql server.config.js
|
|
85
87
|
```
|
|
86
88
|
|
|
87
|
-
Команда читает `database.schema` и сохраняет схемы
|
|
89
|
+
Команда читает `database.schema` и сохраняет схемы в `openapi.path` и `graphql.path`. Для генерации достаточно такой конфигурации:
|
|
90
|
+
|
|
91
|
+
```js
|
|
92
|
+
export default {
|
|
93
|
+
database: { schema: './schema.json' },
|
|
94
|
+
openapi: { path: './generated/openapi.yaml' },
|
|
95
|
+
graphql: { path: './generated/schema.graphql' },
|
|
96
|
+
};
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
Для каждого формата нужен отдельный файл. Команда отклонит путь, который перезапишет конфигурацию, базу, схему или метаданные файлов.
|
|
88
100
|
|
|
89
101
|
## Схема моделей
|
|
90
102
|
|
|
@@ -122,7 +134,9 @@ npx deep-json-server generate openapi,graphql server.config.js
|
|
|
122
134
|
| Экспорт OpenAPI 3.0.3 | Доступен | Ошибка при запросе экспорта |
|
|
123
135
|
| GraphQL SDL / API | Доступен | Ошибка при запросе |
|
|
124
136
|
|
|
125
|
-
При явной схеме неизвестные поля и коллекции запрещены. Исключение — хранимые ключи, выведенные из связей. Исходная база проверяется при загрузке. Генерация использует описание моделей.
|
|
137
|
+
При явной схеме неизвестные поля и коллекции запрещены. Исключение — хранимые ключи, выведенные из связей. Исходная база проверяется при загрузке. Генерация использует описание моделей.
|
|
138
|
+
|
|
139
|
+
REST без схемы создаёт ключ `id` и сохраняет произвольные JSON-поля. Для фильтров и выбора отдельных полей используются имена в формате идентификаторов; остальные поля возвращаются через `scope=*`. Поля с разными типами значений можно читать, но для их использования в `where`, `order` или `nested` нужна явная схема.
|
|
126
140
|
|
|
127
141
|
### Поля
|
|
128
142
|
|
|
@@ -134,7 +148,7 @@ npx deep-json-server generate openapi,graphql server.config.js
|
|
|
134
148
|
| `description`, `example` | Документация и пример |
|
|
135
149
|
| `required`, `nullable` | По умолчанию `false`; наличие поля и разрешение `null` независимы |
|
|
136
150
|
| `default` | Значение при пропуске в create/replace; PATCH не вставляет значения по умолчанию |
|
|
137
|
-
| `enum` | Допустимые значения; у массива — значения каждого элемента |
|
|
151
|
+
| `enum` | Допустимые строки, числа или логические значения; у массива — значения каждого элемента |
|
|
138
152
|
| `primary` | Корневой первичный ключ: обязательный, уникальный, неизменяемый, без `null` |
|
|
139
153
|
| `generated` | `uuid` для строк, `increment` для чисел; значение создаёт сервер |
|
|
140
154
|
| `readOnly`, `writeOnly` | Только ответ или только входные данные; взаимно исключаются |
|
|
@@ -149,6 +163,8 @@ npx deep-json-server generate openapi,graphql server.config.js
|
|
|
149
163
|
|
|
150
164
|
Например, `LocalUser` с первичным ключом `username` и полем `password: {"type":"string","required":true,"writeOnly":true}` получает запрос `localUser(username: ...)` и маршрут `/localUsers/{username}`. Поле `writeOnly` доступно для записи и исключено из ответов, `scope`, фильтров и сортировки.
|
|
151
165
|
|
|
166
|
+
Объекты в GraphQL должны содержать хотя бы одно поле, доступное в ответе; REST допускает и пустые объекты.
|
|
167
|
+
|
|
152
168
|
### Связи
|
|
153
169
|
|
|
154
170
|
```json
|
|
@@ -441,30 +457,31 @@ Content-Type: application/json
|
|
|
441
457
|
|
|
442
458
|
`PATCH` возвращает обновлённые метаданные со статусом `200`; если по новому пути уже существует файл, сервер возвращает `409`. `DELETE` отвечает статусом `204` без тела. Если файл не найден, любая операция по пути возвращает `404`. Пути в URL задаются относительно `files.directory`, а все возвращаемые URL — относительно адреса сервера.
|
|
443
459
|
|
|
444
|
-
При хранении на диске бинарный файл находится по пути `<files.directory>/<directory>/<name>`.
|
|
460
|
+
При хранении на диске бинарный файл находится по пути `<files.directory>/<directory>/<name>`. Метаданные содержат `directory`, `mimeType` и `name`; размер сервер читает из файла, а URL формирует сам. Директории и файл метаданных создаются по мере необходимости.
|
|
461
|
+
|
|
462
|
+
Используйте один процесс сервера для дисковой базы и файлового хранилища. Перед ручным изменением файлов или метаданных остановите его. Пути в хранилище не могут содержать символические ссылки. Загрузка и переименование не могут перезаписать базу, счётчики, схему, загруженную конфигурацию или файл метаданных.
|
|
445
463
|
|
|
446
464
|
Отправляйте файл как бинарное тело запроса. В браузере для этого можно использовать `xhr.send(file)`, а прогресс отслеживать через `XMLHttpRequest.upload.onprogress`. Максимальный размер по умолчанию равен 100 МиБ и настраивается через `server.maxFileSize`. Отсутствующие или небезопасные заголовки и пути возвращают `400`, превышение лимита — `413`, а отсутствующий, некорректный или не поддерживаемый Fastify `Content-Type` — `400` либо `415` в зависимости от этапа проверки.
|
|
447
465
|
|
|
448
466
|
## Программный API
|
|
449
467
|
|
|
450
468
|
```js
|
|
451
|
-
import { createServer } from '@kollors/deep-json-server';
|
|
469
|
+
import { createServer } from '@kollors/deep-json-server/server';
|
|
452
470
|
import config from './server.config.js';
|
|
453
471
|
|
|
454
472
|
const facade = await createServer(config);
|
|
455
|
-
const openapi = await facade.openapi();
|
|
456
|
-
const sdl = await facade.graphql();
|
|
457
473
|
const server = facade.fastify();
|
|
458
474
|
await server.listen();
|
|
459
475
|
// await server.close();
|
|
460
476
|
```
|
|
461
477
|
|
|
462
|
-
Методы `openapi()` и `graphql()` возвращают
|
|
478
|
+
Методы `openapi()` и `graphql()` возвращают схемы и требуют `database.schema`. `fastify()` возвращает экземпляр сервера для настройки и запуска. База и включённые сервисы инициализируются при `ready()`, `listen()` или первом `inject()`; ошибка инициализации останавливает запуск. Возможности сервера можно переопределить через `createServer(config, { files: false, graphql: true, openapi: true })`.
|
|
463
479
|
|
|
464
|
-
Генераторы можно использовать отдельно:
|
|
480
|
+
Эти функции доступны и через общий импорт `@kollors/deep-json-server`. Адаптеры сервера загружаются при включении. Генераторы можно использовать отдельно:
|
|
465
481
|
|
|
466
482
|
```js
|
|
467
|
-
import { generateOpenapi,
|
|
483
|
+
import { generateOpenapi, writeOpenapi } from '@kollors/deep-json-server/openapi';
|
|
484
|
+
import { generateGraphql, writeGraphql } from '@kollors/deep-json-server/graphql';
|
|
468
485
|
|
|
469
486
|
const document = await generateOpenapi('./schema.json', { files: true });
|
|
470
487
|
const sdl = await generateGraphql('./schema.json');
|
|
@@ -472,7 +489,7 @@ await writeOpenapi(document, './generated/openapi.yaml');
|
|
|
472
489
|
await writeGraphql(sdl, './generated/schema.graphql');
|
|
473
490
|
```
|
|
474
491
|
|
|
475
|
-
`generateOpenapi()` также принимает `host`, `port`, `pageSize`, `maxPageSize` и `info`. Вместо пути можно передать объект схемы. Сервер и генераторы работают с собственной копией модели.
|
|
492
|
+
`generateOpenapi()` также принимает `host`, `port`, `pageSize`, `maxPageSize` и `info`. Вместо пути можно передать объект схемы. Сервер и генераторы работают с собственной копией модели. Размеры страниц должны быть положительными целыми числами; `pageSize` не может превышать `maxPageSize`.
|
|
476
493
|
|
|
477
494
|
## Хранение и разработка
|
|
478
495
|
|
|
@@ -487,6 +504,6 @@ npm run verify
|
|
|
487
504
|
|
|
488
505
|
Команда проверяет типы, стиль кода, покрытие тестами и установку пакета из архива.
|
|
489
506
|
|
|
490
|
-
Для публикации новой альфы обновите версию в `package.json` и отправьте изменения в `main`. GitHub Actions создаст тег версии и опубликует пакет в канал npm `alpha` через trusted publishing. Уже опубликованная версия пропускается. Если тег создан, а публикация не завершилась, повторный запуск использует этот тег и проверяет соответствие ему файлов пакета. Отправка тега версии также запускает публикацию; стабильные версии публикуются в `latest`.
|
|
507
|
+
Для публикации новой альфы обновите версию в `package.json`, `package-lock.json` и `src/constants.ts`, затем отправьте изменения в `main`. GitHub Actions создаст тег версии и опубликует пакет в канал npm `alpha` через trusted publishing. Уже опубликованная версия пропускается. Если тег создан, а публикация не завершилась, повторный запуск использует этот тег и проверяет соответствие ему файлов пакета. Отправка тега версии также запускает публикацию; стабильные версии публикуются в `latest`.
|
|
491
508
|
|
|
492
509
|
Лицензия: MIT.
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export type { DatabaseConfig, DeepJsonServerConfig, FilesConfig, GraphqlConfig, MemoryFile, OpenapiConfig, ServerConfig } from './src/config.js';
|
|
2
2
|
export type { ServerFeatures } from './src/features.js';
|
|
3
|
-
export type {
|
|
3
|
+
export type { FileUpdate } from './src/files/contract.js';
|
|
4
|
+
export type { FileMetadata } from './src/files/http.js';
|
|
4
5
|
export type { EntityDefinition, Field, ModelSchema } from './src/model.js';
|
|
5
6
|
export type { OpenapiOptions } from './src/schema.js';
|
|
6
7
|
export { generateGraphql, generateOpenapi, writeGraphql, writeOpenapi } from './src/schema.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/F,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC"}
|
package/dist/src/cli.d.ts
CHANGED
package/dist/src/cli.js
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import process from 'node:process';
|
|
2
|
-
import {
|
|
2
|
+
import { configure, configureGeneration, readConfigModule } from './config.js';
|
|
3
3
|
import { DEFAULT_HOST, DEFAULT_PORT, VERSION } from './constants.js';
|
|
4
4
|
import { resolveFeatures } from './features.js';
|
|
5
|
+
import { inputPaths, validateExportPaths } from './paths.js';
|
|
5
6
|
import { generateGraphql, generateOpenapi, writeGraphql, writeOpenapi } from './schema.js';
|
|
6
|
-
import {
|
|
7
|
+
import { createConfiguredServer } from './server.js';
|
|
8
|
+
import { isObject } from './utils.js';
|
|
7
9
|
const HELP_TEXT = `Deep JSON Server
|
|
8
10
|
|
|
9
11
|
Usage:
|
|
@@ -19,7 +21,7 @@ Usage:
|
|
|
19
21
|
--version, -v Show version
|
|
20
22
|
|
|
21
23
|
Files are enabled when configured. Generate writes schemas to the configured paths.`;
|
|
22
|
-
export async function runCli(args = process.argv.slice(2), services = { createServer }) {
|
|
24
|
+
export async function runCli(args = process.argv.slice(2), services = { createServer: createConfiguredServer }) {
|
|
23
25
|
if (args.includes('--help') || args.includes('-h')) {
|
|
24
26
|
process.stdout.write(`${HELP_TEXT}\n`);
|
|
25
27
|
return;
|
|
@@ -68,25 +70,30 @@ export async function runCli(args = process.argv.slice(2), services = { createSe
|
|
|
68
70
|
throw new Error('Invalid generation format');
|
|
69
71
|
if (generate && (features.graphql || features.openapi))
|
|
70
72
|
throw new Error('Endpoint flags are only available when starting the server');
|
|
71
|
-
const source = await
|
|
72
|
-
const
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
}
|
|
76
|
-
const
|
|
73
|
+
const source = await readConfigModule(configPath);
|
|
74
|
+
const serverOptions = generate && !formats.includes('openapi') ? {} : (source.config.server ?? {});
|
|
75
|
+
if (!isObject(serverOptions))
|
|
76
|
+
throw new Error('config.server must be an object');
|
|
77
|
+
const overrides = { host: host ?? serverOptions.host ?? process.env.HOST ?? DEFAULT_HOST, port: port ?? serverOptions.port ?? Number(process.env.PORT ?? DEFAULT_PORT) };
|
|
78
|
+
const config = generate
|
|
79
|
+
? configureGeneration(source.config, formats, source.directory, source.path, { ...overrides, files: features.files })
|
|
80
|
+
: configure({ ...source.config, server: { ...serverOptions, ...overrides } }, source.directory, source.path);
|
|
77
81
|
if (generate) {
|
|
78
82
|
if (!config.database.schema)
|
|
79
83
|
throw new Error('Generation requires an explicit model schema');
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
if (!
|
|
84
|
+
const destinations = formats.map((format) => {
|
|
85
|
+
const path = config[format].path;
|
|
86
|
+
if (!path)
|
|
83
87
|
throw new Error(`Укажите config.${format}.path`);
|
|
88
|
+
return path;
|
|
89
|
+
});
|
|
90
|
+
await validateExportPaths(destinations, inputPaths(source.config, source.directory, source.path));
|
|
84
91
|
const openapi = formats.includes('openapi')
|
|
85
92
|
? await generateOpenapi(config.database.schema, {
|
|
86
|
-
files:
|
|
93
|
+
files: config.files != null,
|
|
87
94
|
host: config.server.host,
|
|
88
95
|
port: config.server.port,
|
|
89
|
-
pageSize: config.server.pageSize
|
|
96
|
+
pageSize: config.server.pageSize,
|
|
90
97
|
maxPageSize: config.server.maxPageSize,
|
|
91
98
|
info: config.openapi.info,
|
|
92
99
|
})
|
|
@@ -102,7 +109,7 @@ export async function runCli(args = process.argv.slice(2), services = { createSe
|
|
|
102
109
|
}
|
|
103
110
|
return;
|
|
104
111
|
}
|
|
105
|
-
const server = (await services.createServer(config,
|
|
112
|
+
const server = (await services.createServer(config, resolveFeatures(config, features))).fastify();
|
|
106
113
|
await server.listen();
|
|
107
114
|
server.log.info('Deep JSON Server started');
|
|
108
115
|
}
|
package/dist/src/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/src/config.d.ts
CHANGED
|
@@ -67,4 +67,15 @@ export interface NormalizedServerConfig {
|
|
|
67
67
|
/** Validates configuration and resolves relative paths. */
|
|
68
68
|
export declare const normalizeServerConfig: (config: DeepJsonServerConfig, directoryPath?: string) => NormalizedServerConfig;
|
|
69
69
|
/** Loads an ES module config and resolves paths from its directory. */
|
|
70
|
-
export declare function
|
|
70
|
+
export declare function readConfigModule(configPath: string): Promise<{
|
|
71
|
+
config: Record<string, unknown>;
|
|
72
|
+
directory: string;
|
|
73
|
+
path: string;
|
|
74
|
+
}>;
|
|
75
|
+
export declare const configSourcePath: (config: NormalizedServerConfig) => string | undefined;
|
|
76
|
+
export declare function configure(config: unknown, directory: string, sourcePath?: string): NormalizedServerConfig;
|
|
77
|
+
export declare function configureGeneration(source: Record<string, unknown>, formats: string[], directory: string, sourcePath: string, overrides: {
|
|
78
|
+
host?: string;
|
|
79
|
+
port?: number;
|
|
80
|
+
files?: boolean;
|
|
81
|
+
}): NormalizedServerConfig;
|
package/dist/src/config.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { dirname, resolve } from 'node:path';
|
|
2
2
|
import { pathToFileURL } from 'node:url';
|
|
3
|
+
import { normalizePagination } from './pagination.js';
|
|
3
4
|
import { assertKnownKeys, isObject } from './utils.js';
|
|
4
5
|
const CONFIG_KEYS = new Set(['database', 'files', 'openapi', 'graphql', 'server']);
|
|
5
6
|
const DATABASE_KEYS = new Set(['data', 'path', 'schema']);
|
|
@@ -122,8 +123,7 @@ const normalizeConfig = (config, directoryPath = '.') => {
|
|
|
122
123
|
const maxFileSize = getPositiveInteger(server.maxFileSize, 'config.server.maxFileSize');
|
|
123
124
|
const maxPageSize = getPositiveInteger(server.maxPageSize, 'config.server.maxPageSize');
|
|
124
125
|
const pageSize = getPositiveInteger(server.pageSize, 'config.server.pageSize');
|
|
125
|
-
|
|
126
|
-
throw new Error('pageSize exceeds maxPageSize');
|
|
126
|
+
normalizePagination({ pageSize, maxPageSize });
|
|
127
127
|
const port = server.port;
|
|
128
128
|
if (port != null && (typeof port !== 'number' || !Number.isInteger(port) || port < 0 || port > 65_535)) {
|
|
129
129
|
throw new Error('Ключ config.server.port должен быть целым числом от 0 до 65535');
|
|
@@ -137,7 +137,12 @@ const normalizeConfig = (config, directoryPath = '.') => {
|
|
|
137
137
|
return {
|
|
138
138
|
database,
|
|
139
139
|
files,
|
|
140
|
-
openapi: {
|
|
140
|
+
openapi: {
|
|
141
|
+
enabled: openapi.enabled,
|
|
142
|
+
endpoint: openapiEndpoint,
|
|
143
|
+
path: resolveConfigPath(openapiPath, directoryPath),
|
|
144
|
+
...(info && { info: copyInput(info) }),
|
|
145
|
+
},
|
|
141
146
|
graphql: { path: resolveConfigPath(getString(graphql.path, 'config.graphql.path'), directoryPath), enabled: graphql.enabled, endpoint },
|
|
142
147
|
server: {
|
|
143
148
|
cors: cors,
|
|
@@ -153,7 +158,7 @@ const normalizeConfig = (config, directoryPath = '.') => {
|
|
|
153
158
|
/** Validates configuration and resolves relative paths. */
|
|
154
159
|
export const normalizeServerConfig = (config, directoryPath) => normalizeConfig(config, directoryPath);
|
|
155
160
|
/** Loads an ES module config and resolves paths from its directory. */
|
|
156
|
-
export async function
|
|
161
|
+
export async function readConfigModule(configPath) {
|
|
157
162
|
const resolvedConfigPath = resolve(getString(configPath, 'config', true));
|
|
158
163
|
let config;
|
|
159
164
|
try {
|
|
@@ -169,6 +174,36 @@ export async function readServerConfig(configPath) {
|
|
|
169
174
|
if (!isObject(config)) {
|
|
170
175
|
throw new Error('Конфигурация сервера должна экспортировать JSON-объект через export default');
|
|
171
176
|
}
|
|
172
|
-
return
|
|
177
|
+
return { config, directory: dirname(resolvedConfigPath), path: resolvedConfigPath };
|
|
178
|
+
}
|
|
179
|
+
const sourcePaths = new WeakMap();
|
|
180
|
+
export const configSourcePath = (config) => sourcePaths.get(config);
|
|
181
|
+
export function configure(config, directory, sourcePath) {
|
|
182
|
+
const normalized = normalizeConfig(config, directory);
|
|
183
|
+
if (sourcePath)
|
|
184
|
+
sourcePaths.set(normalized, sourcePath);
|
|
185
|
+
return normalized;
|
|
186
|
+
}
|
|
187
|
+
export function configureGeneration(source, formats, directory, sourcePath, overrides) {
|
|
188
|
+
assertKnownKeys(source, CONFIG_KEYS, 'config');
|
|
189
|
+
const database = getObject(source.database, 'config.database', true);
|
|
190
|
+
if (database.schema === undefined)
|
|
191
|
+
throw new Error('Generation requires an explicit model schema');
|
|
192
|
+
const openapi = formats.includes('openapi');
|
|
193
|
+
const server = openapi ? (getObject(source.server, 'config.server') ?? {}) : {};
|
|
194
|
+
return configure({
|
|
195
|
+
database: { data: {}, schema: database.schema },
|
|
196
|
+
openapi: openapi ? source.openapi : undefined,
|
|
197
|
+
graphql: formats.includes('graphql') ? source.graphql : undefined,
|
|
198
|
+
files: openapi && (overrides.files || source.files != null) ? { data: [] } : undefined,
|
|
199
|
+
server: openapi
|
|
200
|
+
? {
|
|
201
|
+
host: overrides.host ?? server.host,
|
|
202
|
+
port: overrides.port ?? server.port,
|
|
203
|
+
pageSize: server.pageSize,
|
|
204
|
+
maxPageSize: server.maxPageSize,
|
|
205
|
+
}
|
|
206
|
+
: {},
|
|
207
|
+
}, directory, sourcePath);
|
|
173
208
|
}
|
|
174
209
|
//# sourceMappingURL=config.js.map
|
package/dist/src/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/src/constants.d.ts
CHANGED
|
@@ -3,4 +3,4 @@ export declare const DEFAULT_MAX_FILE_SIZE: number;
|
|
|
3
3
|
export declare const DEFAULT_MAX_PAGE_SIZE = 100;
|
|
4
4
|
export declare const DEFAULT_PAGE_SIZE = 10;
|
|
5
5
|
export declare const DEFAULT_PORT = 4001;
|
|
6
|
-
export declare const VERSION = "1.0.0-alpha.
|
|
6
|
+
export declare const VERSION = "1.0.0-alpha.3";
|
package/dist/src/constants.js
CHANGED
|
@@ -3,5 +3,5 @@ export const DEFAULT_MAX_FILE_SIZE = 100 * 1024 * 1024;
|
|
|
3
3
|
export const DEFAULT_MAX_PAGE_SIZE = 100;
|
|
4
4
|
export const DEFAULT_PAGE_SIZE = 10;
|
|
5
5
|
export const DEFAULT_PORT = 4001;
|
|
6
|
-
export const VERSION = '1.0.0-alpha.
|
|
6
|
+
export const VERSION = '1.0.0-alpha.3';
|
|
7
7
|
//# sourceMappingURL=constants.js.map
|
package/dist/src/database.d.ts
CHANGED
|
@@ -16,6 +16,5 @@ export declare const readJsonObjectFile: (path: string, label: string) => Promis
|
|
|
16
16
|
export declare const readDatabaseFile: (databasePath: string, keys?: Map<string, string>) => Promise<DatabaseData>;
|
|
17
17
|
/** Creates a disk- or memory-backed database with serialized updates. */
|
|
18
18
|
export declare const createDatabaseStore: (config: DatabaseConfig, keys?: Map<string, string>) => Promise<DatabaseStore>;
|
|
19
|
-
export declare const getCollection: (database: DatabaseContainer, resource: string) => DatabaseRecord[];
|
|
20
19
|
export declare const findItemIndex: (collection: DatabaseRecord[], id: unknown) => number;
|
|
21
20
|
export declare const createId: (collection: DatabaseRecord[]) => string;
|