@atomic-ehr/fhir-canonical-manager 0.0.15 → 0.0.17
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.
- package/dist/cache.d.ts +2 -0
- package/dist/cache.d.ts.map +1 -1
- package/dist/cache.js +27 -2
- package/dist/cache.js.map +1 -1
- package/dist/local.d.ts +5 -0
- package/dist/local.d.ts.map +1 -0
- package/dist/local.js +148 -0
- package/dist/local.js.map +1 -0
- package/dist/manager/canonical.d.ts.map +1 -1
- package/dist/manager/canonical.js +205 -24
- package/dist/manager/canonical.js.map +1 -1
- package/dist/manager/package-spec.d.ts +5 -0
- package/dist/manager/package-spec.d.ts.map +1 -0
- package/dist/manager/package-spec.js +28 -0
- package/dist/manager/package-spec.js.map +1 -0
- package/dist/package.d.ts.map +1 -1
- package/dist/package.js +25 -5
- package/dist/package.js.map +1 -1
- package/dist/scanner/parser.d.ts.map +1 -1
- package/dist/scanner/parser.js +2 -2
- package/dist/scanner/parser.js.map +1 -1
- package/dist/types/core.d.ts +12 -0
- package/dist/types/core.d.ts.map +1 -1
- package/dist/types/internal.d.ts +4 -2
- package/dist/types/internal.d.ts.map +1 -1
- package/package.json +2 -3
- package/src/cache.ts +0 -59
- package/src/cli/index.ts +0 -181
- package/src/cli/init.ts +0 -112
- package/src/cli/list.ts +0 -95
- package/src/cli/resolve.ts +0 -63
- package/src/cli/search.ts +0 -83
- package/src/cli/searchparam.ts +0 -163
- package/src/constants.ts +0 -6
- package/src/fs/index.ts +0 -5
- package/src/fs/utils.ts +0 -28
- package/src/index.ts +0 -18
- package/src/manager/canonical.ts +0 -359
- package/src/manager/index.ts +0 -6
- package/src/package.ts +0 -79
- package/src/reference.ts +0 -77
- package/src/resolver.ts +0 -38
- package/src/scanner/directory.ts +0 -36
- package/src/scanner/index.ts +0 -8
- package/src/scanner/package.ts +0 -35
- package/src/scanner/parser.ts +0 -40
- package/src/scanner/processor.ts +0 -65
- package/src/search/index.ts +0 -6
- package/src/search/smart.ts +0 -50
- package/src/search/terms.ts +0 -22
- package/src/types/core.ts +0 -131
- package/src/types/index.ts +0 -6
- package/src/types/internal.ts +0 -59
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import * as Path from "node:path";
|
|
2
|
+
export const isPathSpec = (spec) => {
|
|
3
|
+
return spec.startsWith("./") || spec.startsWith("../") || Path.isAbsolute(spec);
|
|
4
|
+
};
|
|
5
|
+
export const normalizePackageSpec = (spec) => {
|
|
6
|
+
if (isPathSpec(spec)) {
|
|
7
|
+
return Path.resolve(spec);
|
|
8
|
+
}
|
|
9
|
+
return spec;
|
|
10
|
+
};
|
|
11
|
+
export const parsePackageRef = (pkgRef) => {
|
|
12
|
+
const trimmed = pkgRef.trim();
|
|
13
|
+
if (!trimmed) {
|
|
14
|
+
throw new Error(`Invalid FHIR package meta: ${pkgRef}`);
|
|
15
|
+
}
|
|
16
|
+
const atIndex = trimmed.lastIndexOf("@");
|
|
17
|
+
if (atIndex > 0) {
|
|
18
|
+
return {
|
|
19
|
+
name: trimmed.slice(0, atIndex),
|
|
20
|
+
version: trimmed.slice(atIndex + 1) || "latest",
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
return {
|
|
24
|
+
name: trimmed,
|
|
25
|
+
version: "latest",
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=package-spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-spec.js","sourceRoot":"","sources":["../../src/manager/package-spec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAGlC,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAAY,EAAW,EAAE;IAChD,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACpF,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,IAAY,EAAU,EAAE;IACzD,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACnB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,MAAc,EAAa,EAAE;IACzD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;IAC9B,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,8BAA8B,MAAM,EAAE,CAAC,CAAC;IAC5D,CAAC;IACD,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACzC,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;QACd,OAAO;YACH,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC;YAC/B,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,QAAQ;SAClD,CAAC;IACN,CAAC;IACD,OAAO;QACH,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,QAAQ;KACpB,CAAC;AACN,CAAC,CAAC"}
|
package/dist/package.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package.d.ts","sourceRoot":"","sources":["../src/package.ts"],"names":[],"mappings":"AAaA,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"package.d.ts","sourceRoot":"","sources":["../src/package.ts"],"names":[],"mappings":"AAaA,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,KAAK,CAAC;AAgB3C,eAAO,MAAM,oBAAoB,QAAa,OAAO,CAAC,cAAc,GAAG,SAAS,CAY/E,CAAC;AAeF,eAAO,MAAM,eAAe,GAAU,UAAU,MAAM,EAAE,EAAE,KAAK,MAAM,EAAE,WAAW,MAAM,KAAG,OAAO,CAAC,IAAI,CA8CtG,CAAC"}
|
package/dist/package.js
CHANGED
|
@@ -4,6 +4,18 @@ import * as Path from "node:path";
|
|
|
4
4
|
import { promisify } from "node:util";
|
|
5
5
|
import { ensureDir, fileExists } from "./fs/index.js";
|
|
6
6
|
const execAsync = promisify(exec);
|
|
7
|
+
const isValidPackageRef = (pkg) => {
|
|
8
|
+
if (pkg.startsWith("http://") || pkg.startsWith("https://")) {
|
|
9
|
+
return true;
|
|
10
|
+
}
|
|
11
|
+
if (pkg.startsWith("/") || pkg.startsWith("./") || pkg.startsWith("../")) {
|
|
12
|
+
return /^[a-zA-Z0-9_./@-]+$/.test(pkg);
|
|
13
|
+
}
|
|
14
|
+
return /^(@[a-zA-Z0-9_-]+\/)?[a-zA-Z0-9._-]+(@[a-zA-Z0-9._-]+)?$/.test(pkg);
|
|
15
|
+
};
|
|
16
|
+
const shellEscape = (str) => {
|
|
17
|
+
return str.replace(/'/g, "'\\''");
|
|
18
|
+
};
|
|
7
19
|
export const detectPackageManager = async () => {
|
|
8
20
|
try {
|
|
9
21
|
await execAsync("bun --version");
|
|
@@ -33,28 +45,36 @@ const ensurePackageJson = async (pwd) => {
|
|
|
33
45
|
};
|
|
34
46
|
export const installPackages = async (packages, pwd, registry) => {
|
|
35
47
|
await ensureDir(pwd);
|
|
36
|
-
ensurePackageJson(pwd);
|
|
48
|
+
await ensurePackageJson(pwd);
|
|
37
49
|
const packageManager = await detectPackageManager();
|
|
38
50
|
if (!packageManager)
|
|
39
51
|
throw new Error("No package manager found. Please install bun or npm.");
|
|
40
52
|
for (const pkg of packages) {
|
|
53
|
+
if (!isValidPackageRef(pkg)) {
|
|
54
|
+
throw new Error(`Invalid package reference: ${pkg}`);
|
|
55
|
+
}
|
|
41
56
|
try {
|
|
57
|
+
const safePkg = shellEscape(pkg);
|
|
58
|
+
const safePwd = shellEscape(pwd);
|
|
59
|
+
const safeRegistry = registry ? shellEscape(registry) : undefined;
|
|
42
60
|
if (packageManager === "bun") {
|
|
43
61
|
const env = {
|
|
44
62
|
...process.env,
|
|
45
63
|
HOME: pwd,
|
|
46
64
|
NPM_CONFIG_USERCONFIG: "/dev/null",
|
|
47
65
|
};
|
|
48
|
-
const cmd =
|
|
49
|
-
? `bun add ${
|
|
50
|
-
: `bun add --cwd='${
|
|
66
|
+
const cmd = safeRegistry
|
|
67
|
+
? `bun add '${safePkg}' --cwd='${safePwd}' --registry='${safeRegistry}'`
|
|
68
|
+
: `bun add --cwd='${safePwd}' '${safePkg}'`;
|
|
51
69
|
await execAsync(cmd, {
|
|
52
70
|
env,
|
|
53
71
|
maxBuffer: 10 * 1024 * 1024,
|
|
54
72
|
});
|
|
55
73
|
}
|
|
56
74
|
else {
|
|
57
|
-
const cmd =
|
|
75
|
+
const cmd = safeRegistry
|
|
76
|
+
? `cd '${safePwd}' && npm add '${safePkg}' --registry='${safeRegistry}'`
|
|
77
|
+
: `cd '${safePwd}' && npm add '${safePkg}'`;
|
|
58
78
|
await execAsync(cmd, {
|
|
59
79
|
maxBuffer: 10 * 1024 * 1024,
|
|
60
80
|
});
|
package/dist/package.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package.js","sourceRoot":"","sources":["../src/package.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,KAAK,GAAG,MAAM,kBAAkB,CAAC;AACxC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEtD,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AAIlC,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,IAAyC,EAAE;IAChF,IAAI,CAAC;QACD,MAAM,SAAS,CAAC,eAAe,CAAC,CAAC;QACjC,OAAO,KAAK,CAAC;IACjB,CAAC;IAAC,MAAM,CAAC;QACL,IAAI,CAAC;YACD,MAAM,SAAS,CAAC,eAAe,CAAC,CAAC;YACjC,OAAO,KAAK,CAAC;QACjB,CAAC;QAAC,MAAM,CAAC;YACL,OAAO;QACX,CAAC;IACL,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,KAAK,EAAE,GAAW,EAAE,EAAE;IAC5C,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IACvD,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC;QACvC,MAAM,kBAAkB,GAAG;YACvB,IAAI,EAAE,kCAAkC;YACxC,OAAO,EAAE,OAAO;YAChB,OAAO,EAAE,IAAI;YACb,YAAY,EAAE,EAAE;SACnB,CAAC;QACF,MAAM,GAAG,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACtF,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAAE,QAAkB,EAAE,GAAW,EAAE,QAAiB,EAAiB,EAAE;IACvG,MAAM,SAAS,CAAC,GAAG,CAAC,CAAC;IACrB,iBAAiB,CAAC,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"package.js","sourceRoot":"","sources":["../src/package.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/scanner/parser.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,eAAO,MAAM,gBAAgB,GAAI,OAAO,GAAG,KAAG,
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/scanner/parser.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,eAAO,MAAM,gBAAgB,GAAI,OAAO,GAAG,KAAG,OAe7C,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,MAAM,GAAG,KAAG,OAM5C,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,SAAS,MAAM,EAAE,WAAW,MAAM,KAAG,SAAS,GAAG,IAU3E,CAAC"}
|
package/dist/scanner/parser.js
CHANGED
|
@@ -9,7 +9,7 @@ export const isValidFileEntry = (entry) => {
|
|
|
9
9
|
return false;
|
|
10
10
|
const optionalStringFields = ["url", "version", "kind", "type"];
|
|
11
11
|
for (const field of optionalStringFields) {
|
|
12
|
-
if (entry[field]
|
|
12
|
+
if (entry[field] != null && typeof entry[field] !== "string") {
|
|
13
13
|
return false;
|
|
14
14
|
}
|
|
15
15
|
}
|
|
@@ -18,7 +18,7 @@ export const isValidFileEntry = (entry) => {
|
|
|
18
18
|
export const isValidIndexFile = (data) => {
|
|
19
19
|
if (!data || typeof data !== "object")
|
|
20
20
|
return false;
|
|
21
|
-
if (
|
|
21
|
+
if (data["index-version"] == null || typeof data["index-version"] !== "number")
|
|
22
22
|
return false;
|
|
23
23
|
if (!Array.isArray(data.files))
|
|
24
24
|
return false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/scanner/parser.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,KAAU,EAAW,EAAE;IACpD,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACtD,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACxE,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,OAAO,KAAK,CAAC,YAAY,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAChF,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/scanner/parser.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,KAAU,EAAW,EAAE;IACpD,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACtD,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACxE,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,OAAO,KAAK,CAAC,YAAY,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAChF,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAG5D,MAAM,oBAAoB,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAChE,KAAK,MAAM,KAAK,IAAI,oBAAoB,EAAE,CAAC;QACvC,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC3D,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,IAAS,EAAW,EAAE;IACnD,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAEpD,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC7F,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC7C,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;AACnE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,OAAe,EAAE,SAAiB,EAAoB,EAAE;IAC/E,IAAI,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACjC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,OAAO,IAAiB,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,IAAI,CAAC;IAChB,CAAC;AACL,CAAC,CAAC"}
|
package/dist/types/core.d.ts
CHANGED
|
@@ -45,6 +45,15 @@ export interface Config {
|
|
|
45
45
|
workingDir: string;
|
|
46
46
|
registry?: string;
|
|
47
47
|
}
|
|
48
|
+
export interface TgzPackageConfig {
|
|
49
|
+
archivePath: string;
|
|
50
|
+
}
|
|
51
|
+
export interface LocalPackageConfig {
|
|
52
|
+
name: string;
|
|
53
|
+
version: string;
|
|
54
|
+
path: string;
|
|
55
|
+
dependencies?: string[];
|
|
56
|
+
}
|
|
48
57
|
export interface PackageInfo {
|
|
49
58
|
id: PackageId;
|
|
50
59
|
path: string;
|
|
@@ -56,6 +65,9 @@ export interface CanonicalManager {
|
|
|
56
65
|
destroy(): Promise<void>;
|
|
57
66
|
packages(): Promise<PackageId[]>;
|
|
58
67
|
addPackages(...packageNames: string[]): Promise<Record<string, PackageId>>;
|
|
68
|
+
addTgzPackage(config: TgzPackageConfig): Promise<PackageId>;
|
|
69
|
+
addLocalPackage(config: LocalPackageConfig): Promise<PackageId>;
|
|
70
|
+
flushCache(): Promise<void>;
|
|
59
71
|
resolveEntry(canonicalUrl: string, options?: {
|
|
60
72
|
package?: string;
|
|
61
73
|
version?: string;
|
package/dist/types/core.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/types/core.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/types/core.ts"],"names":[],"mappings":"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"}
|
package/dist/types/internal.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { IndexEntry, PackageInfo } from "./core.js";
|
|
1
2
|
export interface IndexFile {
|
|
2
3
|
"index-version": number;
|
|
3
4
|
files: IndexFileEntry[];
|
|
@@ -36,10 +37,11 @@ export interface IndexCache {
|
|
|
36
37
|
references: Record<string, ReferenceMetadata>;
|
|
37
38
|
}
|
|
38
39
|
export interface CacheData {
|
|
39
|
-
entries: Record<string,
|
|
40
|
-
packages: Record<string,
|
|
40
|
+
entries: Record<string, IndexEntry[]>;
|
|
41
|
+
packages: Record<string, PackageInfo>;
|
|
41
42
|
references: Record<string, ReferenceMetadata>;
|
|
42
43
|
packageLockHash?: string;
|
|
44
|
+
cacheKey?: string;
|
|
43
45
|
}
|
|
44
46
|
export interface ReferenceStore {
|
|
45
47
|
get(id: string): ReferenceMetadata | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../src/types/internal.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../src/types/internal.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAEzD,MAAM,WAAW,SAAS;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,cAAc,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,cAAc;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzC;AAED,MAAM,WAAW,iBAAiB;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,MAAM,CAAA;CAAE,CAAC;AAEpE,MAAM,WAAW,UAAU;IACvB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC;IACvD,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,QAAQ,EAAE,WAAW,CAAC,CAAC;IACvD,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;CACjD;AAED,MAAM,WAAW,SAAS;IACtB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;IACtC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACtC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC9C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC3B,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAAC;IAC/C,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACnD,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IACzB,KAAK,IAAI,IAAI,CAAC;IACd,IAAI,IAAI,MAAM,CAAC;CAClB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atomic-ehr/fhir-canonical-manager",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.17",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -18,8 +18,7 @@
|
|
|
18
18
|
}
|
|
19
19
|
},
|
|
20
20
|
"files": [
|
|
21
|
-
"dist"
|
|
22
|
-
"src"
|
|
21
|
+
"dist"
|
|
23
22
|
],
|
|
24
23
|
"scripts": {
|
|
25
24
|
"build": "bun run build:clean && bun run build:types",
|
package/src/cache.ts
DELETED
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
import { createHash } from "node:crypto";
|
|
2
|
-
import * as afs from "node:fs/promises";
|
|
3
|
-
import * as Path from "node:path";
|
|
4
|
-
import { createReferenceManager, type ReferenceManager } from "./reference.js";
|
|
5
|
-
import type { CacheData, CacheKey, IndexCache } from "./types/index.js";
|
|
6
|
-
|
|
7
|
-
export interface ExtendedCache extends IndexCache {
|
|
8
|
-
referenceManager: ReferenceManager;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
export const computeCacheKey = (packages: string[]): CacheKey => {
|
|
12
|
-
const content = JSON.stringify(packages.toSorted());
|
|
13
|
-
const hash = createHash("sha256").update(content).digest("hex");
|
|
14
|
-
return hash as CacheKey;
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
const cacheRecordPathsFromKey = (pwd: string, cacheKey: CacheKey) => {
|
|
18
|
-
const cacheRecordPath = Path.join(pwd, cacheKey);
|
|
19
|
-
const npmPackagePath = Path.join(process.cwd(), cacheRecordPath, "node");
|
|
20
|
-
const npmRootPackageJsonFile = Path.join(npmPackagePath, "package.json");
|
|
21
|
-
const cacheIndexFile = Path.join(cacheRecordPath, "index.json");
|
|
22
|
-
return { cacheKey, cacheRecordPath, cacheIndexFile, npmPackagePath, npmRootPackageJsonFile };
|
|
23
|
-
};
|
|
24
|
-
|
|
25
|
-
export const cacheRecordPaths = (pwd: string, packages: string[]) => {
|
|
26
|
-
const cacheKey = computeCacheKey(packages);
|
|
27
|
-
return cacheRecordPathsFromKey(pwd, cacheKey);
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
export const createCacheRecord = (): ExtendedCache => {
|
|
31
|
-
return {
|
|
32
|
-
entries: {},
|
|
33
|
-
packages: {},
|
|
34
|
-
references: {},
|
|
35
|
-
referenceManager: createReferenceManager(),
|
|
36
|
-
};
|
|
37
|
-
};
|
|
38
|
-
|
|
39
|
-
export const loadCacheRecordFromDisk = async (pwd: string, cacheKey: CacheKey): Promise<CacheData | undefined> => {
|
|
40
|
-
try {
|
|
41
|
-
const { cacheIndexFile } = cacheRecordPathsFromKey(pwd, cacheKey);
|
|
42
|
-
const content = await afs.readFile(cacheIndexFile, "utf-8");
|
|
43
|
-
return JSON.parse(content) as CacheData;
|
|
44
|
-
} catch {
|
|
45
|
-
return;
|
|
46
|
-
}
|
|
47
|
-
};
|
|
48
|
-
|
|
49
|
-
export const saveCacheRecordToDisk = async (cache: ExtendedCache, pwd: string, cacheKey: CacheKey): Promise<void> => {
|
|
50
|
-
const cacheData: CacheData = {
|
|
51
|
-
entries: cache.entries,
|
|
52
|
-
packages: cache.packages,
|
|
53
|
-
references: cache.referenceManager.getAllReferences(),
|
|
54
|
-
packageLockHash: cacheKey,
|
|
55
|
-
};
|
|
56
|
-
const { cacheIndexFile, cacheRecordPath } = cacheRecordPathsFromKey(pwd, cacheKey);
|
|
57
|
-
await afs.mkdir(cacheRecordPath, { recursive: true });
|
|
58
|
-
await afs.writeFile(cacheIndexFile, JSON.stringify(cacheData, null, 2));
|
|
59
|
-
};
|
package/src/cli/index.ts
DELETED
|
@@ -1,181 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
import * as fs from "node:fs";
|
|
4
|
-
import * as path from "node:path";
|
|
5
|
-
import { fileURLToPath } from "node:url";
|
|
6
|
-
import type { Config } from "../index.js";
|
|
7
|
-
|
|
8
|
-
// Command handlers
|
|
9
|
-
import { initCommand } from "./init.js";
|
|
10
|
-
import { listCommand } from "./list.js";
|
|
11
|
-
import { resolveCommand } from "./resolve.js";
|
|
12
|
-
import { searchCommand } from "./search.js";
|
|
13
|
-
import { searchParamCommand } from "./searchparam.js";
|
|
14
|
-
|
|
15
|
-
// Get version from package.json
|
|
16
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
17
|
-
const __dirname = path.dirname(__filename);
|
|
18
|
-
const packageJsonPath = path.join(__dirname, "..", "..", "package.json");
|
|
19
|
-
|
|
20
|
-
let VERSION = "unknown";
|
|
21
|
-
try {
|
|
22
|
-
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, "utf-8"));
|
|
23
|
-
VERSION = packageJson.version;
|
|
24
|
-
} catch (_error) {
|
|
25
|
-
// Fallback version if package.json can't be read
|
|
26
|
-
VERSION = "0.0.3";
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
function showHelp() {
|
|
30
|
-
console.log(`
|
|
31
|
-
fcm - FHIR Canonical Manager CLI
|
|
32
|
-
|
|
33
|
-
Usage: fcm <command> [options]
|
|
34
|
-
|
|
35
|
-
Commands:
|
|
36
|
-
init Initialize FHIR packages in current directory
|
|
37
|
-
list List packages or resources
|
|
38
|
-
search Search for resources
|
|
39
|
-
resolve Get a resource by canonical URL
|
|
40
|
-
searchparam Display search parameters for a resource type
|
|
41
|
-
|
|
42
|
-
Options:
|
|
43
|
-
--help Show help
|
|
44
|
-
--version Show version
|
|
45
|
-
|
|
46
|
-
Examples:
|
|
47
|
-
fcm init hl7.fhir.r4.core
|
|
48
|
-
fcm list
|
|
49
|
-
fcm search Patient
|
|
50
|
-
fcm resolve http://hl7.org/fhir/StructureDefinition/Patient
|
|
51
|
-
fcm searchparam Patient
|
|
52
|
-
`);
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
async function main() {
|
|
56
|
-
const args = process.argv.slice(2);
|
|
57
|
-
const command = args[0];
|
|
58
|
-
|
|
59
|
-
if (!command || command === "--help" || command === "-h") {
|
|
60
|
-
showHelp();
|
|
61
|
-
if (process.env.NODE_ENV === "test") {
|
|
62
|
-
return;
|
|
63
|
-
}
|
|
64
|
-
process.exit(0);
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
if (command === "--version" || command === "-v") {
|
|
68
|
-
console.log(VERSION);
|
|
69
|
-
if (process.env.NODE_ENV === "test") {
|
|
70
|
-
return;
|
|
71
|
-
}
|
|
72
|
-
process.exit(0);
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
const commands: Record<string, (args: string[]) => Promise<void>> = {
|
|
76
|
-
init: initCommand,
|
|
77
|
-
list: listCommand,
|
|
78
|
-
search: searchCommand,
|
|
79
|
-
resolve: resolveCommand,
|
|
80
|
-
searchparam: searchParamCommand,
|
|
81
|
-
};
|
|
82
|
-
|
|
83
|
-
if (!commands[command]) {
|
|
84
|
-
console.error(`Error: Unknown command '${command}'`);
|
|
85
|
-
console.error(`Run 'fcm --help' for usage information`);
|
|
86
|
-
if (process.env.NODE_ENV === "test") {
|
|
87
|
-
throw new Error(`Unknown command '${command}'`);
|
|
88
|
-
}
|
|
89
|
-
process.exit(1);
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
try {
|
|
93
|
-
await commands[command](args.slice(1));
|
|
94
|
-
} catch (error) {
|
|
95
|
-
console.error(`Error: ${error instanceof Error ? error.message : String(error)}`);
|
|
96
|
-
if (process.env.NODE_ENV === "test") {
|
|
97
|
-
throw error;
|
|
98
|
-
}
|
|
99
|
-
process.exit(1);
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
// Export utility functions for commands
|
|
104
|
-
export function parseArgs(args: string[]): {
|
|
105
|
-
positional: string[];
|
|
106
|
-
options: Record<string, string | boolean>;
|
|
107
|
-
} {
|
|
108
|
-
const positional: string[] = [];
|
|
109
|
-
const options: Record<string, string | boolean> = {};
|
|
110
|
-
|
|
111
|
-
for (let i = 0; i < args.length; i++) {
|
|
112
|
-
const arg = args[i];
|
|
113
|
-
if (arg?.startsWith("--")) {
|
|
114
|
-
const key = arg.slice(2);
|
|
115
|
-
const nextArg = args[i + 1];
|
|
116
|
-
if (nextArg && !nextArg.startsWith("--")) {
|
|
117
|
-
options[key] = nextArg;
|
|
118
|
-
i++;
|
|
119
|
-
} else {
|
|
120
|
-
options[key] = true;
|
|
121
|
-
}
|
|
122
|
-
} else if (arg?.startsWith("-")) {
|
|
123
|
-
// Handle short aliases
|
|
124
|
-
switch (arg) {
|
|
125
|
-
case "-sd":
|
|
126
|
-
options.resourceType = "StructureDefinition";
|
|
127
|
-
break;
|
|
128
|
-
case "-cs":
|
|
129
|
-
options.resourceType = "CodeSystem";
|
|
130
|
-
break;
|
|
131
|
-
case "-vs":
|
|
132
|
-
options.resourceType = "ValueSet";
|
|
133
|
-
break;
|
|
134
|
-
default: {
|
|
135
|
-
// Handle other single-letter flags
|
|
136
|
-
const key = arg.slice(1);
|
|
137
|
-
const nextArg = args[i + 1];
|
|
138
|
-
if (nextArg && !nextArg.startsWith("-")) {
|
|
139
|
-
options[key] = nextArg;
|
|
140
|
-
i++;
|
|
141
|
-
} else {
|
|
142
|
-
options[key] = true;
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
} else if (arg) {
|
|
147
|
-
positional.push(arg);
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
return { positional, options };
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
export async function loadPackageJson(): Promise<any> {
|
|
155
|
-
const packagePath = path.join(process.cwd(), "package.json");
|
|
156
|
-
try {
|
|
157
|
-
if (fs.existsSync(packagePath)) {
|
|
158
|
-
const content = fs.readFileSync(packagePath, "utf-8");
|
|
159
|
-
return JSON.parse(content);
|
|
160
|
-
}
|
|
161
|
-
} catch (_error) {
|
|
162
|
-
// Ignore parse errors
|
|
163
|
-
}
|
|
164
|
-
return null;
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
export async function savePackageJson(data: any): Promise<void> {
|
|
168
|
-
const packagePath = path.join(process.cwd(), "package.json");
|
|
169
|
-
fs.writeFileSync(packagePath, `${JSON.stringify(data, null, 2)}\n`);
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
export function getConfigFromPackageJson(packageJson: any): Partial<Config> {
|
|
173
|
-
const fcm = packageJson?.fcm || {};
|
|
174
|
-
return {
|
|
175
|
-
packages: fcm.packages || [],
|
|
176
|
-
registry: fcm.registry,
|
|
177
|
-
workingDir: process.cwd(),
|
|
178
|
-
};
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
main();
|
package/src/cli/init.ts
DELETED
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
import { exec } from "node:child_process";
|
|
2
|
-
import * as path from "node:path";
|
|
3
|
-
import { promisify } from "node:util";
|
|
4
|
-
import { CanonicalManager } from "../index.js";
|
|
5
|
-
import { loadPackageJson, parseArgs, savePackageJson } from "./index.js";
|
|
6
|
-
|
|
7
|
-
const execAsync = promisify(exec);
|
|
8
|
-
|
|
9
|
-
export async function initCommand(args: string[]): Promise<void> {
|
|
10
|
-
const { positional, options } = parseArgs(args);
|
|
11
|
-
const packages = positional;
|
|
12
|
-
const registry = options.registry as string | undefined;
|
|
13
|
-
|
|
14
|
-
// Load or create package.json
|
|
15
|
-
let packageJson = await loadPackageJson();
|
|
16
|
-
const isNewPackageJson = !packageJson;
|
|
17
|
-
|
|
18
|
-
if (!packageJson) {
|
|
19
|
-
// Create minimal package.json
|
|
20
|
-
packageJson = {
|
|
21
|
-
name: path.basename(process.cwd()),
|
|
22
|
-
version: "1.0.0",
|
|
23
|
-
type: "module",
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
// Initialize fcm config
|
|
28
|
-
if (!packageJson.fcm) {
|
|
29
|
-
packageJson.fcm = {
|
|
30
|
-
packages: [],
|
|
31
|
-
registry: registry ? (registry.endsWith("/") ? registry : `${registry}/`) : "https://fs.get-ig.org/pkgs/",
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
// If no packages specified, use packages from config
|
|
36
|
-
const packagesToInstall = packages.length > 0 ? packages : packageJson.fcm.packages;
|
|
37
|
-
|
|
38
|
-
if (packagesToInstall.length === 0) {
|
|
39
|
-
console.error("Error: No packages specified");
|
|
40
|
-
console.error("Usage: fcm init [packages...]");
|
|
41
|
-
console.error("Example: fcm init hl7.fhir.r4.core hl7.fhir.us.core@5.0.1");
|
|
42
|
-
if (process.env.NODE_ENV === "test") {
|
|
43
|
-
throw new Error("No packages specified");
|
|
44
|
-
}
|
|
45
|
-
process.exit(1);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
// Update fcm packages list (merge with existing)
|
|
49
|
-
const existingPackages = new Set(packageJson.fcm.packages);
|
|
50
|
-
packagesToInstall.forEach((pkg: string) => {
|
|
51
|
-
existingPackages.add(pkg);
|
|
52
|
-
});
|
|
53
|
-
packageJson.fcm.packages = Array.from(existingPackages);
|
|
54
|
-
|
|
55
|
-
// Update registry if provided, ensuring it ends with /
|
|
56
|
-
if (registry) {
|
|
57
|
-
packageJson.fcm.registry = registry.endsWith("/") ? registry : `${registry}/`;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
// Initialize dependencies if not present
|
|
61
|
-
if (!packageJson.dependencies) {
|
|
62
|
-
packageJson.dependencies = {};
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
// Save package.json
|
|
66
|
-
await savePackageJson(packageJson);
|
|
67
|
-
|
|
68
|
-
if (isNewPackageJson) {
|
|
69
|
-
console.log("Created package.json");
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
// Install packages using npm
|
|
73
|
-
console.log("Installing FHIR packages...");
|
|
74
|
-
|
|
75
|
-
for (const pkg of packagesToInstall) {
|
|
76
|
-
console.log(`Installing ${pkg}...`);
|
|
77
|
-
try {
|
|
78
|
-
const command = packageJson.fcm.registry
|
|
79
|
-
? `npm install ${pkg} --registry ${packageJson.fcm.registry}`
|
|
80
|
-
: `npm install ${pkg}`;
|
|
81
|
-
|
|
82
|
-
await execAsync(command, {
|
|
83
|
-
cwd: process.cwd(),
|
|
84
|
-
maxBuffer: 10 * 1024 * 1024, // 10MB buffer
|
|
85
|
-
});
|
|
86
|
-
} catch (error) {
|
|
87
|
-
console.error(`Failed to install ${pkg}`);
|
|
88
|
-
throw error;
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
// Initialize CanonicalManager to build cache
|
|
93
|
-
console.log("Building package index...");
|
|
94
|
-
console.log("Registry", packageJson?.fcm?.registry);
|
|
95
|
-
const manager = CanonicalManager({
|
|
96
|
-
packages: packageJson.fcm.packages,
|
|
97
|
-
workingDir: process.cwd(),
|
|
98
|
-
registry: packageJson.fcm.registry,
|
|
99
|
-
});
|
|
100
|
-
|
|
101
|
-
await manager.init();
|
|
102
|
-
|
|
103
|
-
// Show summary
|
|
104
|
-
const installedPackages = await manager.packages();
|
|
105
|
-
console.log("\nInstalled packages:");
|
|
106
|
-
installedPackages.forEach((pkg) => {
|
|
107
|
-
console.log(` ${pkg.name}@${pkg.version}`);
|
|
108
|
-
});
|
|
109
|
-
|
|
110
|
-
await manager.destroy();
|
|
111
|
-
console.log("\nInitialization complete!");
|
|
112
|
-
}
|