Skip to content

improved schema preprocessor and Date object handling (validation/serialization) for response bodies #499

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 33 commits into from
Dec 26, 2020

Conversation

cdimascio
Copy link
Owner

@cdimascio cdimascio commented Dec 24, 2020

see #493 for a detailed discussion on this topic

pilerou and others added 21 commits December 18, 2020 19:15
We can cast data from request to object or transform object to string (or other type) in response.
Documentation modified and an example project created
…ion. We must add an unique ID field in schema description in order to have a specific schema description for each component

+
Test added coercecomponents.spec.ts
+ example modified in order to expose a date
- Fix function names serialize and deserialize => To be clear for everybody on which functions are executed on requests and responses, it's now `deserializeRequestComponent` and `serializeResponseComponent`
@electrotype
Copy link

@cdimascio I didn't validate the code itself, but I did validate this branch in my project and it works #1, without any modification required on my side.

Fantastic work!!

@electrotype
Copy link

This is the magical line, isn't it?

(schema.type = 'object'), (schema.schemaObjectFunctions = dateTime);

:-)

@cdimascio cdimascio changed the title update schema preprocessor improved schema preprocessor and Date object handling (validation/serialization) for response bodies Dec 25, 2020
@cdimascio cdimascio merged commit e08f45a into master Dec 26, 2020
@cdimascio cdimascio deleted the cmd/alt/serdes branch September 1, 2024 04:49
cdimascio added a commit that referenced this pull request Mar 2, 2025
…erialization) for response bodies (#499)

* CoerceComponents feature as expected in #353
We can cast data from request to object or transform object to string (or other type) in response.
Documentation modified and an example project created

* Issue on Typescript Options inheritance

* Patch AJV cache integration issue. AJV has a cache by schema description. We must add an unique ID field in schema description in order to have a specific schema description for each component
+
Test added coercecomponents.spec.ts
+ example modified in order to expose a date

* Change Test name to "coercecomponents". I missed to change from the example

* - Changes `coerceComponents` to `schemaObjectMapper`
- Fix function names serialize and deserialize => To be clear for everybody on which functions are executed on requests and responses, it's now `deserializeRequestComponent` and `serializeResponseComponent`

* Move example resources `7-coerce-components` to `7-schema-object-mapper`

* update naming and type declarations

* doc: update documentation

* traverse spec

* update preprocessor

* travserse via Node abstraction

* traverse and update both schemas

* finish one pass traversal to modified req and res schemas independently

* doc: remove schemaObjectMapper from readme

* doc: remove schemaObjectMapper from README

* fix: update method name

* cleanup

* rename preprocessor

* rename var

* sample built-in date-time formatter

* fix: types

* feat: provide opt-in option responseValidation serialization

* feat: handle date and date-time

* doc: update README

* fix: add example - Date serialization in responses

* doc: update README

* feat: add date serialization example

* doc: update README

* chore: remove commented code

* feat: handle Date or date string automatically

* add format metadata to Serializer

Co-authored-by: Pierre Le Roux <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
3 participants