data-parser.d.ts 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. import {Service, ServiceContainer} from '@e22m4u/js-service';
  2. import {DataSchema, DataSchemaObject} from './data-schema.js';
  3. import {DataSchemaDefinition} from './data-schema-definition.js';
  4. /**
  5. * Data parsing option.
  6. */
  7. export type DataParsingOptions = {
  8. sourcePath?: string;
  9. shallowMode?: boolean;
  10. noDefaultValues?: boolean;
  11. noParsingErrors?: boolean;
  12. keepUnknownProperties?: boolean;
  13. };
  14. /**
  15. * Data parsing function.
  16. */
  17. export type DataParsingFunction = (
  18. value: unknown,
  19. schema: DataSchemaObject,
  20. options: DataParsingOptions | undefined,
  21. container: ServiceContainer,
  22. ) => unknown;
  23. /**
  24. * Data parser.
  25. */
  26. export declare class DataParser extends Service {
  27. /**
  28. * Get parsers.
  29. */
  30. getParsers(): DataParsingFunction[];
  31. /**
  32. * Set parsers.
  33. *
  34. * @param list
  35. */
  36. setParsers(list: DataParsingFunction[]): this;
  37. /**
  38. * Define schema.
  39. *
  40. * @param schemaDef
  41. */
  42. defineSchema(schemaDef: DataSchemaDefinition): this;
  43. /**
  44. * Has schema.
  45. *
  46. * @param schemaName
  47. */
  48. hasSchema(schemaName: string): boolean;
  49. /**
  50. * Get schema.
  51. *
  52. * @param schemaName
  53. */
  54. getSchema(schemaName: string): DataSchema;
  55. /**
  56. * Parse.
  57. *
  58. * @param value
  59. * @param schema
  60. * @param options
  61. */
  62. parse<T = any>(
  63. value: unknown,
  64. schema: DataSchema,
  65. options?: DataParsingOptions,
  66. ): T;
  67. }