data-parser.d.ts 1.3 KB

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