@entelekheia/ref-id 0.2.0 → 0.4.0

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.
@@ -12,15 +12,68 @@ import { FIELD, pattern } from "./grammar.js";
12
12
  import { SpecVersionError } from "./spec.js";
13
13
  const validators = {
14
14
  "package-url": (_spec, _entry, delegated) => {
15
+ const { base, subpath } = splitSubpath(delegated);
15
16
  try {
16
- return { ok: true, canonical: PackageURL.fromString(delegated).toString() };
17
+ const purl = PackageURL.fromString(base);
18
+ if (subpath === undefined)
19
+ return { ok: true, canonical: purl.toString() };
20
+ const withPath = new PackageURL(purl.type, purl.namespace, purl.name, purl.version, purl.qualifiers, subpath);
21
+ return { ok: true, canonical: withPath.toString() };
17
22
  }
18
23
  catch {
19
24
  return { ok: false };
20
25
  }
21
26
  },
22
27
  "declared-name": (spec, entry, delegated) => ({ ok: pattern(spec, entry.pattern ?? "").test(delegated) }),
28
+ // A number whose shape is right and whose check digit is wrong is a typo, not an identifier — and it
29
+ // is the one error a pattern cannot see. Both registered schemes reduce to the same weighted sum, so
30
+ // one function serves them; neither adds a dependency, which the portability guardrail requires.
31
+ "check-digit": (spec, entry, delegated) => ({
32
+ ok: pattern(spec, entry.pattern ?? "").test(delegated) && checkDigitHolds(delegated),
33
+ }),
23
34
  };
35
+ /**
36
+ * Where a Package URL locator stops being the package and starts being a path inside it.
37
+ *
38
+ * An `@` that opens a segment — preceded by `/`, or first in the string — belongs to a namespace and is
39
+ * part of the name. An `@` inside a segment closes the name: the version runs from it to the next `/`,
40
+ * and whatever follows that `/` is the subpath. Without a version there is no marker at all, so
41
+ * `npm/a/b/c` stays a namespaced package and carries no subpath — a file inside a corpus nobody
42
+ * versioned is named through `folder`, whose locator needs no such marker.
43
+ *
44
+ * The subpath leaves here as the Package URL's own `#subpath` component, which is what that component
45
+ * means; the scheme's `#` is the declared name one level below the file and has no purl equivalent.
46
+ */
47
+ function splitSubpath(delegated) {
48
+ for (let index = 1; index < delegated.length; index += 1) {
49
+ if (delegated[index] !== "@" || delegated[index - 1] === "/")
50
+ continue;
51
+ const slash = delegated.indexOf("/", index);
52
+ return slash < 0 ? { base: delegated } : { base: delegated.slice(0, slash), subpath: delegated.slice(slash + 1) };
53
+ }
54
+ return { base: delegated };
55
+ }
56
+ /**
57
+ * The check digit of a registered article number.
58
+ *
59
+ * A ten-character book number weights its digits 10..1 and is correct when the sum is divisible by
60
+ * eleven, which is why its last character may be `X` for the value ten. Every other length is a GS1
61
+ * trade item number: the digits before the last are weighted 3 and 1 alternately from the right, and the
62
+ * last is whatever brings the total up to a multiple of ten.
63
+ */
64
+ function checkDigitHolds(value) {
65
+ if (value.length === 10) {
66
+ const weighted = [...value].reduce((sum, char, index) => sum + (char === "X" ? 10 : Number(char)) * (10 - index), 0);
67
+ return weighted % 11 === 0;
68
+ }
69
+ const digits = [...value].map(Number);
70
+ const declared = digits.at(-1);
71
+ const weighted = digits
72
+ .slice(0, -1)
73
+ .reverse()
74
+ .reduce((sum, digit, index) => sum + digit * (index % 2 === 0 ? 3 : 1), 0);
75
+ return (10 - (weighted % 10)) % 10 === declared;
76
+ }
24
77
  /** How `dispatch.<type>.delegate` forms the delegated string, and whether a producer may pass the format's own scheme back in. */
25
78
  const delegators = {
26
79
  "type-prefixed": { form: (type, locator) => `${type}${FIELD}${locator}`, foldsType: true },
@@ -1 +1 @@
1
- {"version":3,"file":"validators.js","sourceRoot":"","sources":["../src/validators.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validators.js","sourceRoot":"","sources":["../src/validators.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,EAAE;AACF,0FAA0F;AAC1F,uGAAuG;AACvG,iGAAiG;AACjG,qGAAqG;AACrG,8FAA8F;AAC9F,oGAAoG;AACpG,WAAW;AAEX,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,gBAAgB,EAAkB,MAAM,WAAW,CAAA;AAM5D,MAAM,UAAU,GAA6F;IAC3G,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE;QAC1C,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,YAAY,CAAC,SAAS,CAAC,CAAA;QACjD,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;YACxC,IAAI,OAAO,KAAK,SAAS;gBAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAA;YAC1E,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;YAC7G,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAA;QACrD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAA;QACtB,CAAC;IACH,CAAC;IACD,eAAe,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;IACzG,qGAAqG;IACrG,qGAAqG;IACrG,iGAAiG;IACjG,aAAa,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;QAC1C,EAAE,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,eAAe,CAAC,SAAS,CAAC;KACrF,CAAC;CACH,CAAA;AAED;;;;;;;;;;;GAWG;AACH,SAAS,YAAY,CAAC,SAAiB;IACrC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACzD,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG;YAAE,SAAQ;QACtE,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QAC3C,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,CAAA;IACnH,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAA;AAC5B,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,eAAe,CAAC,KAAa;IACpC,IAAI,KAAK,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;QACxB,MAAM,QAAQ,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAA;QACpH,OAAO,QAAQ,GAAG,EAAE,KAAK,CAAC,CAAA;IAC5B,CAAC;IACD,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IACrC,MAAM,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;IAC9B,MAAM,QAAQ,GAAG,MAAM;SACpB,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SACZ,OAAO,EAAE;SACT,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,GAAG,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAC5E,OAAO,CAAC,EAAE,GAAG,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,QAAQ,CAAA;AACjD,CAAC;AAED,kIAAkI;AAClI,MAAM,UAAU,GAA4F;IAC1G,eAAe,EAAE,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,GAAG,IAAI,GAAG,KAAK,GAAG,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE;IAC1F,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE;CAClE,CAAA;AAED,+GAA+G;AAC/G,MAAM,MAAM,GAAuE;IACjF,SAAS,EAAE,CAAC,KAAK,EAAE,cAAc,EAAE,EAAE;QACnC,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QACtD,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;IAClE,CAAC;CACF,CAAA;AAED,sFAAsF;AACtF,MAAM,QAAQ,GAAG,EAAE,UAAU,EAAE,eAAe,EAAE,WAAW,EAAE,WAAW,EAAW,CAAA;AAEnF,MAAM,eAAe,GAAG,IAAI,OAAO,EAAa,CAAA;AAEhD,sGAAsG;AACtG,MAAM,UAAU,iBAAiB,CAAC,IAAe;IAC/C,IAAI,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,OAAM;IACR,CAAC;IACD,MAAM,QAAQ,GAAmC;QAC/C,CAAC,0BAA0B,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC;QAC3D,CAAC,mBAAmB,EAAE,IAAI,CAAC,iBAAiB,CAAC;QAC7C,CAAC,2BAA2B,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC;QAC7D,CAAC,8BAA8B,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;KACpE,CAAA;IACD,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,QAAQ,EAAE,CAAC;QACtC,MAAM,WAAW,GAAG,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAA;QAC9F,IAAI,KAAK,KAAK,WAAW,EAAE,CAAC;YAC1B,MAAM,IAAI,gBAAgB,CAAC,QAAQ,KAAK,aAAa,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,kCAAkC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;QAC5I,CAAC;IACH,CAAC;IACD,KAAK,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;QACjE,IAAI,UAAU,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/E,MAAM,IAAI,gBAAgB,CAAC,oBAAoB,GAAG,mBAAmB,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAA;QACjJ,CAAC;IACH,CAAC;IACD,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;AAC3B,CAAC;AAED,6HAA6H;AAC7H,MAAM,UAAU,eAAe,CAAC,IAAe,EAAE,IAAY,EAAE,OAAe;IAC5E,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IACjC,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAChE,OAAO,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;AAC9D,CAAC;AAED,wGAAwG;AACxG,MAAM,UAAU,SAAS,CAAC,IAAe,EAAE,IAAY;IACrD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IACjC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,SAAS,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;AACzE,CAAC;AAED,uGAAuG;AACvG,MAAM,UAAU,eAAe,CAAC,IAAe,EAAE,KAAoB,EAAE,SAAiB;IACtF,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;IAC7C,OAAO,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;AAClE,CAAC;AAED,sGAAsG;AACtG,MAAM,UAAU,UAAU,CAAC,UAA4C,EAAE,KAAa;IACpF,IAAI,UAAU,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QACnC,OAAO,IAAI,CAAA;IACb,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;IACtC,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;AACrE,CAAC"}
package/package.json CHANGED
@@ -1,11 +1,15 @@
1
1
  {
2
2
  "name": "@entelekheia/ref-id",
3
- "version": "0.2.0",
3
+ "version": "0.4.0",
4
4
  "description": "The ref: identifier scheme — a specification published as data with conformance vectors, and the package that consumes it.",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",
7
7
  "exports": {
8
8
  ".": {
9
+ "browser": {
10
+ "types": "./dist/index.browser.d.ts",
11
+ "default": "./dist/index.browser.js"
12
+ },
9
13
  "types": "./dist/index.d.ts",
10
14
  "default": "./dist/index.js"
11
15
  }
@@ -20,7 +24,8 @@
20
24
  "pretest": "mkdir -p spec && cp ../../spec/ref-id.json ../../spec/ref-id.json.sha256 spec/",
21
25
  "typecheck": "tsc --noEmit",
22
26
  "test": "node --test test/*.test.ts",
23
- "prepublishOnly": "npm run build && npm test"
27
+ "prepublishOnly": "npm run build && npm test",
28
+ "postbuild": "node ../../scripts/check-browser-purity.mjs"
24
29
  },
25
30
  "engines": {
26
31
  "node": ">=22"
@@ -40,6 +45,7 @@
40
45
  "directory": "packages/ref-id"
41
46
  },
42
47
  "dependencies": {
48
+ "@noble/hashes": "^2.4.0",
43
49
  "packageurl-js": "^2.0.1"
44
50
  }
45
51
  }