@kollors/deep-json-server 1.0.0-alpha.8 → 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 (53) hide show
  1. package/README.md +137 -107
  2. package/README.ru.md +140 -110
  3. package/dist/index.d.ts +1 -2
  4. package/dist/src/auth/contract.d.ts +3 -2
  5. package/dist/src/auth/contract.js.map +1 -1
  6. package/dist/src/auth/service.js +1 -1
  7. package/dist/src/auth/service.js.map +1 -1
  8. package/dist/src/auth/store.d.ts +1 -1
  9. package/dist/src/auth/store.js.map +1 -1
  10. package/dist/src/cli/index.d.ts +2 -2
  11. package/dist/src/cli/index.js +68 -80
  12. package/dist/src/cli/index.js.map +1 -1
  13. package/dist/src/core/constants.d.ts +1 -1
  14. package/dist/src/core/constants.js +1 -1
  15. package/dist/src/core/database.d.ts +6 -11
  16. package/dist/src/core/database.js +2 -2
  17. package/dist/src/core/database.js.map +1 -1
  18. package/dist/src/core/model.d.ts +16 -2
  19. package/dist/src/core/model.js +17 -7
  20. package/dist/src/core/model.js.map +1 -1
  21. package/dist/src/core/paths.d.ts +1 -1
  22. package/dist/src/core/paths.js +11 -5
  23. package/dist/src/core/paths.js.map +1 -1
  24. package/dist/src/core/storage.d.ts +2 -0
  25. package/dist/src/core/storage.js +2 -0
  26. package/dist/src/core/storage.js.map +1 -0
  27. package/dist/src/files/contract.d.ts +6 -7
  28. package/dist/src/files/contract.js.map +1 -1
  29. package/dist/src/files/index.d.ts +1 -1
  30. package/dist/src/files/index.js +5 -2
  31. package/dist/src/files/index.js.map +1 -1
  32. package/dist/src/files/memory-store.js +3 -3
  33. package/dist/src/files/memory-store.js.map +1 -1
  34. package/dist/src/graphql/generate.d.ts +3 -2
  35. package/dist/src/graphql/generate.js +3 -1
  36. package/dist/src/graphql/generate.js.map +1 -1
  37. package/dist/src/openapi/generate.js +3 -1
  38. package/dist/src/openapi/generate.js.map +1 -1
  39. package/dist/src/openapi/options.d.ts +0 -2
  40. package/dist/src/server/config.d.ts +26 -28
  41. package/dist/src/server/config.js +82 -169
  42. package/dist/src/server/config.js.map +1 -1
  43. package/dist/src/server/create.d.ts +3 -5
  44. package/dist/src/server/create.js +32 -23
  45. package/dist/src/server/create.js.map +1 -1
  46. package/dist/src/server/features.d.ts +0 -11
  47. package/dist/src/server/features.js +0 -20
  48. package/dist/src/server/features.js.map +1 -1
  49. package/dist/src/server/model.d.ts +6 -0
  50. package/dist/src/server/model.js +14 -0
  51. package/dist/src/server/model.js.map +1 -0
  52. package/dist/src/server/public.d.ts +1 -2
  53. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../../src/core/paths.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../../src/core/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACrD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAY;IAC9C,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,CAAC;QACH,OAAO,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAClC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ;YAAE,MAAM,KAAK,CAAC;QAClE,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;QACjC,IAAI,MAAM,KAAK,QAAQ;YAAE,MAAM,KAAK,CAAC;QACrC,OAAO,OAAO,CAAC,MAAM,aAAa,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IAClE,CAAC;AACH,CAAC;AACD;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,MAA+D,EAAE,SAAS,GAAG,GAAG,EAAE,UAAmB;IAC9H,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IAClE,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IACzD,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IACtD,MAAM,KAAK,GAAG;QACZ,UAAU;QACV,QAAQ,CAAC,MAAM;QACf,QAAQ,CAAC,MAAM;QACf,KAAK,CAAC,QAAQ,IAAI,CAAC,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACrH,IAAI,CAAC,MAAM;KACZ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC;IAC7D,IAAI,OAAO,QAAQ,CAAC,MAAM,KAAK,QAAQ;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,gBAAgB,CAAC,CAAC;IACxF,0FAA0F;IAC1F,KAAK,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,gBAAgB,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC;QACrI,IAAI,OAAO,IAAI,KAAK,QAAQ;YAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IACxG,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;AACvD,CAAC;AACD;;GAEG;AACH,KAAK,UAAU,QAAQ,CAAC,IAAY;IAClC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9B,OAAO,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;IACnC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ;YAAE,MAAM,KAAK,CAAC;QAClE,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AACD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,OAAiB,EAAE,MAAgB;IAC3E,MAAM,gBAAgB,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC;IACvE,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC;IACrE,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7I,IAAI,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IACpH,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE;QAAE,IAAI,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,gDAAgD,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACvL,CAAC"}
@@ -0,0 +1,2 @@
1
+ export type Storage = 'file' | 'memory';
2
+ export type Source<S extends Storage, T> = S extends 'file' ? string : T;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../../src/core/storage.ts"],"names":[],"mappings":""}
@@ -1,17 +1,16 @@
1
+ import type { Storage } from '../core/storage.js';
1
2
  export interface MemoryFile {
2
3
  content: Uint8Array;
3
4
  directory?: string;
4
5
  mimeType: string;
5
6
  name: string;
6
7
  }
7
- export type FilesConfig = {
8
- data: MemoryFile[];
9
- directory?: never;
8
+ export type FilesConfig<S extends Storage = Storage> = S extends 'file' ? {
9
+ source: string;
10
+ metadata?: string;
11
+ } : {
12
+ source: MemoryFile[];
10
13
  metadata?: never;
11
- } | {
12
- data?: never;
13
- directory: string;
14
- metadata: string;
15
14
  };
16
15
  import type { Readable } from 'node:stream';
17
16
  export interface StoredFileMetadata {
@@ -1 +1 @@
1
- {"version":3,"file":"contract.js","sourceRoot":"","sources":["../../../src/files/contract.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"contract.js","sourceRoot":"","sources":["../../../src/files/contract.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAUhD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AA2B5C,MAAM,iBAAiB,GAAG,4DAA4D,CAAC;AAEvF;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,EAAE,SAAS,EAAE,IAAI,EAAkD,EAAU,EAAE,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAEvJ,MAAM,qBAAqB,GAAG,mDAAmD,CAAC;AAClF;;GAEG;AACH,MAAM,mBAAmB,GAAG,CAAC,KAAa,EAAW,EAAE,CACrD,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE;IAC5B,MAAM,IAAI,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAErC,OAAO,IAAI,IAAI,EAAE,IAAI,IAAI,KAAK,GAAG,CAAC;AACpC,CAAC,CAAC,CAAC;AAEL;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,KAAc,EAAE,MAAc,EAAU,EAAE;IACrE,IACE,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,EAAE;QACZ,KAAK,KAAK,GAAG;QACb,KAAK,KAAK,IAAI;QACd,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;QACnB,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;QACnB,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;QAC1B,mBAAmB,CAAC,KAAK,CAAC;QAC1B,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,EACjC,CAAC;QACD,MAAM,WAAW,CAAC,eAAe,EAAE,GAAG,MAAM,wCAAwC,CAAC,CAAC;IACxF,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,KAAc,EAAE,MAAc,EAAU,EAAE;IAC1E,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,WAAW,CAAC,eAAe,EAAE,GAAG,MAAM,iDAAiD,CAAC,CAAC;IACjG,CAAC;IAED,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;QACjB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAE/B,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QACvK,MAAM,WAAW,CAAC,eAAe,EAAE,GAAG,MAAM,iDAAiD,CAAC,CAAC;IACjG,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,KAAc,EAAE,MAAM,GAAG,wBAAwB,EAAU,EAAE;IAC7F,MAAM,QAAQ,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAE9F,IAAI,QAAQ,KAAK,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzD,MAAM,WAAW,CAAC,eAAe,EAAE,GAAG,MAAM,uCAAuC,CAAC,CAAC;IACvF,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,KAAc,EAAE,MAAc,EAAsB,EAAE;IAChG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,GAAG,MAAM,+BAA+B,CAAC,CAAC;IAC5D,CAAC;IAED,IAAI,CAAC;QACH,OAAO;YACL,SAAS,EAAE,iBAAiB,CAAC,KAAK,CAAC,SAAS,IAAI,EAAE,EAAE,GAAG,MAAM,YAAY,CAAC;YAC1E,QAAQ,EAAE,iBAAiB,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,MAAM,WAAW,CAAC;YACjE,IAAI,EAAE,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,MAAM,OAAO,CAAC;SACjD,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IACzD,CAAC;AACH,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,IAAY,EAAkD,EAAE;IAC9F,MAAM,cAAc,GAAG,iBAAiB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAC7D,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACxC,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,YAAY,CAAC,CAAC;IAErD,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC;AAC9C,CAAC,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import type { FileStore, FilesConfig } from './contract.js';
2
2
  /** Выбирает дисковое хранилище или хранилище в памяти по настройкам.
3
- * @example createFileStore({ data: [] }) → Promise<FileStore> без создания файлов на диске.
3
+ * @example createFileStore({ source: [] }) → Promise<FileStore> без создания файлов на диске.
4
4
  */
5
5
  export declare const createFileStore: (config: FilesConfig, protectedPaths?: string[]) => Promise<FileStore>;
6
6
  export { registerFileRoutes } from './routes.js';
@@ -1,8 +1,11 @@
1
+ import { resolve } from 'node:path';
1
2
  import { createDiskFileStore } from './disk-store.js';
2
3
  import { createMemoryFileStore } from './memory-store.js';
3
4
  /** Выбирает дисковое хранилище или хранилище в памяти по настройкам.
4
- * @example createFileStore({ data: [] }) → Promise<FileStore> без создания файлов на диске.
5
+ * @example createFileStore({ source: [] }) → Promise<FileStore> без создания файлов на диске.
5
6
  */
6
- export const createFileStore = async (config, protectedPaths = []) => config.data != null ? createMemoryFileStore(config.data) : createDiskFileStore({ ...config, protectedPaths });
7
+ export const createFileStore = async (config, protectedPaths = []) => typeof config.source === 'string'
8
+ ? createDiskFileStore({ directory: config.source, metadata: config.metadata ?? resolve(config.source, '_database.json'), protectedPaths })
9
+ : createMemoryFileStore(config.source);
7
10
  export { registerFileRoutes } from './routes.js';
8
11
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/files/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE1D;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAAE,MAAmB,EAAE,cAAc,GAAa,EAAE,EAAsB,EAAE,CAC9G,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,EAAE,GAAG,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC;AAEhH,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/files/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE1D;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAAE,MAAmB,EAAE,cAAc,GAAa,EAAE,EAAsB,EAAE,CAC9G,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ;IAC/B,CAAC,CAAC,mBAAmB,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAAE,cAAc,EAAE,CAAC;IAC1I,CAAC,CAAC,qBAAqB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAE3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC"}
@@ -25,15 +25,15 @@ export const createMemoryFileStore = (sourceFiles) => {
25
25
  const storedFiles = new Map();
26
26
  sourceFiles.forEach((sourceFile, index) => {
27
27
  if (!(sourceFile.content instanceof Uint8Array)) {
28
- throw new Error(`Некорректная запись ${index} в config.files.data`);
28
+ throw new Error(`Некорректная запись ${index} в config.files.source`);
29
29
  }
30
30
  const file = {
31
- ...normalizeStoredFileMetadata(sourceFile, `Запись ${index} в config.files.data`),
31
+ ...normalizeStoredFileMetadata(sourceFile, `Запись ${index} в config.files.source`),
32
32
  size: sourceFile.content.length,
33
33
  };
34
34
  const path = getFileKey(file);
35
35
  if (storedFiles.has(path)) {
36
- throw new Error(`config.files.data содержит повторяющийся путь «${path}»`);
36
+ throw new Error(`config.files.source содержит повторяющийся путь «${path}»`);
37
37
  }
38
38
  storedFiles.set(path, { content: Buffer.from(sourceFile.content), file });
39
39
  });
@@ -1 +1 @@
1
- {"version":3,"file":"memory-store.js","sourceRoot":"","sources":["../../../src/files/memory-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memory-store.js","sourceRoot":"","sources":["../../../src/files/memory-store.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
- import type { RecordOptions } from '../core/lifecycle/options.js';
2
- export type GraphqlOptions = RecordOptions;
1
+ export interface GraphqlOptions {
2
+ auth?: boolean;
3
+ }
3
4
  import { type Model, type ModelSchema } from '../core/model.js';
4
5
  /** Проверяет доступность формата и возвращает текст схемы из подготовленной модели.
5
6
  * @example Подготовленная модель с сущностью Note → SDL с типом Note и операциями note, noteList.
@@ -1,3 +1,4 @@
1
+ import { assertKnownKeys } from '../core/utils.js';
1
2
  import { printSchema } from 'graphql';
2
3
  import { assertApi, loadModel } from '../core/model.js';
3
4
  import { buildGraphql } from './schema.js';
@@ -12,6 +13,7 @@ export function graphqlFromModel(model) {
12
13
  * @example Корректное описание сущностей → Promise<string> с SDL; некорректное → ошибка.
13
14
  */
14
15
  export async function generateGraphql(schema, options = {}) {
15
- return graphqlFromModel(await loadModel(schema, options));
16
+ assertKnownKeys(options, new Set(['auth']), 'options');
17
+ return graphqlFromModel(await loadModel(schema, { auth: options.auth, api: ['graphql'] }));
16
18
  }
17
19
  //# sourceMappingURL=generate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/graphql/generate.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
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/graphql/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAKnD,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,eAAe,CAAC,OAAO,EAAE,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IACvD,OAAO,gBAAgB,CAAC,MAAM,SAAS,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7F,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { getBoolean, normalizeAddress } from '../core/config-values.js';
2
2
  import { assertApi, loadModel } from '../core/model.js';
3
+ import { assertKnownKeys } from '../core/utils.js';
3
4
  import { buildOpenapiDocument } from './document.js';
4
5
  import { normalizeOpenapiInfo } from './options.js';
5
6
  /** Проверяет параметры экспорта и строит документ из подготовленной модели.
@@ -16,7 +17,8 @@ export function openapiFromModel(model, options = {}) {
16
17
  * @example Корректное описание → Promise<OpenapiDocument> с openapi: '3.0.3'.
17
18
  */
18
19
  export async function generateOpenapi(schema, options = {}) {
19
- return openapiFromModel(await loadModel(schema, options), options);
20
+ assertKnownKeys(options, new Set(['auth', 'files', 'host', 'port', 'pageSize', 'maxPageSize', 'info']), 'options');
21
+ return openapiFromModel(await loadModel(schema, { auth: options.auth, api: ['openapi'] }), options);
20
22
  }
21
23
  /** Строит HTTP-адрес, оборачивая IPv6 в квадратные скобки; нулевой порт даёт относительный адрес.
22
24
  * @example getServerUrl({ host: '::1', port: 80 }) → 'http://[::1]:80'; { port: 0 } → '/'.
@@ -1 +1 @@
1
- {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/openapi/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAgC,MAAM,kBAAkB,CAAC;AACtF,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAuB,MAAM,cAAc,CAAC;AAEzE;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAwB,EAAE,OAAO,GAAmB,EAAE;IACrF,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAC5B,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACjD,MAAM,IAAI,GAAG,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,OAAO,aAAa,CAAC,EAAE,QAAQ,EAAE,oBAAoB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;AAC/L,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;AAED;;GAEG;AACH,MAAM,YAAY,GAAG,CAAC,OAAyC,EAAU,EAAE;IACzE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACjD,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,EAAE,IAAI,EAA+D,EAAmB,EAAE;IACtJ,MAAM,QAAQ,GAAG,eAAe,CAAC,cAAc,CAAC,CAAC;IAEjD,QAAQ,CAAC,OAAO,GAAG,CAAC,EAAE,GAAG,EAAE,YAAY,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;IAE3D,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC"}
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/openapi/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAgC,MAAM,kBAAkB,CAAC;AACtF,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAuB,MAAM,cAAc,CAAC;AAEzE;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAwB,EAAE,OAAO,GAAmB,EAAE;IACrF,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAC5B,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACjD,MAAM,IAAI,GAAG,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,OAAO,aAAa,CAAC,EAAE,QAAQ,EAAE,oBAAoB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;AAC/L,CAAC;AACD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,MAA4B,EAAE,OAAO,GAAmB,EAAE;IAC9F,eAAe,CAAC,OAAO,EAAE,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IACnH,OAAO,gBAAgB,CAAC,MAAM,SAAS,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;AACtG,CAAC;AAED;;GAEG;AACH,MAAM,YAAY,GAAG,CAAC,OAAyC,EAAU,EAAE;IACzE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACjD,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,EAAE,IAAI,EAA+D,EAAmB,EAAE;IACtJ,MAAM,QAAQ,GAAG,eAAe,CAAC,cAAc,CAAC,CAAC;IAEjD,QAAQ,CAAC,OAAO,GAAG,CAAC,EAAE,GAAG,EAAE,YAAY,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;IAE3D,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC"}
@@ -8,8 +8,6 @@ export type OpenapiInfo = {
8
8
  */
9
9
  export declare function normalizeOpenapiInfo(value: unknown): OpenapiInfo | undefined;
10
10
  export interface OpenapiOptions {
11
- timestamps?: boolean;
12
- softDelete?: boolean;
13
11
  auth?: boolean;
14
12
  files?: boolean;
15
13
  host?: string;
@@ -1,22 +1,22 @@
1
+ import type { FastifyServerOptions } from 'fastify';
1
2
  import type { AuthConfig } from '../auth/contract.js';
2
3
  import type { DatabaseConfig } from '../core/database.js';
4
+ import type { ModelSchema } from '../core/model.js';
5
+ import type { Storage } from '../core/storage.js';
3
6
  import type { FilesConfig } from '../files/contract.js';
4
7
  import { type OpenapiInfo } from '../openapi/options.js';
5
8
  export type { AuthConfig } from '../auth/contract.js';
6
- import type { FastifyServerOptions } from 'fastify';
7
- import type { ModelSchema } from '../core/model.js';
8
- export type DatabaseSchema = ModelSchema;
9
9
  export type { DatabaseConfig } from '../core/database.js';
10
+ export type { Storage } from '../core/storage.js';
10
11
  export type { FilesConfig, MemoryFile } from '../files/contract.js';
12
+ export type DatabaseSchema = ModelSchema;
11
13
  export interface OpenapiConfig {
12
- enabled?: boolean;
13
14
  endpoint?: string;
14
15
  path?: string;
15
16
  info?: OpenapiInfo;
16
17
  }
17
18
  export interface GraphqlConfig {
18
19
  path?: string;
19
- enabled?: boolean;
20
20
  endpoint?: string;
21
21
  }
22
22
  export interface ServerConfig {
@@ -28,26 +28,34 @@ export interface ServerConfig {
28
28
  pageSize?: number;
29
29
  port?: number;
30
30
  }
31
- export interface DeepJsonServerConfig {
32
- database: DatabaseConfig;
33
- files?: FilesConfig;
34
- auth?: AuthConfig;
35
- openapi?: OpenapiConfig;
36
- graphql?: GraphqlConfig;
37
- server?: ServerConfig;
38
- }
31
+ export type DeepJsonServerConfig = {
32
+ [S in Storage]: {
33
+ storage: S;
34
+ database: DatabaseConfig<S>;
35
+ files?: FilesConfig<S>;
36
+ auth?: AuthConfig<S>;
37
+ openapi?: OpenapiConfig;
38
+ graphql?: GraphqlConfig;
39
+ server?: ServerConfig;
40
+ };
41
+ }[Storage];
39
42
  export interface NormalizedServerConfig {
43
+ storage: Storage;
40
44
  database: DatabaseConfig;
41
45
  files?: FilesConfig;
42
46
  auth?: AuthConfig;
43
- openapi: OpenapiConfig & Required<Pick<OpenapiConfig, 'enabled' | 'endpoint'>>;
44
- graphql: GraphqlConfig & Required<Pick<GraphqlConfig, 'enabled' | 'endpoint'>>;
47
+ openapi?: OpenapiConfig & {
48
+ endpoint: string;
49
+ };
50
+ graphql?: GraphqlConfig & {
51
+ endpoint: string;
52
+ };
45
53
  server: Required<ServerConfig>;
46
54
  }
47
- /** Проверяет настройки и разрешает относительные пути, не читая содержимое файлов.
48
- * @example При directoryPath = '/tmp' путь './db.json' → '/tmp/db.json'.
55
+ /** Нормализует объект конфигурации без чтения содержимого файлов.
56
+ * @example Путь './db.json' с directory = '/tmp' → '/tmp/db.json'.
49
57
  */
50
- export declare const normalizeServerConfig: (config: DeepJsonServerConfig, directoryPath?: string) => NormalizedServerConfig;
58
+ export declare const normalizeServerConfig: (config: DeepJsonServerConfig, directory?: string) => NormalizedServerConfig;
51
59
  /** Загружает default-экспорт ES-модуля, обходя кеш повторного импорта; выполняет код модуля.
52
60
  * @example Файл /tmp/config.mjs с export default {} → { config: {}, directory: '/tmp', path: '/tmp/config.mjs' }.
53
61
  */
@@ -64,13 +72,3 @@ export declare const configSourcePath: (config: NormalizedServerConfig) => strin
64
72
  * @example configure(config, '/tmp', '/tmp/config.mjs') → настройки; configSourcePath(result) → '/tmp/config.mjs'.
65
73
  */
66
74
  export declare function configure(config: unknown, directory: string, sourcePath?: string): NormalizedServerConfig;
67
- /** Выбирает настройки для указанных форматов экспорта и подставляет пустые данные вместо чтения базы.
68
- * @example formats = ['graphql'] → настройки генерации GraphQL с database.data = {}.
69
- */
70
- export declare function configureGeneration(source: Record<string, unknown>, formats: string[], directory: string, sourcePath: string, overrides: {
71
- host?: string;
72
- port?: number;
73
- files?: boolean;
74
- timestamps?: boolean;
75
- softDelete?: boolean;
76
- }): NormalizedServerConfig;
@@ -1,170 +1,109 @@
1
- import { getBoolean, getObject, getPositiveInteger, getString, normalizeAddress } from '../core/config-values.js';
2
- import { DEFAULT_MAX_FILE_SIZE } from '../core/constants.js';
3
- import { recordOptions } from '../core/lifecycle/options.js';
4
- import { errorMessage } from '../core/utils.js';
5
- import { normalizeOpenapiInfo } from '../openapi/options.js';
6
1
  import { dirname, resolve } from 'node:path';
7
2
  import { pathToFileURL } from 'node:url';
3
+ import { getBoolean, getObject, getPositiveInteger, getString, normalizeAddress } from '../core/config-values.js';
4
+ import { DEFAULT_MAX_FILE_SIZE } from '../core/constants.js';
8
5
  import { normalizePagination } from '../core/pagination.js';
9
- import { assertKnownKeys, isObject } from '../core/utils.js';
10
- const CONFIG_KEYS = new Set(['database', 'files', 'openapi', 'graphql', 'server', 'auth']);
11
- const DATABASE_KEYS = new Set(['data', 'path', 'schema', 'timestamps', 'softDelete']);
12
- const FILES_KEYS = new Set(['data', 'directory', 'metadata']);
13
- const OPENAPI_KEYS = new Set(['path', 'info', 'enabled', 'endpoint']);
14
- const GRAPHQL_KEYS = new Set(['path', 'enabled', 'endpoint']);
6
+ import { assertKnownKeys, errorMessage, isObject } from '../core/utils.js';
7
+ import { normalizeOpenapiInfo } from '../openapi/options.js';
8
+ const CONFIG_KEYS = new Set(['storage', 'database', 'files', 'auth', 'openapi', 'graphql', 'server']);
15
9
  const SERVER_KEYS = new Set(['cors', 'host', 'logger', 'maxFileSize', 'maxPageSize', 'pageSize', 'port']);
16
10
  let configImportIndex = 0;
17
- /** Глубоко копирует структурированные данные и оборачивает ошибку неподдерживаемого значения.
18
- * @example copyInput({ a: [1] }) → независимая копия { a: [1] }; функция в значении → ошибка.
11
+ /** Проверяет секцию и её допустимые ключи; undefined означает отсутствие секции.
12
+ * @example section({}, 'auth', []) → {}; section(null, 'auth', []) → ошибка.
19
13
  */
20
- const copyInput = (value) => {
14
+ function section(value, name, keys) {
15
+ if (value === undefined)
16
+ return undefined;
17
+ const object = getObject(value, `config.${name}`, true);
18
+ assertKnownKeys(object, new Set(keys), `config.${name}`);
19
+ return object;
20
+ }
21
+ /** Проверяет путь либо начальные данные в соответствии с общим режимом хранения.
22
+ * @example source('db.json', 'file', 'database.source', '/tmp') → '/tmp/db.json'.
23
+ */
24
+ function source(value, storage, name, directory, array = false) {
25
+ if (storage === 'file')
26
+ return resolve(directory, getString(value, `config.${name}`, true));
27
+ if (array ? !Array.isArray(value) : !isObject(value))
28
+ throw new Error(`config.${name} must contain ${array ? 'an array' : 'an object'} for memory storage`);
21
29
  try {
22
30
  return structuredClone(value);
23
31
  }
24
32
  catch (error) {
25
- throw new Error('Input must contain JSON data or binary file content', { cause: error });
26
- }
27
- };
28
- /** Делает заданный путь абсолютным относительно указанного каталога.
29
- * @example resolveConfigPath('a.json', '/tmp') → '/tmp/a.json'; undefined → undefined.
30
- */
31
- const resolveConfigPath = (value, directoryPath) => (value == null ? undefined : resolve(directoryPath, value));
32
- /** Принимает объект описания или разрешает путь к нему относительно каталога.
33
- * @example normalizeSchema('schema.json', '/tmp') → '/tmp/schema.json'.
34
- */
35
- const normalizeSchema = (schema, directoryPath) => {
36
- if (schema == null) {
37
- return undefined;
38
- }
39
- if (typeof schema === 'string') {
40
- return resolve(directoryPath, getString(schema, 'config.database.schema', true));
41
- }
42
- return getObject(schema, 'config.database.schema', true);
43
- };
44
- /** Проверяет выбор между файлом и данными в памяти, разрешает пути и копирует данные.
45
- * @example { path: 'db.json' } с каталогом /tmp → path: '/tmp/db.json'; одновременно data и path → ошибка.
46
- */
47
- const normalizeDatabase = (value, directoryPath) => {
48
- const database = getObject(value, 'config.database', true);
49
- assertKnownKeys(database, DATABASE_KEYS, 'config.database');
50
- const hasData = database.data != null;
51
- const hasPath = database.path != null;
52
- if (hasData === hasPath) {
53
- throw new Error('Укажите ровно один из ключей config.database.path и config.database.data');
54
- }
55
- const schema = normalizeSchema(database.schema, directoryPath);
56
- recordOptions({ timestamps: database.timestamps, softDelete: database.softDelete });
57
- const flags = {
58
- ...(database.timestamps !== undefined ? { timestamps: database.timestamps } : {}),
59
- ...(database.softDelete !== undefined ? { softDelete: database.softDelete } : {}),
60
- };
61
- if (hasData) {
62
- return { data: copyInput(getObject(database.data, 'config.database.data', true)), schema, ...flags };
63
- }
64
- return { path: resolve(directoryPath, getString(database.path, 'config.database.path', true)), schema, ...flags };
65
- };
66
- /** Проверяет выбор между файлами в памяти и дисковым хранилищем, разрешает пути.
67
- * @example normalizeFiles(undefined, '/tmp') → undefined; { data: [] } → { data: [] }.
68
- */
69
- const normalizeFiles = (value, directoryPath) => {
70
- const files = getObject(value, 'config.files');
71
- if (files == null) {
72
- return undefined;
73
- }
74
- assertKnownKeys(files, FILES_KEYS, 'config.files');
75
- const hasData = files.data != null;
76
- const hasDiskStorage = files.directory != null || files.metadata != null;
77
- if (hasData === hasDiskStorage) {
78
- throw new Error('Укажите либо config.files.data, либо пару config.files.directory и config.files.metadata');
33
+ throw new Error(`config.${name} must contain structured data`, { cause: error });
79
34
  }
80
- if (hasData) {
81
- if (!Array.isArray(files.data)) {
82
- throw new Error('Ключ config.files.data должен содержать массив');
83
- }
84
- return { data: copyInput(files.data) };
85
- }
86
- return {
87
- directory: resolve(directoryPath, getString(files.directory, 'config.files.directory', true)),
88
- metadata: resolve(directoryPath, getString(files.metadata, 'config.files.metadata', true)),
89
- };
90
- };
91
- /** Проверяет источник учётных записей и срок сессии; массив копирует, путь делает абсолютным.
92
- * @example { users: 'users.json' } с каталогом /tmp → users: '/tmp/users.json'.
35
+ }
36
+ /** Проверяет секции настроек и возвращает независимые данные с абсолютными путями.
37
+ * @example { storage: 'file', database: { source: 'db.json' } } → абсолютный database.source.
93
38
  */
94
- const normalizeAuth = (value, directory) => {
95
- const auth = getObject(value, 'config.auth');
96
- if (!auth)
97
- return undefined;
98
- assertKnownKeys(auth, new Set(['users', 'expiresIn']), 'config.auth');
99
- if (typeof auth.users !== 'string' && !Array.isArray(auth.users))
100
- throw new Error('config.auth.users must be a file path or user array');
101
- const expiresIn = getPositiveInteger(auth.expiresIn, 'config.auth.expiresIn');
102
- if (expiresIn !== undefined && expiresIn > 2147483647)
103
- throw new Error('config.auth.expiresIn must be at most 2147483647 seconds');
104
- return {
105
- users: typeof auth.users === 'string' ? resolve(directory, getString(auth.users, 'config.auth.users', true)) : copyInput(auth.users),
106
- expiresIn,
39
+ function normalizeConfig(value, directory = '.') {
40
+ const config = getObject(value, 'config', true);
41
+ assertKnownKeys(config, CONFIG_KEYS, 'config');
42
+ if (config.storage !== 'file' && config.storage !== 'memory')
43
+ throw new Error("config.storage must be 'file' or 'memory'");
44
+ const storage = config.storage;
45
+ const database = section(config.database, 'database', ['source', 'schema']);
46
+ if (!database)
47
+ throw new Error('config.database is required');
48
+ const normalizedDatabase = {
49
+ source: source(database.source, storage, 'database.source', directory),
50
+ ...(database.schema !== undefined ? { schema: source(database.schema, storage, 'database.schema', directory) } : {}),
107
51
  };
108
- };
109
- /** Проверяет секции настроек и возвращает нормализованный объект с абсолютными путями.
110
- * @example { database: { path: 'db.json' } } с каталогом /tmp → database.path: '/tmp/db.json'.
111
- */
112
- const normalizeConfig = (config, directoryPath = '.') => {
113
- if (!isObject(config)) {
114
- throw new Error('Конфигурация сервера должна содержать JSON-объект');
52
+ const files = section(config.files, 'files', storage === 'file' ? ['source', 'metadata'] : ['source']);
53
+ const normalizedFiles = files === undefined
54
+ ? undefined
55
+ : storage === 'file'
56
+ ? {
57
+ source: source(files.source, storage, 'files.source', directory),
58
+ metadata: files.metadata === undefined
59
+ ? resolve(directory, getString(files.source, 'config.files.source', true), '_database.json')
60
+ : resolve(directory, getString(files.metadata, 'config.files.metadata', true)),
61
+ }
62
+ : { source: source(files.source, storage, 'files.source', directory, true) };
63
+ const auth = section(config.auth, 'auth', ['source', 'expiresIn']);
64
+ let normalizedAuth;
65
+ if (auth) {
66
+ const expiresIn = getPositiveInteger(auth.expiresIn, 'config.auth.expiresIn');
67
+ if (expiresIn !== undefined && expiresIn > 2147483647)
68
+ throw new Error('config.auth.expiresIn must be at most 2147483647 seconds');
69
+ normalizedAuth = { source: source(auth.source, storage, 'auth.source', directory, true), expiresIn };
115
70
  }
116
- assertKnownKeys(config, CONFIG_KEYS, 'config');
117
- const database = normalizeDatabase(config.database, directoryPath);
118
- const files = normalizeFiles(config.files, directoryPath);
119
- const openapi = getObject(config.openapi, 'config.openapi') ?? {};
120
- const graphql = getObject(config.graphql, 'config.graphql') ?? {};
121
- const server = getObject(config.server, 'config.server') ?? {};
122
- assertKnownKeys(openapi, OPENAPI_KEYS, 'config.openapi');
123
- assertKnownKeys(graphql, GRAPHQL_KEYS, 'config.graphql');
124
- const openapiEnabled = getBoolean(openapi.enabled, 'config.openapi.enabled') ?? false;
125
- const openapiEndpoint = getString(openapi.endpoint, 'config.openapi.endpoint');
126
- if (openapiEndpoint && !/^\/[A-Za-z][A-Za-z0-9_./-]*$/.test(openapiEndpoint))
71
+ const openapi = section(config.openapi, 'openapi', ['path', 'info', 'endpoint']);
72
+ const graphql = section(config.graphql, 'graphql', ['path', 'endpoint']);
73
+ if ((openapi || graphql) && normalizedDatabase.schema === undefined)
74
+ throw new Error('GraphQL and OpenAPI require an explicit model schema');
75
+ const exportPath = (value, name) => (value === undefined ? undefined : resolve(directory, getString(value, name, true)));
76
+ const openapiEndpoint = getString(openapi?.endpoint, 'config.openapi.endpoint') ?? '/openapi.json';
77
+ const graphqlEndpoint = getString(graphql?.endpoint, 'config.graphql.endpoint') ?? '/graphql';
78
+ if (!/^\/[A-Za-z][A-Za-z0-9_./-]*$/.test(openapiEndpoint))
127
79
  throw new Error('Invalid OpenAPI endpoint');
128
- const graphqlEnabled = getBoolean(graphql.enabled, 'config.graphql.enabled') ?? false;
129
- const endpoint = getString(graphql.endpoint, 'config.graphql.endpoint');
130
- if (endpoint && (!/^\/[A-Za-z][A-Za-z0-9_/-]*$/.test(endpoint) || endpoint === '/'))
80
+ if (!/^\/[A-Za-z][A-Za-z0-9_/-]*$/.test(graphqlEndpoint))
131
81
  throw new Error('Invalid GraphQL endpoint');
132
- const info = normalizeOpenapiInfo(openapi.info);
82
+ const server = getObject(config.server, 'config.server') ?? {};
133
83
  assertKnownKeys(server, SERVER_KEYS, 'config.server');
134
- const openapiPath = getString(openapi.path, 'config.openapi.path');
135
- const cors = getBoolean(server.cors ?? undefined, 'config.server.cors') ?? true;
136
- const { host, port } = normalizeAddress(server);
137
84
  const logger = server.logger;
138
- const maxFileSize = getPositiveInteger(server.maxFileSize, 'config.server.maxFileSize');
139
- const pagination = normalizePagination(server);
140
- if (logger != null && typeof logger !== 'boolean' && !isObject(logger)) {
141
- throw new Error('Ключ config.server.logger должен содержать boolean или JSON-объект');
142
- }
85
+ if (logger != null && typeof logger !== 'boolean' && !isObject(logger))
86
+ throw new Error('config.server.logger must be boolean or an object');
143
87
  return {
144
- database,
145
- files,
146
- auth: normalizeAuth(config.auth, directoryPath),
147
- openapi: {
148
- enabled: openapiEnabled,
149
- endpoint: openapiEndpoint ?? '/openapi.json',
150
- path: resolveConfigPath(openapiPath, directoryPath),
151
- ...(info && { info }),
152
- },
153
- graphql: { path: resolveConfigPath(getString(graphql.path, 'config.graphql.path'), directoryPath), enabled: graphqlEnabled, endpoint: endpoint ?? '/graphql' },
88
+ storage,
89
+ database: normalizedDatabase,
90
+ files: normalizedFiles,
91
+ auth: normalizedAuth,
92
+ openapi: openapi ? { endpoint: openapiEndpoint, path: exportPath(openapi.path, 'config.openapi.path'), info: normalizeOpenapiInfo(openapi.info) } : undefined,
93
+ graphql: graphql ? { endpoint: graphqlEndpoint, path: exportPath(graphql.path, 'config.graphql.path') } : undefined,
154
94
  server: {
155
- cors,
156
- host,
95
+ ...normalizeAddress(server),
96
+ ...normalizePagination(server),
97
+ cors: getBoolean(server.cors, 'config.server.cors') ?? true,
157
98
  logger: (logger ?? true),
158
- maxFileSize: maxFileSize ?? DEFAULT_MAX_FILE_SIZE,
159
- ...pagination,
160
- port,
99
+ maxFileSize: getPositiveInteger(server.maxFileSize, 'config.server.maxFileSize') ?? DEFAULT_MAX_FILE_SIZE,
161
100
  },
162
101
  };
163
- };
164
- /** Проверяет настройки и разрешает относительные пути, не читая содержимое файлов.
165
- * @example При directoryPath = '/tmp' путь './db.json' → '/tmp/db.json'.
102
+ }
103
+ /** Нормализует объект конфигурации без чтения содержимого файлов.
104
+ * @example Путь './db.json' с directory = '/tmp' → '/tmp/db.json'.
166
105
  */
167
- export const normalizeServerConfig = (config, directoryPath) => normalizeConfig(config, directoryPath);
106
+ export const normalizeServerConfig = (config, directory) => normalizeConfig(config, directory);
168
107
  /** Загружает default-экспорт ES-модуля, обходя кеш повторного импорта; выполняет код модуля.
169
108
  * @example Файл /tmp/config.mjs с export default {} → { config: {}, directory: '/tmp', path: '/tmp/config.mjs' }.
170
109
  */
@@ -200,30 +139,4 @@ export function configure(config, directory, sourcePath) {
200
139
  sourcePaths.set(normalized, sourcePath);
201
140
  return normalized;
202
141
  }
203
- /** Выбирает настройки для указанных форматов экспорта и подставляет пустые данные вместо чтения базы.
204
- * @example formats = ['graphql'] → настройки генерации GraphQL с database.data = {}.
205
- */
206
- export function configureGeneration(source, formats, directory, sourcePath, overrides) {
207
- assertKnownKeys(source, CONFIG_KEYS, 'config');
208
- const database = getObject(source.database, 'config.database', true);
209
- if (database.schema === undefined)
210
- throw new Error('Generation requires an explicit model schema');
211
- const openapi = formats.includes('openapi');
212
- const server = openapi ? (getObject(source.server, 'config.server') ?? {}) : {};
213
- return configure({
214
- database: { data: {}, schema: database.schema, timestamps: overrides.timestamps ?? database.timestamps, softDelete: overrides.softDelete ?? database.softDelete },
215
- auth: source.auth != null ? { users: [] } : undefined,
216
- openapi: openapi ? source.openapi : undefined,
217
- graphql: formats.includes('graphql') ? source.graphql : undefined,
218
- files: openapi && (overrides.files || source.files != null) ? { data: [] } : undefined,
219
- server: openapi
220
- ? {
221
- host: overrides.host ?? server.host,
222
- port: overrides.port ?? server.port,
223
- pageSize: server.pageSize,
224
- maxPageSize: server.maxPageSize,
225
- }
226
- : {},
227
- }, directory, sourcePath);
228
- }
229
142
  //# sourceMappingURL=config.js.map