@haste-health/meta-value 0.12.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.
Files changed (44) hide show
  1. package/README.md +0 -0
  2. package/lib/index.d.ts +4 -0
  3. package/lib/index.js +5 -0
  4. package/lib/index.js.map +1 -0
  5. package/lib/interface.d.ts +21 -0
  6. package/lib/interface.js +2 -0
  7. package/lib/interface.js.map +1 -0
  8. package/lib/loc.d.ts +8 -0
  9. package/lib/loc.js +38 -0
  10. package/lib/loc.js.map +1 -0
  11. package/lib/type-to-canonical.d.ts +3 -0
  12. package/lib/type-to-canonical.js +14 -0
  13. package/lib/type-to-canonical.js.map +1 -0
  14. package/lib/utilities.d.ts +16 -0
  15. package/lib/utilities.js +64 -0
  16. package/lib/utilities.js.map +1 -0
  17. package/lib/v2/generated/meta/r4.d.ts +67328 -0
  18. package/lib/v2/generated/meta/r4.js +185415 -0
  19. package/lib/v2/generated/meta/r4.js.map +1 -0
  20. package/lib/v2/generated/meta/r4b.d.ts +68992 -0
  21. package/lib/v2/generated/meta/r4b.js +187593 -0
  22. package/lib/v2/generated/meta/r4b.js.map +1 -0
  23. package/lib/v2/generated/r4.d.ts +37567 -0
  24. package/lib/v2/generated/r4.js +49241 -0
  25. package/lib/v2/generated/r4.js.map +1 -0
  26. package/lib/v2/generated/r4b.d.ts +39615 -0
  27. package/lib/v2/generated/r4b.js +49334 -0
  28. package/lib/v2/generated/r4b.js.map +1 -0
  29. package/lib/v2/generated/type-canonical/r4.d.ts +2 -0
  30. package/lib/v2/generated/type-canonical/r4.js +220 -0
  31. package/lib/v2/generated/type-canonical/r4.js.map +1 -0
  32. package/lib/v2/generated/type-canonical/r4b.d.ts +2 -0
  33. package/lib/v2/generated/type-canonical/r4b.js +209 -0
  34. package/lib/v2/generated/type-canonical/r4b.js.map +1 -0
  35. package/lib/v2/index.d.ts +2 -0
  36. package/lib/v2/index.js +295 -0
  37. package/lib/v2/index.js.map +1 -0
  38. package/lib/v2/meta.d.ts +24 -0
  39. package/lib/v2/meta.js +89 -0
  40. package/lib/v2/meta.js.map +1 -0
  41. package/lib/v2/spoof.d.ts +25 -0
  42. package/lib/v2/spoof.js +160 -0
  43. package/lib/v2/spoof.js.map +1 -0
  44. package/package.json +50 -0
package/README.md ADDED
File without changes
package/lib/index.d.ts ADDED
@@ -0,0 +1,4 @@
1
+ export * as v2 from "./v2/index.js";
2
+ export * as interfaces from "./interface.js";
3
+ export * as utilities from "./utilities.js";
4
+ export * from "./type-to-canonical.js";
package/lib/index.js ADDED
@@ -0,0 +1,5 @@
1
+ export * as v2 from "./v2/index.js";
2
+ export * as interfaces from "./interface.js";
3
+ export * as utilities from "./utilities.js";
4
+ export * from "./type-to-canonical.js";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,KAAK,UAAU,MAAM,gBAAgB,CAAC;AAC7C,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAC;AAC5C,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,21 @@
1
+ import * as r4 from "@haste-health/fhir-types/r4/types";
2
+ import { FHIR_VERSION } from "@haste-health/fhir-types/versions";
3
+ export type Location = (string | number)[];
4
+ export interface TypeInfo {
5
+ fhirVersion: FHIR_VERSION;
6
+ type: r4.uri;
7
+ cardinality: "single" | "array";
8
+ }
9
+ export interface IMetaValue<T> {
10
+ meta(): TypeInfo | undefined;
11
+ getValue(): T;
12
+ isArray(): this is IMetaValueArray<T>;
13
+ location(): Location | undefined;
14
+ descend(field: string | number): IMetaValue<unknown> | undefined;
15
+ isType(type: string): boolean;
16
+ asType(type: string): IMetaValue<unknown> | undefined;
17
+ keys(): (string | number)[];
18
+ }
19
+ export interface IMetaValueArray<T> extends IMetaValue<T[]> {
20
+ toArray(): IMetaValue<unknown>[];
21
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interface.js","sourceRoot":"","sources":["../src/interface.ts"],"names":[],"mappings":""}
package/lib/loc.d.ts ADDED
@@ -0,0 +1,8 @@
1
+ import { IMetaValue, Location } from "./interface.js";
2
+ /**
3
+ * Descend into a location. If the value is a primitive, special handling is needed.
4
+ * @param v Meta value with loc to descend.
5
+ * @param field Field to descend into.
6
+ * @returns Location of the field.
7
+ */
8
+ export declare function descendLoc<T>(v: IMetaValue<T>, field: string): Location;
package/lib/loc.js ADDED
@@ -0,0 +1,38 @@
1
+ import { isPrimitiveType } from "./utilities.js";
2
+ /**
3
+ * Logic for special handling of primitive types.
4
+ * @param loc
5
+ * @param field
6
+ * @returns
7
+ */
8
+ function descendPrimitiveLoc(loc, field) {
9
+ if (field === "value")
10
+ return loc;
11
+ // Handle Array and singular
12
+ // Array primitives parents will be number over field.
13
+ if (typeof loc[loc.length - 1] === "number") {
14
+ return [
15
+ ...loc.slice(0, loc.length - 2),
16
+ `_${loc[loc.length - 2]}`,
17
+ loc[loc.length - 1],
18
+ field,
19
+ ];
20
+ }
21
+ return [...loc.slice(0, loc.length - 1), `_${loc[loc.length - 1]}`, field];
22
+ }
23
+ /**
24
+ * Descend into a location. If the value is a primitive, special handling is needed.
25
+ * @param v Meta value with loc to descend.
26
+ * @param field Field to descend into.
27
+ * @returns Location of the field.
28
+ */
29
+ export function descendLoc(v, field) {
30
+ const loc = v.location() || [];
31
+ // Need special handling for .value and extensions which are under _fieldName for primitives.
32
+ const meta = v.meta();
33
+ if (meta && isPrimitiveType(meta.fhirVersion, meta.type)) {
34
+ return descendPrimitiveLoc(loc, field);
35
+ }
36
+ return [...loc, field];
37
+ }
38
+ //# sourceMappingURL=loc.js.map
package/lib/loc.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loc.js","sourceRoot":"","sources":["../src/loc.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD;;;;;GAKG;AACH,SAAS,mBAAmB,CAAC,GAAa,EAAE,KAAa;IACvD,IAAI,KAAK,KAAK,OAAO;QAAE,OAAO,GAAG,CAAC;IAClC,4BAA4B;IAC5B,sDAAsD;IACtD,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC5C,OAAO;YACL,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;YAC/B,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;YACzB,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;YACnB,KAAK;SACN,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAC7E,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAI,CAAgB,EAAE,KAAa;IAC3D,MAAM,GAAG,GAAG,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC/B,6FAA6F;IAC7F,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACtB,IAAI,IAAI,IAAI,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACzD,OAAO,mBAAmB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,CAAC,GAAG,GAAG,EAAE,KAAK,CAAC,CAAC;AACzB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { canonical, uri } from "@haste-health/fhir-types/lib/generated/r4/types";
2
+ import { FHIR_VERSION } from "@haste-health/fhir-types/versions";
3
+ export declare function resolveTypeToCanonical(version: FHIR_VERSION, type: uri): canonical | undefined;
@@ -0,0 +1,14 @@
1
+ import { R4, R4B } from "@haste-health/fhir-types/versions";
2
+ import r4TypeToCanonical from "./v2/generated/type-canonical/r4.js";
3
+ import r4bTypeToCanonical from "./v2/generated/type-canonical/r4b.js";
4
+ export function resolveTypeToCanonical(version, type) {
5
+ switch (version) {
6
+ case R4:
7
+ return r4TypeToCanonical[type];
8
+ case R4B:
9
+ return r4bTypeToCanonical[type];
10
+ default:
11
+ throw new Error(`Unsupported FHIR version: ${version}`);
12
+ }
13
+ }
14
+ //# sourceMappingURL=type-to-canonical.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-to-canonical.js","sourceRoot":"","sources":["../src/type-to-canonical.ts"],"names":[],"mappings":"AAIA,OAAO,EAAgB,EAAE,EAAE,GAAG,EAAE,MAAM,mCAAmC,CAAC;AAE1E,OAAO,iBAAiB,MAAM,qCAAqC,CAAC;AACpE,OAAO,kBAAkB,MAAM,sCAAsC,CAAC;AAEtE,MAAM,UAAU,sBAAsB,CACpC,OAAqB,EACrB,IAAS;IAET,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,EAAE;YACL,OAAO,iBAAiB,CAAC,IAAI,CAA0B,CAAC;QAC1D,KAAK,GAAG;YACN,OAAO,kBAAkB,CAAC,IAAI,CAA0B,CAAC;QAC3D;YACE,MAAM,IAAI,KAAK,CAAC,6BAA6B,OAAO,EAAE,CAAC,CAAC;IAC5D,CAAC;AACH,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { Element, uri } from "@haste-health/fhir-types/r4/types";
2
+ import { FHIR_VERSION } from "@haste-health/fhir-types/versions";
3
+ import { IMetaValue, IMetaValueArray } from "./interface.js";
4
+ export type RawPrimitive = string | number | boolean | undefined;
5
+ export type FHIRPathPrimitive<T extends RawPrimitive> = Element & {
6
+ _type_: "primitive";
7
+ value: T;
8
+ };
9
+ export declare function isResourceType(version: FHIR_VERSION, type: uri): boolean;
10
+ export declare function isPrimitiveType(version: FHIR_VERSION, type: string): boolean;
11
+ export declare function isFPPrimitive(v: unknown): v is FHIRPathPrimitive<RawPrimitive>;
12
+ export declare function toFPPrimitive<T extends RawPrimitive>(value: T, element?: Element): FHIRPathPrimitive<T>;
13
+ export declare function isRawPrimitive(v: unknown): v is RawPrimitive;
14
+ export declare function isObject(value: unknown): value is Record<string, unknown>;
15
+ export declare function isArray<T>(v: T | T[]): v is T[];
16
+ export declare function flatten<T>(node: IMetaValue<T> | IMetaValueArray<T> | undefined): IMetaValue<T>[];
@@ -0,0 +1,64 @@
1
+ import * as r4sets from "@haste-health/fhir-types/r4/sets";
2
+ import * as r4bsets from "@haste-health/fhir-types/r4b/sets";
3
+ import { R4, R4B } from "@haste-health/fhir-types/versions";
4
+ export function isResourceType(version, type) {
5
+ switch (version) {
6
+ case R4: {
7
+ return r4sets.resourceTypes.has(type);
8
+ }
9
+ case R4B: {
10
+ return r4bsets.resourceTypes.has(type);
11
+ }
12
+ default: {
13
+ throw new Error(`Unsupported FHIR version: ${version}`);
14
+ }
15
+ }
16
+ }
17
+ export function isPrimitiveType(version, type) {
18
+ switch (version) {
19
+ case R4: {
20
+ return r4sets.primitiveTypes.has(type);
21
+ }
22
+ case R4B: {
23
+ return r4bsets.primitiveTypes.has(type);
24
+ }
25
+ default: {
26
+ throw new Error(`Unsupported FHIR version: ${version}`);
27
+ }
28
+ }
29
+ }
30
+ export function isFPPrimitive(v) {
31
+ return isObject(v) && v._type_ === "primitive";
32
+ }
33
+ export function toFPPrimitive(value, element) {
34
+ return { ...element, value, _type_: "primitive" };
35
+ }
36
+ export function isRawPrimitive(v) {
37
+ return (typeof v === "string" ||
38
+ typeof v === "number" ||
39
+ typeof v === "boolean" ||
40
+ v === undefined);
41
+ }
42
+ export function isObject(value) {
43
+ return value !== null && typeof value === "object";
44
+ }
45
+ export function isArray(v) {
46
+ return Array.isArray(v);
47
+ }
48
+ export function flatten(node) {
49
+ switch (true) {
50
+ case node === undefined: {
51
+ return [];
52
+ }
53
+ case node?.isArray(): {
54
+ return node.toArray();
55
+ }
56
+ case node && node.isArray() === false: {
57
+ return [node];
58
+ }
59
+ default: {
60
+ throw new Error("Should not reach here");
61
+ }
62
+ }
63
+ }
64
+ //# sourceMappingURL=utilities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utilities.js","sourceRoot":"","sources":["../src/utilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,kCAAkC,CAAC;AAE3D,OAAO,KAAK,OAAO,MAAM,mCAAmC,CAAC;AAC7D,OAAO,EAAgB,EAAE,EAAE,GAAG,EAAE,MAAM,mCAAmC,CAAC;AAU1E,MAAM,UAAU,cAAc,CAAC,OAAqB,EAAE,IAAS;IAC7D,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,EAAE,CAAC,CAAC,CAAC;YACR,OAAO,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACxC,CAAC;QACD,KAAK,GAAG,CAAC,CAAC,CAAC;YACT,OAAO,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACzC,CAAC;QACD,OAAO,CAAC,CAAC,CAAC;YACR,MAAM,IAAI,KAAK,CAAC,6BAA6B,OAAO,EAAE,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAqB,EAAE,IAAY;IACjE,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,EAAE,CAAC,CAAC,CAAC;YACR,OAAO,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACzC,CAAC;QACD,KAAK,GAAG,CAAC,CAAC,CAAC;YACT,OAAO,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,CAAC,CAAC,CAAC;YACR,MAAM,IAAI,KAAK,CAAC,6BAA6B,OAAO,EAAE,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,CAAU;IAEV,OAAO,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,KAAQ,EACR,OAAiB;IAEjB,OAAO,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,CAAU;IACvC,OAAO,CACL,OAAO,CAAC,KAAK,QAAQ;QACrB,OAAO,CAAC,KAAK,QAAQ;QACrB,OAAO,CAAC,KAAK,SAAS;QACtB,CAAC,KAAK,SAAS,CAChB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,OAAO,CAAI,CAAU;IACnC,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,OAAO,CACrB,IAAoD;IAEpD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC;YACxB,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;YACrB,OAAO,IAAI,CAAC,OAAO,EAAqB,CAAC;QAC3C,CAAC;QACD,KAAK,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC;YACtC,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC;QACD,OAAO,CAAC,CAAC,CAAC;YACR,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;AACH,CAAC"}