@plurnk/plurnk-schemes 0.33.23 → 1.0.1
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SchemeDiscovery.d.ts","sourceRoot":"","sources":["../src/SchemeDiscovery.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SchemeDiscovery.d.ts","sourceRoot":"","sources":["../src/SchemeDiscovery.ts"],"names":[],"mappings":"AA2BA,MAAM,WAAW,UAAU;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAM7B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC;CACrD;AAED,MAAM,WAAW,qBAAqB;IAClC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;IAC5C,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CAC3C;AAED,MAAM,WAAW,eAAe;IAC5B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC7C,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CACjC;AAED,MAAM,CAAC,OAAO,OAAO,eAAe;;IAChC,OAAa,QAAQ,CAAC,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAyBnF;CA4DJ"}
|
package/dist/SchemeDiscovery.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import fs from "node:fs/promises";
|
|
2
2
|
import path from "node:path";
|
|
3
|
+
import Meta from "@plurnk/plurnk-meta";
|
|
3
4
|
export default class SchemeDiscovery {
|
|
4
5
|
static async discover(options = {}) {
|
|
5
6
|
const { signal } = options;
|
|
@@ -13,7 +14,7 @@ export default class SchemeDiscovery {
|
|
|
13
14
|
continue;
|
|
14
15
|
// Host plugin-trust gate: an untrusted third-party package is
|
|
15
16
|
// discovered but not surfaced for registration — recorded, never crashed on.
|
|
16
|
-
if (!
|
|
17
|
+
if (!Meta.isTrusted(info.packageName)) {
|
|
17
18
|
skipped.add(info.packageName);
|
|
18
19
|
continue;
|
|
19
20
|
}
|
|
@@ -36,50 +37,14 @@ export default class SchemeDiscovery {
|
|
|
36
37
|
// unset / "" / "0" → OFF: every installed package trusted (no regression).
|
|
37
38
|
// any value → ON: `@plurnk/*` always trusted, plus a comma-separated
|
|
38
39
|
// allowlist of additionally-trusted package names.
|
|
39
|
-
static #isTrusted(packageName) {
|
|
40
|
-
const gate = process.env.PLURNK_PLUGINS_TRUSTED_ONLY;
|
|
41
|
-
if (gate === undefined || gate === "" || gate === "0")
|
|
42
|
-
return true;
|
|
43
|
-
if (packageName.startsWith("@plurnk/"))
|
|
44
|
-
return true;
|
|
45
|
-
return gate.split(",").map((s) => s.trim()).includes(packageName);
|
|
46
|
-
}
|
|
47
40
|
// Enumerate every installed package directory — scoped (`@scope/name`) and
|
|
48
41
|
// unscoped (`name`) — under `<cwd>/node_modules`. Unreadable dirs are the
|
|
49
42
|
// legitimate scan boundary (not-a-package, missing manifest), skipped — not
|
|
50
43
|
// a masked contract violation (cf. the matcher's sanctioned node_modules tolerance).
|
|
51
44
|
static async #defaultPackageDirs(cwd, signal) {
|
|
52
45
|
signal?.throwIfAborted();
|
|
53
|
-
const nm = path.join(cwd, "node_modules");
|
|
54
|
-
|
|
55
|
-
// fs.readdir takes no AbortSignal — cancellation is checked at the loop
|
|
56
|
-
// boundaries instead (signal-on-fs is reserved for readFile, below).
|
|
57
|
-
try {
|
|
58
|
-
entries = await fs.readdir(nm, { withFileTypes: true });
|
|
59
|
-
}
|
|
60
|
-
catch {
|
|
61
|
-
return [];
|
|
62
|
-
}
|
|
63
|
-
const dirs = [];
|
|
64
|
-
for (const entry of entries) {
|
|
65
|
-
if (!entry.isDirectory() || entry.name === ".bin" || entry.name === ".cache")
|
|
66
|
-
continue;
|
|
67
|
-
if (entry.name.startsWith("@")) {
|
|
68
|
-
signal?.throwIfAborted();
|
|
69
|
-
const scopeDir = path.join(nm, entry.name);
|
|
70
|
-
try {
|
|
71
|
-
const scoped = await fs.readdir(scopeDir, { withFileTypes: true });
|
|
72
|
-
for (const s of scoped)
|
|
73
|
-
if (s.isDirectory())
|
|
74
|
-
dirs.push(path.join(scopeDir, s.name));
|
|
75
|
-
}
|
|
76
|
-
catch { /* unreadable scope dir — skip */ }
|
|
77
|
-
}
|
|
78
|
-
else {
|
|
79
|
-
dirs.push(path.join(nm, entry.name));
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
return dirs;
|
|
46
|
+
const nm = Meta.nearestNodeModules(cwd) ?? path.join(path.resolve(cwd), "node_modules");
|
|
47
|
+
return (await Meta.packageDirs(nm)).map((c) => c.dir).toSorted();
|
|
83
48
|
}
|
|
84
49
|
// An aborted readFile surfaces, never masked as an unreadable dir —
|
|
85
50
|
// cancellation is a caller contract, not a scan boundary (locality of error).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SchemeDiscovery.js","sourceRoot":"","sources":["../src/SchemeDiscovery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AA+
|
|
1
|
+
{"version":3,"file":"SchemeDiscovery.js","sourceRoot":"","sources":["../src/SchemeDiscovery.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@plurnk/plurnk-schemes",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "1.0.1",
|
|
4
4
|
"description": "Framework + contract for the @plurnk/plurnk-schemes-* URI handler family.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"plurnk",
|
|
@@ -27,6 +27,7 @@
|
|
|
27
27
|
"exports": {
|
|
28
28
|
".": {
|
|
29
29
|
"types": "./dist/index.d.ts",
|
|
30
|
+
"plurnk-dev": "./src/index.ts",
|
|
30
31
|
"default": "./dist/index.js"
|
|
31
32
|
},
|
|
32
33
|
"./package.json": "./package.json"
|
|
@@ -38,20 +39,17 @@
|
|
|
38
39
|
],
|
|
39
40
|
"scripts": {
|
|
40
41
|
"test:lint": "tsc --noEmit",
|
|
41
|
-
"test:unit": "node --test src/**/*.test.ts",
|
|
42
|
+
"test:unit": "node --conditions=plurnk-dev --test src/**/*.test.ts",
|
|
42
43
|
"test": "npm run test:lint && npm run test:unit",
|
|
43
44
|
"build:dist": "tsc -p tsconfig.build.json",
|
|
44
45
|
"build": "npm run build:dist",
|
|
45
|
-
"
|
|
46
|
+
"prepack": "npm run build"
|
|
46
47
|
},
|
|
47
48
|
"peerDependencies": {
|
|
48
|
-
"@plurnk/plurnk-grammar": "0.
|
|
49
|
-
"@plurnk/plurnk-mimetypes": "0.
|
|
49
|
+
"@plurnk/plurnk-grammar": "1.0.1",
|
|
50
|
+
"@plurnk/plurnk-mimetypes": "1.0.1"
|
|
50
51
|
},
|
|
51
|
-
"
|
|
52
|
-
"@plurnk/plurnk-
|
|
53
|
-
"@plurnk/plurnk-mimetypes": "0.19.3",
|
|
54
|
-
"@types/node": "26.1.1",
|
|
55
|
-
"typescript": "7.0.2"
|
|
52
|
+
"dependencies": {
|
|
53
|
+
"@plurnk/plurnk-meta": "1.0.1"
|
|
56
54
|
}
|
|
57
55
|
}
|