Code Monkey home page Code Monkey logo

tie's Introduction

tie's People

Contributors

dependabot-preview[bot] avatar dependabot[bot] avatar notquiteamonad avatar

Watchers

 avatar

tie's Issues

Document project using Haddock

The project should be fully documented using haddock to make it easier for new contributors.

I propose that it makes sense to do these one module at a time since none of the modules are very large, so here's the list:

  • TIE.Elm.Internal.Expression
  • TIE.Elm.Expression
  • TIE.Elm.Init
  • TIE.Elm.Ports
  • TIE.Elm.Types
  • TIE.FS
  • TIE.Lib
  • TIE.Response
  • TIE.TypeScript

Maybes in Interfaces should be optional

Currently, given an elm record type:

type alias User =
  { uid: String
  , email: Maybe String
  }

the resultant DTS will be

export interface User {
  uid: string;
  email: string | void | null;
}

This doesn't actually allow the parameters to be omitted, as the void was intended to do. Instead, the following DTS should be generated:

export interface User {
  uid: string;
  email?: string | null;
}

Support Yarn 2 without the need to unplug

Currently, to use the npm package with Yarn 2, the dependency needs to be unplugged or the binary is not found. If we can find a way to find it without unplugging that'd be preferable.

Improve error messages

There are some small steps we could take such as showing errors in red which could make a big difference to readability and usefulness of them.

Consider supporting encodings outside utf8

For example, a Japanese company may wish to use Japanese characters in an identifier. AFAIK this is allowed by Elm. It might be worth hiding this behind a flag, though, for performance reasons

Documentation

  • README
  • LICENSE
  • CONTRIBUTING etc (see samueldple/date_time)
  • CHANGELOG
  • Obsidian

Note: This issue refers to high-level documentation. For haddock documentation see #22

Support Windows

TIE does not currently support windows. Attempts to build for Windows in GitHub actions have so far failed due to a lack of the ncurses dependency. Since ncurses is for linux, I expect this is related to the use of safe-coloured-text. Therefore, I expect that a separate stack executable will be needed for Windows without that dependency.

Then again, I haven't used Windows in years and could be completely wrong, so if anyone with a bit more knowledge on this would like to help out it'd be greatly appreciated ๐Ÿ˜…

Performance/benchmarking

It would be nice to test TIE with a large Elm project and see if there are any small changes we can make to improve performance. I'm fairly new to Haskell so there could be some obvious ones a more experienced Haskeller would spot right away.

Add tuple support

Elm supports passing Tuple values such as (1, "Hello") through ports, but TIE doesn't recognise tuple types. We should add support.

Support Mac

If we can support mac through a binary releaase that'd be preferable for users. I don't have the machines or knowledge to build or test on, though, so I'll need some help from the community for this.

Make output definitions overridable

On an incoming port, it is sometimes desirable to take a string which will be converted to a sum type in Elm. Currently, TIE's generated definition will just be string for this case, but it would be nice if we could tell it to use something else such as "success" | "error"

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.