Product
Socket Now Supports uv.lock Files
Socket now supports uv.lock files to ensure consistent, secure dependency resolution for Python projects and enhance supply chain security.
@ezs/analytics
Advanced tools
Ce plugin est propose une série d'instructions pour croiser, compter, trier, agréger des flux d’objets Javascript
npm install @ezs/analytics
Aggregate by id and count
[{
{ id: 'x', value: 2 },
{ id: 't', value: 2 },
{ id: 'x', value: 3 },
{ id: 'x', value: 5 },
}]
Script:
[use]
plugin = analytics
[aggregate]
path = id
Output:
[
{ id: 'x', value: [ 2, 3, 5] },
{ id: 't', value: [ 2 ] },
]
path
String path to use for id (optional, default id
)value
String path to use for value (if not found 1 is the default value) (optional, default value
)Returns Object
Take Object
and throw special Object
like {id, value}
if key(s) was found
id is the key, value is equal to 1 (if found)
[
{
"a": "nancy",
"b": "lucy",
"c": "geny",
},
{
"a": "lorem",
"b": "loret",
},
{
"a": "fred",
}
]
Script:
[use]
plugin = analytics
[count]
path = a
path = b
path = c
[aggregate]
[summing]
Output:
[{
"id": "a",
"value": 3
},
{
"id": "b",
"value": 2
},
{
"id": "c",
"value": 1
}]
path
StringReturns Object
To compare 2 fields with 2 id and compute a distance
[{
{
id_of_a: 1,
id_of_b: 2,
a: ['x', 'y'],
b: ['x', 'z'],
},
{
id_of_a: 1,
id_of_b: 3,
a: ['x', 'y'],
b: ['y', 'z'],
},
{
id_of_a: 1,
id_of_b: 4,
a: ['x', 'y'],
b: ['z'],
},
{
id_of_a: 1,
id_of_b: 5,
a: ['x', 'y'],
b: ['x', 'y', 'z'],
},
{
id_of_a: 1,
id_of_b: 6,
a: ['x', 'y'],
b: ['x', 'y'],
},
}]
Script:
[use]
plugin = analytics
[distance]
id = id_of_a
id = id_of_b
value = a
value = b
Output:
[
{ id: [ 1, 2 ], value: 0.5 },
{ id: [ 1, 3 ], value: 0.5 },
{ id: [ 1, 4 ], value: 0 },
{ id: [ 1, 5 ], value: 0.8 },
{ id: [ 1, 6 ], value: 1 }
]
]
path
String path (optional, default value
)Returns Object
Take Object
object getting some fields with json path, and do ...
[{
{ a: 'x', b: 'z' },
{ a: 't', b: 'z' },
{ a: 't', b: 'z' },
{ a: 'x', b: 'z' },
{ a: 'x', b: 'z' },
}]
Script:
[use]
plugin = analytics
[distinct]
path = a
Output:
[
{ id: 'x', value: 1 },
{ id: 't', value: 1 },
{ id: 't', value: 1 },
{ id: 'x', value: 1 },
{ id: 'x', value: 1 },
]
path
String path (optional, default "id"
)Returns Object
Take Object
like { id, value } and throw a serie of number value
[
{ id: 2000, value: 1 },
{ id: 2001, value: 2 },
{ id: 2003, value: 3 },
{ id: 2005, value: 4 },
{ id: 2007, value: 5 },
{ id: 2009, value: 6 },
{ id: 2011, value: 7 },
{ id: 2013, value: 8 },
]
Script:
[use]
plugin = analytics
[distribute]
Output:
[
{ "id": 2000, "value": 1 },
{ "id": 2001, "value": 2 },
{ "id": 2002, "value": 0 },
{ "id": 2003, "value": 3 },
{ "id": 2004, "value": 0 },
{ "id": 2005, "value": 4 },
{ "id": 2006, "value": 0 },
{ "id": 2007, "value": 5 },
{ "id": 2008, "value": 0 },
{ "id": 2009, "value": 6 },
{ "id": 2010, "value": 0 },
{ "id": 2011, "value": 7 },
{ "id": 2012, "value": 0 },
{ "id": 2013, "value": 8 }
]
id
String path to use for id (optional, default "id"
)value
String path to use for value (optional, default "value"
)step
String step between each value (optional, default 1
)start
Number first value to throw (optional, default minvalueinthestream
)size
Number size of the distribution (optional, default (maxvalue-minvalue)inthestream
)default
Number default value for missing object (optional, default 0
)Returns Object
Take Object
and throw the same object only if there the value of the select field is not equals than a value
[
{
"departure": "nancy",
"arrival": "paris",
},
{
"departure": "nancy",
"arrival": "toul",
},
{
"departure": "paris",
"arrival": "londre",
}
]
Script:
[use]
plugin = analytics
[drop]
Output:
[{
"departure": "nancy",
"arrival": "paris"
},
{
"departure": "nancy",
"arrival": "toul"
}]
path
String path of the field to compare (optional, default "value"
)if
Number value to compare (optional, default ""
)Returns Object
Take Object
and take values with [value] path (must be an array)
and throw object of each value. The new object is build with [id] and eac value.
[
{ departure: ['tokyo', 'nancy'], arrival: 'toul' },
{ departure: ['paris', 'nancy'], arrival: 'toul' },
{ departure: ['london', 'berlin'], arrival: 'toul' },
}]
Script:
[use]
plugin = analytics
[exploding]
Output:
[
{ "id": "toul", "value": "tokyo" },
{ "id": "toul", "value": "nancy" },
{ "id": "toul", "value": "paris" },
{ "id": "toul", "value": "nancy" },
{ "id": "toul", "value": "london" },
{ "id": "toul", "value": "berlin" }
]
id
String path to use for id (optional, default "id"
)value
String path to use for value (optional, default "value"
)Returns Object
Take Object
and throw the same object only if there the value of the select field is equals than a value
[
{ id: 2000, value: 1 },
{ id: 2001, value: 2 },
{ id: 2003, value: 3 },
{ id: 2005, value: 4 },
{ id: 2007, value: 5 },
{ id: 2003, value: 3 },
{ id: 2011, value: 7 },
{ id: 2013, value: 8 },
]
Script:
[use]
plugin = analytics
[filter]
path = id
if = 2003
if = 2013
Output:
[
{ id: 2003, value: 3 },
{ id: 2003, value: 3 },
{ id: 2013, value: 8 },
]
path
String path of the field to compare (optional, default "value"
)if
Number value to compare (optional, default ""
)Returns Object
Take Object
and throw a new special object (id, value) for each combination of values
[
{ cities: ['berlin', 'nancy', 'toul'] },
{ cities: ['paris', 'nancy', 'toul']},
{ cities: ['paris', 'berlin', 'toul'] },
}]
Script:
[use]
plugin = analytics
[graph]
path = cities
Output:
[
{ "id": [ "berlin", "nancy" ], "value": 1 },
{ "id": [ "berlin", "toul" ], "value": 2 },
{ "id": [ "nancy", "toul" ], "value": 2 },
{ "id": [ "nancy", "paris" ], "value": 1 },
{ "id": [ "paris", "toul" ], "value": 2 },
{ "id": [ "berlin", "paris" ], "value": 1 }
]
path
Stringidentifier
String path to use to set value result field (if not set or not exists, 1 is use as a default value) (optional, default false
)Returns Object
Take Object
and throw the same object only if the value of the selected
field is greater (or equal) than a value
[
{ id: 2000, value: 1 },
{ id: 2001, value: 2 },
{ id: 2003, value: 3 },
{ id: 2005, value: 4 },
{ id: 2007, value: 5 },
{ id: 2009, value: 6 },
{ id: 2011, value: 7 },
{ id: 2013, value: 8 },
]
Script:
[use]
plugin = analytics
[greater]
than = 3
strict = true
Output:
[
{ id: 2005, value: 4 },
{ id: 2007, value: 5 },
{ id: 2009, value: 6 },
{ id: 2011, value: 7 },
{ id: 2013, value: 8 },
]
path
String path of the field to compare (optional, default "value"
)than
Number value to compare (optional, default 0
)strict
Boolean greater than but not equal (optional, default false
)Returns Object
Take Object
like { id, value }
and reduce all values with the same id
in a single object
[
{ "id": "lorem", "value": 1 },
{ "id": "Lorem", "value": 1 },
{ "id": "loren", "value": 1 },
{ "id": "korem", "value": 1 },
{ "id": "olrem", "value": 1 },
{ "id": "toto", "value": 1 },
{ "id": "titi", "value": 1 },
{ "id": "lorem", "value": 1 }
]
Script:
[use]
plugin = analytics
[groupingByEquality]
[summing]
Output:
[
{ "id": [ "lorem" ], "value": 2 },
{ "id": [ "Lorem" ], "value": 1 },
{ "id": [ "loren" ], "value": 1 },
{ "id": [ "korem" ], "value": 1 },
{ "id": [ "olrem" ], "value": 1 },
{ "id": [ "toto" ], "value": 1 },
{ "id": [ "titi" ], "value": 1 }
]
id
String path to use for id (optional, default id
)value
String path to use for value (optional, default value
)Returns Object
Take Object
like { id, value }
and reduce all value
with id
which
have the same Hamming distance in a single object
[
{ "id": "lorem", "value": 1 },
{ "id": "Lorem", "value": 1 },
{ "id": "loren", "value": 1 },
{ "id": "korem", "value": 1 },
{ "id": "olrem", "value": 1 },
{ "id": "toto", "value": 1 },
{ "id": "titi", "value": 1 },
{ "id": "lorem", "value": 1 }
]
Script:
[use]
plugin = analytics
[groupingByHamming]
distance = 1
[summing]
Output:
[
{ "id": [ "lorem", "Lorem", "loren", "korem" ], "value": 5 },
{ "id": [ "olrem" ], "value": 1 },
{ "id": [ "toto", "titi" ], "value": 2 }
]
id
String path to use for id (optional, default "id"
)value
String path to use for value (optional, default "value"
)Returns Object
Take Object
like { id, value }
and reduce all value
s with
id
which have the same Levenshtein distance in a single object
[
{ "id": "lorem", "value": 1 },
{ "id": "Lorem", "value": 1 },
{ "id": "loren", "value": 1 },
{ "id": "korem", "value": 1 },
{ "id": "olrem", "value": 1 },
{ "id": "toto", "value": 1 },
{ "id": "titi", "value": 1 },
{ "id": "lorem", "value": 1 }
]
Script:
[use]
plugin = analytics
[groupingByLevenshtein]
distance = 2
[summing]
Output:
[
{ "id": [ "lorem", "Lorem", "loren", "korem", "olrem" ], "value": 6 },
{ "id": [ "toto", "titi" ], "value": 2 }
]
id
String path to use for id (optional, default id
)value
String path to use for value (optional, default value
)distance
Number minimal levenshtein distance to have a same id (optional, default 1
)Returns Object
Take Object
like { id, value }
and reduce all value
s with the same
modulo computation in a ansingle object
[{
}]
Script:
[use]
plugin = analytics
[groupingByModulo]
Output:
[
]
id
String path to use for id (optional, default id
)value
String path to use for value (optional, default value
)Returns Object
Take Object
and throws all its keys
[
{ city: 'tokyo', year: 2000, count: 1 },
{ city: 'paris', year: 2001, count: 2 },
{ city: 'london', year: 2003, count: 3 },
{ city: 'nancy', year: 2005, count: 4 },
{ city: 'berlin', year: 2007, count: 5 },
{ city: 'madrid', year: 2009, count: 6 },
{ city: 'stockholm', year: 2011, count: 7 },
{ city: 'bruxelles', year: 2013, count: 8 },
]
Script:
[use]
plugin = analytics
[keys]
[aggregate]
[summing]
Output:
[
{
"id": "city",
"value": 8
},
{
"id": "year",
"value": 8
},
{
"id": "count",
"value": 8
}⏎
]
path
StringReturns Object
Take Object
and throw the same object only if the value of the selected
field is less (or equal) than a value
[{
{ id: 2000, value: 1 },
{ id: 2001, value: 2 },
{ id: 2003, value: 3 },
{ id: 2005, value: 4 },
{ id: 2007, value: 5 },
{ id: 2009, value: 6 },
{ id: 2011, value: 7 },
{ id: 2013, value: 8 },
}]
Script:
[use]
plugin = analytics
[less]
path = value
than = 4
Output:
[{
"id": 2000,
"value": 1
},
{
"id": 2001,
"value": 2
},
{
"id": 2003,
"value": 3
},
{
"id": 2005,
"value": 4
}]
path
String path of the field to compare (optional, default value
)than
Number value to compare (optional, default 0
)strict
Boolean less than but not equal (optional, default false
)Returns Object
Take special Object
like {id, value}
and replace value
with the max of value
s
[
{ id: 'toul', value: [1, 2, 3] },
{ id: 'nancy', value: [2, 3, 4] },
{ id: 'neufchateau', value: [3, 4, 5] },
]
Script:
[use]
plugin = analytics
[maximizing]
Output:
[
{ "id": "toul", "value": 3 },
{ "id": "nancy", "value": 4 },
{ "id": "neufchateau", "value": 5 }
]
id
String path to use for id (optional, default id
)value
String path to use for value (optional, default value
)Returns Object
Take special Object
like {id, value}
and replace value
with the merge of value
s
[{
}]
Script:
[use]
plugin = analytics
[merging]
Output:
[
]
id
String path to use for id (optional, default id
)value
String path to use for value (optional, default value
)Returns Object
Take special Object
like {id, value}
and replace value
with the min of
value
s
[{
}]
Script:
[use]
plugin = analytics
[drop]
Output:
[
]
id
String path to use for id (optional, default id
)value
String path to use for value (optional, default value
)Returns Object
Take Object
and throw the same object only if there the value of the select field is equals than a value
Input file:
[{
a: 1,
b: 2,
}]
Script:
[use]
plugin = analytics
[multiply]
path = factor
value = X
value = Y
value = Z
Output:
[{
a: 1,
b: 2,
factor: X
},
{
a: 1,
b: 2,
factor: Y
},
{
a: 1,
b: 2,
factor: Z
},
]
path
String path of the field to add (optional, default "factor"
)value
String value(s) to set factor field (optional, default ""
)Returns Object
Format the output with data a meta
indent
boolean indent or not (optional, default false
)meta
Array<string>? fields to be considered as metadata
objectInput
[
{ _id: 1, value: 2, total: 2 },
{ _id: 2, value: 4, total: 2 }
]
Script
.pipe(ezs('output', { meta: 'total' }))
Output
{
data: [
{ _id: 1, value: 2 },
{ _id: 2, value: 4 }
],
meta: {
total: 2
}
}
Returns string
Take Object
object getting some fields with json path, and
throw all pair of value from two fields
[
{ departure: ['tokyo', 'nancy'], arrival: 'toul' },
{ departure: ['paris', 'nancy'], arrival: 'toul' },
{ departure: ['london', 'berlin'], arrival: 'toul' },
]
Script:
[use]
plugin = analytics
[pair]
path = departure
path = arrival
Output:
[
{ "id": [ "tokyo", "toul" ], "value": 1 },
{ "id": [ "nancy", "toul" ], "value": 1 },
{ "id": [ "paris", "toul" ], "value": 1 },
{ "id": [ "nancy", "toul" ], "value": 1 },
{ "id": [ "london", "toul" ], "value": 1 },
{ "id": [ "berlin", "toul" ], "value": 1 }
]
path
StringReturns Object
Take Object
object getting value of fields (with json path
) and throws an
object for each value
[
{ city: 'tokyo', year: 2000, count: 1 },
{ city: 'paris', year: 2001, count: 2 },
{ city: 'london', year: 2003, count: 3 },
{ city: 'nancy', year: 2005, count: 4 },
{ city: 'berlin', year: 2007, count: 5 },
{ city: 'madrid', year: 2009, count: 6 },
{ city: 'stockholm', year: 2011, count: 7 },
{ city: 'bruxelles', year: 2013, count: 8 },
]
Script:
[use]
plugin = analytics
[pluck]
path = year
Output:
[
{ "id": "year", "value": 2000 },
{ "id": "year", "value": 2001 },
{ "id": "year", "value": 2003 },
{ "id": "year", "value": 2005 },
{ "id": "year", "value": 2007 },
{ "id": "year", "value": 2009 },
{ "id": "year", "value": 2011 },
{ "id": "year", "value": 2013 }
]
path
String path to use form group by (optional, default id
)Returns Object
Take Object
group value of { id, value }
objectpath
[{
{ id: 'x', value: 2 },
{ id: 't', value: 2 },
{ id: 'x', value: 3 },
{ id: 'x', value: 5 },
}]
Script:
[use]
plugin = analytics
[reducing]
Output:
[
{ id: 'x', value: [2, 3, 5] },
{ id: 't', value: [2] },
]
id
String path to use for id (optional, default id
)value
String path to use for value (optional, default value
)Returns Object
Take Object
object getting some fields with json path, and throw segment of
value. Ex: get [a,b,c]
and throw [a,b], [b,c]
[{
{
id: 'doc#1',
value: [
1,
2,
3,
4,
],
},
{
id: 'doc#2',
value: [
4,
5,
6,
],
},
{
id: 'doc#3',
value: [
6,
7,
]
},
{
id: 'doc#4',
value: [
1,
2,
3,
4,
5,
6,
7,
]
}
}]
Script:
[use]
plugin = analytics
[segment]
path = value
Output:
[
{ id: [ 1, 2 ], value: 1 }
{ id: [ 2, 3 ], value: 1 }
{ id: [ 3, 4 ], value: 1 }
{ id: [ 4, 5 ], value: 1 }
{ id: [ 5, 6 ], value: 1 }
{ id: [ 6, 7 ], value: 1 }
{ id: [ 1, 2 ], value: 1 }
{ id: [ 2, 3 ], value: 1 }
{ id: [ 3, 4 ], value: 1 }
{ id: [ 4, 5 ], value: 1 }
{ id: [ 5, 6 ], value: 1 }
{ id: [ 6, 7 ], value: 1 }
]
path
String path (optional, default value
)aggregate
Boolean aggregate all values for all paths (or not) (optional, default true
)identifier
String path to use to set value result field (if not set or not exists, 1 is use as a default value) (optional, default false
)Returns Object
Take Object
and throw the same object only if it is in the section of the
stream between start and start + size. stream is numbered from 1
[{
{ id: 2000, value: 1 },
{ id: 2001, value: 2 },
{ id: 2003, value: 3 },
{ id: 2005, value: 4 },
{ id: 2007, value: 5 },
{ id: 2009, value: 6 },
{ id: 2011, value: 7 },
{ id: 2013, value: 8 },
}]
Script:
[use]
plugin = analytics
[drop]
Output:
[
{ "id": 2001, "value": 2 },
{ "id": 2003, "value": 3 },
]
start
Number start of the slice (optional, default 0
)size
Number size of the slice (optional, default 10
)Returns Object
Take all Object
and sort them with dedicated key
[{
{ id: 2000, value: 1 },
{ id: 2001, value: 2 },
{ id: 2003, value: 3 },
{ id: 2005, value: 4 },
{ id: 2007, value: 5 },
{ id: 2009, value: 6 },
{ id: 2011, value: 7 },
{ id: 2013, value: 8 },
}]
Script:
[use]
plugin = analytics
[sort]
path = value
reverse = true
Output:
[
{ "id": 2013, "value": 8 },
{ "id": 2011, "value": 7 },
{ "id": 2009, "value": 6 },
{ "id": 2007, "value": 5 },
{ "id": 2005, "value": 4 },
{ "id": 2003, "value": 3 },
{ "id": 2001, "value": 2 },
{ "id": 2000, "value": 1 }
]
path
String path to use for id (optional, default id
)reverse
boolean reverser order (optional, default false
)Returns Object
Compute some statistics from one or more fields
path
String path of the value field (optional, default value
)target
String path of statistics in output object (optional, default _statistics
)Input
```json
[
{ a: 1, },
{ a: 1, },
{ a: 2, },
{ a: 3, },
{ a: 3, },
{ a: 3, },
]
```
Script
```ini
[use]
plugin = analytics
[statistics]
path = a
```
Output
```json
[{
"a": 1,
"stats": {
"a": {
"sample": 2,
"frequency": 1,
"percentage": 25,
"sum": 4,
"count": 3,
"min": 1,
"max": 2,
"mean": 1.3333333333333333,
"range": 1,
"midrange": 0.5,
"variance": 0.2222222222222222,
"deviation": 0.4714045207910317,
"population": 2
}
}
},
{
"a": 1,
"stats": {
"a": {
"sample": 2,
"frequency": 1,
"percentage": 25,
"sum": 4,
"count": 3,
"min": 1,
"max": 2,
"mean": 1.3333333333333333,
"range": 1,
"midrange": 0.5,
"variance": 0.2222222222222222,
"deviation": 0.4714045207910317,
"population": 2
}
}
},
{
"a": 2,
"stats": {
"a": {
"sample": 1,
"frequency": 0.5,
"percentage": 50,
"sum": 4,
"count": 3,
"min": 1,
"max": 2,
"mean": 1.3333333333333333,
"range": 1,
"midrange": 0.5,
"variance": 0.2222222222222222,
"deviation": 0.4714045207910317,
"population": 2
}
}
}]
```
Returns Object
Take special Object
like {id, value}
and replace value
with the sum of
value
s
[
{ "id": "A", "value": [1, 1, 1] },
{ "id": "B", "value": [1] },
{ "id": "C", "value": [1, 1, 1, 1] },
]
Script:
[use]
plugin = analytics
[summing]
Output:
[{
"id": "A", "value": 3
},
{
"id": "B",
"value": 1
},
{
"id": "C",
"value": 4
}]
id
String path to use for id (optional, default id
)value
String path to use for value (optional, default value
)Returns Object
Take all Object
and sort them with selected field
[{
}]
Script:
[use]
plugin = analytics
[tune]
Output:
[
]
path
String path to use for the sort key (optional, default id
)Returns Object
Take Object
object and getting the value field
[
{ id: 2000, value: 1 },
{ id: 2001, value: 2 },
{ id: 2003, value: 3 },
{ id: 2005, value: 4 },
{ id: 2007, value: 5 },
{ id: 2009, value: 6 },
{ id: 2011, value: 7 },
{ id: 2013, value: 8 },
]
Script:
[use]
plugin = analytics
[value]
path = id
Output:
[
2000,
2001,
2003,
2005,
2007,
2009,
2011,
2013
]
path
String the pah of the value field (optional, default value
)Returns Object
FAQs
Analytics statements for EZS
The npm package @ezs/analytics receives a total of 76 weekly downloads. As such, @ezs/analytics popularity was classified as not popular.
We found that @ezs/analytics demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
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.
Product
Socket now supports uv.lock files to ensure consistent, secure dependency resolution for Python projects and enhance supply chain security.
Research
Security News
Socket researchers have discovered multiple malicious npm packages targeting Solana private keys, abusing Gmail to exfiltrate the data and drain Solana wallets.
Security News
PEP 770 proposes adding SBOM support to Python packages to improve transparency and catch hidden non-Python dependencies that security tools often miss.