@kollors/deep-json-server 1.0.0-alpha.1 → 1.0.0-alpha.10

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 (223) hide show
  1. package/README.md +522 -179
  2. package/README.ru.md +525 -180
  3. package/dist/bin/deep-json-server.js +1 -1
  4. package/dist/bin/deep-json-server.js.map +1 -1
  5. package/dist/index.d.ts +13 -6
  6. package/dist/index.js +4 -1
  7. package/dist/index.js.map +1 -1
  8. package/dist/src/auth/contract.d.ts +31 -0
  9. package/dist/src/auth/contract.js +12 -0
  10. package/dist/src/auth/contract.js.map +1 -0
  11. package/dist/src/auth/input.d.ts +18 -0
  12. package/dist/src/auth/input.js +34 -0
  13. package/dist/src/auth/input.js.map +1 -0
  14. package/dist/src/auth/password.d.ts +17 -0
  15. package/dist/src/auth/password.js +41 -0
  16. package/dist/src/auth/password.js.map +1 -0
  17. package/dist/src/auth/public.d.ts +3 -0
  18. package/dist/src/auth/public.js +5 -0
  19. package/dist/src/auth/public.js.map +1 -0
  20. package/dist/src/auth/routes.d.ts +6 -0
  21. package/dist/src/auth/routes.js +18 -0
  22. package/dist/src/auth/routes.js.map +1 -0
  23. package/dist/src/auth/service.d.ts +78 -0
  24. package/dist/src/auth/service.js +218 -0
  25. package/dist/src/auth/service.js.map +1 -0
  26. package/dist/src/auth/store.d.ts +26 -0
  27. package/dist/src/auth/store.js +82 -0
  28. package/dist/src/auth/store.js.map +1 -0
  29. package/dist/src/cli/index.d.ts +7 -0
  30. package/dist/src/cli/index.js +122 -0
  31. package/dist/src/cli/index.js.map +1 -0
  32. package/dist/src/core/config-values.d.ts +28 -0
  33. package/dist/src/core/config-values.js +53 -0
  34. package/dist/src/core/config-values.js.map +1 -0
  35. package/dist/src/{constants.d.ts → core/constants.d.ts} +1 -0
  36. package/dist/src/{constants.js → core/constants.js} +1 -0
  37. package/dist/src/core/constants.js.map +1 -0
  38. package/dist/src/core/database.d.ts +48 -0
  39. package/dist/src/{database.js → core/database.js} +36 -14
  40. package/dist/src/core/database.js.map +1 -0
  41. package/dist/src/core/engine.d.ts +65 -0
  42. package/dist/src/core/engine.js +312 -0
  43. package/dist/src/core/engine.js.map +1 -0
  44. package/dist/src/core/errors.d.ts +9 -0
  45. package/dist/src/core/errors.js +12 -0
  46. package/dist/src/core/errors.js.map +1 -0
  47. package/dist/src/core/http-errors.d.ts +9 -0
  48. package/dist/src/core/http-errors.js +15 -0
  49. package/dist/src/core/http-errors.js.map +1 -0
  50. package/dist/src/core/lifecycle/mutation.d.ts +49 -0
  51. package/dist/src/core/lifecycle/mutation.js +170 -0
  52. package/dist/src/core/lifecycle/mutation.js.map +1 -0
  53. package/dist/src/core/lifecycle/options.d.ts +21 -0
  54. package/dist/src/core/lifecycle/options.js +19 -0
  55. package/dist/src/core/lifecycle/options.js.map +1 -0
  56. package/dist/src/core/model.d.ts +145 -0
  57. package/dist/src/{model.js → core/model.js} +224 -33
  58. package/dist/src/core/model.js.map +1 -0
  59. package/dist/src/core/mutations/write.d.ts +26 -0
  60. package/dist/src/core/mutations/write.js +284 -0
  61. package/dist/src/core/mutations/write.js.map +1 -0
  62. package/dist/src/core/operations.d.ts +33 -0
  63. package/dist/src/core/operations.js +10 -0
  64. package/dist/src/core/operations.js.map +1 -0
  65. package/dist/src/core/pagination.d.ts +10 -0
  66. package/dist/src/core/pagination.js +13 -0
  67. package/dist/src/core/pagination.js.map +1 -0
  68. package/dist/src/core/paths.d.ts +16 -0
  69. package/dist/src/core/paths.js +64 -0
  70. package/dist/src/core/paths.js.map +1 -0
  71. package/dist/src/core/query/contract.d.ts +6 -0
  72. package/dist/src/core/query/contract.js +22 -0
  73. package/dist/src/core/query/contract.js.map +1 -0
  74. package/dist/src/core/query/filter.d.ts +6 -0
  75. package/dist/src/core/query/filter.js +100 -0
  76. package/dist/src/core/query/filter.js.map +1 -0
  77. package/dist/src/core/query/options.d.ts +30 -0
  78. package/dist/src/core/query/options.js +44 -0
  79. package/dist/src/core/query/options.js.map +1 -0
  80. package/dist/src/core/records.d.ts +46 -0
  81. package/dist/src/core/records.js +69 -0
  82. package/dist/src/core/records.js.map +1 -0
  83. package/dist/src/core/relation-metadata.d.ts +15 -0
  84. package/dist/src/{relation-metadata.js → core/relation-metadata.js} +7 -2
  85. package/dist/src/core/relation-metadata.js.map +1 -0
  86. package/dist/src/core/storage.d.ts +2 -0
  87. package/dist/src/core/storage.js +2 -0
  88. package/dist/src/core/storage.js.map +1 -0
  89. package/dist/src/core/types.d.ts +10 -0
  90. package/dist/src/{types.js.map → core/types.js.map} +1 -1
  91. package/dist/src/core/utils.d.ts +56 -0
  92. package/dist/src/core/utils.js +102 -0
  93. package/dist/src/core/utils.js.map +1 -0
  94. package/dist/src/files/contract.d.ts +32 -30
  95. package/dist/src/files/contract.js +29 -48
  96. package/dist/src/files/contract.js.map +1 -1
  97. package/dist/src/files/disk-store.d.ts +5 -1
  98. package/dist/src/files/disk-store.js +49 -32
  99. package/dist/src/files/disk-store.js.map +1 -1
  100. package/dist/src/files/http.d.ts +36 -0
  101. package/dist/src/files/http.js +53 -0
  102. package/dist/src/files/http.js.map +1 -0
  103. package/dist/src/files/index.d.ts +5 -4
  104. package/dist/src/files/index.js +7 -2
  105. package/dist/src/files/index.js.map +1 -1
  106. package/dist/src/files/memory-store.d.ts +4 -1
  107. package/dist/src/files/memory-store.js +29 -22
  108. package/dist/src/files/memory-store.js.map +1 -1
  109. package/dist/src/files/routes.d.ts +3 -0
  110. package/dist/src/files/routes.js +27 -2
  111. package/dist/src/files/routes.js.map +1 -1
  112. package/dist/src/files/streams.d.ts +5 -0
  113. package/dist/src/files/streams.js +20 -0
  114. package/dist/src/files/streams.js.map +1 -0
  115. package/dist/src/graphql/entry.d.ts +12 -0
  116. package/dist/src/graphql/entry.js +13 -0
  117. package/dist/src/graphql/entry.js.map +1 -0
  118. package/dist/src/graphql/generate.d.ts +12 -0
  119. package/dist/src/graphql/generate.js +19 -0
  120. package/dist/src/graphql/generate.js.map +1 -0
  121. package/dist/src/graphql/preflight.d.ts +6 -0
  122. package/dist/src/graphql/preflight.js +42 -0
  123. package/dist/src/graphql/preflight.js.map +1 -0
  124. package/dist/src/graphql/resolvers.d.ts +17 -0
  125. package/dist/src/graphql/resolvers.js +44 -0
  126. package/dist/src/graphql/resolvers.js.map +1 -0
  127. package/dist/src/graphql/routes.d.ts +8 -0
  128. package/dist/src/graphql/routes.js +30 -0
  129. package/dist/src/graphql/routes.js.map +1 -0
  130. package/dist/src/graphql/schema.d.ts +6 -0
  131. package/dist/src/{graphql.js → graphql/schema.js} +57 -50
  132. package/dist/src/graphql/schema.js.map +1 -0
  133. package/dist/src/graphql/write.d.ts +4 -0
  134. package/dist/src/graphql/write.js +10 -0
  135. package/dist/src/graphql/write.js.map +1 -0
  136. package/dist/src/openapi/auth.d.ts +13 -0
  137. package/dist/src/openapi/auth.js +139 -0
  138. package/dist/src/openapi/auth.js.map +1 -0
  139. package/dist/src/openapi/document.d.ts +7 -3
  140. package/dist/src/openapi/document.js +147 -92
  141. package/dist/src/openapi/document.js.map +1 -1
  142. package/dist/src/openapi/entry.d.ts +14 -0
  143. package/dist/src/openapi/entry.js +13 -0
  144. package/dist/src/openapi/entry.js.map +1 -0
  145. package/dist/src/openapi/files.d.ts +6 -0
  146. package/dist/src/{files/openapi.js → openapi/files.js} +6 -5
  147. package/dist/src/openapi/files.js.map +1 -0
  148. package/dist/src/openapi/generate.d.ts +19 -0
  149. package/dist/src/openapi/generate.js +41 -0
  150. package/dist/src/openapi/generate.js.map +1 -0
  151. package/dist/src/openapi/helpers.d.ts +26 -0
  152. package/dist/src/openapi/helpers.js +13 -0
  153. package/dist/src/openapi/helpers.js.map +1 -0
  154. package/dist/src/openapi/options.d.ts +18 -0
  155. package/dist/src/openapi/options.js +13 -0
  156. package/dist/src/openapi/options.js.map +1 -0
  157. package/dist/src/{types.d.ts → openapi/types.d.ts} +2 -10
  158. package/dist/src/openapi/types.js +2 -0
  159. package/dist/src/openapi/types.js.map +1 -0
  160. package/dist/src/openapi/write.d.ts +5 -0
  161. package/dist/src/openapi/write.js +12 -0
  162. package/dist/src/openapi/write.js.map +1 -0
  163. package/dist/src/rest/options.d.ts +22 -0
  164. package/dist/src/rest/options.js +65 -0
  165. package/dist/src/rest/options.js.map +1 -0
  166. package/dist/src/rest/projection.d.ts +13 -0
  167. package/dist/src/rest/projection.js +61 -0
  168. package/dist/src/rest/projection.js.map +1 -0
  169. package/dist/src/rest/routes.d.ts +7 -0
  170. package/dist/src/rest/routes.js +49 -0
  171. package/dist/src/rest/routes.js.map +1 -0
  172. package/dist/src/server/config.d.ts +74 -0
  173. package/dist/src/server/config.js +142 -0
  174. package/dist/src/server/config.js.map +1 -0
  175. package/dist/src/server/create.d.ts +16 -0
  176. package/dist/src/server/create.js +133 -0
  177. package/dist/src/server/create.js.map +1 -0
  178. package/dist/src/server/features.d.ts +4 -0
  179. package/dist/src/server/features.js +11 -0
  180. package/dist/src/server/features.js.map +1 -0
  181. package/dist/src/server/model.d.ts +6 -0
  182. package/dist/src/server/model.js +14 -0
  183. package/dist/src/server/model.js.map +1 -0
  184. package/dist/src/server/public.d.ts +2 -0
  185. package/dist/src/server/public.js +2 -0
  186. package/dist/src/server/public.js.map +1 -0
  187. package/package.json +17 -1
  188. package/dist/src/cli.d.ts +0 -4
  189. package/dist/src/cli.js +0 -67
  190. package/dist/src/cli.js.map +0 -1
  191. package/dist/src/config.d.ts +0 -68
  192. package/dist/src/config.js +0 -161
  193. package/dist/src/config.js.map +0 -1
  194. package/dist/src/constants.js.map +0 -1
  195. package/dist/src/database.d.ts +0 -21
  196. package/dist/src/database.js.map +0 -1
  197. package/dist/src/engine.d.ts +0 -47
  198. package/dist/src/engine.js +0 -438
  199. package/dist/src/engine.js.map +0 -1
  200. package/dist/src/files/openapi.d.ts +0 -3
  201. package/dist/src/files/openapi.js.map +0 -1
  202. package/dist/src/graphql.d.ts +0 -4
  203. package/dist/src/graphql.js.map +0 -1
  204. package/dist/src/model.d.ts +0 -67
  205. package/dist/src/model.js.map +0 -1
  206. package/dist/src/openapi/index.d.ts +0 -7
  207. package/dist/src/openapi/index.js +0 -26
  208. package/dist/src/openapi/index.js.map +0 -1
  209. package/dist/src/query/filter.d.ts +0 -1
  210. package/dist/src/query/filter.js +0 -84
  211. package/dist/src/query/filter.js.map +0 -1
  212. package/dist/src/query/options.d.ts +0 -31
  213. package/dist/src/query/options.js +0 -135
  214. package/dist/src/query/options.js.map +0 -1
  215. package/dist/src/relation-metadata.d.ts +0 -10
  216. package/dist/src/relation-metadata.js.map +0 -1
  217. package/dist/src/server.d.ts +0 -14
  218. package/dist/src/server.js +0 -166
  219. package/dist/src/server.js.map +0 -1
  220. package/dist/src/utils.d.ts +0 -19
  221. package/dist/src/utils.js +0 -62
  222. package/dist/src/utils.js.map +0 -1
  223. /package/dist/src/{types.js → core/types.js} +0 -0
@@ -1,8 +1,13 @@
1
1
  import { assertValidSchema, GraphQLBoolean, GraphQLEnumType, GraphQLFloat, GraphQLID, GraphQLInputObjectType, GraphQLInt, GraphQLList, GraphQLNonNull, GraphQLObjectType, GraphQLSchema, GraphQLString, } from 'graphql';
2
- import { resolveField } from './engine.js';
3
- import { assertApi, nodeName, operationName } from './model.js';
4
- import { sortableFields } from './query/options.js';
5
- export function buildGraphql(model, engine) {
2
+ import { assertApi, canonicalNode, nodeName, operationName, writable } from '../core/model.js';
3
+ import { MUTATIONS } from '../core/operations.js';
4
+ import { operatorsFor } from '../core/query/contract.js';
5
+ import { sortableFields } from '../core/query/options.js';
6
+ import { capitalize } from '../core/utils.js';
7
+ /** Строит типы, фильтры, аргументы и операции по модели, проверяя конфликты имён.
8
+ * @example Модель с сущностью Note → GraphQLSchema с типом Note; повторяющееся имя типа → ошибка.
9
+ */
10
+ export function buildGraphql(model) {
6
11
  assertApi(model, 'graphql');
7
12
  const names = new Set(['String', 'Float', 'Int', 'Boolean', 'ID', 'Query', 'Mutation', 'Pager', 'OrderDirection']);
8
13
  const reserve = (name) => {
@@ -20,7 +25,6 @@ export function buildGraphql(model, engine) {
20
25
  const enums = new Map();
21
26
  const pager = new GraphQLInputObjectType({ name: 'Pager', fields: { page: { type: GraphQLInt }, pageSize: { type: GraphQLInt } } });
22
27
  const direction = new GraphQLEnumType({ name: 'OrderDirection', values: { ASC: { value: 'ASC' }, DESC: { value: 'DESC' } } });
23
- const canonical = (entity, node) => (node.relation ? [node.relation, node.relation.root] : [entity, node]);
24
28
  function scalar(entity, node, constrained = true) {
25
29
  if (constrained && node.enum) {
26
30
  let type = enums.get(node);
@@ -36,10 +40,12 @@ export function buildGraphql(model, engine) {
36
40
  return node.base === 'number' ? GraphQLFloat : node.base === 'boolean' ? GraphQLBoolean : node.primary ? GraphQLID : GraphQLString;
37
41
  }
38
42
  function output(entity, node) {
39
- [entity, node] = canonical(entity, node);
43
+ [entity, node] = canonicalNode(entity, node);
40
44
  let type = objects.get(node);
41
45
  if (type)
42
46
  return type;
47
+ if (!Object.values(node.children).some((child) => !child.writeOnly))
48
+ throw new Error(`GraphQL object ${nodeName(entity, node)} must contain at least one visible field`);
43
49
  type = new GraphQLObjectType({
44
50
  name: reserve(nodeName(entity, node)),
45
51
  fields: () => Object.fromEntries(Object.entries(node.children)
@@ -56,11 +62,8 @@ export function buildGraphql(model, engine) {
56
62
  {
57
63
  type: childType,
58
64
  description: child.description,
65
+ extensions: { node: child, ...(object && child.many ? { listNode: child } : {}) },
59
66
  args: object && child.many ? listArgs(entity, child) : undefined,
60
- resolve: (ref, args) => {
61
- const value = resolveField(ref, child);
62
- return object && child.many && value != null ? engine.list(value, child, args) : value;
63
- },
64
67
  },
65
68
  ];
66
69
  })),
@@ -69,7 +72,7 @@ export function buildGraphql(model, engine) {
69
72
  return type;
70
73
  }
71
74
  function page(entity, node) {
72
- [entity, node] = canonical(entity, node);
75
+ [entity, node] = canonicalNode(entity, node);
73
76
  let type = pages.get(node);
74
77
  if (type)
75
78
  return type;
@@ -80,9 +83,15 @@ export function buildGraphql(model, engine) {
80
83
  pages.set(node, type);
81
84
  return type;
82
85
  }
83
- function input(entity, node, mode, root = false) {
84
- const name = `${nodeName(entity, node)}${mode[0].toUpperCase() + mode.slice(1)}`;
85
- let type = inputs.get(name);
86
+ function input(entity, node, mode, root = false, nested = false) {
87
+ const name = `${nodeName(entity, node)}${nested ? 'Nested' : ''}${capitalize(mode)}`;
88
+ const variant = `${mode}:${root}:${nested}`;
89
+ let variants = inputs.get(node);
90
+ if (!variants) {
91
+ variants = new Map();
92
+ inputs.set(node, variants);
93
+ }
94
+ let type = variants.get(variant);
86
95
  if (type)
87
96
  return type;
88
97
  type = new GraphQLInputObjectType({
@@ -90,23 +99,28 @@ export function buildGraphql(model, engine) {
90
99
  fields: () => {
91
100
  const fields = {};
92
101
  for (const [key, child] of Object.entries(node.children)) {
93
- if (child.relation || child.generated || child.readOnly || (child.primary && mode !== 'create'))
102
+ const lookup = nested && child.primary;
103
+ if (!lookup && !writable(child, mode, true))
94
104
  continue;
95
- let childType = child.base === 'object' ? input(entity, child, mode) : scalar(entity, child);
105
+ let childType = child.relation
106
+ ? input(child.relation, child.relation.root, mode, true, true)
107
+ : child.base === 'object'
108
+ ? input(entity, child, mode)
109
+ : scalar(entity, child);
96
110
  if (child.many)
97
111
  childType = new GraphQLList(new GraphQLNonNull(childType));
98
- if (child.required && !child.nullable && !(root && mode === 'update') && child.default === undefined)
112
+ if (!lookup && !child.relation && !child.relationKey && child.required && !child.nullable && !(root && (mode === 'update' || (nested && mode === 'create'))) && child.default === undefined)
99
113
  childType = new GraphQLNonNull(childType);
100
114
  fields[key] = { type: childType, description: child.description };
101
115
  }
102
116
  return fields;
103
117
  },
104
118
  });
105
- inputs.set(name, type);
119
+ variants.set(variant, type);
106
120
  return type;
107
121
  }
108
122
  function where(entity, node) {
109
- [entity, node] = canonical(entity, node);
123
+ [entity, node] = canonicalNode(entity, node);
110
124
  let type = wheres.get(node);
111
125
  if (type)
112
126
  return type;
@@ -138,29 +152,16 @@ export function buildGraphql(model, engine) {
138
152
  type = new GraphQLInputObjectType({
139
153
  name: reserve(`${nodeName(entity, node)}Filter`),
140
154
  fields: () => {
141
- const fields = { not: { type: type } };
142
- const object = node.relation || node.base === 'object';
143
- if (node.many) {
144
- const element = object ? where(entity, node) : filter(entity, { ...node, many: false, path: `${node.path}_element` });
145
- for (const key of ['some', 'every', 'none'])
146
- fields[key] = { type: element };
147
- if (!object) {
148
- const value = scalar(entity, node);
149
- fields.contains = { type: value };
150
- fields.in = { type: new GraphQLList(value) };
151
- }
152
- }
153
- else {
155
+ const fields = {};
156
+ const element = node.many ? (node.relation || node.base === 'object' ? where(entity, node) : filter(entity, { ...node, many: false, path: `${node.path}_element` })) : undefined;
157
+ for (const [key, operand] of Object.entries(operatorsFor(node))) {
154
158
  const value = scalar(entity, node);
155
- for (const key of ['eq', 'ne'])
156
- fields[key] = { type: value };
157
- fields.in = { type: new GraphQLList(value) };
158
- if (node.base !== 'boolean')
159
- for (const key of ['gt', 'gte', 'lt', 'lte'])
160
- fields[key] = { type: scalar(entity, node, false) };
161
- if (node.base === 'string')
162
- for (const key of ['contains', 'startsWith', 'endsWith'])
163
- fields[key] = { type: GraphQLString };
159
+ if (operand === 'condition')
160
+ fields[key] = { type: type };
161
+ else if (operand === 'element')
162
+ fields[key] = { type: element };
163
+ else
164
+ fields[key] = { type: operand === 'values' ? new GraphQLList(value) : operand === 'comparison' ? scalar(entity, node, false) : operand === 'text' ? GraphQLString : value };
164
165
  }
165
166
  return fields;
166
167
  },
@@ -169,7 +170,7 @@ export function buildGraphql(model, engine) {
169
170
  return type;
170
171
  }
171
172
  function order(entity, node) {
172
- [entity, node] = canonical(entity, node);
173
+ [entity, node] = canonicalNode(entity, node);
173
174
  let type = orders.get(node);
174
175
  if (type)
175
176
  return type;
@@ -196,21 +197,27 @@ export function buildGraphql(model, engine) {
196
197
  if (queries[operation])
197
198
  throw new Error(`GraphQL operation collision: ${operation}`);
198
199
  const keyArg = { [entity.primary]: { type: new GraphQLNonNull(scalar(entity, entity.fields[entity.primary], false)) } };
199
- queries[name] = { type: output(entity, entity.root), args: keyArg, resolve: (_root, args, ctx) => engine.find(ctx.snapshot, entity, args[entity.primary]) ?? null };
200
+ queries[name] = {
201
+ type: output(entity, entity.root),
202
+ args: keyArg,
203
+ extensions: { entity, operation: 'find' },
204
+ };
200
205
  queries[`${name}List`] = {
201
206
  type: new GraphQLNonNull(page(entity, entity.root)),
202
207
  args: listArgs(entity, entity.root),
203
- resolve: (_root, args, ctx) => engine.list(engine.records(ctx.snapshot, entity), entity.root, args),
208
+ extensions: { listNode: entity.root, entity, operation: 'list' },
204
209
  };
205
- for (const mode of ['create', 'replace', 'update', 'delete']) {
206
- const operation = `${name}${mode[0].toUpperCase() + mode.slice(1)}`;
210
+ for (const { mode, hasKey, hasBody } of MUTATIONS) {
211
+ const operation = `${name}${capitalize(mode)}`;
207
212
  if (mutations[operation])
208
213
  throw new Error(`GraphQL operation collision: ${operation}`);
209
- const fields = Object.values(entity.root.children).filter((child) => !child.relation && !child.generated && !child.readOnly && (!child.primary || mode === 'create'));
214
+ const args = { ...(hasKey ? keyArg : {}) };
215
+ if (hasBody && Object.values(entity.root.children).some((child) => writable(child, mode, true)))
216
+ args.data = { type: new GraphQLNonNull(input(entity, entity.root, mode, true)) };
210
217
  mutations[operation] = {
211
218
  type: output(entity, entity.root),
212
- args: { ...(mode !== 'create' ? keyArg : {}), ...(mode !== 'delete' && fields.length ? { data: { type: new GraphQLNonNull(input(entity, entity.root, mode, true)) } } : {}) },
213
- resolve: (_root, args) => engine.mutate(entity, mode, args[entity.primary], args.data ?? {}),
219
+ args,
220
+ extensions: { entity, operation: mode },
214
221
  };
215
222
  }
216
223
  }
@@ -220,4 +227,4 @@ export function buildGraphql(model, engine) {
220
227
  assertValidSchema(schema);
221
228
  return schema;
222
229
  }
223
- //# sourceMappingURL=graphql.js.map
230
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/graphql/schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ /** Сохраняет текст схемы в UTF-8 с завершающим переводом строки, создавая каталоги.
2
+ * @example writeGraphql('type Query { ok: Boolean }', 'out/schema.graphql') → Promise<void>; файл заканчивается переводом строки.
3
+ */
4
+ export declare function writeGraphql(sdl: string, path: string): Promise<void>;
@@ -0,0 +1,10 @@
1
+ import { mkdir, writeFile } from 'node:fs/promises';
2
+ import { dirname } from 'node:path';
3
+ /** Сохраняет текст схемы в UTF-8 с завершающим переводом строки, создавая каталоги.
4
+ * @example writeGraphql('type Query { ok: Boolean }', 'out/schema.graphql') → Promise<void>; файл заканчивается переводом строки.
5
+ */
6
+ export async function writeGraphql(sdl, path) {
7
+ await mkdir(dirname(path), { recursive: true });
8
+ await writeFile(path, `${sdl}\n`, 'utf8');
9
+ }
10
+ //# sourceMappingURL=write.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write.js","sourceRoot":"","sources":["../../../src/graphql/write.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,GAAW,EAAE,IAAY;IAC1D,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,MAAM,SAAS,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;AAC5C,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { OpenapiDocument, OpenapiSchema } from './types.js';
2
+ export declare const AUTH_SCHEMAS: Record<string, OpenapiSchema>;
3
+ export declare const AUTH_SECURITY_SCHEMES: {
4
+ AuthBearer: {
5
+ type: string;
6
+ scheme: string;
7
+ description: string;
8
+ };
9
+ };
10
+ /** Создаёт описания управления учётными записями и сессиями с требованиями доступа.
11
+ * @example authOpenapiPaths() → маршруты входа, регистрации, выхода, текущего пользователя, смены пароля и статуса.
12
+ */
13
+ export declare function authOpenapiPaths(): OpenapiDocument['paths'];
@@ -0,0 +1,139 @@
1
+ import { AUTH_PATHS, MAX_PASSWORD_LENGTH, MAX_USERNAME_LENGTH } from '../auth/contract.js';
2
+ import { json, ref, response } from './helpers.js';
3
+ const password = { type: 'string', format: 'password', writeOnly: true, minLength: 1, maxLength: MAX_PASSWORD_LENGTH };
4
+ export const AUTH_SCHEMAS = {
5
+ AuthUser: {
6
+ type: 'object',
7
+ additionalProperties: false,
8
+ required: ['id', 'username', 'isAdmin'],
9
+ properties: { id: { type: 'string' }, username: { type: 'string' }, isAdmin: { type: 'boolean' } },
10
+ },
11
+ AuthCredentialsInput: {
12
+ type: 'object',
13
+ additionalProperties: false,
14
+ required: ['username', 'password'],
15
+ properties: {
16
+ username: { type: 'string', minLength: 1, maxLength: MAX_USERNAME_LENGTH, pattern: '\\S' },
17
+ password,
18
+ },
19
+ },
20
+ AuthPasswordInput: {
21
+ type: 'object',
22
+ additionalProperties: false,
23
+ required: ['newPassword'],
24
+ properties: { currentPassword: { ...password, description: 'Required when changing your own password, including administrators.' }, newPassword: password },
25
+ },
26
+ AuthAdminInput: {
27
+ type: 'object',
28
+ additionalProperties: false,
29
+ required: ['isAdmin'],
30
+ properties: { isAdmin: { type: 'boolean' } },
31
+ },
32
+ AuthSession: {
33
+ type: 'object',
34
+ additionalProperties: false,
35
+ required: ['accessToken', 'expiresIn', 'user'],
36
+ properties: {
37
+ accessToken: { type: 'string' },
38
+ expiresIn: { type: 'integer', minimum: 1 },
39
+ user: ref('AuthUser'),
40
+ },
41
+ },
42
+ AuthSuccess: { type: 'object', additionalProperties: false, required: ['success'], properties: { success: { type: 'boolean' } } },
43
+ };
44
+ export const AUTH_SECURITY_SCHEMES = {
45
+ AuthBearer: {
46
+ type: 'http',
47
+ scheme: 'bearer',
48
+ description: 'Session token returned by POST /auth/login. Required for record mutations and protected auth routes. Login and registration are public.',
49
+ },
50
+ };
51
+ /** Создаёт описания управления учётными записями и сессиями с требованиями доступа.
52
+ * @example authOpenapiPaths() → маршруты входа, регистрации, выхода, текущего пользователя, смены пароля и статуса.
53
+ */
54
+ export function authOpenapiPaths() {
55
+ const unauthorized = response('Invalid credentials or expired session', ref('Error'));
56
+ const invalid = response('Invalid input', ref('Error'));
57
+ const forbidden = response('Insufficient permissions', ref('Error'));
58
+ const missing = response('Auth user not found', ref('Error'));
59
+ const busy = response('Too many simultaneous password operations or sessions', ref('Error'));
60
+ const writeFailed = response('Failed to save auth users; changes were not applied', ref('Error'));
61
+ const userId = { in: 'path', name: 'id', required: true, schema: { type: 'string', minLength: 1 } };
62
+ return {
63
+ [AUTH_PATHS.login]: {
64
+ post: {
65
+ operationId: 'authLogin',
66
+ tags: ['auth'],
67
+ security: [],
68
+ requestBody: { required: true, ...json(ref('AuthCredentialsInput')) },
69
+ responses: { 200: response('Session created', ref('AuthSession')), 400: invalid, 401: unauthorized, 429: busy },
70
+ },
71
+ },
72
+ [AUTH_PATHS.register]: {
73
+ post: {
74
+ operationId: 'authRegister',
75
+ tags: ['auth'],
76
+ security: [],
77
+ description: 'Creates a user with a generated id and isAdmin: false. Does not create a session; use login afterwards. Usernames are case-sensitive and unique.',
78
+ requestBody: { required: true, ...json(ref('AuthCredentialsInput')) },
79
+ responses: { 201: response('User created', ref('AuthUser')), 400: invalid, 409: response('Username already exists', ref('Error')), 429: busy, 500: writeFailed },
80
+ },
81
+ },
82
+ [AUTH_PATHS.me]: {
83
+ get: {
84
+ operationId: 'authMe',
85
+ tags: ['auth'],
86
+ security: [{ AuthBearer: [] }],
87
+ responses: { 200: response('Current auth user', ref('AuthUser')), 401: unauthorized },
88
+ },
89
+ },
90
+ [AUTH_PATHS.logout]: {
91
+ post: {
92
+ operationId: 'authLogout',
93
+ tags: ['auth'],
94
+ security: [{ AuthBearer: [] }],
95
+ responses: { 200: response('Session revoked', ref('AuthSuccess')), 401: unauthorized },
96
+ },
97
+ },
98
+ [AUTH_PATHS.password.replace(':id', '{id}')]: {
99
+ patch: {
100
+ operationId: 'authChangePassword',
101
+ tags: ['auth'],
102
+ security: [{ AuthBearer: [] }],
103
+ parameters: [userId],
104
+ description: 'Users, including administrators, supply currentPassword to change their own password. Administrators may reset ordinary users passwords without currentPassword, but cannot change another administrator password. Success revokes all sessions of the target user.',
105
+ requestBody: { required: true, ...json(ref('AuthPasswordInput')) },
106
+ responses: {
107
+ 200: response('Password changed; user sessions revoked', ref('AuthSuccess')),
108
+ 400: invalid,
109
+ 401: unauthorized,
110
+ 403: forbidden,
111
+ 404: missing,
112
+ 409: response('Password changed during the request', ref('Error')),
113
+ 429: busy,
114
+ 500: writeFailed,
115
+ },
116
+ },
117
+ },
118
+ [AUTH_PATHS.admin.replace(':id', '{id}')]: {
119
+ patch: {
120
+ operationId: 'authChangeAdmin',
121
+ tags: ['auth'],
122
+ security: [{ AuthBearer: [] }],
123
+ parameters: [userId],
124
+ description: 'Only administrators may change isAdmin. The last administrator cannot remove their own status. Existing sessions use the new permissions immediately. An administrator may demote another administrator and then reset their password as an ordinary user.',
125
+ requestBody: { required: true, ...json(ref('AuthAdminInput')) },
126
+ responses: {
127
+ 200: response('Admin status updated', ref('AuthUser')),
128
+ 400: invalid,
129
+ 401: unauthorized,
130
+ 403: forbidden,
131
+ 404: missing,
132
+ 409: response('Cannot remove the last administrator', ref('Error')),
133
+ 500: writeFailed,
134
+ },
135
+ },
136
+ },
137
+ };
138
+ }
139
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/openapi/auth.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,12 @@
1
- import { type Model } from '../model.js';
2
- import type { OpenapiDocument } from '../types.js';
3
- export declare function buildOpenapiDocument({ model, files, pageSize, maxPageSize, info, }: {
1
+ import { type Model } from '../core/model.js';
2
+ import type { OpenapiDocument } from './types.js';
3
+ /** Строит документ с маршрутами и схемами записей, включая выбранные дополнительные маршруты.
4
+ * @example { model, files: true } → документ с paths['/_files/storage'].
5
+ */
6
+ export declare function buildOpenapiDocument({ model, files, auth, pageSize, maxPageSize, info, }: {
4
7
  model: Model;
5
8
  files?: boolean;
9
+ auth?: boolean;
6
10
  pageSize?: number;
7
11
  maxPageSize?: number;
8
12
  info?: Record<string, unknown>;