Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
  • Nov 25 01:45
    dependabot[bot] labeled #7
  • Nov 25 01:45
    dependabot[bot] opened #7
  • Nov 25 01:45

    dependabot[bot] on npm_and_yarn

    Bump highlight.js from 9.15.10 … (compare)

  • Nov 25 01:43
    dependabot[bot] labeled #61
  • Nov 25 01:43
    dependabot[bot] opened #61
  • Nov 25 01:43

    dependabot[bot] on npm_and_yarn

    Bump highlight.js from 9.15.10 … (compare)

  • Nov 25 01:42
    dependabot[bot] labeled #27
  • Nov 25 01:42
    dependabot[bot] opened #27
  • Nov 25 01:42

    dependabot[bot] on npm_and_yarn

    Bump highlight.js from 9.15.10 … (compare)

  • Nov 25 01:38
    dependabot[bot] labeled #9
  • Nov 25 01:38
    dependabot[bot] opened #9
  • Nov 25 01:38

    dependabot[bot] on npm_and_yarn

    Bump highlight.js from 9.15.10 … (compare)

  • Oct 19 20:39
    scott-wyatt synchronize #60
  • Oct 19 20:39

    scott-wyatt on v1.6

    fix(): fixes localized migration (compare)

  • Oct 19 19:56
    scott-wyatt synchronize #60
  • Oct 19 19:56

    scott-wyatt on v1.6

    chore(release): 1.6.18.2 (compare)

  • Oct 19 19:56

    scott-wyatt on v1.6.18.2

    (compare)

  • Oct 19 19:39
    scott-wyatt synchronize #60
  • Oct 19 19:39

    scott-wyatt on v1.6

    fix(): fixes broken version (compare)

  • Oct 19 19:38
    scott-wyatt synchronize #60
Scott B. Wyatt
@scott-wyatt
Technically, in fabrix, you can run both at the same time ;-)
Jaumard
@jaumard
why make it simple when it can be complicated :p lol
Scott B. Wyatt
@scott-wyatt
Lol. The idea is that you can version your API or run on multiple ports with different servers etc :-p
I’m able to reproduce the error you are getting, It looks like it’s realted to spool-sequelize, so I’ll have to start there
Wilson Hobbs
@wbhob
I'm working on adding strong types, thinking about using this.app.services.get(ServiceClass).whatever to get strong types. this would require importing the service to use it, which may be a pain. thoughts?
Scott B. Wyatt
@scott-wyatt
I was side baring with Wilson about this, and how I’d like to use Proxies so that the API stays the same, and the resources would actually all be in maps that can be strongly typed. However, we aren’t quite sure if there is way to strongly type this way without importing the Resource for it’s types. Which makes things kind of cumbersome…
Jaumard
@jaumard
What about a spool defining a ServiceClass called myService and another spool ServiceClass called myServices2. Does this approach will still work ? how this.app.services.get(ServiceClass) know whitch one to return ?
Wilson Hobbs
@wbhob
it could get the constructor.name to know what to return
or since it's just a class, ==
Scott B. Wyatt
@scott-wyatt
That’s a good point. Right now, Fabrix actually uses the load order of the spools as to which resource class get’s the name space and your app as the final override possibility. Trails used to say that trailpack order “doesn’t matter” which is not true when there is a conflict on names.
In Fabrix, if 2 spools have ServiceA, then the spool loaded first will live at this.app.services.ServiceA, and if you want to use ServiceA from the other spool, then you would just create api/services/ServiceA and extend the actual ServiceA you want in your app
Wilson Hobbs
@wbhob
dependency injection or more fp principles
i was talking to scott, and a more functional approach would be really nice. putting monads together to build your server app would feel really organic and readable, and have endless, simple configs. would require a big api overhaul, and saying "no" to TS's OOP stuff
Scott B. Wyatt
@scott-wyatt
It’s kind of a fine line to walk, where changing too much is better suited to being a seperate project, versus impoving the design and functionality of an existing project. Essentially, if everything would have to be overhauled to work with a compeletly new API, then it’s definately worthy of a new project. But if upgrading means that <X> amount of my code still works unchanged and then it’s definately progress on the project.
Jaumard
@jaumard
this.app.services.get(ServiceClass) doesn’t have to be a breaking changes, we can also keep this.app.services.ServiceClass working for some time and remove it after some time ^^ (in a major update)
Scott B. Wyatt
@scott-wyatt
I think my Ideal world would be using this.app.services.ServiceClass would be a trap proxy to call this.app.services.get(ServiceClass) at first. If we end up using SWIM and dgrams to distribute spools and apps, then it would need to be proxied anyways so that fabrix can figure out where that service lives and use message passing to give the service that data and await the response message, but given that we have es8’s async/await that make it a really easy migration to async method calls. Given that context, I think this.app.services.get(ServiceClass)would be great at defining APIs even when all the processes aren’t on the same machine :-)
We are kind of poised to be the “go to” for distributed node frameworks on things like Serverless clients if this ends up working lol, it could also mean that creating a non-vendor Serverless app on some sort of Kubernettis cluster would be trivial :-). Just my few cents on the direction I’m really interested in pursuing.
Jaumard
@jaumard
then the question is more how to have strong types with proxified API all hover fabrix ^^
Because adding this.app.services.get(ServiceClass) to have strong types and then losing type because it’s proxified might not worth it :)
Scott B. Wyatt
@scott-wyatt
Well, we can actually trick the compiler :-p so that it does the type definitions still. i see people doing this in C and Rust all the time lol.
Jaumard
@jaumard
if that’s possible might be the solution ^^ but I personnally don’t know TS enough lool
Scott B. Wyatt
@scott-wyatt
Typescript is amazing, until it defeats the point of having a dynamically typed language lol.
Wilson Hobbs
@wbhob
I think Proxy is generic, meaning we can get the value out of it, even if that means using an interface :P
Scott B. Wyatt
@scott-wyatt
I open sourced this https://github.com/fabrix-app/spool-pgpubsub, it turns your postgres server into a really easy pub sub for fabrix apps. cheers! @jaumard, still looking into the refactors you’re after, sorry for all the delays!
Jaumard
@jaumard
:+1: no problem :)
Jean-Vincent kassi
@jvkassi
Hello
happy new year guys
Scott B. Wyatt
@scott-wyatt
Happy new year!
Jean-Vincent kassi
@jvkassi
@scott-wyatt are you still working on fabrix ?
Scott B. Wyatt
@scott-wyatt
Most definately
Jean-Vincent kassi
@jvkassi
Great to hear !
Scott B. Wyatt
@scott-wyatt
A huge part I’m working on is drafting for a fabrix “killer app”, essentially, I want to make the idea of serverless just plain native in fabrix. We are already primed for it since we are tuple space based, and the idea of spools creating natural domain boundaries. I
I’m just doing the research to make sure this is possible, relevant, and as backwards compatable as possible :-)
Jean-Vincent kassi
@jvkassi
wow, that's huge
what are the main issues ?
Scott B. Wyatt
@scott-wyatt
Biggest problem number 1: the consensus protocol to use and the network discovery mechanism. Problem number 2: dealing with essentially everything being async and enforcing spool boundies and structs.
Jean-Vincent kassi
@jvkassi
network discovery like when using micro services ?
Scott B. Wyatt
@scott-wyatt
Sort of, but it’s more of a distributed mesh than just micro services.
Scott B. Wyatt
@scott-wyatt
So here’s really the idea for Fabrix 2.0.
Distributed computing is a no brainer for web tech, but nothing really does this substainably natively. There are languages that are great at distributed programming like erlang/elixir, but those don’t really run anywhere like JS does. Crypto Currencies are really popular, and so is the idea of world computing like Etherium or IPFS. So, what if there was a native way to really do all these?
Here’s the idea. A fabrix app can distribute it’s workload by passing off sipnets of code through a distributed network, it can also keep a immutable log of what has done what for whom. This gives it the idea that it can build relationships with different systems, essentially a currency: “you do some work for me, I’ll do some work for you, and we’ll agree how much was done for whom.” That’s the basis of a ledger, and those process logs become essentially a currency. What’s neat about this is, Fabrix is isomorphic, so it can be a browser window or a node.js server running snippets of code and it can prioritize based on the connected speed at which it can preform the operation by some naive learning. Alternatively, it can do none of things and also just run distributed in your centarlized network.
What’s wild is, because of the strucutre of Fabrix, this really isn’t super far from reality, and I’d like to focus the next year or so to do this. Fabrix isn’t super popular right now, but is still really really cool imho, so making a change really doesn’t effect many people: Is this a bad idea?
Jaumard
@jaumard
What would be those changes, I mean what would be the impact compare to the current version? And will it be still possible to do simple project non distributed as simple as now? :)
Scott B. Wyatt
@scott-wyatt
I think as simply and more reliably than now :-) the barrier to using fabrix needs to be lowered even further, which means some new docs and website etc. it’s a lot of work haha.
Jaumard
@jaumard
Doc and website are on hold since few years now no :p lol
Danilo Cabello
@cabello
Hello :wave:
I am curious about this project as I've been using Rails for a long time and I've also fallen in love with Typescript :)
I see in Upcoming Releases a plan for v2 https://fabrix.app/docs/en/about/schedule.html and also a v2 branch that is behind master, what's the status of the project? How could I help?
Scott B. Wyatt
@scott-wyatt
Hello! Fabrix is a very cool framework and happy to have you here! How did you find us if you don’t mind me asking?
For v2, i actually need to rewrite the guidance. Essentially, we’re gravitating spools to an actor model in v2, so that fabrix can easily distribute itself on a network. We’re bringing a lot of beloved elixir/Erlang methodologies to node.js in a way typescript devs can have a lot fun. We definitely need help with the fab cli for starters, because it would really help new devs to fabrix. Other places to get the hang of things would be building a spool!
Danilo Cabello
@cabello
Through Google, I was querying for web framework, typed, modern, rails :)
Jaumard
@jaumard
Hey I was wondering if fabrix had something built in for login with access token and refresh token (oauth 2), that's something I wanted to add on my trails project but nothing was available
Scott B. Wyatt
@scott-wyatt

I might be able to extract that from one of my projects and put it in a spool.

The thing about refresh tokens, is that you need a store to invalidate, which means it has to be coupled with something. So I’d have to build an adapter for different storage methods for it.

I did something similar with spool-cache, so I might be able to use that.
Jaumard
@jaumard
That right it need to store tokens… I’ve seen this one https://github.com/oauthjs/node-oauth2-server that looks pretty used and battle tested ^^ maybe interested to do a spool for it. It claim to be Fully RFC 6749 and RFC 6750 compliant which is really nice :) look like there is an express wrapper. Are you still using express or have you moved to another one ?
Scott B. Wyatt
@scott-wyatt
I use express/polka mostly still :-) that would be a good library to wrap!