A Rust implementation of ECMAScript's Temporal API

Overview

Temporal in Rust

⚠️ This crate is highly experimental and NOT stable. We cannot make any guarantee that the API will be stable until 0.1.0. Do not use in production without extreme caution ⚠️

Temporal is a calendar and timezone aware date/time library that is currently being designed and proposed as a new builtin to the ECMAScript specification.

This crate is an implementation of Temporal in Rust. While initially developed for the Boa, the crate has been externalized as we intended to make an engine agnostic and general usage implementation of Temporal and its algorithms.

Temporal Proposal

Relevent links regarding Temporal can be found below.

Temporal Documentation | Temporal Specification | Temporal Repository

Contributing

This project is open source and welcomes anyone interested to participate. Please see CONTRIBUTING.md for more information.

Communication

Feel free to contact us on Discord.

License

This project is licensed under the Apache or MIT licenses, at your option.

Comments
  • Remove keywords from Cargo.toml

    Remove keywords from Cargo.toml

    error: failed to publish to registry at https://crates.io/
    Caused by:
      the remote server responded with an error: expected at most 5 keywords per crate
    
    C-meta 
    opened by jedel1043 3
  • Implement `Duration` normalization - Part 1

    Implement `Duration` normalization - Part 1

    This draft PR is meant to eventually address #19

    Currently, this PR is small baseline changes focused on NormativeTime records and balance methods (EDIT: it also adds CalendarDateAdd functionality for the ISO8601). ~~The changes overall are pretty widespread across large sections of Duration that could really use more tests, so the plan is to come back to this once it can be tested a bit more or split it into a couple of PRs.~~

    I'm going to switch this into a normal PR from a draft. After looking through it, #19 will still need to be implemented in a couple PRs, but I think it makes more sense to break the overall update down into smaller chunks

    C-enhancement 
    opened by nekevss 2
  • Fix loop in `diff_iso_date`

    Fix loop in `diff_iso_date`

    Closes #29

    Fixes the issue that was being causing diff_iso_date to loop and notes it for the future.

    Adds the test case that was causing the initial issue.

    C-bug 
    opened by nekevss 1
  • Bug: infinite loop in `CalendarDateUntil` calculation

    Bug: infinite loop in `CalendarDateUntil` calculation

    While migrating Boa to temporal_rs in boa-dev/boa#3694, an infinite loop was discovered in the calendar.prototype.dateUntil test suite.

    Cause: most likely occurs here in the diff_iso_date function.

    Test 262 tests: The loop occurs in the largest-unit-year.js tests.

    opened by nekevss 1
  • Decide on a crate name

    Decide on a crate name

    Before publishing, we need to decide on a name for the crate.

    Proposals

    • temporal_rs
    • temporal_js
    • temporal-oxide
    • rusty-temporal
    • ecma-temporal
    • temporal4x
    C-meta 
    opened by jedel1043 1
  • Implement `Duration::round` and some general updates/fixes

    Implement `Duration::round` and some general updates/fixes

    ~~Currently a WIP.~~ EDIT: this is ready for review!

    This PR is to implement Duration::round along with some other updates and ideally basic tests as well. The hope is to have this implemented and tested so that it can be used to switch over the internal duration slots from f64 to i32. 😄

    A couple notes:

    1. I ended up switching rounding back to f64 for now / this PR. It had been u64, and my goal for the next PR is to head back in that direction. The truncation of values between integer types was causing some havoc and making debugging more difficult than it needed to be while dealing with round.
    2. Currently, the only testing is for floor rounding, but this can be added to if desired.
    C-enhancement 
    opened by nekevss 0
  • Duration Normalization - Part 2

    Duration Normalization - Part 2

    This PR is a continuation on #20 implementing the Duration normalization changes. I think this gets close to covering most a decent portion of the changes major changes. This also shifts the round_to_increment functions to i64.

    C-enhancement 
    opened by nekevss 0
  • Bump num-traits from 0.2.17 to 0.2.18

    Bump num-traits from 0.2.17 to 0.2.18

    Bumps num-traits from 0.2.17 to 0.2.18.

    Changelog

    Sourced from num-traits's changelog.

    Release 0.2.18 (2024-02-07)

    Contributors: @​andrewjradcliffe, @​cuviper, @​tarcieri, @​tdelabro, @​waywardmonkeys

    Commits
    • eb20b40 Merge pull request #309 from cuviper/release-0.2.18
    • 5c2cc9b Release 0.2.18
    • a095b70 Merge pull request #303 from tarcieri/constant-traits
    • 67d9e74 Avoid Self constructor for Wrapping
    • 6ab6de2 Update src/identities.rs
    • e48ffe2 Update src/identities.rs
    • bc42b83 Rename to ConstZero/ConstOne and re-export from toplevel
    • 536dcf2 Remove blanket impls; add impls for Wrapping
    • 06c0ee0 Add ZeroConstant and OneConstant traits
    • 29c5b46 Merge pull request #308 from cuviper/ci
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies rust 
    opened by dependabot[bot] 0
  • Build out README and CONTRIBUTING docs

    Build out README and CONTRIBUTING docs

    This PR builds out the README a tad more and adds a CONTRIBUTING.

    Let me know what you think about the wording, especially around the CONTRIBUTING doc.

    C-documentation 
    opened by nekevss 0
  • Port `boa_temporal` to new `temporal` crate

    Port `boa_temporal` to new `temporal` crate

    Porting the code over from the boa_temporal crate.

    Everything passes and builds when running cargo test. So we should be good to go! 😄 (Unless there's a cargo fmt issue from the port).

    C-meta 
    opened by nekevss 0
  • Implement `Duration` normalization

    Implement `Duration` normalization

    The proposal recently updated Duration in tc39/proposal-temporal#2722, tc39/proposal-temporal#2727, and tc39/proposal-temporal#2612. This will need to be updated accordingly.

    C-tracking-issue 
    opened by nekevss 0
  • Tracking issue for `YearMonth` component

    Tracking issue for `YearMonth` component

    Below is the functionality needed for the YearMonth component.

    • [ ] 9.3.3 get Temporal.PlainYearMonth.prototype.calendarId
    • [ ] 9.3.4 get Temporal.PlainYearMonth.prototype.year
    • [ ] 9.3.5 get Temporal.PlainYearMonth.prototype.month
    • [ ] 9.3.6 get Temporal.PlainYearMonth.prototype.monthCode
    • [ ] 9.3.7 get Temporal.PlainYearMonth.prototype.daysInYear
    • [ ] 9.3.8 get Temporal.PlainYearMonth.prototype.daysInMonth
    • [ ] 9.3.9 get Temporal.PlainYearMonth.prototype.monthsInYear
    • [ ] 9.3.10 get Temporal.PlainYearMonth.prototype.inLeapYear
    • [ ] 9.3.11 Temporal.PlainYearMonth.prototype.with ( temporalYearMonthLike [ , options ] )
    • [ ] 9.3.12 Temporal.PlainYearMonth.prototype.add ( temporalDurationLike [ , options ] )
    • [ ] 9.3.13 Temporal.PlainYearMonth.prototype.subtract ( temporalDurationLike [ , options ] )
    • [ ] 9.3.14 Temporal.PlainYearMonth.prototype.until ( other [ , options ] )
    • [ ] 9.3.15 Temporal.PlainYearMonth.prototype.since ( other [ , options ] )
    • [ ] 9.3.16 Temporal.PlainYearMonth.prototype.equals ( other )
    • [ ] 9.3.17 Temporal.PlainYearMonth.prototype.toString ( [ options ] )
    • [ ] 9.3.18 Temporal.PlainYearMonth.prototype.toLocaleString ( [ locales [ , options ] ] )
    • [ ] 9.3.19 Temporal.PlainYearMonth.prototype.toJSON ( )
    • [ ] 9.3.20 Temporal.PlainYearMonth.prototype.valueOf ( )
    • [ ] 9.3.21 Temporal.PlainYearMonth.prototype.toPlainDate ( item )
    • [ ] 9.3.22 Temporal.PlainYearMonth.prototype.getISOFields ( )
    • [ ] 9.3.23 Temporal.PlainYearMonth.prototype.getCalendar ( )
    C-tracking-issue 
    opened by nekevss 0
  • Tracking issue for the `MonthDay` component

    Tracking issue for the `MonthDay` component

    Below is the functionality needed for the MonthDay component.

    • [ ] 10.3.3 get Temporal.PlainMonthDay.prototype.calendarId
    • [ ] 10.3.4 get Temporal.PlainMonthDay.prototype.monthCode
    • [ ] 10.3.5 get Temporal.PlainMonthDay.prototype.day
    • [ ] 10.3.6 Temporal.PlainMonthDay.prototype.with ( temporalMonthDayLike [ , options ] )
    • [ ] 10.3.7 Temporal.PlainMonthDay.prototype.equals ( other )
    • [ ] 10.3.8 Temporal.PlainMonthDay.prototype.toString ( [ options ] )
    • [ ] 10.3.9 Temporal.PlainMonthDay.prototype.toLocaleString ( [ locales [ , options ] ] )
    • [ ] 10.3.10 Temporal.PlainMonthDay.prototype.toJSON ( )
    • [ ] 10.3.11 Temporal.PlainMonthDay.prototype.valueOf ( )
    • [ ] 10.3.12 Temporal.PlainMonthDay.prototype.toPlainDate ( item )
    • [ ] 10.3.13 Temporal.PlainMonthDay.prototype.getISOFields ( )
    • [ ] 10.3.14 Temporal.PlainMonthDay.prototype.getCalendar ( )
    C-tracking-issue 
    opened by nekevss 0
  • Tracking issue for `ZonedDateTime` component

    Tracking issue for `ZonedDateTime` component

    Below is the functionality needed for the ZonedDateTime component.

    • [ ] 6.3.3 get Temporal.ZonedDateTime.prototype.calendarId
    • [ ] 6.3.4 get Temporal.ZonedDateTime.prototype.timeZoneId
    • [ ] 6.3.5 get Temporal.ZonedDateTime.prototype.year
    • [ ] 6.3.6 get Temporal.ZonedDateTime.prototype.month
    • [ ] 6.3.7 get Temporal.ZonedDateTime.prototype.monthCode
    • [ ] 6.3.8 get Temporal.ZonedDateTime.prototype.day
    • [ ] 6.3.9 get Temporal.ZonedDateTime.prototype.hour
    • [ ] 6.3.10 get Temporal.ZonedDateTime.prototype.minute
    • [ ] 6.3.11 get Temporal.ZonedDateTime.prototype.second
    • [ ] 6.3.12 get Temporal.ZonedDateTime.prototype.millisecond
    • [ ] 6.3.13 get Temporal.ZonedDateTime.prototype.microsecond
    • [ ] 6.3.14 get Temporal.ZonedDateTime.prototype.nanosecond
    • [x] 6.3.15 get Temporal.ZonedDateTime.prototype.epochSeconds
    • [x] 6.3.16 get Temporal.ZonedDateTime.prototype.epochMilliseconds
    • [x] 6.3.17 get Temporal.ZonedDateTime.prototype.epochMicroseconds
    • [x] 6.3.18 get Temporal.ZonedDateTime.prototype.epochNanoseconds
    • [ ] 6.3.19 get Temporal.ZonedDateTime.prototype.dayOfWeek
    • [ ] 6.3.20 get Temporal.ZonedDateTime.prototype.dayOfYear
    • [ ] 6.3.21 get Temporal.ZonedDateTime.prototype.weekOfYear
    • [ ] 6.3.22 get Temporal.ZonedDateTime.prototype.yearOfWeek
    • [ ] 6.3.23 get Temporal.ZonedDateTime.prototype.hoursInDay
    • [ ] 6.3.24 get Temporal.ZonedDateTime.prototype.daysInWeek
    • [ ] 6.3.25 get Temporal.ZonedDateTime.prototype.daysInMonth
    • [ ] 6.3.26 get Temporal.ZonedDateTime.prototype.daysInYear
    • [ ] 6.3.27 get Temporal.ZonedDateTime.prototype.monthsInYear
    • [ ] 6.3.28 get Temporal.ZonedDateTime.prototype.inLeapYear
    • [ ] 6.3.29 get Temporal.ZonedDateTime.prototype.offsetNanoseconds
    • [ ] 6.3.30 get Temporal.ZonedDateTime.prototype.offset
    • [ ] 6.3.31 Temporal.ZonedDateTime.prototype.with ( temporalZonedDateTimeLike [ , options ] )
    • [ ] 6.3.32 Temporal.ZonedDateTime.prototype.withPlainTime ( [ plainTimeLike ] )
    • [ ] 6.3.33 Temporal.ZonedDateTime.prototype.withPlainDate ( plainDateLike )
    • [ ] 6.3.34 Temporal.ZonedDateTime.prototype.withTimeZone ( timeZoneLike )
    • [ ] 6.3.35 Temporal.ZonedDateTime.prototype.withCalendar ( calendarLike )
    • [ ] 6.3.36 Temporal.ZonedDateTime.prototype.add ( temporalDurationLike [ , options ] )
    • [ ] 6.3.37 Temporal.ZonedDateTime.prototype.subtract ( temporalDurationLike [ , options ] )
    • [ ] 6.3.38 Temporal.ZonedDateTime.prototype.until ( other [ , options ] )
    • [ ] 6.3.39 Temporal.ZonedDateTime.prototype.since ( other [ , options ] )
    • [ ] 6.3.40 Temporal.ZonedDateTime.prototype.round ( roundTo )
    • [ ] 6.3.41 Temporal.ZonedDateTime.prototype.equals ( other )
    • [ ] 6.3.42 Temporal.ZonedDateTime.prototype.toString ( [ options ] )
    • [ ] 6.3.43 Temporal.ZonedDateTime.prototype.toLocaleString ( [ locales [ , options ] ] )
    • [ ] 6.3.44 Temporal.ZonedDateTime.prototype.toJSON ( )
    • [ ] 6.3.45 Temporal.ZonedDateTime.prototype.valueOf ( )
    • [ ] 6.3.46 Temporal.ZonedDateTime.prototype.startOfDay ( )
    • [ ] 6.3.47 Temporal.ZonedDateTime.prototype.toInstant ( )
    • [ ] 6.3.48 Temporal.ZonedDateTime.prototype.toPlainDate ( )
    • [ ] 6.3.49 Temporal.ZonedDateTime.prototype.toPlainTime ( )
    • [ ] 6.3.50 Temporal.ZonedDateTime.prototype.toPlainDateTime ( )
    • [ ] 6.3.51 Temporal.ZonedDateTime.prototype.toPlainYearMonth ( )
    • [ ] 6.3.52 Temporal.ZonedDateTime.prototype.toPlainMonthDay ( )
    • [ ] 6.3.53 Temporal.ZonedDateTime.prototype.getISOFields ( )
    • [ ] 6.3.54 Temporal.ZonedDateTime.prototype.getCalendar ( )
    • [ ] 6.3.55 Temporal.ZonedDateTime.prototype.getTimeZone ( )
    C-tracking-issue 
    opened by nekevss 0
  • Tracking issue for `Instant` component

    Tracking issue for `Instant` component

    Below is the functionality needed for the Instant component.

    • [x] 8.3.3 get Temporal.Instant.prototype.epochSeconds
    • [x] 8.3.4 get Temporal.Instant.prototype.epochMilliseconds
    • [x] 8.3.5 get Temporal.Instant.prototype.epochMicroseconds
    • [x] 8.3.6 get Temporal.Instant.prototype.epochNanoseconds
    • [ ] 8.3.7 Temporal.Instant.prototype.add ( temporalDurationLike )
    • [ ] 8.3.8 Temporal.Instant.prototype.subtract ( temporalDurationLike )
    • [ ] 8.3.9 Temporal.Instant.prototype.until ( other [ , options ] )
    • [ ] 8.3.10 Temporal.Instant.prototype.since ( other [ , options ] )
    • [ ] 8.3.11 Temporal.Instant.prototype.round ( roundTo )
    • [x] 8.3.12 Temporal.Instant.prototype.equals ( other )
    • [ ] 8.3.13 Temporal.Instant.prototype.toString ( [ options ] )
    • [ ] 8.3.14 Temporal.Instant.prototype.toLocaleString ( [ locales [ , options ] ] )
    • [ ] 8.3.15 Temporal.Instant.prototype.toJSON ( )
    • [ ] 8.3.16 Temporal.Instant.prototype.valueOf ( )
    • [ ] 8.3.17 Temporal.Instant.prototype.toZonedDateTime ( item )
    • [ ] 8.3.18 Temporal.Instant.prototype.toZonedDateTimeISO ( timeZone )
    C-tracking-issue 
    opened by nekevss 0
  • Tracking issue for `Duration` component

    Tracking issue for `Duration` component

    Below is the functionality needed for the Duration component.

    • [x] 7.3.3 get Temporal.Duration.prototype.years
    • [x] 7.3.4 get Temporal.Duration.prototype.months
    • [x] 7.3.5 get Temporal.Duration.prototype.weeks
    • [x] 7.3.6 get Temporal.Duration.prototype.days
    • [x] 7.3.7 get Temporal.Duration.prototype.hours
    • [x] 7.3.8 get Temporal.Duration.prototype.minutes
    • [x] 7.3.9 get Temporal.Duration.prototype.seconds
    • [x] 7.3.10 get Temporal.Duration.prototype.milliseconds
    • [x] 7.3.11 get Temporal.Duration.prototype.microseconds
    • [x] 7.3.12 get Temporal.Duration.prototype.nanoseconds
    • [x] 7.3.13 get Temporal.Duration.prototype.sign
    • [x] 7.3.14 get Temporal.Duration.prototype.blank (implemented as is_zero)
    • [ ] 7.3.15 Temporal.Duration.prototype.with ( temporalDurationLike )
    • [x] 7.3.16 Temporal.Duration.prototype.negated ( )
    • [x] 7.3.17 Temporal.Duration.prototype.abs ( )
    • [ ] 7.3.18 Temporal.Duration.prototype.add ( other [ , options ] )
    • [ ] 7.3.19 Temporal.Duration.prototype.subtract ( other [ , options ] )
    • [ ] 7.3.20 Temporal.Duration.prototype.round ( roundTo )
    • [ ] 7.3.21 Temporal.Duration.prototype.total ( totalOf )
    • [ ] 7.3.22 Temporal.Duration.prototype.toString ( [ options ] )
    • [ ] 7.3.23 Temporal.Duration.prototype.toJSON ( )
    • [ ] 7.3.24 Temporal.Duration.prototype.toLocaleString ( [ locales [ , options ] ] )
    • [ ] 7.3.25 Temporal.Duration.prototype.valueOf ( )
    C-tracking-issue 
    opened by nekevss 0
Releases(v0.0.2)
  • v0.0.2(Mar 5, 2024)

    The second release of temporal_rs with a couple fixes!

    What's Changed

    Bug Fixes

    • Fix loop in diff_iso_date by @nekevss in https://github.com/boa-dev/temporal/pull/31

    Other Changes

    • Small parser refactor / cleanup by @nekevss in https://github.com/boa-dev/temporal/pull/30
    • Update version to 0.0.2 by @nekevss in https://github.com/boa-dev/temporal/pull/32
    • Update changelog for release v0.0.2 by @nekevss in https://github.com/boa-dev/temporal/pull/33

    Full Changelog: https://github.com/boa-dev/temporal/compare/v0.0.1...v0.0.2

    Source code(tar.gz)
    Source code(zip)
  • v0.0.1(Feb 25, 2024)

    This is the first release of the temporal_rs project.

    :warning: This crate is highly experimental and NOT stable. We cannot make any guarantee that the API will be stable until 0.1.0. Do not use in production without extreme caution :warning:

    What's Changed

    Enhancements

    • Add blank and negated + small adjustments by @nekevss in https://github.com/boa-dev/temporal/pull/17
    • Simplify Temporal APIs by @jedel1043 in https://github.com/boa-dev/temporal/pull/18
    • Implement Duration normalization - Part 1 by @nekevss in https://github.com/boa-dev/temporal/pull/20
    • Duration Normalization - Part 2 by @nekevss in https://github.com/boa-dev/temporal/pull/23
    • Add non_exhaustive attribute to component structs by @nekevss in https://github.com/boa-dev/temporal/pull/25
    • Implement Duration::round and some general updates/fixes by @nekevss in https://github.com/boa-dev/temporal/pull/24

    Documentation

    • Adding a docs directory by @nekevss in https://github.com/boa-dev/temporal/pull/16
    • Build out README and CONTRIBUTING docs by @nekevss in https://github.com/boa-dev/temporal/pull/21

    Other Changes

    • Port boa_temporal to new temporal crate by @nekevss in https://github.com/boa-dev/temporal/pull/1
    • Add CI and rename license by @jedel1043 in https://github.com/boa-dev/temporal/pull/3
    • Create LICENSE-Apache by @jedel1043 in https://github.com/boa-dev/temporal/pull/6
    • Setup publish CI by @jedel1043 in https://github.com/boa-dev/temporal/pull/26
    • Add first changelog by @jedel1043 in https://github.com/boa-dev/temporal/pull/27
    • Remove keywords from Cargo.toml by @jedel1043 in https://github.com/boa-dev/temporal/pull/28

    New Contributors

    • @nekevss made their first contribution in https://github.com/boa-dev/temporal/pull/1
    • @jedel1043 made their first contribution in https://github.com/boa-dev/temporal/pull/3

    Full Changelog: https://github.com/boa-dev/temporal/commits/v0.0.1

    Source code(tar.gz)
    Source code(zip)
Owner
Boa
Boa is an embeddable and experimental Javascript engine written in Rust. Currently, it has support for some of the language.
Boa
Rust API guidelines

Rust API guidelines This is a set of recommendations on how to design and present APIs for the Rust programming language. They are authored largely by

The Rust Programming Language 1.1k Jan 3, 2023
Rust NACL Wrapper API

Rust NACL Wrapper API NaCl (pronounced "salt") is a new easy-to-use high-speed software library for network communication, encryption, decryption, sig

Júlio César de Brito Gardona 1 Jan 19, 2022
Rust API Client for ImageKit.io a file storage and image processing service

Rust API Client for ImageKit.io a file storage and image processing service Usage You must retrieve your Public and Private Keys from the ImageKit Dev

Esteban Borai 4 Jul 31, 2022
A Rust library to interact with the MPesa API, simplifying B2C payment integrations and more.

MPesa SDK (Rust Library) A Rust library to interact with the MPesa API, simplifying B2C payment integrations and more. Features Configuration manageme

Ismael GraHms 8 Aug 23, 2023
A diffusers API in Burn (Rust)

diffusers-burn: A diffusers API in Rust/Burn ⚠️ This is still in development - contributors welcome! The diffusers-burn crate is a conversion of diffu

OxideAI 6 Nov 29, 2023
A Boring(SSL)-compatible API abstraction for Rust cryptographic implementations.

A Boring(SSL)-compatible API abstraction for Rust cryptographic implementations. What is Superboring? Superboring hides the complexity, diversity and

Frank Denis 7 Dec 29, 2023
A Simple Rust NFT API + Smart Contract

Rust NFT API Purpose Rust NFT API is a simple RESTful API developed in Rust that offers functionalities for creating, retrieving, and listing Non-Fung

Luis Soares 5 Feb 25, 2024
A node API for the dprint TypeScript and JavaScript code formatter

dprint-node A node API for the dprint TypeScript and JavaScript code formatter. It's written in Rust for blazing fast speed. Usage Pass a file path an

Devon Govett 431 Dec 24, 2022
binance API client

bian-rs 币安API Rust async SDK 完成情况 接口 现货 U本位合约 币本位合约 欧式期权 http ?? 开发中 ?? ?? 开发中 未开始 websocket ?? 开发中 ?? ?? 开发中 未开始 使用 在 Cargo.toml 中添加依赖 [dependencies]

null 28 Nov 13, 2022
Rest API to check if a password is in a data breach

easypwned (haveibeenpwned / HIBP) Rest API to check if a password is in a data breach. Works offline - everything stays on your machine! Database is i

easybill GmbH 8 Mar 16, 2022
OGC API & STAC - Proof of Concept

OAPI - POC Proof of concept (POC) to ingest geospatial datasets from MeteoSuisse into a SpatioTemporal Asset Catalog (STAC), expose as OGC API Feature

Camptocamp 32 Dec 1, 2022
A demo of the Internet Computer's Bitcoin API

Bitcoin Integration Demo A demo of the bitcoin endpoints on the Internet Computer. This demo is already deployed to the IC, so you can already try it

Islam El-Ashi 8 Jul 2, 2022
An API and test-app that exposes zcash functionality for app consumption

Zingolib This repo provides both a library for zingoproxyclient and zingo-mobile, as well as an included cli application to interact with zcashd via l

ZingoLabs 5 Dec 15, 2022
API Utility for Hive Blockchain

Apiary - Hive API Utility WIP Todo Full API Coverage Follow Rust API Guidelines: https://rust-lang.github.io/api-guidelines/about.html Implement Displ

Bora 2 Oct 22, 2022
Gnosis Safe Tx Service API client & associated tooling

Safe Transaction Service API Client Using the SDK Instantiate an API client use safe_sdk::SafeClient; /// From a chain id, by looking up hardcoded en

Nomad 3 Dec 15, 2022
Bindings to MLIR using the full C++ API

Mithril Oxide Mithril MLIR is hard to rust but we did it anyway. Rust bindings to MLIR via the C++ API. Project structure mithril-oxide: Our Rusty bin

Lambdaclass 6 Jun 10, 2023
reth-indexer reads directly from the reth db and indexes the data into a postgres database all decoded with a simple config file and no extra setup alongside exposing a API ready to query the data.

reth-indexer reth-indexer reads directly from the reth db and indexes the data into a postgres database all decoded with a simple config file and no e

Josh Stevens 306 Jul 12, 2023
A smart-contract api and client for revm

revmup A smart contract and client API for revm. Features: Auto-generate contracts that interact directly with revm without needing ethers provider Co

Dave Bryson 17 Aug 6, 2023
Bindings for the etherscan API and other block explorers.

foundry-block-explorers Bindings for the etherscan.io web API and other block explorers. Examples use ethers_core::types::Chain; use foundry_block_exp

Foundry 7 Nov 3, 2023