npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

function-link

v0.1.5

Published

cross language functional data transfer protocol

Downloads

16

Readme

Function-Link

Cross language functional data transfer protocol

The concept is to allow one program to access a function running in another langauge. The key is to build a bridge between the two programs with a REST server, with some additional specifications for data requesting and transferring. Once properly abstracted and packaged for each of the languages, the layer of HTTP will become invisible and the exported/imported function will feel as though it lives within the program. In the future function-link will also incorporate exception handling and data compression functionalities.

Usage

Java

Exporting a function

// First parameter port, second parameter output dimension
// Third parameter function interface used
Link link = Portal.export(8080, 2,(Double[] xy)->new double[] {xy[1],xy[0]});

Typescript

Importing a function

// First parameter port, second parameter input dimension
let link = Portal.importFunc(8080, 2);
// Asynchronous access
link.get([1,-1],(val)=>{
    console.log(val);
});

REST Server

A simple rest server is to be launched by the exporting host.

  • POST requests are the protocol by which the request is formatted and the results are sent. The requests are sent in a JSON file.

Request JSON Format

{
    requestType: ["singular", "domain"];
    /**
     * If dimension is 1, at can have stand-alone
     * numbers as entries
     */
    requestDimension: number;
    /**
     * The length of this list is the dimension of the domain
     */
    range: [[start1, end1], [start2, end2],];
    /**
     * how densily sampled ar ethe data
     */
    densities: [density1, density2,];
    /**
     * if the request type is singular, the above two fields can
     * be empty and the only data needed to be supplied are the points
     * at which the value is to be found
     */
    at: [[x1, x2,], [x1, x2],];
}

Response JSON Format

{
    requestDimension: number;
    responseDimension: number;
    /**
     * at supplies the location of the data points
     */
    at: [[x1, x2,], [x1, x2],];
    /**
     * values evaluated at the target locations
     */
    values: [y1,y2,];
}