@kollors/deep-json-server 1.0.0-alpha.7 → 1.0.0-alpha.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/README.md +168 -109
  2. package/README.ru.md +171 -112
  3. package/dist/index.d.ts +5 -6
  4. package/dist/index.js +2 -2
  5. package/dist/index.js.map +1 -1
  6. package/dist/src/auth/contract.d.ts +6 -2
  7. package/dist/src/auth/contract.js +8 -1
  8. package/dist/src/auth/contract.js.map +1 -1
  9. package/dist/src/auth/input.d.ts +18 -0
  10. package/dist/src/auth/input.js +34 -0
  11. package/dist/src/auth/input.js.map +1 -0
  12. package/dist/src/auth/password.d.ts +4 -0
  13. package/dist/src/auth/password.js +5 -1
  14. package/dist/src/auth/password.js.map +1 -1
  15. package/dist/src/auth/routes.d.ts +1 -1
  16. package/dist/src/auth/routes.js +4 -1
  17. package/dist/src/auth/routes.js.map +1 -1
  18. package/dist/src/auth/service.d.ts +48 -9
  19. package/dist/src/auth/service.js +143 -68
  20. package/dist/src/auth/service.js.map +1 -1
  21. package/dist/src/auth/store.d.ts +26 -0
  22. package/dist/src/auth/store.js +82 -0
  23. package/dist/src/auth/store.js.map +1 -0
  24. package/dist/src/cli/index.d.ts +2 -2
  25. package/dist/src/cli/index.js +70 -84
  26. package/dist/src/cli/index.js.map +1 -1
  27. package/dist/src/core/config-values.d.ts +28 -0
  28. package/dist/src/core/config-values.js +53 -0
  29. package/dist/src/core/config-values.js.map +1 -0
  30. package/dist/src/core/constants.d.ts +1 -1
  31. package/dist/src/core/constants.js +1 -1
  32. package/dist/src/core/database.d.ts +10 -12
  33. package/dist/src/core/database.js +4 -4
  34. package/dist/src/core/database.js.map +1 -1
  35. package/dist/src/core/engine.d.ts +3 -2
  36. package/dist/src/core/engine.js +53 -44
  37. package/dist/src/core/engine.js.map +1 -1
  38. package/dist/src/core/lifecycle/mutation.d.ts +3 -3
  39. package/dist/src/core/lifecycle/mutation.js +2 -2
  40. package/dist/src/core/lifecycle/mutation.js.map +1 -1
  41. package/dist/src/core/lifecycle/options.d.ts +1 -0
  42. package/dist/src/core/lifecycle/options.js +2 -4
  43. package/dist/src/core/lifecycle/options.js.map +1 -1
  44. package/dist/src/core/model.d.ts +18 -3
  45. package/dist/src/core/model.js +17 -7
  46. package/dist/src/core/model.js.map +1 -1
  47. package/dist/src/core/mutations/write.d.ts +1 -2
  48. package/dist/src/core/mutations/write.js.map +1 -1
  49. package/dist/src/core/operations.d.ts +33 -0
  50. package/dist/src/core/operations.js +10 -0
  51. package/dist/src/core/operations.js.map +1 -0
  52. package/dist/src/core/pagination.d.ts +2 -2
  53. package/dist/src/core/pagination.js +3 -5
  54. package/dist/src/core/pagination.js.map +1 -1
  55. package/dist/src/core/paths.d.ts +2 -2
  56. package/dist/src/core/paths.js +15 -5
  57. package/dist/src/core/paths.js.map +1 -1
  58. package/dist/src/core/storage.d.ts +2 -0
  59. package/dist/src/core/storage.js +2 -0
  60. package/dist/src/core/storage.js.map +1 -0
  61. package/dist/src/files/contract.d.ts +6 -7
  62. package/dist/src/files/contract.js.map +1 -1
  63. package/dist/src/files/disk-store.js +3 -20
  64. package/dist/src/files/disk-store.js.map +1 -1
  65. package/dist/src/files/index.d.ts +1 -1
  66. package/dist/src/files/index.js +5 -2
  67. package/dist/src/files/index.js.map +1 -1
  68. package/dist/src/files/memory-store.js +16 -16
  69. package/dist/src/files/memory-store.js.map +1 -1
  70. package/dist/src/files/streams.d.ts +5 -0
  71. package/dist/src/files/streams.js +20 -0
  72. package/dist/src/files/streams.js.map +1 -0
  73. package/dist/src/graphql/entry.d.ts +11 -2
  74. package/dist/src/graphql/entry.js +12 -2
  75. package/dist/src/graphql/entry.js.map +1 -1
  76. package/dist/src/graphql/{public.d.ts → generate.d.ts} +3 -2
  77. package/dist/src/graphql/{public.js → generate.js} +4 -2
  78. package/dist/src/graphql/generate.js.map +1 -0
  79. package/dist/src/graphql/resolvers.js +1 -1
  80. package/dist/src/graphql/resolvers.js.map +1 -1
  81. package/dist/src/graphql/schema.js +6 -3
  82. package/dist/src/graphql/schema.js.map +1 -1
  83. package/dist/src/openapi/auth.d.ts +2 -2
  84. package/dist/src/openapi/auth.js +82 -15
  85. package/dist/src/openapi/auth.js.map +1 -1
  86. package/dist/src/openapi/document.js +16 -13
  87. package/dist/src/openapi/document.js.map +1 -1
  88. package/dist/src/openapi/entry.d.ts +12 -1
  89. package/dist/src/openapi/entry.js +12 -1
  90. package/dist/src/openapi/entry.js.map +1 -1
  91. package/dist/src/openapi/{public.d.ts → generate.d.ts} +9 -16
  92. package/dist/src/openapi/generate.js +41 -0
  93. package/dist/src/openapi/generate.js.map +1 -0
  94. package/dist/src/openapi/options.d.ts +18 -0
  95. package/dist/src/openapi/options.js +13 -0
  96. package/dist/src/openapi/options.js.map +1 -0
  97. package/dist/src/openapi/write.d.ts +5 -0
  98. package/dist/src/openapi/write.js +12 -0
  99. package/dist/src/openapi/write.js.map +1 -0
  100. package/dist/src/rest/routes.js +6 -9
  101. package/dist/src/rest/routes.js.map +1 -1
  102. package/dist/src/server/config.d.ts +29 -34
  103. package/dist/src/server/config.js +83 -211
  104. package/dist/src/server/config.js.map +1 -1
  105. package/dist/src/server/create.d.ts +3 -5
  106. package/dist/src/server/create.js +35 -29
  107. package/dist/src/server/create.js.map +1 -1
  108. package/dist/src/server/features.d.ts +0 -11
  109. package/dist/src/server/features.js +0 -20
  110. package/dist/src/server/features.js.map +1 -1
  111. package/dist/src/server/model.d.ts +6 -0
  112. package/dist/src/server/model.js +14 -0
  113. package/dist/src/server/model.js.map +1 -0
  114. package/dist/src/server/public.d.ts +1 -2
  115. package/package.json +1 -1
  116. package/dist/src/graphql/lazy.d.ts +0 -10
  117. package/dist/src/graphql/lazy.js +0 -13
  118. package/dist/src/graphql/lazy.js.map +0 -1
  119. package/dist/src/graphql/public.js.map +0 -1
  120. package/dist/src/openapi/index.d.ts +0 -13
  121. package/dist/src/openapi/index.js +0 -37
  122. package/dist/src/openapi/index.js.map +0 -1
  123. package/dist/src/openapi/lazy.d.ts +0 -11
  124. package/dist/src/openapi/lazy.js +0 -13
  125. package/dist/src/openapi/lazy.js.map +0 -1
  126. package/dist/src/openapi/public.js +0 -26
  127. package/dist/src/openapi/public.js.map +0 -1
@@ -1,31 +1,32 @@
1
1
  import { AUTH_PATHS } from '../auth/contract.js';
2
- import { DEFAULT_HOST, DEFAULT_MAX_FILE_SIZE, DEFAULT_PORT } from '../core/constants.js';
3
2
  import { DomainError } from '../core/errors.js';
4
3
  import { domainStatus } from '../core/http-errors.js';
5
- import { normalizePagination } from '../core/pagination.js';
6
4
  import { inputPaths } from '../core/paths.js';
7
5
  import { errorMessage, isObject } from '../core/utils.js';
8
6
  import { configSourcePath, normalizeServerConfig } from './config.js';
9
- import { resolveFeatures, validateEndpoints } from './features.js';
7
+ import { validateEndpoints } from './features.js';
8
+ import { configuredModel } from './model.js';
10
9
  const CORS_HEADERS = {
11
10
  'Access-Control-Allow-Headers': 'Content-Type',
12
11
  'Access-Control-Allow-Methods': 'DELETE, GET, OPTIONS, PATCH, POST, PUT',
13
12
  'Access-Control-Allow-Origin': '*',
14
13
  };
15
14
  /** Проверяет настройки и создаёт интерфейс запуска и генерации схем; сетевой порт ещё не открывает.
16
- * @example await createServer({ database: { data: { notes: [] } } }) → объект с fastify(), openapi(), graphql().
15
+ * @example await createServer({ storage: 'memory', database: { source: { notes: [] } } }) → объект с fastify(), openapi(), graphql().
17
16
  */
18
- export async function createServer(config, features = {}) {
19
- return createConfiguredServer(normalizeServerConfig(config), features);
17
+ export async function createServer(config) {
18
+ if (arguments.length !== 1)
19
+ throw new Error('createServer accepts only a configuration object');
20
+ return createConfiguredServer(normalizeServerConfig(config));
20
21
  }
21
22
  /** Собирает сервер из нормализованных настроек; хранилища открываются при инициализации HTTP-экземпляра.
22
23
  * @example Нормализованные настройки → Promise<ServerFacade>; listen() затем открывает сетевой порт.
23
24
  */
24
- export async function createConfiguredServer(normalized, features = {}) {
25
- const enabled = resolveFeatures(normalized, features);
26
- const { loadModel, inferModel } = await import('../core/model.js');
27
- const recordSettings = { timestamps: normalized.database.timestamps, softDelete: normalized.database.softDelete, auth: enabled.auth };
28
- const explicitModel = await loadModel(normalized.database.schema, recordSettings);
25
+ export async function createConfiguredServer(normalized) {
26
+ const enabled = { auth: normalized.auth !== undefined, files: normalized.files !== undefined };
27
+ const { inferModel } = await import('../core/model.js');
28
+ const recordSettings = { auth: enabled.auth };
29
+ const explicitModel = await configuredModel(normalized);
29
30
  const { default: Fastify } = await import('fastify');
30
31
  const corsHeaders = { ...CORS_HEADERS };
31
32
  if (enabled.files) {
@@ -34,24 +35,27 @@ export async function createConfiguredServer(normalized, features = {}) {
34
35
  }
35
36
  if (enabled.auth)
36
37
  corsHeaders['Access-Control-Allow-Headers'] += ', Authorization';
37
- const { cors = true, logger = true, maxFileSize = DEFAULT_MAX_FILE_SIZE } = normalized.server;
38
- const { pageSize, maxPageSize } = normalizePagination(normalized.server);
39
- const openapi = async () => (await import('../openapi/public.js')).openapiFromModel(explicitModel, {
40
- files: enabled.files,
41
- ...recordSettings,
42
- pageSize,
43
- maxPageSize,
44
- info: normalized.openapi.info,
45
- host: normalized.server.host,
46
- port: normalized.server.port,
47
- });
38
+ const { cors, logger, maxFileSize, pageSize, maxPageSize } = normalized.server;
39
+ const openapi = async () => {
40
+ if (!normalized.openapi)
41
+ throw new Error('OpenAPI is not configured');
42
+ return (await import('../openapi/generate.js')).openapiFromModel(explicitModel, {
43
+ files: enabled.files,
44
+ ...recordSettings,
45
+ pageSize,
46
+ maxPageSize,
47
+ info: normalized.openapi.info,
48
+ host: normalized.server.host,
49
+ port: normalized.server.port,
50
+ });
51
+ };
48
52
  let instance;
49
53
  const getFastify = () => {
50
54
  if (instance)
51
55
  return instance;
52
56
  const server = Fastify({ ajv: { customOptions: { coerceTypes: false, removeAdditional: false } }, logger });
53
57
  const originalListen = server.listen.bind(server);
54
- const defaults = { host: normalized.server.host ?? DEFAULT_HOST, port: normalized.server.port ?? DEFAULT_PORT };
58
+ const defaults = { host: normalized.server.host, port: normalized.server.port };
55
59
  const listen = (optionsOrCallback, callback) => {
56
60
  if (typeof optionsOrCallback === 'function') {
57
61
  originalListen(defaults, optionsOrCallback);
@@ -86,9 +90,9 @@ export async function createConfiguredServer(normalized, features = {}) {
86
90
  const model = explicitModel ?? inferModel(store.database.data, recordSettings);
87
91
  const engine = new Engine(store, model, pageSize, maxPageSize);
88
92
  engine.validateData(store.database.data);
89
- const graphqlPath = normalized.graphql.endpoint ?? '/graphql';
90
- const openapiPath = normalized.openapi.endpoint ?? '/openapi.json';
91
- validateEndpoints(model.entities.map((entity) => entity.collection), [...(enabled.graphql ? [graphqlPath] : []), ...(enabled.openapi ? [openapiPath] : []), ...(enabled.auth ? Object.values(AUTH_PATHS) : [])]);
93
+ const graphqlPath = normalized.graphql?.endpoint;
94
+ const openapiPath = normalized.openapi?.endpoint;
95
+ validateEndpoints(model.entities.map((entity) => entity.collection), [...(graphqlPath ? [graphqlPath] : []), ...(openapiPath ? [openapiPath] : []), ...(enabled.auth ? Object.values(AUTH_PATHS) : [])]);
92
96
  const auth = enabled.auth && normalized.auth ? await (await import('../auth/service.js')).createAuthService(normalized.auth) : undefined;
93
97
  if (auth) {
94
98
  app.addHook('onClose', async () => auth.close());
@@ -97,11 +101,11 @@ export async function createConfiguredServer(normalized, features = {}) {
97
101
  }
98
102
  const authenticate = auth ? (header) => auth.me(header) : undefined;
99
103
  registerRestRoutes(app, engine, authenticate);
100
- if (enabled.graphql) {
104
+ if (graphqlPath) {
101
105
  const [{ registerGraphqlRoutes }, { buildGraphql }] = await Promise.all([import('../graphql/routes.js'), import('../graphql/schema.js')]);
102
106
  registerGraphqlRoutes(app, buildGraphql(model), engine, graphqlPath, authenticate);
103
107
  }
104
- if (enabled.openapi) {
108
+ if (openapiPath) {
105
109
  const document = await openapi();
106
110
  document.servers = [{ url: '/' }];
107
111
  app.get(openapiPath, async () => document);
@@ -120,7 +124,9 @@ export async function createConfiguredServer(normalized, features = {}) {
120
124
  fastify: getFastify,
121
125
  openapi,
122
126
  graphql: async () => {
123
- return (await import('../graphql/public.js')).graphqlFromModel(explicitModel);
127
+ if (!normalized.graphql)
128
+ throw new Error('GraphQL is not configured');
129
+ return (await import('../graphql/generate.js')).graphqlFromModel(explicitModel);
124
130
  },
125
131
  };
126
132
  }
@@ -1 +1 @@
1
- {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/server/create.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/server/create.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE1D,OAAO,EAAE,gBAAgB,EAA0D,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAC9H,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAQ7C,MAAM,YAAY,GAAG;IACnB,8BAA8B,EAAE,cAAc;IAC9C,8BAA8B,EAAE,wCAAwC;IACxE,6BAA6B,EAAE,GAAG;CACnC,CAAC;AACF;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAA4B;IAC7D,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IAChG,OAAO,sBAAsB,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC;AAC/D,CAAC;AACD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,UAAkC;IAC7E,MAAM,OAAO,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,KAAK,SAAS,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;IAC/F,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;IACxD,MAAM,cAAc,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;IAC9C,MAAM,aAAa,GAAG,MAAM,eAAe,CAAC,UAAU,CAAC,CAAC;IACxD,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;IACrD,MAAM,WAAW,GAAG,EAAE,GAAG,YAAY,EAAE,CAAC;IACxC,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;QAC1D,WAAW,CAAC,8BAA8B,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpI,CAAC;IACD,IAAI,OAAO,CAAC,IAAI;QAAE,WAAW,CAAC,8BAA8B,CAAC,IAAI,iBAAiB,CAAC;IACnF,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC;IAC/E,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE;QACzB,IAAI,CAAC,UAAU,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QACtE,OAAO,CAAC,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC,CAAC,gBAAgB,CAAC,aAAa,EAAE;YAC9E,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,GAAG,cAAc;YACjB,QAAQ;YACR,WAAW;YACX,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,IAAI;YAC7B,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI;YAC5B,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI;SAC7B,CAAC,CAAC;IACL,CAAC,CAAC;IACF,IAAI,QAAqC,CAAC;IAC1C,MAAM,UAAU,GAAG,GAAoB,EAAE;QACvC,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAC;QAC9B,MAAM,MAAM,GAAG,OAAO,CAAC,EAAE,GAAG,EAAE,EAAE,aAAa,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QAC5G,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClD,MAAM,QAAQ,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAChF,MAAM,MAAM,GAAG,CAAC,iBAAyD,EAAE,QAAyB,EAA+B,EAAE;YACnI,IAAI,OAAO,iBAAiB,KAAK,UAAU,EAAE,CAAC;gBAC5C,cAAc,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;gBAC5C,OAAO;YACT,CAAC;YACD,IAAI,QAAQ,EAAE,CAAC;gBACb,cAAc,CAAC,EAAE,GAAG,QAAQ,EAAE,GAAG,iBAAiB,EAAE,EAAE,QAAQ,CAAC,CAAC;gBAChE,OAAO;YACT,CAAC;YACD,OAAO,cAAc,CAAC,EAAE,GAAG,QAAQ,EAAE,GAAG,iBAAiB,EAAE,CAAC,CAAC;QAC/D,CAAC,CAAC;QACF,MAAM,CAAC,MAAM,GAAG,MAAmC,CAAC;QACpD,MAAM,CAAC,eAAe,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;YAC/C,MAAM,SAAS,GAAG,KAAK,YAAY,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;YAC3H,MAAM,MAAM,GAAG,OAAO,SAAS,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,SAAS,IAAI,GAAG,IAAI,SAAS,IAAI,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC;YACtI,IAAI,MAAM,KAAK,GAAG;gBAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC7C,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAChH,CAAC,CAAC,CAAC;QACH,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE;gBACpD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;oBAAE,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACnF,CAAC,CAAC,CAAC;YACH,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YACvE,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC1E,CAAC;QACD,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YAC5B,MAAM,CAAC,EAAE,mBAAmB,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,kBAAkB,EAAE,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;YACnL,MAAM,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC/G,MAAM,KAAK,GAAG,MAAM,mBAAmB,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YACnE,MAAM,KAAK,GAAG,aAAa,IAAI,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;YAC/E,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;YAC/D,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACzC,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC;YACjD,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC;YACjD,iBAAiB,CACf,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,EACjD,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CACnI,CAAC;YACF,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,iBAAiB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACzI,IAAI,IAAI,EAAE,CAAC;gBACT,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;gBACjD,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;gBACjE,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAChC,CAAC;YACD,MAAM,YAAY,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,MAAe,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC7E,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;YAC9C,IAAI,WAAW,EAAE,CAAC;gBAChB,MAAM,CAAC,EAAE,qBAAqB,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;gBAC1I,qBAAqB,CAAC,GAAG,EAAE,YAAY,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;YACrF,CAAC;YACD,IAAI,WAAW,EAAE,CAAC;gBAChB,MAAM,QAAQ,GAAG,MAAM,OAAO,EAAE,CAAC;gBACjC,QAAQ,CAAC,OAAO,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;gBAClC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC;YAC7C,CAAC;YACD,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;YAC/B,IAAI,OAAO,CAAC,KAAK,IAAI,KAAK,EAAE,CAAC;gBAC3B,MAAM,EAAE,eAAe,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;gBAClF,MAAM,cAAc,GAAG,UAAU,CAAC,EAAE,QAAQ,EAAE,UAAU,CAAC,QAAQ,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC;gBAC/H,kBAAkB,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,cAAc,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;YACnG,CAAC;QACH,CAAC,CAAC,CAAC;QACH,QAAQ,GAAG,MAAM,CAAC;QAClB,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;IACF,OAAO;QACL,OAAO,EAAE,UAAU;QACnB,OAAO;QACP,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,IAAI,CAAC,UAAU,CAAC,OAAO;gBAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;YACtE,OAAO,CAAC,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;QAClF,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -1,14 +1,3 @@
1
- import type { NormalizedServerConfig } from './config.js';
2
- export interface ServerFeatures {
3
- auth?: boolean;
4
- files?: boolean;
5
- graphql?: boolean;
6
- openapi?: boolean;
7
- }
8
- /** Вычисляет включённые модули с учётом явных переопределений и проверяет обязательные настройки.
9
- * @example Пустые секции и переопределение { graphql: true } → graphql: true, остальные флаги false.
10
- */
11
- export declare function resolveFeatures(config: NormalizedServerConfig, features?: ServerFeatures): Required<ServerFeatures>;
12
1
  /** Проверяет, что пути не повторяются и не перекрывают коллекции или файловые маршруты.
13
2
  * @example validateEndpoints(['users'], ['/users/1']) → ошибка; ['users'], ['/api'] → undefined.
14
3
  */
@@ -1,23 +1,3 @@
1
- import { isObject } from '../core/utils.js';
2
- /** Вычисляет включённые модули с учётом явных переопределений и проверяет обязательные настройки.
3
- * @example Пустые секции и переопределение { graphql: true } → graphql: true, остальные флаги false.
4
- */
5
- export function resolveFeatures(config, features = {}) {
6
- if (!isObject(features) || Object.entries(features).some(([key, value]) => !['files', 'graphql', 'openapi', 'auth'].includes(key) || typeof value !== 'boolean'))
7
- throw new Error('features supports boolean files, graphql, openapi and auth keys');
8
- const overrides = features;
9
- const resolved = {
10
- auth: overrides.auth ?? config.auth != null,
11
- files: overrides.files ?? config.files != null,
12
- graphql: overrides.graphql ?? config.graphql.enabled ?? false,
13
- openapi: overrides.openapi ?? config.openapi.enabled ?? false,
14
- };
15
- if (resolved.auth && !config.auth)
16
- throw new Error('Укажите config.auth.users для включения auth');
17
- if (resolved.files && !config.files)
18
- throw new Error('Для файловых маршрутов укажите секцию config.files');
19
- return resolved;
20
- }
21
1
  /** Проверяет, что пути не повторяются и не перекрывают коллекции или файловые маршруты.
22
2
  * @example validateEndpoints(['users'], ['/users/1']) → ошибка; ['users'], ['/api'] → undefined.
23
3
  */
@@ -1 +1 @@
1
- {"version":3,"file":"features.js","sourceRoot":"","sources":["../../../src/server/features.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAQ5C;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,MAA8B,EAAE,QAAQ,GAAmB,EAAE;IAC3F,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,OAAO,KAAK,KAAK,SAAS,CAAC;QAC9J,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;IACrF,MAAM,SAAS,GAAmB,QAAQ,CAAC;IAC3C,MAAM,QAAQ,GAAG;QACf,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,IAAI,IAAI;QAC3C,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,IAAI,IAAI;QAC9C,OAAO,EAAE,SAAS,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,IAAI,KAAK;QAC7D,OAAO,EAAE,SAAS,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,IAAI,KAAK;KAC9D,CAAC;IACF,IAAI,QAAQ,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IACnG,IAAI,QAAQ,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IAC3G,OAAO,QAAQ,CAAC;AAClB,CAAC;AACD;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,WAAqB,EAAE,SAAmB;IAC1E,IAAI,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC5F,KAAK,MAAM,QAAQ,IAAI,SAAS;QAC9B,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,QAAQ,KAAK,IAAI,UAAU,EAAE,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,GAAG,CAAC,CAAC,IAAI,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC;YAC9I,MAAM,IAAI,KAAK,CAAC,iDAAiD,QAAQ,EAAE,CAAC,CAAC;AACnF,CAAC"}
1
+ {"version":3,"file":"features.js","sourceRoot":"","sources":["../../../src/server/features.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,WAAqB,EAAE,SAAmB;IAC1E,IAAI,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC5F,KAAK,MAAM,QAAQ,IAAI,SAAS;QAC9B,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,QAAQ,KAAK,IAAI,UAAU,EAAE,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,GAAG,CAAC,CAAC,IAAI,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC;YAC9I,MAAM,IAAI,KAAK,CAAC,iDAAiD,QAAQ,EAAE,CAAC,CAAC;AACnF,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { Model } from '../core/model.js';
2
+ import type { NormalizedServerConfig } from './config.js';
3
+ /** Загружает схему один раз для заданного объекта настроек; база и учётные записи не читаются.
4
+ * @example Повторные вызовы с одним config → тот же Promise<Model | undefined>.
5
+ */
6
+ export declare function configuredModel(config: NormalizedServerConfig): Promise<Model | undefined>;
@@ -0,0 +1,14 @@
1
+ const models = new WeakMap();
2
+ /** Загружает схему один раз для заданного объекта настроек; база и учётные записи не читаются.
3
+ * @example Повторные вызовы с одним config → тот же Promise<Model | undefined>.
4
+ */
5
+ export function configuredModel(config) {
6
+ let model = models.get(config);
7
+ if (!model) {
8
+ const api = [...(config.openapi ? ['openapi'] : []), ...(config.graphql ? ['graphql'] : [])];
9
+ model = import('../core/model.js').then(({ loadModel }) => loadModel(config.database.schema, { auth: config.auth !== undefined, api }));
10
+ models.set(config, model);
11
+ }
12
+ return model;
13
+ }
14
+ //# sourceMappingURL=model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../../../src/server/model.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,GAAG,IAAI,OAAO,EAAsD,CAAC;AACjF;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,MAA8B;IAC5D,IAAI,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC/B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,GAAG,GAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAkB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAkB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5H,KAAK,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QACxI,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC5B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -1,3 +1,2 @@
1
- export type { AuthConfig, DatabaseConfig, DeepJsonServerConfig, FilesConfig, GraphqlConfig, MemoryFile, OpenapiConfig, ServerConfig } from './config.js';
1
+ export type { AuthConfig, DatabaseConfig, DeepJsonServerConfig, FilesConfig, GraphqlConfig, MemoryFile, OpenapiConfig, ServerConfig, Storage } from './config.js';
2
2
  export { createServer, type ServerFacade } from './create.js';
3
- export type { ServerFeatures } from './features.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kollors/deep-json-server",
3
- "version": "1.0.0-alpha.7",
3
+ "version": "1.0.0-alpha.9",
4
4
  "description": "JSON mock server with schema-driven REST, GraphQL, nested queries and OpenAPI generation",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,10 +0,0 @@
1
- import type { ModelSchema } from '../core/model.js';
2
- import type { GraphqlOptions } from './public.js';
3
- /** Загружает генератор при первом обращении и передаёт ему описание и параметры.
4
- * @example Описание и параметры → Promise со схемой; при импорте этой обёртки генератор ещё не загружается.
5
- */
6
- export declare function generateGraphql(schema: ModelSchema | string, options?: GraphqlOptions): Promise<string>;
7
- /** Загружает модуль записи по требованию и сохраняет схему в указанный файл.
8
- * @example Схема и путь → Promise<void>; файл появляется после успешного завершения.
9
- */
10
- export declare function writeGraphql(sdl: string, path: string): Promise<void>;
@@ -1,13 +0,0 @@
1
- /** Загружает генератор при первом обращении и передаёт ему описание и параметры.
2
- * @example Описание и параметры → Promise со схемой; при импорте этой обёртки генератор ещё не загружается.
3
- */
4
- export async function generateGraphql(schema, options) {
5
- return (await import('./public.js')).generateGraphql(schema, options);
6
- }
7
- /** Загружает модуль записи по требованию и сохраняет схему в указанный файл.
8
- * @example Схема и путь → Promise<void>; файл появляется после успешного завершения.
9
- */
10
- export async function writeGraphql(sdl, path) {
11
- return (await import('./write.js')).writeGraphql(sdl, path);
12
- }
13
- //# sourceMappingURL=lazy.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"lazy.js","sourceRoot":"","sources":["../../../src/graphql/lazy.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,MAA4B,EAAE,OAAwB;IAC1F,OAAO,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACxE,CAAC;AACD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,GAAW,EAAE,IAAY;IAC1D,OAAO,CAAC,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAC9D,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"public.js","sourceRoot":"","sources":["../../../src/graphql/public.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAgC,MAAM,kBAAkB,CAAC;AACtF,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAwB;IACvD,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAC5B,OAAO,WAAW,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,CAAC;AACD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,MAA4B,EAAE,OAAO,GAAmB,EAAE;IAC9F,OAAO,gBAAgB,CAAC,MAAM,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAC5D,CAAC"}
@@ -1,13 +0,0 @@
1
- import type { OpenapiDocument } from './types.js';
2
- /** Копирует документ и задаёт адрес сервера, не меняя исходный объект.
3
- * @example При host = 'localhost', port = 80 поле servers → [{ url: 'http://localhost:80' }].
4
- */
5
- export declare const createOpenapi: ({ document: sourceDocument, host, port }: {
6
- document: OpenapiDocument;
7
- host?: string;
8
- port?: number;
9
- }) => OpenapiDocument;
10
- /** Сохраняет документ в YAML, создавая родительские каталоги.
11
- * @example writeOpenapi(document, './out/api.yaml') → Promise<void>; результат записан в файл.
12
- */
13
- export declare const writeOpenapi: (document: OpenapiDocument, outputPath: string) => Promise<void>;
@@ -1,37 +0,0 @@
1
- import { mkdir, writeFile } from 'node:fs/promises';
2
- import { dirname, resolve } from 'node:path';
3
- import { stringify } from 'yaml';
4
- import { DEFAULT_HOST, DEFAULT_PORT } from '../core/constants.js';
5
- import { isPortNumber } from '../core/utils.js';
6
- /** Строит HTTP-адрес, оборачивая IPv6 в квадратные скобки; нулевой порт даёт относительный адрес.
7
- * @example getServerUrl('::1', 80) → 'http://[::1]:80'; getServerUrl('localhost', 0) → '/'.
8
- */
9
- const getServerUrl = (host, port) => {
10
- if (typeof host !== 'string' || host.trim() === '') {
11
- throw new Error('Адрес сервера не должен быть пустым');
12
- }
13
- if (!isPortNumber(port)) {
14
- throw new Error('Порт должен быть целым числом от 0 до 65535');
15
- }
16
- if (port === 0)
17
- return '/';
18
- const serverHost = host.includes(':') && !host.startsWith('[') ? `[${host}]` : host;
19
- return `http://${serverHost}:${port}`;
20
- };
21
- /** Копирует документ и задаёт адрес сервера, не меняя исходный объект.
22
- * @example При host = 'localhost', port = 80 поле servers → [{ url: 'http://localhost:80' }].
23
- */
24
- export const createOpenapi = ({ document: sourceDocument, host = DEFAULT_HOST, port = DEFAULT_PORT }) => {
25
- const document = structuredClone(sourceDocument);
26
- document.servers = [{ url: getServerUrl(host, port) }];
27
- return document;
28
- };
29
- /** Сохраняет документ в YAML, создавая родительские каталоги.
30
- * @example writeOpenapi(document, './out/api.yaml') → Promise<void>; результат записан в файл.
31
- */
32
- export const writeOpenapi = async (document, outputPath) => {
33
- const resolvedOutputPath = resolve(outputPath);
34
- await mkdir(dirname(resolvedOutputPath), { recursive: true });
35
- await writeFile(resolvedOutputPath, stringify(document, { aliasDuplicateObjects: false, lineWidth: 0 }), 'utf8');
36
- };
37
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/openapi/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGhD;;GAEG;AACH,MAAM,YAAY,GAAG,CAAC,IAAY,EAAE,IAAY,EAAU,EAAE;IAC1D,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACnD,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACzD,CAAC;IAED,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACjE,CAAC;IAED,IAAI,IAAI,KAAK,CAAC;QAAE,OAAO,GAAG,CAAC;IAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;IAEpF,OAAO,UAAU,UAAU,IAAI,IAAI,EAAE,CAAC;AACxC,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,IAAI,GAAG,YAAY,EAAE,IAAI,GAAG,YAAY,EAA+D,EAAmB,EAAE;IACpL,MAAM,QAAQ,GAAG,eAAe,CAAC,cAAc,CAAC,CAAC;IAEjD,QAAQ,CAAC,OAAO,GAAG,CAAC,EAAE,GAAG,EAAE,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;IAEvD,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAAE,QAAyB,EAAE,UAAkB,EAAiB,EAAE;IACjG,MAAM,kBAAkB,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAE/C,MAAM,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9D,MAAM,SAAS,CAAC,kBAAkB,EAAE,SAAS,CAAC,QAAQ,EAAE,EAAE,qBAAqB,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;AACnH,CAAC,CAAC"}
@@ -1,11 +0,0 @@
1
- import type { ModelSchema } from '../core/model.js';
2
- import type { OpenapiOptions } from './public.js';
3
- import type { OpenapiDocument } from './types.js';
4
- /** Загружает генератор при первом обращении и передаёт ему описание и параметры.
5
- * @example Описание и параметры → Promise со схемой; при импорте этой обёртки генератор ещё не загружается.
6
- */
7
- export declare function generateOpenapi(schema: ModelSchema | string, options?: OpenapiOptions): Promise<OpenapiDocument>;
8
- /** Загружает модуль записи по требованию и сохраняет схему в указанный файл.
9
- * @example Схема и путь → Promise<void>; файл появляется после успешного завершения.
10
- */
11
- export declare function writeOpenapi(document: OpenapiDocument, path: string): Promise<void>;
@@ -1,13 +0,0 @@
1
- /** Загружает генератор при первом обращении и передаёт ему описание и параметры.
2
- * @example Описание и параметры → Promise со схемой; при импорте этой обёртки генератор ещё не загружается.
3
- */
4
- export async function generateOpenapi(schema, options) {
5
- return (await import('./public.js')).generateOpenapi(schema, options);
6
- }
7
- /** Загружает модуль записи по требованию и сохраняет схему в указанный файл.
8
- * @example Схема и путь → Promise<void>; файл появляется после успешного завершения.
9
- */
10
- export async function writeOpenapi(document, path) {
11
- return (await import('./index.js')).writeOpenapi(document, path);
12
- }
13
- //# sourceMappingURL=lazy.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"lazy.js","sourceRoot":"","sources":["../../../src/openapi/lazy.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,MAA4B,EAAE,OAAwB;IAC1F,OAAO,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACxE,CAAC;AACD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,QAAyB,EAAE,IAAY;IACxE,OAAO,CAAC,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AACnE,CAAC"}
@@ -1,26 +0,0 @@
1
- import { assertApi, loadModel } from '../core/model.js';
2
- import { normalizePagination } from '../core/pagination.js';
3
- import { buildOpenapiDocument } from './document.js';
4
- import { createOpenapi } from './index.js';
5
- /** Проверяет параметры экспорта и строит документ из подготовленной модели.
6
- * @example Модель с коллекцией notes → документ с paths['/notes'].
7
- */
8
- export function openapiFromModel(model, options = {}) {
9
- assertApi(model, 'openapi');
10
- if (options.auth !== undefined && typeof options.auth !== 'boolean')
11
- throw new Error('auth must be boolean');
12
- if (options.files !== undefined && typeof options.files !== 'boolean')
13
- throw new Error('files must be boolean');
14
- if (options.info && (typeof options.info.title !== 'string' || typeof options.info.version !== 'string' || (options.info.description !== undefined && typeof options.info.description !== 'string')))
15
- throw new Error('Invalid OpenAPI info');
16
- const pagination = normalizePagination(options);
17
- return createOpenapi({ document: buildOpenapiDocument({ model, auth: options.auth, files: options.files, info: options.info, ...pagination }), host: options.host, port: options.port });
18
- }
19
- /** Загружает описание из объекта или файла и возвращает документ спецификации.
20
- * @example Корректное описание → Promise<OpenapiDocument> с openapi: '3.0.3'.
21
- */
22
- export async function generateOpenapi(schema, options = {}) {
23
- return openapiFromModel(await loadModel(schema, options), options);
24
- }
25
- export { writeOpenapi } from './index.js';
26
- //# sourceMappingURL=public.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"public.js","sourceRoot":"","sources":["../../../src/openapi/public.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAgC,MAAM,kBAAkB,CAAC;AACtF,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAa3C;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAwB,EAAE,OAAO,GAAmB,EAAE;IACrF,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAC5B,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAC7G,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAChH,IAAI,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,IAAI,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,KAAK,SAAS,IAAI,OAAO,OAAO,CAAC,IAAI,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC;QAClM,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAC1C,MAAM,UAAU,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAChD,OAAO,aAAa,CAAC,EAAE,QAAQ,EAAE,oBAAoB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;AAC3L,CAAC;AACD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,MAA4B,EAAE,OAAO,GAAmB,EAAE;IAC9F,OAAO,gBAAgB,CAAC,MAAM,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;AACrE,CAAC;AACD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC"}