@openhi/types 0.0.24 → 0.0.26
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/lib/index.d.ts +1 -0
- package/lib/index.js +2 -1
- package/lib/sort-key/extract-sort-key.d.ts +44 -0
- package/lib/sort-key/extract-sort-key.js +130 -0
- package/lib/sort-key/index.d.ts +2 -0
- package/lib/sort-key/index.js +19 -0
- package/lib/sort-key/label-paths.d.ts +29 -0
- package/lib/sort-key/label-paths.js +28 -0
- package/package.json +6 -3
package/lib/index.d.ts
CHANGED
package/lib/index.js
CHANGED
|
@@ -30,4 +30,5 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
30
30
|
__exportStar(require("./data"), exports);
|
|
31
31
|
__exportStar(require("./control"), exports);
|
|
32
32
|
__exportStar(require("./summary"), exports);
|
|
33
|
-
|
|
33
|
+
__exportStar(require("./sort-key"), exports);
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOzs7Ozs7Ozs7Ozs7R0FZRztBQUNILHlDQUF1QjtBQUN2Qiw0Q0FBMEI7QUFDMUIsNENBQTBCO0FBQzFCLDZDQUEyQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG9wZW5oaS90eXBlcyDigJQgRkhJUiBhbmQgT3BlbkhJIHR5cGVzIGJ5IGRvbWFpbi5cbiAqXG4gKiBEYXRhIHBsYW5lIGlzIGdlbmVyYXRvciBvdXRwdXQgKGBzcmMvZGF0YS9gLCBvbmUgbW9kdWxlIHBlciBGSElSIFI0XG4gKiBTdHJ1Y3R1cmVEZWZpbml0aW9uLCBiYXJyZWwgaW4gYC4vZGF0YS9pbmRleC50c2ApLiBCYXNlIHJlc291cmNlc1xuICogKFJlc291cmNlLCBEb21haW5SZXNvdXJjZSwgRWxlbWVudCwgQmFja2JvbmVFbGVtZW50LCBFeHRlbnNpb24sIGV0Yy4pXG4gKiBsaXZlIGluIHRoYXQgc2FtZSB0cmVlIOKAlCB0aGUgZ2VuZXJhdG9yIHRyZWF0cyB0aGVtIGxpa2UgYW55IG90aGVyIFNELlxuICpcbiAqIENvbnRyb2wgcGxhbmUgaXMgZ2VuZXJhdG9yIG91dHB1dCAoYHNyYy9jb250cm9sL2ApOiBVc2VyLCBUZW5hbnQsXG4gKiBXb3Jrc3BhY2UsIE1lbWJlcnNoaXAsIFJvbGVBc3NpZ25tZW50LCBSb2xlLCBwbHVzIHRoZVxuICogYENvbnRyb2xQbGFuZVJvbGVDb2RlYCB0ZXJtaW5vbG9neS4gQXV0aG9yZWQgaW4gRlNIIHVuZGVyXG4gKiBgZnNoL2lucHV0L2ZzaC9jb250cm9sLXBsYW5lL2AgYW5kIGVtaXR0ZWQgYnkgdGhlIHNhbWUgcGlwZWxpbmUuXG4gKi9cbmV4cG9ydCAqIGZyb20gXCIuL2RhdGFcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbnRyb2xcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3N1bW1hcnlcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NvcnQta2V5XCI7XG4iXX0=
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure projection of a FHIR R4 resource into its GSI1 sort key per DR-004.
|
|
3
|
+
*
|
|
4
|
+
* - Labeled types (entries in `LABEL_PATHS`): `<normalizedLabel>#<id>`
|
|
5
|
+
* so list endpoints sort alphabetically and `BEGINS_WITH` serves
|
|
6
|
+
* prefix queries like `?name=Sm`.
|
|
7
|
+
* - Unlabeled types: `<ISO-8601 lastUpdated>#<id>` so list endpoints
|
|
8
|
+
* serve reverse-chronological with `ScanIndexForward=false`.
|
|
9
|
+
*
|
|
10
|
+
* Pure: no I/O, no DynamoDB access, deterministic over the resource and
|
|
11
|
+
* the committed `LABEL_PATHS` table. Consumed by the data-plane writer
|
|
12
|
+
* before each `PutItem` / `UpdateItem`.
|
|
13
|
+
*/
|
|
14
|
+
import type { FhirResourceLike } from "../summary/extract-summary";
|
|
15
|
+
/**
|
|
16
|
+
* Returns the GSI1 sort-key value for `resource`. The id is the
|
|
17
|
+
* tie-breaker suffix; callers must pass a resource that carries an `id`
|
|
18
|
+
* for an `<id>` segment to be present, but `extractSortKey` returns
|
|
19
|
+
* `<label>#` (or `<lastUpdated>#`) with an empty trailing segment when id
|
|
20
|
+
* is missing rather than throwing — the caller validates id at the
|
|
21
|
+
* write-path entry.
|
|
22
|
+
*
|
|
23
|
+
* Resolution order:
|
|
24
|
+
* 1. `LABEL_PATHS[resourceType]` — the curated, type-aware extraction.
|
|
25
|
+
* 2. Introspection fallback per ADR-011 / DR-004: try `resource.name`
|
|
26
|
+
* (when it's a non-empty string), then `resource.title` (same), so
|
|
27
|
+
* spec types with a string `name`/`title` participate in alphabetical
|
|
28
|
+
* sort and `BEGINS_WITH` even if they aren't in `LABEL_PATHS` yet.
|
|
29
|
+
* 3. Unlabeled fallback — `<ISO-8601 lastUpdated>#<id>`.
|
|
30
|
+
*/
|
|
31
|
+
export declare function extractSortKey(resource: FhirResourceLike): string;
|
|
32
|
+
/**
|
|
33
|
+
* Normalize a natural-language label per DR-004:
|
|
34
|
+
* 1. ASCII-fold common Latin diacritics (ñ→n, é→e, ø→o, …).
|
|
35
|
+
* 2. Lowercase (DynamoDB byte-order sort).
|
|
36
|
+
* 3. Strip apostrophes and periods (so `O'Connor` → `oconnor`).
|
|
37
|
+
* 4. Replace hyphens with spaces (so `García-López` → `garcia lopez`).
|
|
38
|
+
* 5. Strip other punctuation, collapse runs of whitespace, trim.
|
|
39
|
+
*
|
|
40
|
+
* Non-Latin scripts pass through unchanged after ASCII-fold so same-script
|
|
41
|
+
* items sort together. Locale-aware collation is a downstream client
|
|
42
|
+
* concern.
|
|
43
|
+
*/
|
|
44
|
+
export declare function normalizeLabel(input: string): string;
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Pure projection of a FHIR R4 resource into its GSI1 sort key per DR-004.
|
|
4
|
+
*
|
|
5
|
+
* - Labeled types (entries in `LABEL_PATHS`): `<normalizedLabel>#<id>`
|
|
6
|
+
* so list endpoints sort alphabetically and `BEGINS_WITH` serves
|
|
7
|
+
* prefix queries like `?name=Sm`.
|
|
8
|
+
* - Unlabeled types: `<ISO-8601 lastUpdated>#<id>` so list endpoints
|
|
9
|
+
* serve reverse-chronological with `ScanIndexForward=false`.
|
|
10
|
+
*
|
|
11
|
+
* Pure: no I/O, no DynamoDB access, deterministic over the resource and
|
|
12
|
+
* the committed `LABEL_PATHS` table. Consumed by the data-plane writer
|
|
13
|
+
* before each `PutItem` / `UpdateItem`.
|
|
14
|
+
*/
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.extractSortKey = extractSortKey;
|
|
17
|
+
exports.normalizeLabel = normalizeLabel;
|
|
18
|
+
const label_paths_1 = require("./label-paths");
|
|
19
|
+
/**
|
|
20
|
+
* Returns the GSI1 sort-key value for `resource`. The id is the
|
|
21
|
+
* tie-breaker suffix; callers must pass a resource that carries an `id`
|
|
22
|
+
* for an `<id>` segment to be present, but `extractSortKey` returns
|
|
23
|
+
* `<label>#` (or `<lastUpdated>#`) with an empty trailing segment when id
|
|
24
|
+
* is missing rather than throwing — the caller validates id at the
|
|
25
|
+
* write-path entry.
|
|
26
|
+
*
|
|
27
|
+
* Resolution order:
|
|
28
|
+
* 1. `LABEL_PATHS[resourceType]` — the curated, type-aware extraction.
|
|
29
|
+
* 2. Introspection fallback per ADR-011 / DR-004: try `resource.name`
|
|
30
|
+
* (when it's a non-empty string), then `resource.title` (same), so
|
|
31
|
+
* spec types with a string `name`/`title` participate in alphabetical
|
|
32
|
+
* sort and `BEGINS_WITH` even if they aren't in `LABEL_PATHS` yet.
|
|
33
|
+
* 3. Unlabeled fallback — `<ISO-8601 lastUpdated>#<id>`.
|
|
34
|
+
*/
|
|
35
|
+
function extractSortKey(resource) {
|
|
36
|
+
const id = typeof resource.id === "string" ? resource.id : "";
|
|
37
|
+
const source = label_paths_1.LABEL_PATHS[resource.resourceType];
|
|
38
|
+
if (source) {
|
|
39
|
+
const label = extractLabel(resource, source);
|
|
40
|
+
if (label.length > 0) {
|
|
41
|
+
return `${normalizeLabel(label)}#${id}`;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
const introspected = introspectStringField(resource, "name") ??
|
|
45
|
+
introspectStringField(resource, "title");
|
|
46
|
+
if (introspected !== undefined) {
|
|
47
|
+
return `${normalizeLabel(introspected)}#${id}`;
|
|
48
|
+
}
|
|
49
|
+
const lastUpdated = typeof resource.meta?.lastUpdated === "string"
|
|
50
|
+
? resource.meta.lastUpdated
|
|
51
|
+
: "";
|
|
52
|
+
return `${lastUpdated}#${id}`;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Returns the value of `field` on `resource` only if it's a non-empty string.
|
|
56
|
+
* Guards against HumanName arrays (Patient.name) and other non-string shapes
|
|
57
|
+
* so the introspection fallback never produces a key from a typed field it
|
|
58
|
+
* doesn't understand — that case stays on the lastUpdated fallback.
|
|
59
|
+
*/
|
|
60
|
+
function introspectStringField(resource, field) {
|
|
61
|
+
const value = resource[field];
|
|
62
|
+
if (typeof value === "string" && value.length > 0)
|
|
63
|
+
return value;
|
|
64
|
+
return undefined;
|
|
65
|
+
}
|
|
66
|
+
function extractLabel(resource, source) {
|
|
67
|
+
if (source.kind === "humanName") {
|
|
68
|
+
const names = resource[source.path];
|
|
69
|
+
if (!Array.isArray(names))
|
|
70
|
+
return "";
|
|
71
|
+
const first = names[0];
|
|
72
|
+
if (!first || typeof first !== "object")
|
|
73
|
+
return "";
|
|
74
|
+
const name = first;
|
|
75
|
+
const family = typeof name.family === "string" ? name.family : "";
|
|
76
|
+
const given = Array.isArray(name.given) && typeof name.given[0] === "string"
|
|
77
|
+
? name.given[0]
|
|
78
|
+
: "";
|
|
79
|
+
if (family.length === 0 && given.length === 0)
|
|
80
|
+
return "";
|
|
81
|
+
return `${family},${given}`;
|
|
82
|
+
}
|
|
83
|
+
if (source.kind === "string") {
|
|
84
|
+
const value = resource[source.path];
|
|
85
|
+
return typeof value === "string" ? value : "";
|
|
86
|
+
}
|
|
87
|
+
if (source.kind === "codeDisplay") {
|
|
88
|
+
const code = resource[source.path];
|
|
89
|
+
if (!code || typeof code !== "object")
|
|
90
|
+
return "";
|
|
91
|
+
const cc = code;
|
|
92
|
+
if (Array.isArray(cc.coding)) {
|
|
93
|
+
const first = cc.coding[0];
|
|
94
|
+
if (first && typeof first === "object") {
|
|
95
|
+
const display = first.display;
|
|
96
|
+
if (typeof display === "string" && display.length > 0)
|
|
97
|
+
return display;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
return typeof cc.text === "string" ? cc.text : "";
|
|
101
|
+
}
|
|
102
|
+
return "";
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Normalize a natural-language label per DR-004:
|
|
106
|
+
* 1. ASCII-fold common Latin diacritics (ñ→n, é→e, ø→o, …).
|
|
107
|
+
* 2. Lowercase (DynamoDB byte-order sort).
|
|
108
|
+
* 3. Strip apostrophes and periods (so `O'Connor` → `oconnor`).
|
|
109
|
+
* 4. Replace hyphens with spaces (so `García-López` → `garcia lopez`).
|
|
110
|
+
* 5. Strip other punctuation, collapse runs of whitespace, trim.
|
|
111
|
+
*
|
|
112
|
+
* Non-Latin scripts pass through unchanged after ASCII-fold so same-script
|
|
113
|
+
* items sort together. Locale-aware collation is a downstream client
|
|
114
|
+
* concern.
|
|
115
|
+
*/
|
|
116
|
+
function normalizeLabel(input) {
|
|
117
|
+
return asciiFold(input)
|
|
118
|
+
.toLowerCase()
|
|
119
|
+
.replace(/['’.]/g, "")
|
|
120
|
+
.replace(/-/g, " ")
|
|
121
|
+
.replace(/[^\p{L}\p{N},\s]/gu, " ")
|
|
122
|
+
.replace(/\s+/g, " ")
|
|
123
|
+
.trim();
|
|
124
|
+
}
|
|
125
|
+
function asciiFold(input) {
|
|
126
|
+
// Decompose accents and strip combining marks; covers the common Latin
|
|
127
|
+
// diacritics (é, ñ, ü, …). Non-Latin scripts are unaffected.
|
|
128
|
+
return input.normalize("NFKD").replace(/\p{M}+/gu, "");
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0cmFjdC1zb3J0LWtleS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zb3J0LWtleS9leHRyYWN0LXNvcnQta2V5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7O0dBWUc7O0FBcUJILHdDQXVCQztBQXNFRCx3Q0FRQztBQXhIRCwrQ0FBOEQ7QUFHOUQ7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBQ0gsU0FBZ0IsY0FBYyxDQUFDLFFBQTBCO0lBQ3ZELE1BQU0sRUFBRSxHQUFHLE9BQU8sUUFBUSxDQUFDLEVBQUUsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUU5RCxNQUFNLE1BQU0sR0FBRyx5QkFBVyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNsRCxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQ1gsTUFBTSxLQUFLLEdBQUcsWUFBWSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUM3QyxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDckIsT0FBTyxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztRQUMxQyxDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU0sWUFBWSxHQUNoQixxQkFBcUIsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDO1FBQ3ZDLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMzQyxJQUFJLFlBQVksS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUMvQixPQUFPLEdBQUcsY0FBYyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO0lBQ2pELENBQUM7SUFFRCxNQUFNLFdBQVcsR0FDZixPQUFPLFFBQVEsQ0FBQyxJQUFJLEVBQUUsV0FBVyxLQUFLLFFBQVE7UUFDNUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVztRQUMzQixDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ1QsT0FBTyxHQUFHLFdBQVcsSUFBSSxFQUFFLEVBQUUsQ0FBQztBQUNoQyxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFTLHFCQUFxQixDQUM1QixRQUEwQixFQUMxQixLQUFhO0lBRWIsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlCLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQztRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQ2hFLE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUM7QUFFRCxTQUFTLFlBQVksQ0FBQyxRQUEwQixFQUFFLE1BQW1CO0lBQ25FLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxXQUFXLEVBQUUsQ0FBQztRQUNoQyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztZQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ3JDLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN2QixJQUFJLENBQUMsS0FBSyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVE7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUNuRCxNQUFNLElBQUksR0FBRyxLQUE4QyxDQUFDO1FBQzVELE1BQU0sTUFBTSxHQUFHLE9BQU8sSUFBSSxDQUFDLE1BQU0sS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNsRSxNQUFNLEtBQUssR0FDVCxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssUUFBUTtZQUM1RCxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDZixDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ1QsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUM7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUN6RCxPQUFPLEdBQUcsTUFBTSxJQUFJLEtBQUssRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDN0IsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQyxPQUFPLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDaEQsQ0FBQztJQUVELElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxhQUFhLEVBQUUsQ0FBQztRQUNsQyxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxJQUFJLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUTtZQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ2pELE1BQU0sRUFBRSxHQUFHLElBR1YsQ0FBQztRQUNGLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUM3QixNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNCLElBQUksS0FBSyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUN2QyxNQUFNLE9BQU8sR0FBSSxLQUErQixDQUFDLE9BQU8sQ0FBQztnQkFDekQsSUFBSSxPQUFPLE9BQU8sS0FBSyxRQUFRLElBQUksT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDO29CQUFFLE9BQU8sT0FBTyxDQUFDO1lBQ3hFLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxPQUFPLEVBQUUsQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDcEQsQ0FBQztJQUVELE9BQU8sRUFBRSxDQUFDO0FBQ1osQ0FBQztBQUVEOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsU0FBZ0IsY0FBYyxDQUFDLEtBQWE7SUFDMUMsT0FBTyxTQUFTLENBQUMsS0FBSyxDQUFDO1NBQ3BCLFdBQVcsRUFBRTtTQUNiLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1NBQ3JCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDO1NBQ2xCLE9BQU8sQ0FBQyxvQkFBb0IsRUFBRSxHQUFHLENBQUM7U0FDbEMsT0FBTyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUM7U0FDcEIsSUFBSSxFQUFFLENBQUM7QUFDWixDQUFDO0FBRUQsU0FBUyxTQUFTLENBQUMsS0FBYTtJQUM5Qix1RUFBdUU7SUFDdkUsNkRBQTZEO0lBQzdELE9BQU8sS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3pELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFB1cmUgcHJvamVjdGlvbiBvZiBhIEZISVIgUjQgcmVzb3VyY2UgaW50byBpdHMgR1NJMSBzb3J0IGtleSBwZXIgRFItMDA0LlxuICpcbiAqIC0gTGFiZWxlZCB0eXBlcyAoZW50cmllcyBpbiBgTEFCRUxfUEFUSFNgKTogYDxub3JtYWxpemVkTGFiZWw+IzxpZD5gXG4gKiAgIHNvIGxpc3QgZW5kcG9pbnRzIHNvcnQgYWxwaGFiZXRpY2FsbHkgYW5kIGBCRUdJTlNfV0lUSGAgc2VydmVzXG4gKiAgIHByZWZpeCBxdWVyaWVzIGxpa2UgYD9uYW1lPVNtYC5cbiAqIC0gVW5sYWJlbGVkIHR5cGVzOiBgPElTTy04NjAxIGxhc3RVcGRhdGVkPiM8aWQ+YCBzbyBsaXN0IGVuZHBvaW50c1xuICogICBzZXJ2ZSByZXZlcnNlLWNocm9ub2xvZ2ljYWwgd2l0aCBgU2NhbkluZGV4Rm9yd2FyZD1mYWxzZWAuXG4gKlxuICogUHVyZTogbm8gSS9PLCBubyBEeW5hbW9EQiBhY2Nlc3MsIGRldGVybWluaXN0aWMgb3ZlciB0aGUgcmVzb3VyY2UgYW5kXG4gKiB0aGUgY29tbWl0dGVkIGBMQUJFTF9QQVRIU2AgdGFibGUuIENvbnN1bWVkIGJ5IHRoZSBkYXRhLXBsYW5lIHdyaXRlclxuICogYmVmb3JlIGVhY2ggYFB1dEl0ZW1gIC8gYFVwZGF0ZUl0ZW1gLlxuICovXG5cbmltcG9ydCB7IExBQkVMX1BBVEhTLCB0eXBlIExhYmVsU291cmNlIH0gZnJvbSBcIi4vbGFiZWwtcGF0aHNcIjtcbmltcG9ydCB0eXBlIHsgRmhpclJlc291cmNlTGlrZSB9IGZyb20gXCIuLi9zdW1tYXJ5L2V4dHJhY3Qtc3VtbWFyeVwiO1xuXG4vKipcbiAqIFJldHVybnMgdGhlIEdTSTEgc29ydC1rZXkgdmFsdWUgZm9yIGByZXNvdXJjZWAuIFRoZSBpZCBpcyB0aGVcbiAqIHRpZS1icmVha2VyIHN1ZmZpeDsgY2FsbGVycyBtdXN0IHBhc3MgYSByZXNvdXJjZSB0aGF0IGNhcnJpZXMgYW4gYGlkYFxuICogZm9yIGFuIGA8aWQ+YCBzZWdtZW50IHRvIGJlIHByZXNlbnQsIGJ1dCBgZXh0cmFjdFNvcnRLZXlgIHJldHVybnNcbiAqIGA8bGFiZWw+I2AgKG9yIGA8bGFzdFVwZGF0ZWQ+I2ApIHdpdGggYW4gZW1wdHkgdHJhaWxpbmcgc2VnbWVudCB3aGVuIGlkXG4gKiBpcyBtaXNzaW5nIHJhdGhlciB0aGFuIHRocm93aW5nIOKAlCB0aGUgY2FsbGVyIHZhbGlkYXRlcyBpZCBhdCB0aGVcbiAqIHdyaXRlLXBhdGggZW50cnkuXG4gKlxuICogUmVzb2x1dGlvbiBvcmRlcjpcbiAqIDEuIGBMQUJFTF9QQVRIU1tyZXNvdXJjZVR5cGVdYCDigJQgdGhlIGN1cmF0ZWQsIHR5cGUtYXdhcmUgZXh0cmFjdGlvbi5cbiAqIDIuIEludHJvc3BlY3Rpb24gZmFsbGJhY2sgcGVyIEFEUi0wMTEgLyBEUi0wMDQ6IHRyeSBgcmVzb3VyY2UubmFtZWBcbiAqICAgICh3aGVuIGl0J3MgYSBub24tZW1wdHkgc3RyaW5nKSwgdGhlbiBgcmVzb3VyY2UudGl0bGVgIChzYW1lKSwgc29cbiAqICAgIHNwZWMgdHlwZXMgd2l0aCBhIHN0cmluZyBgbmFtZWAvYHRpdGxlYCBwYXJ0aWNpcGF0ZSBpbiBhbHBoYWJldGljYWxcbiAqICAgIHNvcnQgYW5kIGBCRUdJTlNfV0lUSGAgZXZlbiBpZiB0aGV5IGFyZW4ndCBpbiBgTEFCRUxfUEFUSFNgIHlldC5cbiAqIDMuIFVubGFiZWxlZCBmYWxsYmFjayDigJQgYDxJU08tODYwMSBsYXN0VXBkYXRlZD4jPGlkPmAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0U29ydEtleShyZXNvdXJjZTogRmhpclJlc291cmNlTGlrZSk6IHN0cmluZyB7XG4gIGNvbnN0IGlkID0gdHlwZW9mIHJlc291cmNlLmlkID09PSBcInN0cmluZ1wiID8gcmVzb3VyY2UuaWQgOiBcIlwiO1xuXG4gIGNvbnN0IHNvdXJjZSA9IExBQkVMX1BBVEhTW3Jlc291cmNlLnJlc291cmNlVHlwZV07XG4gIGlmIChzb3VyY2UpIHtcbiAgICBjb25zdCBsYWJlbCA9IGV4dHJhY3RMYWJlbChyZXNvdXJjZSwgc291cmNlKTtcbiAgICBpZiAobGFiZWwubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIGAke25vcm1hbGl6ZUxhYmVsKGxhYmVsKX0jJHtpZH1gO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGludHJvc3BlY3RlZCA9XG4gICAgaW50cm9zcGVjdFN0cmluZ0ZpZWxkKHJlc291cmNlLCBcIm5hbWVcIikgPz9cbiAgICBpbnRyb3NwZWN0U3RyaW5nRmllbGQocmVzb3VyY2UsIFwidGl0bGVcIik7XG4gIGlmIChpbnRyb3NwZWN0ZWQgIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBgJHtub3JtYWxpemVMYWJlbChpbnRyb3NwZWN0ZWQpfSMke2lkfWA7XG4gIH1cblxuICBjb25zdCBsYXN0VXBkYXRlZCA9XG4gICAgdHlwZW9mIHJlc291cmNlLm1ldGE/Lmxhc3RVcGRhdGVkID09PSBcInN0cmluZ1wiXG4gICAgICA/IHJlc291cmNlLm1ldGEubGFzdFVwZGF0ZWRcbiAgICAgIDogXCJcIjtcbiAgcmV0dXJuIGAke2xhc3RVcGRhdGVkfSMke2lkfWA7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgdmFsdWUgb2YgYGZpZWxkYCBvbiBgcmVzb3VyY2VgIG9ubHkgaWYgaXQncyBhIG5vbi1lbXB0eSBzdHJpbmcuXG4gKiBHdWFyZHMgYWdhaW5zdCBIdW1hbk5hbWUgYXJyYXlzIChQYXRpZW50Lm5hbWUpIGFuZCBvdGhlciBub24tc3RyaW5nIHNoYXBlc1xuICogc28gdGhlIGludHJvc3BlY3Rpb24gZmFsbGJhY2sgbmV2ZXIgcHJvZHVjZXMgYSBrZXkgZnJvbSBhIHR5cGVkIGZpZWxkIGl0XG4gKiBkb2Vzbid0IHVuZGVyc3RhbmQg4oCUIHRoYXQgY2FzZSBzdGF5cyBvbiB0aGUgbGFzdFVwZGF0ZWQgZmFsbGJhY2suXG4gKi9cbmZ1bmN0aW9uIGludHJvc3BlY3RTdHJpbmdGaWVsZChcbiAgcmVzb3VyY2U6IEZoaXJSZXNvdXJjZUxpa2UsXG4gIGZpZWxkOiBzdHJpbmcsXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBjb25zdCB2YWx1ZSA9IHJlc291cmNlW2ZpZWxkXTtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiAmJiB2YWx1ZS5sZW5ndGggPiAwKSByZXR1cm4gdmFsdWU7XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGV4dHJhY3RMYWJlbChyZXNvdXJjZTogRmhpclJlc291cmNlTGlrZSwgc291cmNlOiBMYWJlbFNvdXJjZSk6IHN0cmluZyB7XG4gIGlmIChzb3VyY2Uua2luZCA9PT0gXCJodW1hbk5hbWVcIikge1xuICAgIGNvbnN0IG5hbWVzID0gcmVzb3VyY2Vbc291cmNlLnBhdGhdO1xuICAgIGlmICghQXJyYXkuaXNBcnJheShuYW1lcykpIHJldHVybiBcIlwiO1xuICAgIGNvbnN0IGZpcnN0ID0gbmFtZXNbMF07XG4gICAgaWYgKCFmaXJzdCB8fCB0eXBlb2YgZmlyc3QgIT09IFwib2JqZWN0XCIpIHJldHVybiBcIlwiO1xuICAgIGNvbnN0IG5hbWUgPSBmaXJzdCBhcyB7IGZhbWlseT86IHVua25vd247IGdpdmVuPzogdW5rbm93biB9O1xuICAgIGNvbnN0IGZhbWlseSA9IHR5cGVvZiBuYW1lLmZhbWlseSA9PT0gXCJzdHJpbmdcIiA/IG5hbWUuZmFtaWx5IDogXCJcIjtcbiAgICBjb25zdCBnaXZlbiA9XG4gICAgICBBcnJheS5pc0FycmF5KG5hbWUuZ2l2ZW4pICYmIHR5cGVvZiBuYW1lLmdpdmVuWzBdID09PSBcInN0cmluZ1wiXG4gICAgICAgID8gbmFtZS5naXZlblswXVxuICAgICAgICA6IFwiXCI7XG4gICAgaWYgKGZhbWlseS5sZW5ndGggPT09IDAgJiYgZ2l2ZW4ubGVuZ3RoID09PSAwKSByZXR1cm4gXCJcIjtcbiAgICByZXR1cm4gYCR7ZmFtaWx5fSwke2dpdmVufWA7XG4gIH1cblxuICBpZiAoc291cmNlLmtpbmQgPT09IFwic3RyaW5nXCIpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHJlc291cmNlW3NvdXJjZS5wYXRoXTtcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiID8gdmFsdWUgOiBcIlwiO1xuICB9XG5cbiAgaWYgKHNvdXJjZS5raW5kID09PSBcImNvZGVEaXNwbGF5XCIpIHtcbiAgICBjb25zdCBjb2RlID0gcmVzb3VyY2Vbc291cmNlLnBhdGhdO1xuICAgIGlmICghY29kZSB8fCB0eXBlb2YgY29kZSAhPT0gXCJvYmplY3RcIikgcmV0dXJuIFwiXCI7XG4gICAgY29uc3QgY2MgPSBjb2RlIGFzIHtcbiAgICAgIGNvZGluZz86IHVua25vd247XG4gICAgICB0ZXh0PzogdW5rbm93bjtcbiAgICB9O1xuICAgIGlmIChBcnJheS5pc0FycmF5KGNjLmNvZGluZykpIHtcbiAgICAgIGNvbnN0IGZpcnN0ID0gY2MuY29kaW5nWzBdO1xuICAgICAgaWYgKGZpcnN0ICYmIHR5cGVvZiBmaXJzdCA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICBjb25zdCBkaXNwbGF5ID0gKGZpcnN0IGFzIHsgZGlzcGxheT86IHVua25vd24gfSkuZGlzcGxheTtcbiAgICAgICAgaWYgKHR5cGVvZiBkaXNwbGF5ID09PSBcInN0cmluZ1wiICYmIGRpc3BsYXkubGVuZ3RoID4gMCkgcmV0dXJuIGRpc3BsYXk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0eXBlb2YgY2MudGV4dCA9PT0gXCJzdHJpbmdcIiA/IGNjLnRleHQgOiBcIlwiO1xuICB9XG5cbiAgcmV0dXJuIFwiXCI7XG59XG5cbi8qKlxuICogTm9ybWFsaXplIGEgbmF0dXJhbC1sYW5ndWFnZSBsYWJlbCBwZXIgRFItMDA0OlxuICogMS4gQVNDSUktZm9sZCBjb21tb24gTGF0aW4gZGlhY3JpdGljcyAow7HihpJuLCDDqeKGkmUsIMO44oaSbywg4oCmKS5cbiAqIDIuIExvd2VyY2FzZSAoRHluYW1vREIgYnl0ZS1vcmRlciBzb3J0KS5cbiAqIDMuIFN0cmlwIGFwb3N0cm9waGVzIGFuZCBwZXJpb2RzIChzbyBgTydDb25ub3JgIOKGkiBgb2Nvbm5vcmApLlxuICogNC4gUmVwbGFjZSBoeXBoZW5zIHdpdGggc3BhY2VzIChzbyBgR2FyY8OtYS1Mw7NwZXpgIOKGkiBgZ2FyY2lhIGxvcGV6YCkuXG4gKiA1LiBTdHJpcCBvdGhlciBwdW5jdHVhdGlvbiwgY29sbGFwc2UgcnVucyBvZiB3aGl0ZXNwYWNlLCB0cmltLlxuICpcbiAqIE5vbi1MYXRpbiBzY3JpcHRzIHBhc3MgdGhyb3VnaCB1bmNoYW5nZWQgYWZ0ZXIgQVNDSUktZm9sZCBzbyBzYW1lLXNjcmlwdFxuICogaXRlbXMgc29ydCB0b2dldGhlci4gTG9jYWxlLWF3YXJlIGNvbGxhdGlvbiBpcyBhIGRvd25zdHJlYW0gY2xpZW50XG4gKiBjb25jZXJuLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplTGFiZWwoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBhc2NpaUZvbGQoaW5wdXQpXG4gICAgLnRvTG93ZXJDYXNlKClcbiAgICAucmVwbGFjZSgvWyfigJkuXS9nLCBcIlwiKVxuICAgIC5yZXBsYWNlKC8tL2csIFwiIFwiKVxuICAgIC5yZXBsYWNlKC9bXlxccHtMfVxccHtOfSxcXHNdL2d1LCBcIiBcIilcbiAgICAucmVwbGFjZSgvXFxzKy9nLCBcIiBcIilcbiAgICAudHJpbSgpO1xufVxuXG5mdW5jdGlvbiBhc2NpaUZvbGQoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIC8vIERlY29tcG9zZSBhY2NlbnRzIGFuZCBzdHJpcCBjb21iaW5pbmcgbWFya3M7IGNvdmVycyB0aGUgY29tbW9uIExhdGluXG4gIC8vIGRpYWNyaXRpY3MgKMOpLCDDsSwgw7wsIOKApikuIE5vbi1MYXRpbiBzY3JpcHRzIGFyZSB1bmFmZmVjdGVkLlxuICByZXR1cm4gaW5wdXQubm9ybWFsaXplKFwiTkZLRFwiKS5yZXBsYWNlKC9cXHB7TX0rL2d1LCBcIlwiKTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./label-paths"), exports);
|
|
18
|
+
__exportStar(require("./extract-sort-key"), exports);
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc29ydC1rZXkvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGdEQUE4QjtBQUM5QixxREFBbUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9sYWJlbC1wYXRoc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vZXh0cmFjdC1zb3J0LWtleVwiO1xuIl19
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `LABEL_PATHS` — per-resource-type label-extraction rule for `extractSortKey`.
|
|
3
|
+
* Hand-curated platform-tier table per DR-004.
|
|
4
|
+
*
|
|
5
|
+
* Resource types listed here emit GSI1 sort keys of the form
|
|
6
|
+
* `<normalizedLabel>#<id>` so list endpoints return alphabetically sorted by
|
|
7
|
+
* natural label and `BEGINS_WITH` queries serve prefix searches like
|
|
8
|
+
* `?name=Sm`. Resource types absent from this map fall back to
|
|
9
|
+
* `<ISO-8601 lastUpdated>#<id>`.
|
|
10
|
+
*
|
|
11
|
+
* The minimum platform-curated set per DR-004 is Patient, Practitioner,
|
|
12
|
+
* Organization, Location, Medication. New entries here are one-line additions
|
|
13
|
+
* reviewed at PR time — no engine change required.
|
|
14
|
+
*
|
|
15
|
+
* @see openhi-planning DR-004 — FHIR Summary-Attribute and Sort-Key Projection Strategy
|
|
16
|
+
*/
|
|
17
|
+
/** Source of the natural label for a labeled resource type. */
|
|
18
|
+
export type LabelSource = {
|
|
19
|
+
kind: "humanName";
|
|
20
|
+
path: "name";
|
|
21
|
+
} | {
|
|
22
|
+
kind: "string";
|
|
23
|
+
path: "name";
|
|
24
|
+
} | {
|
|
25
|
+
kind: "codeDisplay";
|
|
26
|
+
path: "code";
|
|
27
|
+
};
|
|
28
|
+
/** Resource types with curated natural labels (DR-004 Tier 1). */
|
|
29
|
+
export declare const LABEL_PATHS: Record<string, LabelSource>;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* `LABEL_PATHS` — per-resource-type label-extraction rule for `extractSortKey`.
|
|
4
|
+
* Hand-curated platform-tier table per DR-004.
|
|
5
|
+
*
|
|
6
|
+
* Resource types listed here emit GSI1 sort keys of the form
|
|
7
|
+
* `<normalizedLabel>#<id>` so list endpoints return alphabetically sorted by
|
|
8
|
+
* natural label and `BEGINS_WITH` queries serve prefix searches like
|
|
9
|
+
* `?name=Sm`. Resource types absent from this map fall back to
|
|
10
|
+
* `<ISO-8601 lastUpdated>#<id>`.
|
|
11
|
+
*
|
|
12
|
+
* The minimum platform-curated set per DR-004 is Patient, Practitioner,
|
|
13
|
+
* Organization, Location, Medication. New entries here are one-line additions
|
|
14
|
+
* reviewed at PR time — no engine change required.
|
|
15
|
+
*
|
|
16
|
+
* @see openhi-planning DR-004 — FHIR Summary-Attribute and Sort-Key Projection Strategy
|
|
17
|
+
*/
|
|
18
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
+
exports.LABEL_PATHS = void 0;
|
|
20
|
+
/** Resource types with curated natural labels (DR-004 Tier 1). */
|
|
21
|
+
exports.LABEL_PATHS = {
|
|
22
|
+
Patient: { kind: "humanName", path: "name" },
|
|
23
|
+
Practitioner: { kind: "humanName", path: "name" },
|
|
24
|
+
Organization: { kind: "string", path: "name" },
|
|
25
|
+
Location: { kind: "string", path: "name" },
|
|
26
|
+
Medication: { kind: "codeDisplay", path: "code" },
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFiZWwtcGF0aHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc29ydC1rZXkvbGFiZWwtcGF0aHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRzs7O0FBUUgsa0VBQWtFO0FBQ3JELFFBQUEsV0FBVyxHQUFnQztJQUN0RCxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7SUFDNUMsWUFBWSxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO0lBQ2pELFlBQVksRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRTtJQUM5QyxRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7SUFDMUMsVUFBVSxFQUFFLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO0NBQ2xELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIGBMQUJFTF9QQVRIU2Ag4oCUIHBlci1yZXNvdXJjZS10eXBlIGxhYmVsLWV4dHJhY3Rpb24gcnVsZSBmb3IgYGV4dHJhY3RTb3J0S2V5YC5cbiAqIEhhbmQtY3VyYXRlZCBwbGF0Zm9ybS10aWVyIHRhYmxlIHBlciBEUi0wMDQuXG4gKlxuICogUmVzb3VyY2UgdHlwZXMgbGlzdGVkIGhlcmUgZW1pdCBHU0kxIHNvcnQga2V5cyBvZiB0aGUgZm9ybVxuICogYDxub3JtYWxpemVkTGFiZWw+IzxpZD5gIHNvIGxpc3QgZW5kcG9pbnRzIHJldHVybiBhbHBoYWJldGljYWxseSBzb3J0ZWQgYnlcbiAqIG5hdHVyYWwgbGFiZWwgYW5kIGBCRUdJTlNfV0lUSGAgcXVlcmllcyBzZXJ2ZSBwcmVmaXggc2VhcmNoZXMgbGlrZVxuICogYD9uYW1lPVNtYC4gUmVzb3VyY2UgdHlwZXMgYWJzZW50IGZyb20gdGhpcyBtYXAgZmFsbCBiYWNrIHRvXG4gKiBgPElTTy04NjAxIGxhc3RVcGRhdGVkPiM8aWQ+YC5cbiAqXG4gKiBUaGUgbWluaW11bSBwbGF0Zm9ybS1jdXJhdGVkIHNldCBwZXIgRFItMDA0IGlzIFBhdGllbnQsIFByYWN0aXRpb25lcixcbiAqIE9yZ2FuaXphdGlvbiwgTG9jYXRpb24sIE1lZGljYXRpb24uIE5ldyBlbnRyaWVzIGhlcmUgYXJlIG9uZS1saW5lIGFkZGl0aW9uc1xuICogcmV2aWV3ZWQgYXQgUFIgdGltZSDigJQgbm8gZW5naW5lIGNoYW5nZSByZXF1aXJlZC5cbiAqXG4gKiBAc2VlIG9wZW5oaS1wbGFubmluZyBEUi0wMDQg4oCUIEZISVIgU3VtbWFyeS1BdHRyaWJ1dGUgYW5kIFNvcnQtS2V5IFByb2plY3Rpb24gU3RyYXRlZ3lcbiAqL1xuXG4vKiogU291cmNlIG9mIHRoZSBuYXR1cmFsIGxhYmVsIGZvciBhIGxhYmVsZWQgcmVzb3VyY2UgdHlwZS4gKi9cbmV4cG9ydCB0eXBlIExhYmVsU291cmNlID1cbiAgfCB7IGtpbmQ6IFwiaHVtYW5OYW1lXCI7IHBhdGg6IFwibmFtZVwiIH1cbiAgfCB7IGtpbmQ6IFwic3RyaW5nXCI7IHBhdGg6IFwibmFtZVwiIH1cbiAgfCB7IGtpbmQ6IFwiY29kZURpc3BsYXlcIjsgcGF0aDogXCJjb2RlXCIgfTtcblxuLyoqIFJlc291cmNlIHR5cGVzIHdpdGggY3VyYXRlZCBuYXR1cmFsIGxhYmVscyAoRFItMDA0IFRpZXIgMSkuICovXG5leHBvcnQgY29uc3QgTEFCRUxfUEFUSFM6IFJlY29yZDxzdHJpbmcsIExhYmVsU291cmNlPiA9IHtcbiAgUGF0aWVudDogeyBraW5kOiBcImh1bWFuTmFtZVwiLCBwYXRoOiBcIm5hbWVcIiB9LFxuICBQcmFjdGl0aW9uZXI6IHsga2luZDogXCJodW1hbk5hbWVcIiwgcGF0aDogXCJuYW1lXCIgfSxcbiAgT3JnYW5pemF0aW9uOiB7IGtpbmQ6IFwic3RyaW5nXCIsIHBhdGg6IFwibmFtZVwiIH0sXG4gIExvY2F0aW9uOiB7IGtpbmQ6IFwic3RyaW5nXCIsIHBhdGg6IFwibmFtZVwiIH0sXG4gIE1lZGljYXRpb246IHsga2luZDogXCJjb2RlRGlzcGxheVwiLCBwYXRoOiBcImNvZGVcIiB9LFxufTtcbiJdfQ==
|
package/package.json
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openhi/types",
|
|
3
3
|
"devDependencies": {
|
|
4
|
+
"@microsoft/api-extractor": "7.58.7",
|
|
4
5
|
"@swc/core": "^1.15.33",
|
|
5
6
|
"@swc/jest": "^0.2.39",
|
|
6
7
|
"@types/jest": "^30.0.0",
|
|
7
|
-
"@types/node": "25.
|
|
8
|
+
"@types/node": "25.6.0",
|
|
8
9
|
"@typescript-eslint/eslint-plugin": "^8",
|
|
9
10
|
"@typescript-eslint/parser": "^8",
|
|
10
11
|
"commit-and-tag-version": "^12",
|
|
@@ -12,7 +13,9 @@
|
|
|
12
13
|
"eslint-config-prettier": "^10.1.8",
|
|
13
14
|
"eslint-import-resolver-typescript": "^4.4.4",
|
|
14
15
|
"eslint-plugin-import": "^2.32.0",
|
|
16
|
+
"eslint-plugin-jsdoc": "^62.9.0",
|
|
15
17
|
"eslint-plugin-prettier": "^5.5.5",
|
|
18
|
+
"eslint-plugin-tsdoc": "^0.5.2",
|
|
16
19
|
"fsh-sushi": "^3",
|
|
17
20
|
"jest": "^30.3.0",
|
|
18
21
|
"jest-junit": "^16",
|
|
@@ -27,7 +30,7 @@
|
|
|
27
30
|
"devEngines": {
|
|
28
31
|
"packageManager": {
|
|
29
32
|
"name": "pnpm",
|
|
30
|
-
"version": "10.33.
|
|
33
|
+
"version": "10.33.2",
|
|
31
34
|
"onFail": "ignore"
|
|
32
35
|
}
|
|
33
36
|
},
|
|
@@ -36,7 +39,7 @@
|
|
|
36
39
|
"publishConfig": {
|
|
37
40
|
"access": "public"
|
|
38
41
|
},
|
|
39
|
-
"version": "0.0.
|
|
42
|
+
"version": "0.0.26",
|
|
40
43
|
"types": "lib/index.d.ts",
|
|
41
44
|
"//": "~~ Generated by projen. To modify, edit .projenrc.js and run \"pnpm exec projen\".",
|
|
42
45
|
"scripts": {
|