New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@graphy/content.nq.read

Package Overview
Dependencies
Maintainers
2
Versions
25
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@graphy/content.nq.read - npm Package Compare versions

Comparing version 3.2.2 to 4.0.0

393

main.js

@@ -5,6 +5,4 @@

const stream = require('@graphy/core.iso.stream');
const factory = require('@graphy/core.data.factory').raw;
const factory = require('@graphy/core.data.factory');
const KT_DEFAULT_GRAPH = factory.defaultGraph();
const KT_RDFS_LANG_STRING = factory.namedNode('http://www.w3.org/1999/02/22-rdf-syntax-ns#langString');

@@ -26,2 +24,9 @@ const H_ESCAPES_JSON = {

const unescape_literal = s => JSON.parse('"'
+s
.replace(R_UNICODE_8, F_REPLACE_UNICODE_ANY)
.replace(R_ESCAPES, '$1$2') // no need to escape anything other than reserved characters
.replace(/[\t"\f\u0008]/g, s_e => H_ESCAPES_JSON[s_e])
+'"');
const R_CLEAN = /\s*(?:#[^\n]*\n\s*)*\s*/y;

@@ -35,2 +40,3 @@ const R_CLEAN_COMMENTS = /\s*(#[^\n]*\n\s*)*\s*/y;

const RT_ABSOLUTE_IRI_VALID = /^[a-z][a-z0-9+\-.]*:([^\0-\x20<>"{}|^`\\]|\\u[A-Fa-f0-9]{4}|\\U[A-Fa-f0-9]{8})*$/;
// eslint-disable-next-line no-misleading-character-class
const RT_BLANK_NODE_LABEL_VALID = /^(?:[A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u{02ff}\u{0370}-\u{037d}\u{037f}-\u{1fff}\u{200c}-\u{200d}\u{2070}-\u{218f}\u{2c00}-\u{2fef}\u{3001}-\u{d7ff}\u{f900}-\u{fdcf}\u{fdf0}-\u{fffd}\u{10000}-\u{effff}_0-9])(?:(?:[A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u{02ff}\u{0370}-\u{037d}\u{037f}-\u{1fff}\u{200c}-\u{200d}\u{2070}-\u{218f}\u{2c00}-\u{2fef}\u{3001}-\u{d7ff}\u{f900}-\u{fdcf}\u{fdf0}-\u{fffd}\u{10000}-\u{effff}_\-0-9\xb7\u{0300}-\u{036f}\u{203f}-\u{2040}.])*[A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u{02ff}\u{0370}-\u{037d}\u{037f}-\u{1fff}\u{200c}-\u{200d}\u{2070}-\u{218f}\u{2c00}-\u{2fef}\u{3001}-\u{d7ff}\u{f900}-\u{fdcf}\u{fdf0}-\u{fffd}\u{10000}-\u{effff}_\-0-9\xb7\u{0300}-\u{036f}\u{203f}-\u{2040}])?$/u;

@@ -67,2 +73,4 @@ const RT_ESCAPES_INVALID = /(?:(?:^|[^\\])(?:\\(?:\\\\)*[^"tbnrfuU\\_~.!$&'()*+,;=/?#@%-])(?:[^\\]|$))|\\u[^A-Fa-f0-9]{4}|\\U[^A-Fa-f0-9]{8}/;

this.on('pipe', (ds_input) => {
this._ds_input = ds_input;
// input stream has encoding option; ensure stream encoding is utf8

@@ -105,3 +113,4 @@ if('function' === typeof ds_input.setEncoding) {

class reader {
class Reader {
constructor(g_config) {

@@ -112,4 +121,4 @@ let {

// validate iris
validate: b_validate=false,
// relax validation
relax: b_relax=false,

@@ -120,2 +129,7 @@ // debug

// adopt factory
let dc_factory = this._dc_factory = factory.adopt(g_config.dataFactory || g_config.data_factory || factory.unfiltered);
this._f_quad = dc_factory.quad;
// fields

@@ -129,51 +143,175 @@ Object.assign(this, {

debug: b_debug,
_b_debug: b_debug,
validate: b_validate,
_b_relax: b_relax,
destroyed: false,
_b_destroyed: false,
});
this._kt_default_graph = dc_factory.defaultGraph();
this._kt_rdfs_lang_string = dc_factory.namedNode('http://www.w3.org/1999/02/22-rdf-syntax-ns#langString');
// clean regex
let r_clean = R_CLEAN;
if(g_config.relaxed) {
console.warn((new Error(`no such option 'relaxed'; did you mean 'relax' ?`)).stack.replace(/^Error:/, 'Warning:'));
}
if('validate' in g_config) {
console.warn((new Error(`option 'validate' has been removed and validation is now on by default. Use 'relax' option if you wish to disable validation.`)).stack.replace(/^Error:/, 'Warning:'));
}
// validation
Object.assign(this, b_validate
let k_self = this;
Object.assign(this, !b_relax
? {
namedNode(s_iri) {
if(!RT_ABSOLUTE_IRI_VALID.test(s_iri)) return this._error(`invalid absolute IRI: "${s_iri}"`);
return factory.namedNode(s_iri);
if(!RT_ABSOLUTE_IRI_VALID.test(s_iri)) return k_self._error(`Invalid absolute IRI: "${s_iri}"`);
return dc_factory.namedNode(s_iri);
},
blankNode(s_label) {
if(!RT_BLANK_NODE_LABEL_VALID.test(s_label)) return this._error(`invalid blank node label: "${s_label}"`);
return factory.blankNode(s_label);
if(!RT_BLANK_NODE_LABEL_VALID.test(s_label)) return k_self._error(`Invalid blank node label: "${s_label}"`);
return dc_factory.blankNode(s_label);
},
literal(s_literal, b_unescape=false) {
if(!RT_LITERAL_CONTENTS_VALID.test(s_literal)) return this._error(`invalid literal: "${s_literal}"`);
simpleLiteral(s_contents) {
if(!RT_LITERAL_CONTENTS_VALID.test(s_contents)) {
return k_self._error(`Invalid simple-literal contents: "${s_contents}"`);
}
return dc_factory.simpleLiteral(s_contents);
},
languagedLiteral(s_contents, s_language) {
if(!RT_LITERAL_CONTENTS_VALID.test(s_contents)) {
return k_self._error(`Invalid languaged-literal contents: "${s_contents}"`);
}
if(!RT_LANGUAGE_VALID.test(s_language)) {
return k_self._error(`Invalid literal language tag: ${s_language}`);
}
return dc_factory.languagedLiteral(s_contents, s_language);
},
datatypedLiteral(s_contents, p_datatype) {
if(!RT_LITERAL_CONTENTS_VALID.test(s_contents)) {
return k_self._error(`Invalid datatyped-literal contents: "${s_contents}"`);
}
return dc_factory.datatypedLiteral(s_contents, k_self.namedNode(p_datatype));
},
simpleLiteralE(s_contents) {
if(!RT_LITERAL_CONTENTS_VALID.test(s_contents)) {
return k_self._error(`Invalid simple-literal contents: "${s_contents}"`);
}
try {
return factory.literal(b_unescape? JSON.parse('"'
+s_literal
.replace(R_UNICODE_8, F_REPLACE_UNICODE_ANY)
.replace(R_ESCAPES, '$1$2') // no need to escape anything other than reserved characters
.replace(/[\t"\f\u0008]/g, s => H_ESCAPES_JSON[s])
+'"'): s_literal);
s_contents = unescape_literal(s_contents);
}
catch(e_parse) {
return this._error(`invalid string literal: "${s_literal}"`);
return this._error(`Invalid escaping within simple-literal contents: "${s_contents}"`);
}
return dc_factory.simpleLiteral(s_contents);
},
languagedLiteralE(s_contents, s_language) {
if(!RT_LITERAL_CONTENTS_VALID.test(s_contents)) {
return k_self._error(`Invalid languaged-literal contents: "${s_contents}"`);
}
if(!RT_LANGUAGE_VALID.test(s_language)) {
return k_self._error(`Invalid literal language tag: ${s_language}`);
}
try {
s_contents = unescape_literal(s_contents);
}
catch(e_parse) {
return this._error(`Invalid escaping within languaged-literal contents: "${s_contents}"`);
}
return dc_factory.languagedLiteral(s_contents, s_language);
},
datatypedLiteralE(s_contents, p_datatype) {
if(!RT_LITERAL_CONTENTS_VALID.test(s_contents)) {
return k_self._error(`Invalid datatyped-literal contents: "${s_contents}"`);
}
try {
s_contents = unescape_literal(s_contents);
}
catch(e_parse) {
return this._error(`Invalid escaping within datatyped-literal contents: "${s_contents}"`);
}
return dc_factory.datatypedLiteral(s_contents, k_self.namedNode(p_datatype));
},
}
: {
namedNode: factory.namedNode,
namedNode: dc_factory.namedNode,
blankNode: factory.blankNode,
blankNode: dc_factory.blankNode,
literal: (s_literal, b_unescape) => factory.literal(b_unescape? JSON.parse('"'
+s_literal
.replace(R_UNICODE_8, F_REPLACE_UNICODE_ANY)
.replace(R_ESCAPES, '$1$2') // no need to escape anything other than reserved characters
.replace(/[\t"\f\u0008]/g, s => H_ESCAPES_JSON[s])
+'"'): s_literal),
simpleLiteral: dc_factory.simpleLiteral,
languagedLiteral: dc_factory.languagedLiteral,
datatypedLiteral: (s_contents, p_datatype) => dc_factory.datatypedLiteral(s_contents, dc_factory.namedNode(p_datatype)),
simpleLiteralE(s_contents) {
try {
s_contents = unescape_literal(s_contents);
}
catch(e_parse) {
return this._error(`Invalid escaping within simple-literal contents: "${s_contents}"`);
}
return dc_factory.simpleLiteral(s_contents);
},
languagedLiteralE(s_contents, s_language) {
try {
s_contents = unescape_literal(s_contents);
}
catch(e_parse) {
return this._error(`Invalid escaping within languaged-literal contents: "${s_contents}"`);
}
return dc_factory.languagedLiteral(s_contents, s_language);
},
datatypedLiteralE(s_contents, p_datatype) {
try {
s_contents = unescape_literal(s_contents);
}
catch(e_parse) {
return this._error(`Invalid escaping within datatyped-literal contents: "${s_contents}"`);
}
return dc_factory.datatypedLiteral(s_contents, dc_factory.namedNode(p_datatype));
},
});

@@ -269,2 +407,7 @@

// destroy
ds_transform._destroy = (...a_args) => {
this.destroy(...a_args);
};
// data event

@@ -317,6 +460,8 @@ this.data = g_quad => ds_transform.push(g_quad);

}
ds_transform._graphy_reader = this;
}
_error(s_message) {
this.destroyed = true;
this._b_destroyed = true;
throw new Error(s_message);

@@ -344,62 +489,74 @@ }

let fk_data = this.data;
let f_quad = this._f_quad;
let namedNode = this.namedNode;
let blankNode = this.blankNode;
let simpleLiteral = this.simpleLiteral;
let languagedLiteral = this.languagedLiteral;
let datatypedLiteral = this.datatypedLiteral;
let simpleLiteralE = this.simpleLiteralE;
let languagedLiteralE = this.languagedLiteralE;
let datatypedLiteralE = this.datatypedLiteralE;
let kt_default_graph = this._kt_default_graph;
// match triples/quads
// match triples/quads
for(;;) {
// prepare sticky regex index
// prepare sticky regex index
R_QUAD_ESCAPELESS_SP.lastIndex = i;
// execute regex
// execute regex
let m_statement_e_sp = R_QUAD_ESCAPELESS_SP.exec(s);
// regex was a match
// regex was a match
if(m_statement_e_sp) {
// advance index
// advance index
i = R_QUAD_ESCAPELESS_SP.lastIndex;
// prep object term
let w_object;
// prep object term
let kt_object;
// object term type is named node
// object term type is named node
if(m_statement_e_sp[4]) {
let p_object = m_statement_e_sp[4].slice(1);
w_object = this.namedNode(p_object);
kt_object = namedNode(p_object);
}
// object term type is blank node
// object term type is blank node
else if(m_statement_e_sp[5]) {
w_object = this.blankNode(m_statement_e_sp[5]);
kt_object = blankNode(m_statement_e_sp[5]);
}
// object term type is literal
// object term type is literal
else {
// contents
w_object = this.literal(m_statement_e_sp[6], false);
// contents
let s_contents = m_statement_e_sp[6];
// set datatype if present
// set datatype if present
if(m_statement_e_sp[7]) {
w_object.datatype = this.namedNode(m_statement_e_sp[7]);
kt_object = datatypedLiteral(s_contents, m_statement_e_sp[7]);
}
// otherwise, set language tag if present
// otherwise, set language tag if present
else if(m_statement_e_sp[8]) {
let s_language = w_object.language = m_statement_e_sp[8].toLowerCase();
if(this.validate && !RT_LANGUAGE_VALID.test(s_language)) return this._error(`invalid literal language tag: ${s_language}`);
w_object.datatype = KT_RDFS_LANG_STRING;
kt_object = languagedLiteral(s_contents, m_statement_e_sp[8].toLowerCase());
}
// simple literal
else {
kt_object = simpleLiteral(s_contents);
}
}
// emit data event
// emit data event
fk_data(
factory.quad(
f_quad(
m_statement_e_sp[2]
? this.blankNode(m_statement_e_sp[2])
: this.namedNode(m_statement_e_sp[1]),
this.namedNode(m_statement_e_sp[3]),
w_object,
? blankNode(m_statement_e_sp[2])
: namedNode(m_statement_e_sp[1]),
namedNode(m_statement_e_sp[3]),
kt_object,
m_statement_e_sp[9]
? this.namedNode(m_statement_e_sp[9])
? namedNode(m_statement_e_sp[9])
: (m_statement_e_sp[10]
? this.blankNode(m_statement_e_sp[10])
? blankNode(m_statement_e_sp[10])
: ('string' === typeof m_statement_e_sp[9]
? this.namedNode(m_statement_e_sp[9])
: KT_DEFAULT_GRAPH))
)
? namedNode(m_statement_e_sp[9])
: kt_default_graph)),
),
);
// comments
// comments
if(this.emit_comments) {

@@ -410,59 +567,61 @@ this.emit_comments(m_statement_e_sp[11]);

else {
// prepare sticky regex index
// prepare sticky regex index
R_QUAD.lastIndex = i;
// execute regex
// execute regex
let m_statement = R_QUAD.exec(s);
// regex was a match
// regex was a match
if(m_statement) {
// advance index
// advance index
i = R_QUAD.lastIndex;
// prep object term
let w_object;
// prep object term
let kt_object;
// object term type is named node
// object term type is named node
if(m_statement[4]) {
let p_object = m_statement[4].slice(1);
w_object = this.namedNode(RT_HAS_ESCAPES.test(p_object)? p_object.replace(R_UNICODE_ANY, F_REPLACE_UNICODE_ANY): p_object);
kt_object = namedNode(RT_HAS_ESCAPES.test(p_object)? p_object.replace(R_UNICODE_ANY, F_REPLACE_UNICODE_ANY): p_object);
}
// object term type is blank node
// object term type is blank node
else if(m_statement[5]) {
w_object = this.blankNode(RT_HAS_ESCAPES.test(m_statement[5])? m_statement[5].replace(R_UNICODE_ANY, F_REPLACE_UNICODE_ANY): m_statement[5]);
kt_object = blankNode(RT_HAS_ESCAPES.test(m_statement[5])? m_statement[5].replace(R_UNICODE_ANY, F_REPLACE_UNICODE_ANY): m_statement[5]);
}
// object term type is literal
// object term type is literal
else {
// contents
w_object = this.literal(m_statement[6], true);
// contents
let s_contents = m_statement[6];
// set datatype if present
// set datatype if present
if(m_statement[7]) {
w_object.datatype = this.namedNode(RT_HAS_ESCAPES.test(m_statement[7])? m_statement[7].replace(R_UNICODE_ANY, F_REPLACE_UNICODE_ANY): m_statement[7]);
kt_object = datatypedLiteralE(s_contents, m_statement[7]);
}
// otherwise, set language tag if present
// otherwise, set language tag if present
else if(m_statement[8]) {
let s_language = w_object.language = m_statement[8].toLowerCase();
if(this.validate && !RT_LANGUAGE_VALID.test(s_language)) return this._error(`invalid literal language tag: ${s_language}`);
w_object.datatype = KT_RDFS_LANG_STRING;
kt_object = languagedLiteralE(s_contents, m_statement[8].toLowerCase());
}
// simple literal
else {
kt_object = simpleLiteralE(s_contents);
}
}
// emit data event
// emit data event
fk_data(
factory.quad(
f_quad(
m_statement[2]
? this.blankNode(m_statement[2])
: this.namedNode(RT_HAS_ESCAPES.test(m_statement[1])? m_statement[1].replace(R_UNICODE_ANY, F_REPLACE_UNICODE_ANY): m_statement[1]),
this.namedNode(RT_HAS_ESCAPES.test(m_statement[3])? m_statement[3].replace(R_UNICODE_ANY, F_REPLACE_UNICODE_ANY): m_statement[3]),
w_object,
? blankNode(m_statement[2])
: namedNode(RT_HAS_ESCAPES.test(m_statement[1])? m_statement[1].replace(R_UNICODE_ANY, F_REPLACE_UNICODE_ANY): m_statement[1]),
namedNode(RT_HAS_ESCAPES.test(m_statement[3])? m_statement[3].replace(R_UNICODE_ANY, F_REPLACE_UNICODE_ANY): m_statement[3]),
kt_object,
m_statement[9]
? this.namedNode(RT_HAS_ESCAPES.test(m_statement[9])? m_statement[9].replace(R_UNICODE_ANY, F_REPLACE_UNICODE_ANY): m_statement[9])
? namedNode(RT_HAS_ESCAPES.test(m_statement[9])? m_statement[9].replace(R_UNICODE_ANY, F_REPLACE_UNICODE_ANY): m_statement[9])
: (m_statement[10]
? this.blankNode(m_statement[10])
? blankNode(m_statement[10])
: ('string' === typeof m_statement[9]
? this.namedNode(RT_HAS_ESCAPES.test(m_statement[9])? m_statement[9].replace(R_UNICODE_ANY, F_REPLACE_UNICODE_ANY): m_statement[9])
: KT_DEFAULT_GRAPH))
)
? namedNode(RT_HAS_ESCAPES.test(m_statement[9])? m_statement[9].replace(R_UNICODE_ANY, F_REPLACE_UNICODE_ANY): m_statement[9])
: kt_default_graph)),
),
);
// comments
// comments
if(this.emit_comments) {

@@ -473,14 +632,14 @@ this.emit_comments(m_statement[11]);

else {
// prepare sticky regex index
// prepare sticky regex index
R_EOL.lastIndex = i;
if(R_EOL.exec(s)) {
// advance index
// advance index
this.i = R_EOL.lastIndex;
this._error(`invalid statement:\n${this.s.substr(0, 50)}\n ^ starting here`);
this._error(`Failed to read statement:\n\`${this.s.substr(i, 80).replace(/\n/g, '\u23CE')} [...]\`\n ^ starting here`);
// match counter: 2
// match counter: 2
}
else {
// break loop to retry on next chunk if eos
// break loop to retry on next chunk if eos
break;

@@ -492,5 +651,15 @@ }

// update unparsed data string
// update unparsed data string
this.s = s.substr(i);
}
destroy(e_destroy) {
this.data = () => {};
if(!e_destroy && this._ds_input) {
this._ds_input.destroy(e_destroy);
}
this.transform.demolish(e_destroy);
}
}

@@ -502,23 +671,23 @@

// at least one argument
// at least one argument
if(a_args.length) {
let z_arg_0 = a_args[0];
// string
// string
if('string' === typeof z_arg_0) {
g_config.input = {string:z_arg_0};
}
// null
// null
else if(null === z_arg_0) {
g_config.input = null;
}
// node stream
// node stream
else if('function' === typeof z_arg_0.setEncoding) {
g_config.input = {stream:z_arg_0};
}
// config struct
// config struct
else if(z_arg_0 && 'object' === typeof z_arg_0 && '[object Object]' === Object.prototype.toString.call(z_arg_0)) {
g_config = z_arg_0;
// more args; invalid
// more args; invalid
if(a_args.length > 1) {

@@ -528,3 +697,3 @@ throw new TypeError(`unexpected argument(s) after config struct: ${a_args.slice(1)}`);

}
// unknown
// unknown
else {

@@ -534,8 +703,8 @@ throw new TypeError(`unexpected input type: ${z_arg_0}`);

// more args
// more args
if(a_args.length > 1) {
// copy onto struct
// copy onto struct
Object.assign(g_config, a_args[1]);
// more args
// more args
if(a_args.length > 2) {

@@ -548,3 +717,3 @@ throw new TypeError(`unexpected argument(s) after input and config struct: ${a_args.slice(2)}`);

// create reader, return transform stream
return (new reader(g_config)).transform;
return (new Reader(g_config)).transform;
};
{
"name": "@graphy/content.nq.read",
"version": "3.2.2",
"version": "4.0.0",
"description": "Single-threaded RDF N-Quads content reader",

@@ -26,5 +26,4 @@ "keywords": [

"dependencies": {
"@graphy/core.data.factory": "^3.2.2",
"@graphy/core.iso.stream": "^3.2.2",
"uri-js": "^4.2.2"
"@graphy/core.data.factory": "^4.0.0",
"@graphy/core.iso.stream": "^4.0.0"
},

@@ -34,2 +33,2 @@ "engines": {

}
}
}
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