@xapp/arachne-utils 1.9.1 → 1.9.2

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.
@@ -13,40 +13,48 @@ exports.ArachneURLPattern = void 0;
13
13
  function parsePurl(purl) {
14
14
  const trimmedPurl = purl.trim();
15
15
  if (trimmedPurl.length === 0)
16
- throw new Error(`Cannot parse PURL '${trimmedPurl}': it must be an non-empty string`);
17
- let regex = '^';
16
+ throw new Error(`Cannot parse PURL '${trimmedPurl}': it must be a non-empty string`);
17
+ let regex = "^";
18
+ let openBrackets = 0;
19
+ let insideNegation = false;
20
+ let negationPattern = "";
18
21
  try {
19
- let openBrackets = 0;
20
22
  for (let i = 0; i < trimmedPurl.length; i++) {
21
23
  const ch = trimmedPurl.charAt(i);
22
- if (ch === '[' && ++openBrackets === 1) {
23
- // Beginning of '[regex]' section
24
- // Enclose regex in () brackets to enforce operator priority
25
- regex += '(';
24
+ // console.log(`Inside loop char ${ch} insideNegation?${insideNegation}`);
25
+ if (ch === "[" && ++openBrackets === 1) {
26
+ regex += "("; // Start regex capture group
26
27
  }
27
- else if (ch === ']' && openBrackets > 0 && --openBrackets === 0) {
28
- // End of '[regex]' section
29
- regex += ')';
28
+ else if (ch === "]" && openBrackets > 0 && --openBrackets === 0) {
29
+ if (insideNegation) {
30
+ regex += `(?!${negationPattern})`; // Correct placement of negative lookahead
31
+ insideNegation = false;
32
+ negationPattern = "";
33
+ }
34
+ regex += ")";
30
35
  }
31
36
  else if (openBrackets > 0) {
32
- // Inside '[regex]' section
33
- regex += ch;
37
+ if (ch === "!" && !insideNegation) {
38
+ insideNegation = true;
39
+ }
40
+ else if (insideNegation) {
41
+ negationPattern += ch;
42
+ }
43
+ else {
44
+ regex += ch;
45
+ }
34
46
  }
35
47
  else {
36
- // Outside '[regex]' section, parsing the URL part
37
48
  const code = ch.charCodeAt(0);
38
49
  if ((code >= 48 && code <= 57) || (code >= 65 && code <= 90) || (code >= 97 && code <= 122)) {
39
- // Alphanumeric character => copy it.
40
50
  regex += ch;
41
51
  }
42
52
  else {
43
- // Special character => escape it
44
- const hex = code < 16 ? `0${code.toString(16)}` : code.toString(16);
45
- regex += `\\x${hex}`;
53
+ regex += `\\x${code.toString(16).padStart(2, "0")}`;
46
54
  }
47
55
  }
48
56
  }
49
- regex += '$';
57
+ regex += "$";
50
58
  }
51
59
  catch (err) {
52
60
  throw new Error(`Cannot parse PURL '${purl}': ${err}`);
@@ -64,10 +72,11 @@ class ArachneURLPattern {
64
72
  this.regExp = url;
65
73
  }
66
74
  else if (typeof url === "string") {
67
- this.regExp = new RegExp(parsePurl(url), 'i');
75
+ this.regExp = new RegExp(parsePurl(url), "i");
76
+ // console.log(this.regExp);
68
77
  }
69
78
  else {
70
- throw new Error('A URL is required to instantiate the URL pattern.');
79
+ throw new Error("A URL is required to instantiate the URL pattern.");
71
80
  }
72
81
  }
73
82
  matches(url) {
@@ -1 +1 @@
1
- {"version":3,"file":"ArachneURLPattern.js","sourceRoot":"","sources":["../src/ArachneURLPattern.ts"],"names":[],"mappings":";AAAA,kCAAkC;;;AAElC;;;;;;;GAOG;AACH,SAAS,SAAS,CAAC,IAAY;IAC3B,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAChC,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,WAAW,mCAAmC,CAAC,CAAC;IAEpH,IAAI,KAAK,GAAG,GAAG,CAAC;IAEhB,IAAI,CAAC;QACD,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1C,MAAM,EAAE,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAEjC,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,YAAY,KAAK,CAAC,EAAE,CAAC;gBACrC,iCAAiC;gBACjC,4DAA4D;gBAC5D,KAAK,IAAI,GAAG,CAAC;YACjB,CAAC;iBAAM,IAAI,EAAE,KAAK,GAAG,IAAI,YAAY,GAAG,CAAC,IAAI,EAAE,YAAY,KAAK,CAAC,EAAE,CAAC;gBAChE,2BAA2B;gBAC3B,KAAK,IAAI,GAAG,CAAC;YACjB,CAAC;iBAAM,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;gBAC1B,2BAA2B;gBAC3B,KAAK,IAAI,EAAE,CAAC;YAChB,CAAC;iBAAM,CAAC;gBACJ,kDAAkD;gBAClD,MAAM,IAAI,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;gBAC9B,IAAI,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;oBAC1F,qCAAqC;oBACrC,KAAK,IAAI,EAAE,CAAC;gBAChB,CAAC;qBAAM,CAAC;oBACJ,iCAAiC;oBACjC,MAAM,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;oBACpE,KAAK,IAAI,MAAM,GAAG,EAAE,CAAC;gBACzB,CAAC;YACL,CAAC;QACL,CAAC;QACD,KAAK,IAAI,GAAG,CAAC;IACjB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,sBAAsB,IAAI,MAAM,GAAG,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AAGD;;;;GAIG;AACH,MAAa,iBAAiB;IAI1B,YAAY,GAAoB;QAE5B,IAAI,GAAG,YAAY,MAAM,EAAE,CAAC;YACxB,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;QACtB,CAAC;aAAM,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YACjC,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;QAClD,CAAC;aAAM,CAAC;YACJ,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAA;QACxE,CAAC;IAEL,CAAC;IAEM,OAAO,CAAC,GAAW;QACtB,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC;IACtE,CAAC;CACJ;AAnBD,8CAmBC"}
1
+ {"version":3,"file":"ArachneURLPattern.js","sourceRoot":"","sources":["../src/ArachneURLPattern.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xapp/arachne-utils",
3
- "version": "1.9.1",
3
+ "version": "1.9.2",
4
4
  "types": "lib/index",
5
5
  "main": "lib/index",
6
6
  "files": [
@@ -11,14 +11,14 @@
11
11
  "access": "public"
12
12
  },
13
13
  "engines": {
14
- "node": "^14 || ^16 || ^18 || ^20.0.0"
14
+ "node": "^14 || ^16 || ^18 || ^20 || ^22"
15
15
  },
16
16
  "devDependencies": {
17
- "@microsoft/api-extractor": "7.49.2",
17
+ "@microsoft/api-extractor": "7.52.8",
18
18
  "@types/chai": "4.3.20",
19
19
  "@types/mocha": "10.0.10",
20
- "@types/node": "20.17.17",
21
- "@types/sinon": "17.0.3",
20
+ "@types/node": "22.16.0",
21
+ "@types/sinon": "17.0.4",
22
22
  "@types/sinon-chai": "3.2.12",
23
23
  "@xapp/config": "0.2.3",
24
24
  "chai": "4.5.0",
@@ -27,7 +27,7 @@
27
27
  "sinon-chai": "3.7.0",
28
28
  "ts-node": "10.9.2",
29
29
  "tslib": "2.8.1",
30
- "typescript": "5.7.3"
30
+ "typescript": "5.8.3"
31
31
  },
32
32
  "dependencies": {
33
33
  "normalize-url": "6.1.0"
@@ -38,5 +38,5 @@
38
38
  "clean": "rm -rf ./lib/*",
39
39
  "test": "mocha --recursive -r ts-node/register \"./src/**/*.test.ts\""
40
40
  },
41
- "gitHead": "c8ed6c0412c3eeb6706f1555d9a553ac35952840"
41
+ "gitHead": "dea9830f19ca3df06a2b61997a18de08d4e01c92"
42
42
  }