7mind / idealingua-v1 Goto Github PK
View Code? Open in Web Editor NEWIdeaLingua RPC for Scala, TypeScript, C#, Go
Home Page: https://izumi.7mind.io/idealingua
License: BSD 2-Clause "Simplified" License
IdeaLingua RPC for Scala, TypeScript, C#, Go
Home Page: https://izumi.7mind.io/idealingua
License: BSD 2-Clause "Simplified" License
This can't be done until we make distage compatible with scalajs
At the moment src_managed
is being re-created on each compiler invokation.
It's completely okay, but in case someone wishes to use our code generator together with another one within the same artifact - it wouldn't work.
This is a rare case, so it's not important. Just recording for future reference.
string | Something
)I believe it's possible to design a sane approach for TS ADTs.
javax
WebSocket implementation (blocked by http4s/http4s#330)Right now we have extensions, though we can't provide them any parameters from our definitions. It's a good thing but it may be required to change it one day.
At the moment when something bad happens both client and server just times out.
We need:
HttpServer.makeResponse
to support BuzzFail
incoming messageRequestState
RPCPacketKind.RpcFail
or RPCPacketKind.BuzzFail
with ref
set we should pass the exception into RequestState
in both server and client.RN we have a lot of unsafe references like IRTServiceResult, IRTInContext, etc
We should have an IDL type for the native ByteArray/ByteString type of the target language
ServiceId + MethodId are not enough to identify an overloaded method
At the moment we don't resolve a lot of name conflicts leading to obscure error messages, like:
for
),Result
, Int
),alias UserId
and data UserID
breaks TS compiler. Most likely we should compare all the names case-insensitively during typespace verificationFeel free to extend the list
At the moment the problem is partially mitigated by prohibiting lowercase class names and IRT
prefix but that's not enough.
Seems like the correct solution would be:
NamingPolicy
to the typespace.Also most likely we may need to enrich our identifiers with language-specific identifiers, like case class ClassId(abstract: String, specific: String)
Low-prio atm, we don't have capacity
We may want to dogfood IdeaLingua's IR AST by compiling it from IdeaLingua definitions.
This would allow some novel forms of staging:
Low-prio atm, we don't have enough capacity
Related: 7mind/izumi#90
Enforcement problem: in some languages we don't have enough native types to express the concept
To be used for external API models
We wish to be able to generate several domains from just one definition: a company may wish to generate public API and internal API on the basis of just one definition.
We should be able to tag domain entities (like public
, private
) and then filter out everything what doesn't match to a specified tags during compilation
service Something {
@Map(method = "GET", path = "/smth/company/{company}/user/{i32}")
def do(company: i64, user: i32)
}
Low-prio atm, we don't have capacity
Related: 7mind/izumi#90
WorkForce
vs Workforce
https://www.joyofdata.de/blog/comparison-of-string-distance-algorithms/
We may try to generalize current design further by implementing a function computing difference between any two arbitrary structural definitions.
It would be possible to express all the narrowers, wideners and casts using this approach.
Not urgent.
Related: 7mind/izumi#215
Be careful: recursive structures
_root_
prefixRenderableProduct
and treat them as entities.We need to preserve information of entities requiring an import.
Low-prio atm, we don't have capacity
Not a critical issue for now: we have no ways to define such domains on user level.
Though it may affect 7mind/izumi#59
Faces the same enforcement problem as #43 (in some languages we don't have enough native types to express the concept)
We should add parseable descriptors into all the artifacts produced.
Related to 7mind/izumi#201
We wish to provide a way do define things like "non-empty list", "string matching regex", "integer within an interval"
Probably we should provide a way to specify arbitrary metadata and compiler extensions able to introduce custom types
Related: 7mind/izumi#90
We may implement a tool converting a JSON into a set of model drafts.
This API call:
{
"personalizations": [
{
"to": [
{
"email": "[email protected]",
"name": "John Doe"
}
],
"subject": "Hello, World!"
}
],
"from": {
"email": "[email protected]",
"name": "Sam Smith"
},
"reply_to": {
"email": "[email protected]",
"name": "Sam Smith"
}
}
may be translated into
data emailuser {
email: str
name: str
}
data emailData {
to: list[emailuser]
subject: str
}
data {
personalizations: list[emailData]
from: emailUser
reply_to: emailUser
}
This may allow us to interoperate with simple REST data providers.
Also we may convert swagger and other popular formats into our models. Kinda related: #19
We may accumulate requests in client and process them in batches.
On server side we should expose additional endpoint taking a list of identified queries.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.