Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

datacraft

Package Overview
Dependencies
Maintainers
1
Versions
6
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

datacraft

LINQ-like JavaScript object query library. No dependencies. Works in all environments.

  • 0.0.14
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
6
increased by500%
Maintainers
1
Weekly downloads
 
Created
Source

Datacraft

LINQ-like JavaScript object query library. No dependencies. Works in all environments.

Work in progress, stay tuned for the upcoming 1.0.

Node.js CI Deno CI npm version MIT License NPM Downloads No dependencies

  • Works in Node.js >=4.0 (both require and import).
  • Works in Deno >=1.16.
  • Works in browsers as standalone, UMD or ES-module.
  • Includes TypeScript typings.

Quick examples:

More examples...

Installation

Node.js

npm install datacraft --save

JavaScript

// ESM Import ...
import DataSet from "datacraft";

// ... or CommonJS Require
const DataSet = require("datacraft");

TypeScript

Notes for TypeScript:

import DataSet from "datacraft";

const data : DataSet = new DataSet();

Deno

JavaScript

import DataSet from "https://deno.land/x/datacraft/src/datacraft.js";

const data = new DataSet();

TypeScript

import { DataSet } from "https://deno.land/x/datacraft/src/datacraft.js";

const _data : DataSet = new DataSet();

Browser

Manual
  • Download latest zipball
  • Unpack
  • Grab datacraft.min.js (UMD and standalone) or datacraft.min.mjs (ES-module) from the dist/ folder
CDN

To use as a UMD-module (stand alone, RequireJS etc.)

<script src="https://cdn.jsdelivr.net/npm/datacraft@0/dist/datacraft.min.js"></script>

To use as a ES-module

<script type="module">
	import DataSet from "https://cdn.jsdelivr.net/npm/datacraft@0/dist/datacraft.min.mjs";

	// ... see usage section ...
</script>

Documentation

Full documentation available at hexagon.github.io/datacraft.

The short version:

Examples

// Node 
// import { DataSet } from "datacraft";

// Deno
import DataSet from "https://deno.land/x/datacraft/src/datacraft.js";


// Set up data
let persons = new DataSet().insert([
	{name: "Curt", group: 14, age: 34},
	{name: "Lewis", group: 14, age: 38},
	{name: "Stewie", group: 15, age: 31}
]);

let groups = new DataSet().insert([
	{group: 14, name: "Western"},
	{group: 15, name: "North"}
]);

// Set up relations
let personsWithFirstGroup = persons.copy().joinFirst(groups, "groups", (p, g) => p.group == g.group);
let groupsWithAllPersons = groups.copy().join(persons, "persons", (g, p) => g.group == p.group);

// Aggregate data
groupsWithAllPersons
	.avg("persons", "averageAge", p => p.age)
	.min("persons", "maxAge", p => p.age)
	.max("persons", "minAge", p => p.age)
	.count("persons", "personCount", p => p.name);

// Print data
console.log(personsWithFirstGroup.toArray());
console.log(groupsWithAllPersons.toArray());

All methods

All methods of DataSet.

Dataset operations
MethodDescription
insert([obj1, obj2])Insert new objects into data set
update(obj, conditionCb)Update all entries matching conditionCb with properties of obj
drop(fieldName)Remove a field from all objects in data set
copy()Make a shallow copy of current data set
calc(outputFieldName, calcCb)Creates a new field, containing the return value of calcCb
autonumber(outputFieldName)Creates a new field, contaning a number that increment for each entry
Relations
MethodDescription
join(otherDataSet, newFieldName, conditionCb)Join all objects in data set with objects of another data set where conditionsCb return true
joinFirst(otherDataSet, newFieldName, conditionCb)Join first object from otherDataSet with objects in current data set
Filtering
MethodDescription
filter(conditionCb)Keep only objects matching conditionCb
toArray(conditionCb)Returns an array of all entries in current data set, optionally filtered by conditionCb
first(conditionCb)Returns the first entry if current data set, optionally filtered by conditionCb
Aggregation
MethodDescription
groupBy(groupByFieldsInput, outputFieldName)Group current dataset by field(s) specified by groupByFieldsInput
total(outputFieldName)Group current dataset, placing all entries in a new field named by parameter outputFieldName
avg(field, outputFieldName, mapCb)Average a value from entries in field specified by field, in a new field named by outputFieldName. mapCb points out which subfield should be averaged
sum(field, outputFieldName, mapCb)Like above
min(field, outputFieldName, mapCb)Like above
max(field, outputFieldName, mapCb)Like above
countd(field, outputFieldName, mapCb)Like above
count(field, outputFieldName, mapCb)Like above

Contributing

See Contribution Guide

License

MIT

Keywords

FAQs

Package last updated on 03 Apr 2022

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc