@traqula/rules-sparql-1-1-adjust 0.0.16 → 0.0.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/lib/index.cjs +317 -194
  2. package/package.json +4 -4
package/lib/index.cjs CHANGED
@@ -9768,6 +9768,11 @@ var LexerBuilder = class _LexerBuilder {
9768
9768
 
9769
9769
  // ../core/lib/Transformers.js
9770
9770
  var TransformerType = class {
9771
+ clone(obj) {
9772
+ const newObj = Object.create(Object.getPrototypeOf(obj));
9773
+ Object.defineProperties(newObj, Object.getOwnPropertyDescriptors(obj));
9774
+ return newObj;
9775
+ }
9771
9776
  safeObjectVisit(value, mapper) {
9772
9777
  if (value && typeof value === "object") {
9773
9778
  if (Array.isArray(value)) {
@@ -9777,104 +9782,213 @@ var TransformerType = class {
9777
9782
  }
9778
9783
  return value;
9779
9784
  }
9780
- transformNode(curObject, nodeCallBacks) {
9781
- let continueCheck;
9782
- let transformation;
9783
- const casted = curObject;
9784
- if (casted.type) {
9785
- continueCheck = nodeCallBacks[casted.type]?.continue;
9786
- transformation = nodeCallBacks[casted.type]?.transform;
9787
- }
9788
- let shouldContinue = true;
9789
- if (continueCheck) {
9790
- shouldContinue = continueCheck(curObject);
9791
- }
9792
- if (!shouldContinue) {
9793
- return curObject;
9794
- }
9795
- const copy3 = { ...curObject };
9796
- for (const [key, value] of Object.entries(copy3)) {
9797
- copy3[key] = this.safeObjectVisit(value, (obj) => this.transformNode(obj, nodeCallBacks));
9798
- }
9799
- if (transformation) {
9800
- return transformation(copy3);
9801
- }
9802
- return copy3;
9785
+ /**
9786
+ * Recursively transforms all objects that are not arrays. Mapper is called on deeper objects first.
9787
+ * @param startObject object to start iterating from
9788
+ * @param mapper mapper to transform the various objects - argument is a copy of the original
9789
+ * @param preVisitor callback that is evaluated before iterating deeper.
9790
+ * If continues is false, we do not iterate deeper, current object is still mapped. - default: true
9791
+ * If shortcut is true, we do not iterate deeper, nor do we branch out, this mapper will be the last one called.
9792
+ * - Default false
9793
+ */
9794
+ transformObject(startObject, mapper, preVisitor = () => ({})) {
9795
+ let didShortCut = false;
9796
+ const recurse = (curObject) => {
9797
+ const copy3 = this.clone(curObject);
9798
+ const context = preVisitor(copy3);
9799
+ didShortCut = context.shortcut ?? false;
9800
+ const continues = context.continue ?? true;
9801
+ if (continues && !didShortCut) {
9802
+ for (const [key, value] of Object.entries(copy3)) {
9803
+ if (didShortCut) {
9804
+ return copy3;
9805
+ }
9806
+ copy3[key] = this.safeObjectVisit(value, (obj) => recurse(obj));
9807
+ }
9808
+ }
9809
+ return mapper(copy3);
9810
+ };
9811
+ return recurse(startObject);
9803
9812
  }
9804
- visitNode(curObject, nodeCallBacks) {
9805
- let callback;
9806
- const casted = curObject;
9807
- if (casted.type) {
9808
- callback = nodeCallBacks[casted.type];
9809
- }
9810
- let shouldIterate = true;
9811
- if (callback) {
9812
- shouldIterate = callback(curObject);
9813
- }
9814
- if (shouldIterate) {
9815
- for (const value of Object.values(curObject)) {
9816
- this.safeObjectVisit(value, (obj) => this.visitNode(obj, nodeCallBacks));
9813
+ /**
9814
+ * Visitor that visits all objects. Visits deeper objects first.
9815
+ */
9816
+ visitObject(startObject, visitor, preVisitor = () => ({})) {
9817
+ let didShortCut = false;
9818
+ const recurse = (curObject) => {
9819
+ const context = preVisitor(curObject);
9820
+ didShortCut = context.shortcut ?? false;
9821
+ const continues = context.continue ?? true;
9822
+ if (continues && !didShortCut) {
9823
+ for (const value of Object.values(curObject)) {
9824
+ if (didShortCut) {
9825
+ return;
9826
+ }
9827
+ this.safeObjectVisit(value, (obj) => recurse(obj));
9828
+ }
9817
9829
  }
9818
- }
9830
+ visitor(curObject);
9831
+ };
9832
+ recurse(startObject);
9833
+ }
9834
+ transformNode(startObject, nodeCallBacks) {
9835
+ const transformWrapper = (curObject) => {
9836
+ const casted = curObject;
9837
+ if (casted.type) {
9838
+ const ogFunc = nodeCallBacks[casted.type]?.transform;
9839
+ if (ogFunc) {
9840
+ return ogFunc(casted);
9841
+ }
9842
+ }
9843
+ return curObject;
9844
+ };
9845
+ const preTransformWrapper = (curObject) => {
9846
+ const casted = curObject;
9847
+ if (casted.type) {
9848
+ const ogFunc = nodeCallBacks[casted.type]?.preVisitor;
9849
+ if (ogFunc) {
9850
+ return ogFunc(casted);
9851
+ }
9852
+ }
9853
+ return {};
9854
+ };
9855
+ return this.transformObject(startObject, transformWrapper, preTransformWrapper);
9856
+ }
9857
+ visitNode(startObject, nodeCallBacks) {
9858
+ const visitWrapper = (curObject) => {
9859
+ const casted = curObject;
9860
+ if (casted.type) {
9861
+ const ogFunc = nodeCallBacks[casted.type]?.visitor;
9862
+ if (ogFunc) {
9863
+ ogFunc(casted);
9864
+ }
9865
+ }
9866
+ };
9867
+ const preVisitWrapper = (curObject) => {
9868
+ const casted = curObject;
9869
+ if (casted.type) {
9870
+ const ogFunc = nodeCallBacks[casted.type]?.preVisitor;
9871
+ if (ogFunc) {
9872
+ return ogFunc(casted);
9873
+ }
9874
+ }
9875
+ return {};
9876
+ };
9877
+ this.visitObject(startObject, visitWrapper, preVisitWrapper);
9878
+ }
9879
+ traverseNodes(currentNode, traverse) {
9880
+ let didShortCut = false;
9881
+ const recurse = (curNode) => {
9882
+ const traverser = traverse[curNode.type];
9883
+ if (traverser) {
9884
+ const { next, shortcut } = traverser(curNode);
9885
+ didShortCut = shortcut ?? false;
9886
+ if (!didShortCut) {
9887
+ for (const node of next ?? []) {
9888
+ if (didShortCut) {
9889
+ return;
9890
+ }
9891
+ recurse(node);
9892
+ }
9893
+ }
9894
+ }
9895
+ };
9896
+ recurse(currentNode);
9819
9897
  }
9820
9898
  };
9821
9899
  var TransformerSubType = class extends TransformerType {
9822
- // Public visitObjects(curObject: object, visitor: (current: object) => void): void {
9823
- // for (const value of Object.values(curObject)) {
9824
- // this.safeObjectVisit(value, obj => this.visitObjects(obj, visitor));
9825
- // }
9826
- // }
9827
- transformNodeSpecific(curObject, nodeCallBacks, nodeSpecificCallBacks = {}) {
9828
- let continueCheck;
9829
- let transformation;
9830
- const casted = curObject;
9831
- if (casted.type && casted.subType) {
9832
- const specific = nodeSpecificCallBacks[casted.type];
9833
- if (specific) {
9834
- continueCheck = specific[casted.subType]?.continue;
9835
- transformation = specific[casted.subType]?.transform;
9836
- }
9837
- }
9838
- let shouldContinue = true;
9839
- if (continueCheck) {
9840
- shouldContinue = continueCheck(curObject);
9841
- }
9842
- if (!shouldContinue) {
9843
- return curObject;
9844
- }
9845
- const copy3 = { ...curObject };
9846
- for (const [key, value] of Object.entries(copy3)) {
9847
- copy3[key] = this.safeObjectVisit(value, (obj) => this.transformNodeSpecific(obj, nodeCallBacks, nodeSpecificCallBacks));
9848
- }
9849
- if (transformation) {
9850
- return transformation(copy3);
9851
- }
9852
- return copy3;
9900
+ transformNodeSpecific(startObject, nodeCallBacks, nodeSpecificCallBacks) {
9901
+ const transformWrapper = (curObject) => {
9902
+ let ogTransform;
9903
+ const casted = curObject;
9904
+ if (casted.type && casted.subType) {
9905
+ const specific = nodeSpecificCallBacks[casted.type];
9906
+ if (specific) {
9907
+ ogTransform = specific[casted.subType]?.transform;
9908
+ }
9909
+ if (!ogTransform) {
9910
+ ogTransform = nodeCallBacks[casted.type]?.transform;
9911
+ }
9912
+ }
9913
+ return ogTransform ? ogTransform(casted) : curObject;
9914
+ };
9915
+ const preVisitWrapper = (curObject) => {
9916
+ let ogPreVisit;
9917
+ const casted = curObject;
9918
+ if (casted.type && casted.subType) {
9919
+ const specific = nodeSpecificCallBacks[casted.type];
9920
+ if (specific) {
9921
+ ogPreVisit = specific[casted.subType]?.preVisitor;
9922
+ }
9923
+ if (!ogPreVisit) {
9924
+ ogPreVisit = nodeCallBacks[casted.type]?.preVisitor;
9925
+ }
9926
+ }
9927
+ return ogPreVisit ? ogPreVisit(casted) : curObject;
9928
+ };
9929
+ return this.transformObject(startObject, transformWrapper, preVisitWrapper);
9853
9930
  }
9854
9931
  /**
9855
9932
  * When both nodeCallBack and NodeSpecific callBack are matched, will only look at nodeSpecifCallback
9856
9933
  */
9857
- visitNodeSpecific(curObject, nodeCallBacks, nodeSpecificCallBacks = {}) {
9858
- let callback;
9859
- const casted = curObject;
9860
- if (casted.type && casted.subType) {
9861
- const specific = nodeSpecificCallBacks[casted.type];
9862
- if (specific) {
9863
- callback = specific[casted.subType];
9934
+ visitNodeSpecific(startObject, nodeCallBacks, nodeSpecificCallBacks) {
9935
+ const visitWrapper = (curObject) => {
9936
+ let ogTransform;
9937
+ const casted = curObject;
9938
+ if (casted.type && casted.subType) {
9939
+ const specific = nodeSpecificCallBacks[casted.type];
9940
+ if (specific) {
9941
+ ogTransform = specific[casted.subType]?.visitor;
9942
+ }
9943
+ if (!ogTransform) {
9944
+ ogTransform = nodeCallBacks[casted.type]?.visitor;
9945
+ }
9864
9946
  }
9865
- }
9866
- if (!callback && casted.type) {
9867
- callback = nodeCallBacks[curObject.type];
9868
- }
9869
- let shouldIterate = true;
9870
- if (callback) {
9871
- shouldIterate = callback(curObject) ?? true;
9872
- }
9873
- if (shouldIterate) {
9874
- for (const value of Object.values(curObject)) {
9875
- this.safeObjectVisit(value, (obj) => this.visitNodeSpecific(obj, nodeCallBacks, nodeSpecificCallBacks));
9947
+ if (ogTransform) {
9948
+ ogTransform(casted);
9876
9949
  }
9877
- }
9950
+ };
9951
+ const preVisitWrapper = (curObject) => {
9952
+ let ogPreVisit;
9953
+ const casted = curObject;
9954
+ if (casted.type && casted.subType) {
9955
+ const specific = nodeSpecificCallBacks[casted.type];
9956
+ if (specific) {
9957
+ ogPreVisit = specific[casted.subType]?.preVisitor;
9958
+ }
9959
+ if (!ogPreVisit) {
9960
+ ogPreVisit = nodeCallBacks[casted.type]?.preVisitor;
9961
+ }
9962
+ }
9963
+ return ogPreVisit ? ogPreVisit(casted) : curObject;
9964
+ };
9965
+ this.visitObject(startObject, visitWrapper, preVisitWrapper);
9966
+ }
9967
+ traverseSubNodes(currentNode, traverseNode, traverseSubNode) {
9968
+ let didShortCut = false;
9969
+ const recurse = (curNode) => {
9970
+ let traverser;
9971
+ const subObj = traverseSubNode[curNode.type];
9972
+ if (subObj) {
9973
+ traverser = subObj[curNode.subType];
9974
+ }
9975
+ if (!traverser) {
9976
+ traverser = traverseNode[curNode.type];
9977
+ }
9978
+ if (traverser) {
9979
+ const { next, shortcut } = traverser(curNode);
9980
+ didShortCut = shortcut ?? false;
9981
+ if (!didShortCut) {
9982
+ for (const node of next ?? []) {
9983
+ if (didShortCut) {
9984
+ return;
9985
+ }
9986
+ recurse(node);
9987
+ }
9988
+ }
9989
+ }
9990
+ };
9991
+ recurse(currentNode);
9878
9992
  }
9879
9993
  };
9880
9994
 
@@ -10080,6 +10194,44 @@ var graph = createToken2({ name: "Graph", pattern: /graph/i, label: "GRAPH" });
10080
10194
  var graphAll = createToken2({ name: "GraphAll", pattern: /all/i, label: "ALL" });
10081
10195
  var allGraphTokens = LexerBuilder.create().add(named, default_, graph, graphAll);
10082
10196
 
10197
+ // ../rules-sparql-1-1/lib/lexer/lexerPatterns.js
10198
+ var pnCharsBasePattern = /[A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]|[\uD800-\uDB7F][\uDC00-\uDFFF]/;
10199
+ var pnCharsUPattern = new RegExp(`${pnCharsBasePattern.source}|_`);
10200
+ var varNamePattern = new RegExp(`((${pnCharsUPattern.source})|[0-9])((${pnCharsUPattern.source})|[0-9]|[\xB7\u0300-\u036F\u203F-\u2040])*`);
10201
+ var iriRefPattern = /<([^\u0000-\u0020"<>\\^`{|}])*>/;
10202
+ var pnCharsPattern = new RegExp(`(${pnCharsUPattern.source})|[\\-0-9\xB7\u0300-\u036F\u203F-\u2040]`);
10203
+ var pnPrefixPattern = new RegExp(`(${pnCharsBasePattern.source})(((${pnCharsPattern.source})|\\.)*(${pnCharsPattern.source}))?`);
10204
+ var pNameNsPattern = new RegExp(`(${pnPrefixPattern.source})?:`);
10205
+ var percentPattern = /%[\dA-Fa-f]{2}/;
10206
+ var pnLocalEscPattern = /\\[!#$%&'()*+,./;=?@\\_~-]/;
10207
+ var plxPattern = new RegExp(`(${percentPattern.source})|(${pnLocalEscPattern.source})`);
10208
+ var pnLocalPattern = new RegExp(`((${pnCharsUPattern.source})|:|[0-9]|(${plxPattern.source}))(((${pnCharsPattern.source})|\\.|:|(${plxPattern.source}))*((${pnCharsPattern.source})|:|(${plxPattern.source})))?`);
10209
+ var pNameLnPattern = new RegExp(`(${pNameNsPattern.source})(${pnLocalPattern.source})`);
10210
+ var blankNodeLabelPattern = new RegExp(`_:((${pnCharsUPattern.source})|[0-9])(((${pnCharsPattern.source})|\\.)*(${pnCharsPattern.source}))?`);
10211
+ var var1Pattern = new RegExp(`\\?(${varNamePattern.source})`);
10212
+ var var2Pattern = new RegExp(`\\$(${varNamePattern.source})`);
10213
+ var langTagPattern = /@[A-Za-z]+(-[\dA-Za-z]+)*/;
10214
+ var integerPattern = /\d+/;
10215
+ var decimalPattern2 = /\d+\.\d+/;
10216
+ var exponentPattern = /[Ee][+-]?\d+/;
10217
+ var doublePattern = new RegExp(`([0-9]+\\.[0-9]*(${exponentPattern.source}))|(\\.[0-9]+(${exponentPattern.source}))|([0-9]+(${exponentPattern.source}))`);
10218
+ var interferePositivePattern = new RegExp(`\\+${integerPattern.source}`);
10219
+ var decimalPositivePattern = new RegExp(`\\+${decimalPattern2.source}`);
10220
+ var doublePositivePattern = new RegExp(`\\+${doublePattern.source}`);
10221
+ var integerNegativePattern = new RegExp(`-${integerPattern.source}`);
10222
+ var decimalNegativePattern = new RegExp(`-${decimalPattern2.source}`);
10223
+ var doubleNegativePattern = new RegExp(`-${doublePattern.source}`);
10224
+ var echarPattern = /\\[\\"'bfnrt]/u;
10225
+ var stringLiteral1Pattern = new RegExp(`'(([^\\u0027\\u005C\\u000A\r])|(${echarPattern.source}))*'`);
10226
+ var stringLiteral2Pattern = new RegExp(`"(([^\\u0022\\u005C\\u000A\\u000D])|(${echarPattern.source}))*"`);
10227
+ var stringLiteralLong1Pattern = new RegExp(`'''(('|(''))?([^'\\\\]|(${echarPattern.source})))*'''`);
10228
+ var stringLiteralLong2Pattern = new RegExp(`"""(("|(""))?([^"\\\\]|(${echarPattern.source})))*"""`);
10229
+ var wsPattern = /[\u0009\u000A\u000D ]/;
10230
+ var nilPattern = new RegExp(`\\((${wsPattern.source})*\\)`);
10231
+ var anonPattern = new RegExp(`\\[(${wsPattern.source})*\\]`);
10232
+ var commentPattern = /#[^\n]*\n/;
10233
+ var atLeastOneBlankPattern = new RegExp(`((${wsPattern.source}+)|(${commentPattern.source}))+`);
10234
+
10083
10235
  // ../rules-sparql-1-1/lib/lexer/symbols.js
10084
10236
  var symbols_exports = {};
10085
10237
  __export(symbols_exports, {
@@ -10168,40 +10320,6 @@ __export(terminals_exports, {
10168
10320
  var2: () => var2,
10169
10321
  ws: () => ws
10170
10322
  });
10171
- var pnCharsBasePattern = /[A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]|[\uD800-\uDB7F][\uDC00-\uDFFF]/;
10172
- var pnCharsUPattern = new RegExp(`${pnCharsBasePattern.source}|_`);
10173
- var varNamePattern = new RegExp(`((${pnCharsUPattern.source})|[0-9])((${pnCharsUPattern.source})|[0-9]|[\xB7\u0300-\u036F\u203F-\u2040])*`);
10174
- var iriRefPattern = /<([^\u0000-\u0020"<>\\^`{|}])*>/;
10175
- var pnCharsPattern = new RegExp(`(${pnCharsUPattern.source})|[\\-0-9\xB7\u0300-\u036F\u203F-\u2040]`);
10176
- var pnPrefixPattern = new RegExp(`(${pnCharsBasePattern.source})(((${pnCharsPattern.source})|\\.)*(${pnCharsPattern.source}))?`);
10177
- var pNameNsPattern = new RegExp(`(${pnPrefixPattern.source})?:`);
10178
- var percentPattern = /%[\dA-Fa-f]{2}/;
10179
- var pnLocalEscPattern = /\\[!#$%&'()*+,./;=?@\\_~-]/;
10180
- var plxPattern = new RegExp(`(${percentPattern.source})|(${pnLocalEscPattern.source})`);
10181
- var pnLocalPattern = new RegExp(`((${pnCharsUPattern.source})|:|[0-9]|(${plxPattern.source}))(((${pnCharsPattern.source})|\\.|:|(${plxPattern.source}))*((${pnCharsPattern.source})|:|(${plxPattern.source})))?`);
10182
- var pNameLnPattern = new RegExp(`(${pNameNsPattern.source})(${pnLocalPattern.source})`);
10183
- var blankNodeLabelPattern = new RegExp(`_:((${pnCharsUPattern.source})|[0-9])(((${pnCharsPattern.source})|\\.)*(${pnCharsPattern.source}))?`);
10184
- var var1Pattern = new RegExp(`\\?(${varNamePattern.source})`);
10185
- var var2Pattern = new RegExp(`\\$(${varNamePattern.source})`);
10186
- var langTagPattern = /@[A-Za-z]+(-[\dA-Za-z]+)*/;
10187
- var integerPattern = /\d+/;
10188
- var decimalPattern2 = /\d+\.\d+/;
10189
- var exponentPattern = /[Ee][+-]?\d+/;
10190
- var doublePattern = new RegExp(`([0-9]+\\.[0-9]*(${exponentPattern.source}))|(\\.[0-9]+(${exponentPattern.source}))|([0-9]+(${exponentPattern.source}))`);
10191
- var interferePositivePattern = new RegExp(`\\+${integerPattern.source}`);
10192
- var decimalPositivePattern = new RegExp(`\\+${decimalPattern2.source}`);
10193
- var doublePositivePattern = new RegExp(`\\+${doublePattern.source}`);
10194
- var integerNegativePattern = new RegExp(`-${integerPattern.source}`);
10195
- var decimalNegativePattern = new RegExp(`-${decimalPattern2.source}`);
10196
- var doubleNegativePattern = new RegExp(`-${doublePattern.source}`);
10197
- var echarPattern = /\\[\\"'bfnrt]/u;
10198
- var stringLiteral1Pattern = new RegExp(`'(([^\\u0027\\u005C\\u000A\r])|(${echarPattern.source}))*'`);
10199
- var stringLiteral2Pattern = new RegExp(`"(([^\\u0022\\u005C\\u000A\\u000D])|(${echarPattern.source}))*"`);
10200
- var stringLiteralLong1Pattern = new RegExp(`'''(('|(''))?([^'\\\\]|(${echarPattern.source})))*'''`);
10201
- var stringLiteralLong2Pattern = new RegExp(`"""(("|(""))?([^"\\\\]|(${echarPattern.source})))*"""`);
10202
- var wsPattern = /[\u0009\u000A\u000D ]/;
10203
- var nilPattern = new RegExp(`\\((${wsPattern.source})*\\)`);
10204
- var anonPattern = new RegExp(`\\[(${wsPattern.source})*\\]`);
10205
10323
  var iriRef = createToken2({ name: "IriRef", pattern: iriRefPattern });
10206
10324
  var pNameLn = createToken2({ name: "PNameLn", pattern: pNameLnPattern });
10207
10325
  var pNameNs = createToken2({ name: "PNameNs", pattern: pNameNsPattern, longer_alt: [pNameLn] });
@@ -10223,7 +10341,7 @@ var stringLiteral2 = createToken2({ name: "StringLiteral2", pattern: stringLiter
10223
10341
  var stringLiteralLong1 = createToken2({ name: "StringLiteralLong1", pattern: stringLiteralLong1Pattern });
10224
10342
  var stringLiteralLong2 = createToken2({ name: "StringLiteralLong2", pattern: stringLiteralLong2Pattern });
10225
10343
  var ws = createToken2({ name: "Ws", pattern: wsPattern, group: Lexer.SKIPPED });
10226
- var comment = createToken2({ name: "Comment", pattern: /#[^\n]*/, group: Lexer.SKIPPED });
10344
+ var comment = createToken2({ name: "Comment", pattern: commentPattern, group: Lexer.SKIPPED });
10227
10345
  var nil = createToken2({ name: "Nil", pattern: nilPattern });
10228
10346
  var anon = createToken2({ name: "Anon", pattern: anonPattern });
10229
10347
  var allTerminals = LexerBuilder.create().add(iriRef, pNameNs, pNameLn, blankNodeLabel, var1, var2, langTag, double, decimal, integer, integerPositive, decimalPositive, doublePositive, integerNegative, decimalNegative, doubleNegative, stringLiteralLong1, stringLiteralLong2, stringLiteral1, stringLiteral2, ws, comment, nil, anon);
@@ -10260,9 +10378,23 @@ var to = createToken2({ name: "To", pattern: /to/i, label: "TO" });
10260
10378
  var move = createToken2({ name: "Move", pattern: /move/i, label: "MOVE" });
10261
10379
  var copy = createToken2({ name: "Copy", pattern: /copy/i, label: "COPY" });
10262
10380
  var modifyWith = createToken2({ name: "ModifyWith", pattern: /with/i, label: "WITH" });
10381
+ var deleteDataClause = createToken2({
10382
+ name: "DeleteDataClause",
10383
+ pattern: new RegExp(`delete(${atLeastOneBlankPattern.source})data`, "i"),
10384
+ label: "DELETE DATA"
10385
+ });
10386
+ var deleteWhereClause = createToken2({
10387
+ name: "DeleteWhereClause",
10388
+ pattern: new RegExp(`delete(${atLeastOneBlankPattern.source})where`, "i"),
10389
+ label: "DELETE WHERE"
10390
+ });
10263
10391
  var deleteClause = createToken2({ name: "DeleteClause", pattern: /delete/i, label: "DELETE" });
10264
- var insertClause = createToken2({ name: "InsertClause", pattern: /insert/i, label: "INSERT" });
10265
- var dataClause = createToken2({ name: "DataClause", pattern: /data/i, label: "DATA", longer_alt: datatype });
10392
+ var insertDataClause = createToken2({
10393
+ name: "InsertDataClause",
10394
+ pattern: new RegExp(`insert(${atLeastOneBlankPattern.source})data`, "i"),
10395
+ label: "INSERT DATA"
10396
+ });
10397
+ var insertClause = createToken2({ name: "InsertClause", pattern: /insert/i, label: "insert" });
10266
10398
  var usingClause = createToken2({ name: "UsingClause", pattern: /using/i, label: "USING" });
10267
10399
  var optional = createToken2({ name: "Optional", pattern: /optional/i, label: "OPTIONAL" });
10268
10400
  var service = createToken2({ name: "Service", pattern: /service/i, label: "SERVICE" });
@@ -10277,8 +10409,8 @@ var false_ = createToken2({ name: "False", pattern: /false/i, label: "false" });
10277
10409
  var in_ = createToken2({ name: "In", pattern: /in/i, label: "IN" });
10278
10410
  var notIn = createToken2({ name: "NotIn", pattern: /not[\u0020\u0009\u000D\u000A]+in/i, label: "NOT IN" });
10279
10411
  var separator = createToken2({ name: "Separator", pattern: /separator/i, label: "SEPARATOR" });
10280
- var allBaseTokens = LexerBuilder.create().add(baseDecl, prefixDecl, select, distinct, reduced, construct, describe, ask, from, where, having, groupByGroup, by, order, orderAsc, orderDesc, limit, offset, values2, load, silent, loadInto, clear, drop2, create, add, to, move, copy, modifyWith, deleteClause, insertClause, dataClause, usingClause, optional, service, bind, undef, minus, union, filter2, as, a, true_, false_, in_, notIn, separator);
10281
- var sparql11LexerBuilder = LexerBuilder.create(allTerminals).merge(allBaseTokens).merge(allBuiltInCalls).merge(allGraphTokens).merge(allSymbols).moveBefore(datatype, dataClause).moveAfter(avg, a).moveBefore(a, graphAll).moveAfter(groupConcat, groupByGroup);
10412
+ var allBaseTokens = LexerBuilder.create().add(baseDecl, prefixDecl, select, distinct, reduced, construct, describe, ask, from, where, having, groupByGroup, by, order, orderAsc, orderDesc, limit, offset, values2, load, silent, loadInto, clear, drop2, create, add, to, move, copy, modifyWith, deleteWhereClause, deleteDataClause, deleteClause, insertDataClause, insertClause, usingClause, optional, service, bind, undef, minus, union, filter2, as, a, true_, false_, in_, notIn, separator);
10413
+ var sparql11LexerBuilder = LexerBuilder.create(allTerminals).merge(allBaseTokens).merge(allBuiltInCalls).merge(allGraphTokens).merge(allSymbols).moveAfter(avg, a).moveBefore(a, graphAll).moveAfter(groupConcat, groupByGroup);
10282
10414
 
10283
10415
  // ../rules-sparql-1-1/lib/factoryMixins/ContextFactory.js
10284
10416
  var nodeType = "contextDef";
@@ -11023,12 +11155,12 @@ var CommonIRIs;
11023
11155
  CommonIRIs2["NIL"] = "http://www.w3.org/1999/02/22-rdf-syntax-ns#nil";
11024
11156
  CommonIRIs2["TYPE"] = "http://www.w3.org/1999/02/22-rdf-syntax-ns#type";
11025
11157
  })(CommonIRIs || (CommonIRIs = {}));
11026
- var TransformerSparql11 = class extends TransformerSubType {
11158
+ var AstTransformer = class extends TransformerSubType {
11027
11159
  };
11028
11160
 
11029
11161
  // ../rules-sparql-1-1/lib/validation/validators.js
11030
11162
  var F = new AstFactory();
11031
- var transformer = new TransformerSparql11();
11163
+ var transformer = new AstTransformer();
11032
11164
  function getAggregatesOfExpression(expression2) {
11033
11165
  if (F.isExpressionAggregate(expression2)) {
11034
11166
  return [expression2];
@@ -11107,77 +11239,69 @@ function queryIsGood(query2) {
11107
11239
  }
11108
11240
  }
11109
11241
  }
11242
+ function notUndefined(some2) {
11243
+ return some2 !== void 0;
11244
+ }
11110
11245
  function findPatternBoundedVars(iter, boundedVars) {
11111
- if (F.isQuery(iter) || F.isUpdate(iter)) {
11112
- if (F.isQuerySelect(iter) || F.isQueryDescribe(iter)) {
11113
- if (iter.where && iter.variables.some((x) => F.isWildcard(x))) {
11114
- findPatternBoundedVars(iter.where, boundedVars);
11115
- } else {
11116
- for (const v of iter.variables) {
11117
- findPatternBoundedVars(v, boundedVars);
11118
- }
11119
- }
11120
- if (iter.solutionModifiers.group) {
11121
- const grouping = iter.solutionModifiers.group;
11122
- for (const g of grouping.groupings) {
11123
- if ("variable" in g) {
11124
- findPatternBoundedVars(g.variable, boundedVars);
11125
- }
11126
- }
11127
- }
11128
- if (iter.values?.values && iter.values.values.length > 0) {
11129
- const values3 = iter.values.values;
11130
- for (const v of Object.keys(values3[0])) {
11246
+ transformer.traverseSubNodes(iter, {
11247
+ query: (op) => ({ next: [
11248
+ op.solutionModifiers.group
11249
+ ].filter(notUndefined) }),
11250
+ triple: (op) => ({ next: [op.subject, op.predicate, op.object] }),
11251
+ path: (op) => ({ next: op.items }),
11252
+ tripleCollection: (op) => ({ next: [op.identifier, ...op.triples] })
11253
+ }, {
11254
+ query: {
11255
+ select: (op) => ({ next: [
11256
+ ...op.variables.some((x) => F.isWildcard(x)) ? [op.where] : op.variables,
11257
+ op.solutionModifiers.group,
11258
+ op.values
11259
+ ].filter(notUndefined) }),
11260
+ describe: (op) => ({ next: [
11261
+ ...op.variables.some((x) => F.isWildcard(x)) ? [op.where] : op.variables,
11262
+ op.solutionModifiers.group,
11263
+ op.values
11264
+ ].filter(notUndefined) })
11265
+ },
11266
+ solutionModifier: {
11267
+ group: (op) => ({
11268
+ next: op.groupings.filter((g) => "variable" in g).map((x) => x.variable)
11269
+ }),
11270
+ having: (op) => ({ next: op.having }),
11271
+ order: (op) => ({ next: op.orderDefs.map((x) => x.expression) })
11272
+ },
11273
+ pattern: {
11274
+ values: (op) => {
11275
+ for (const v of Object.keys(op.values.at(0) ?? {})) {
11131
11276
  boundedVars.add(v);
11132
11277
  }
11278
+ return {};
11279
+ },
11280
+ bgp: (op) => ({ next: op.triples }),
11281
+ group: (op) => ({ next: op.patterns }),
11282
+ union: (op) => ({ next: op.patterns }),
11283
+ optional: (op) => ({ next: op.patterns }),
11284
+ service: (op) => ({ next: [op.name, ...op.patterns] }),
11285
+ bind: (op) => ({ next: [op.variable] }),
11286
+ graph: (op) => ({ next: [op.name, ...op.patterns] }),
11287
+ minus: (op) => ({ next: op.patterns.slice(0, 1) })
11288
+ },
11289
+ term: {
11290
+ variable: (op) => {
11291
+ boundedVars.add(op.value);
11292
+ return {};
11133
11293
  }
11134
11294
  }
11135
- } else if (F.isTerm(iter)) {
11136
- if (F.isTermVariable(iter)) {
11137
- boundedVars.add(iter.value);
11138
- }
11139
- } else if (F.isTriple(iter)) {
11140
- findPatternBoundedVars(iter.subject, boundedVars);
11141
- findPatternBoundedVars(iter.predicate, boundedVars);
11142
- findPatternBoundedVars(iter.object, boundedVars);
11143
- } else if (F.isPath(iter)) {
11144
- if (!F.isTerm(iter)) {
11145
- for (const item of iter.items) {
11146
- findPatternBoundedVars(item, boundedVars);
11147
- }
11148
- }
11149
- } else if (F.isTripleCollection(iter) || F.isPatternBgp(iter)) {
11150
- for (const triple of iter.triples) {
11151
- findPatternBoundedVars(triple, boundedVars);
11152
- }
11153
- } else if (F.isPatternGroup(iter) || F.isPatternUnion(iter) || F.isPatternOptional(iter) || F.isPatternService(iter)) {
11154
- for (const pattern of iter.patterns) {
11155
- findPatternBoundedVars(pattern, boundedVars);
11156
- }
11157
- if (F.isPatternService(iter)) {
11158
- findPatternBoundedVars(iter.name, boundedVars);
11159
- }
11160
- } else if (F.isPatternBind(iter)) {
11161
- findPatternBoundedVars(iter.variable, boundedVars);
11162
- } else if (F.isPatternValues(iter)) {
11163
- for (const variable of Object.keys(iter.values.at(0) ?? {})) {
11164
- boundedVars.add(variable);
11165
- }
11166
- } else if (F.isPatternGraph(iter)) {
11167
- findPatternBoundedVars(iter.name, boundedVars);
11168
- for (const pattern of iter.patterns) {
11169
- findPatternBoundedVars(pattern, boundedVars);
11170
- }
11171
- }
11295
+ });
11172
11296
  }
11173
11297
  function checkNote13(patterns) {
11174
11298
  for (const [index, pattern] of patterns.entries()) {
11175
11299
  if (F.isPatternBind(pattern) && index > 0 && F.isPatternBgp(patterns[index - 1])) {
11176
11300
  const bgp = patterns[index - 1];
11177
11301
  const variables = [];
11178
- transformer.visitNodeSpecific(bgp, {}, { term: { variable: (var_2) => {
11302
+ transformer.visitNodeSpecific(bgp, {}, { term: { variable: { visitor: (var_2) => {
11179
11303
  variables.push(var_2);
11180
- } } });
11304
+ } } } });
11181
11305
  if (variables.some((var_2) => var_2.value === pattern.variable.value)) {
11182
11306
  throw new Error(`Variable used to bind is already bound (?${pattern.variable.value})`);
11183
11307
  }
@@ -11203,12 +11327,12 @@ function updateNoReuseBlankNodeLabels(updateQuery) {
11203
11327
  const operation = update2.operation;
11204
11328
  if (operation.subType === "insertdata") {
11205
11329
  const blankNodesHere = /* @__PURE__ */ new Set();
11206
- transformer.visitNodeSpecific(operation, {}, { term: { blankNode: (blankNode2) => {
11330
+ transformer.visitNodeSpecific(operation, {}, { term: { blankNode: { visitor: (blankNode2) => {
11207
11331
  blankNodesHere.add(blankNode2.label);
11208
11332
  if (blankLabelsUsedInInsertData.has(blankNode2.label)) {
11209
11333
  throw new Error("Detected reuse blank node across different INSERT DATA clauses");
11210
11334
  }
11211
- } } });
11335
+ } } } });
11212
11336
  for (const blankNode2 of blankNodesHere) {
11213
11337
  blankLabelsUsedInInsertData.add(blankNode2);
11214
11338
  }
@@ -13895,12 +14019,11 @@ var quadData = {
13895
14019
  return ACTION(() => C.astFactory.wrap(val.val, C.astFactory.sourceLocation(open, close)));
13896
14020
  }
13897
14021
  };
13898
- function insertDeleteDelWhere(name, subType, cons1, cons2, dataRule) {
14022
+ function insertDeleteDelWhere(name, subType, cons1, dataRule) {
13899
14023
  return {
13900
14024
  name,
13901
14025
  impl: ({ ACTION, SUBRULE1, CONSUME }) => (C) => {
13902
14026
  const insDelToken = CONSUME(cons1);
13903
- CONSUME(cons2);
13904
14027
  let couldCreateBlankNodes = true;
13905
14028
  if (name !== "insertData") {
13906
14029
  couldCreateBlankNodes = ACTION(() => C.parseMode.delete("canCreateBlankNodes"));
@@ -13932,9 +14055,9 @@ function insertDeleteDelWhere(name, subType, cons1, cons2, dataRule) {
13932
14055
  }
13933
14056
  };
13934
14057
  }
13935
- var insertData = insertDeleteDelWhere("insertData", "insertdata", insertClause, dataClause, quadData);
13936
- var deleteData = insertDeleteDelWhere("deleteData", "deletedata", deleteClause, dataClause, quadData);
13937
- var deleteWhere = insertDeleteDelWhere("deleteWhere", "deletewhere", deleteClause, where, quadPattern);
14058
+ var insertData = insertDeleteDelWhere("insertData", "insertdata", insertDataClause, quadData);
14059
+ var deleteData = insertDeleteDelWhere("deleteData", "deletedata", deleteDataClause, quadData);
14060
+ var deleteWhere = insertDeleteDelWhere("deleteWhere", "deletewhere", deleteWhereClause, quadPattern);
13938
14061
  var modify = {
13939
14062
  name: "modify",
13940
14063
  impl: ({ ACTION, CONSUME, SUBRULE1, SUBRULE2, OPTION1, OPTION2, OR }) => (C) => {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@traqula/rules-sparql-1-1-adjust",
3
3
  "type": "module",
4
- "version": "0.0.16",
4
+ "version": "0.0.18",
5
5
  "description": "Traqula Lexer and Grammar Rules for sparql 1.1-ADJUST",
6
6
  "lsd:module": true,
7
7
  "license": "MIT",
@@ -42,8 +42,8 @@
42
42
  "build:transpile": " node \"../../node_modules/esbuild/bin/esbuild\" --format=cjs --bundle --log-level=error --outfile=lib/index.cjs lib/index.ts"
43
43
  },
44
44
  "dependencies": {
45
- "@traqula/core": "^0.0.16",
46
- "@traqula/rules-sparql-1-1": "^0.0.16"
45
+ "@traqula/core": "^0.0.18",
46
+ "@traqula/rules-sparql-1-1": "^0.0.18"
47
47
  },
48
- "gitHead": "2de4ee608a2337bed63ecc5cf336b1a57c39e45f"
48
+ "gitHead": "1bb6a7d67631010ee01b325e33ff76f2f7530e02"
49
49
  }