Coder Social home page Coder Social logo

Comments (5)

climba03003 avatar climba03003 commented on May 25, 2024

Then the question is how https://github.com/fastify/fastify/blob/6564ba9b7d8ec7c236cc16f4bf3cdb3cabff69f0/lib/schema-controller.js#L159 be even possible?

from fast-json-stringify-compiler.

remidewitte avatar remidewitte commented on May 25, 2024

Then the question is how https://github.com/fastify/fastify/blob/6564ba9b7d8ec7c236cc16f4bf3cdb3cabff69f0/lib/schema-controller.js#L159 be even possible?

I would say : https://github.com/fastify/fast-json-stringify-compiler/blob/main/standalone.js#L25

from fast-json-stringify-compiler.

climba03003 avatar climba03003 commented on May 25, 2024

But it is not imported as standalone and the two version expect different arguments.

cc @Eomm

from fast-json-stringify-compiler.

Eomm avatar Eomm commented on May 25, 2024

Let's follow the happy path:

  1. fastify starts and the user has set 1 response schema at least
  2. fastify creates the default schema controller https://github.com/fastify/fastify/blob/c90ac14c7179606bb0833447dda1b83007156fa5/fastify.js#L214
  3. while creating the schema controller, the default serializer factory is instantiated https://github.com/fastify/fastify/blob/c90ac14c7179606bb0833447dda1b83007156fa5/lib/schema-controller.js#L27C40-L27C58
  4. Here is the factory function:
    return function buildSerializerFactory (externalSchemas, serializerOpts) {
  5. Now the server is starting and fastify processes the route with the json schema
  6. Since we don't have a FJS instance, the route asks to the schema controller to build a serializer https://github.com/fastify/fastify/blob/c90ac14c7179606bb0833447dda1b83007156fa5/lib/route.js#L420
  7. The serializer is built using the factory at step 3 (interface at step 4) https://github.com/fastify/fastify/blob/c90ac14c7179606bb0833447dda1b83007156fa5/lib/schema-controller.js#L159
  8. Finally we have the compile function generated by FJS and it is used to build the serializer-function https://github.com/fastify/fastify/blob/c90ac14c7179606bb0833447dda1b83007156fa5/lib/validation.js#L35

My conclusion is that SerializerCompiler should be:

It makes sense, but porting a real test case here will solve any doubt: https://github.com/fastify/fastify/blob/main/test/schema-serialization.test.js

from fast-json-stringify-compiler.

remidewitte avatar remidewitte commented on May 25, 2024

Thanks for the fast feedback.

Indeed, in the happy path the compile function of type SerializerCompiler is called https://github.com/fastify/fastify/blob/main/lib/validation.js#L45 and https://github.com/fastify/fastify/blob/main/lib/validation.js#L45
In my opinion, it matches completely my initial suggestion.

About the real test case, as it is a js file and I am trying to solve a typing issue, I don't really understand what I could add to the PR, can you explain a bit more ?

Maybe less important httpStatus might be null : https://github.com/fastify/fastify/blob/c90ac14c7179606bb0833447dda1b83007156fa5/lib/reply.js#L382

from fast-json-stringify-compiler.

Related Issues (4)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.