@rethinkhealth/hl7v2-builder 0.2.17 → 0.2.19

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/index.d.ts CHANGED
@@ -1,7 +1,8 @@
1
1
  /** biome-ignore-all lint/style/useUnifiedTypeSignatures: fine */
2
- import type { Component, Field, FieldRepetition, Root, RootContent, Segment } from "@rethinkhealth/hl7v2-ast";
2
+ import type { Component, Field, FieldRepetition, Group, Root, RootContent, Segment } from "@rethinkhealth/hl7v2-ast";
3
3
  export declare function m(...children: RootContent[]): Root;
4
- export declare function s(...fields: Field[]): Segment;
4
+ export declare function g(name: string, ...children: Array<Segment | Group>): Group;
5
+ export declare function s(name: string, ...fields: Field[]): Segment;
5
6
  type FieldValue = FieldRepetition | Component | string;
6
7
  type Flattenable<T> = T | T[];
7
8
  /** Empty field */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,OAAO,KAAK,EACV,SAAS,EACT,KAAK,EACL,eAAe,EACf,IAAI,EACJ,WAAW,EACX,OAAO,EACR,MAAM,0BAA0B,CAAC;AAGlC,wBAAgB,CAAC,CAAC,GAAG,QAAQ,EAAE,WAAW,EAAE,GAAG,IAAI,CAElD;AAED,wBAAgB,CAAC,CAAC,GAAG,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAE7C;AAED,KAAK,UAAU,GAAG,eAAe,GAAG,SAAS,GAAG,MAAM,CAAC;AACvD,KAAK,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;AAoB9B,kBAAkB;AAClB,wBAAgB,CAAC,IAAI,KAAK,CAAC;AAC3B,wBAAgB,CAAC,CAAC,GAAG,MAAM,EAAE,WAAW,CAAC,UAAU,CAAC,EAAE,GAAG,KAAK,CAAC;AA2C/D,wBAAgB,CAAC,IAAI,eAAe,CAAC;AACrC,wBAAgB,CAAC,CACf,GAAG,UAAU,EAAE,WAAW,CAAC,SAAS,GAAG,MAAM,CAAC,EAAE,GAC/C,eAAe,CAAC;AAmBnB,wBAAgB,CAAC,IAAI,SAAS,CAAC;AAC/B,wBAAgB,CAAC,CAAC,GAAG,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE,GAAG,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,OAAO,KAAK,EACV,SAAS,EACT,KAAK,EACL,eAAe,EACf,KAAK,EACL,IAAI,EACJ,WAAW,EACX,OAAO,EACR,MAAM,0BAA0B,CAAC;AAGlC,wBAAgB,CAAC,CAAC,GAAG,QAAQ,EAAE,WAAW,EAAE,GAAG,IAAI,CAElD;AAED,wBAAgB,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,KAAK,CAI1E;AAKD,wBAAgB,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAI3D;AAED,KAAK,UAAU,GAAG,eAAe,GAAG,SAAS,GAAG,MAAM,CAAC;AACvD,KAAK,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;AAoB9B,kBAAkB;AAClB,wBAAgB,CAAC,IAAI,KAAK,CAAC;AAC3B,wBAAgB,CAAC,CAAC,GAAG,MAAM,EAAE,WAAW,CAAC,UAAU,CAAC,EAAE,GAAG,KAAK,CAAC;AA2C/D,wBAAgB,CAAC,IAAI,eAAe,CAAC;AACrC,wBAAgB,CAAC,CACf,GAAG,UAAU,EAAE,WAAW,CAAC,SAAS,GAAG,MAAM,CAAC,EAAE,GAC/C,eAAe,CAAC;AAmBnB,wBAAgB,CAAC,IAAI,SAAS,CAAC;AAC/B,wBAAgB,CAAC,CAAC,GAAG,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE,GAAG,SAAS,CAAC"}
package/dist/index.js CHANGED
@@ -3,8 +3,15 @@ import { u } from "unist-builder";
3
3
  function m(...children) {
4
4
  return u("root", children);
5
5
  }
6
- function s(...fields) {
7
- return u("segment", fields);
6
+ function g(name, ...children) {
7
+ const group = u("group", children);
8
+ group.name = name;
9
+ return group;
10
+ }
11
+ function s(name, ...fields) {
12
+ const segment = u("segment", fields);
13
+ segment.name = name;
14
+ return segment;
8
15
  }
9
16
  function flatten(values) {
10
17
  return values.flatMap((value) => Array.isArray(value) ? value : [value]);
@@ -77,6 +84,7 @@ function c(...values) {
77
84
  export {
78
85
  c,
79
86
  f,
87
+ g,
80
88
  m,
81
89
  r,
82
90
  s
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["/** biome-ignore-all lint/style/useUnifiedTypeSignatures: fine */\nimport type {\n Component,\n Field,\n FieldRepetition,\n Root,\n RootContent,\n Segment,\n} from \"@rethinkhealth/hl7v2-ast\";\nimport { u } from \"unist-builder\";\n\nexport function m(...children: RootContent[]): Root {\n return u(\"root\", children);\n}\n\nexport function s(...fields: Field[]): Segment {\n return u(\"segment\", fields);\n}\n\ntype FieldValue = FieldRepetition | Component | string;\ntype Flattenable<T> = T | T[];\n\nfunction flatten<T>(values: Flattenable<T>[]): T[] {\n return values.flatMap((value) => (Array.isArray(value) ? value : [value]));\n}\n\nfunction isFieldRepetition(value: FieldValue): value is FieldRepetition {\n return (\n typeof value === \"object\" &&\n value !== null &&\n value.type === \"field-repetition\"\n );\n}\n\nfunction isComponent(value: FieldValue): value is Component {\n return (\n typeof value === \"object\" && value !== null && value.type === \"component\"\n );\n}\n\n/** Empty field */\nexport function f(): Field;\nexport function f(...values: Flattenable<FieldValue>[]): Field;\nexport function f(...values: Flattenable<FieldValue>[]): Field {\n if (values.length === 0) {\n return u(\"field\", [r()]);\n }\n\n const flat = flatten<FieldValue>(values);\n if (flat.length === 0) {\n return u(\"field\", [r()]);\n }\n\n const repetitions: FieldRepetition[] = [];\n let pendingComponents: Array<Component | string> = [];\n\n const flushPending = () => {\n if (pendingComponents.length === 0) {\n return;\n }\n repetitions.push(r(...pendingComponents));\n pendingComponents = [];\n };\n\n for (const value of flat) {\n if (isFieldRepetition(value)) {\n flushPending();\n repetitions.push(value);\n continue;\n }\n\n if (isComponent(value) || typeof value === \"string\") {\n pendingComponents.push(value);\n }\n }\n\n flushPending();\n\n if (repetitions.length === 0) {\n return u(\"field\", [r()]);\n }\n\n return u(\"field\", repetitions);\n}\n\nexport function r(): FieldRepetition;\nexport function r(\n ...components: Flattenable<Component | string>[]\n): FieldRepetition;\nexport function r(\n ...components: Flattenable<Component | string>[]\n): FieldRepetition {\n if (components.length === 0) {\n return u(\"field-repetition\", [c()]);\n }\n\n const flat = flatten<Component | string>(components);\n if (flat.length === 0) {\n return u(\"field-repetition\", [c()]);\n }\n\n return u(\n \"field-repetition\",\n flat.map((value) => (typeof value === \"string\" ? c(value) : value))\n );\n}\n\nexport function c(): Component;\nexport function c(...values: Flattenable<string>[]): Component;\nexport function c(...values: Flattenable<string>[]): Component {\n if (values.length === 0) {\n return u(\"component\", [u(\"subcomponent\", \"\")]);\n }\n\n const flat = flatten<string>(values);\n if (flat.length === 0) {\n return u(\"component\", [u(\"subcomponent\", \"\")]);\n }\n\n return u(\n \"component\",\n flat.map((subcomponent) => u(\"subcomponent\", subcomponent))\n );\n}\n"],"mappings":";AASA,SAAS,SAAS;AAEX,SAAS,KAAK,UAA+B;AAClD,SAAO,EAAE,QAAQ,QAAQ;AAC3B;AAEO,SAAS,KAAK,QAA0B;AAC7C,SAAO,EAAE,WAAW,MAAM;AAC5B;AAKA,SAAS,QAAW,QAA+B;AACjD,SAAO,OAAO,QAAQ,CAAC,UAAW,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAE;AAC3E;AAEA,SAAS,kBAAkB,OAA6C;AACtE,SACE,OAAO,UAAU,YACjB,UAAU,QACV,MAAM,SAAS;AAEnB;AAEA,SAAS,YAAY,OAAuC;AAC1D,SACE,OAAO,UAAU,YAAY,UAAU,QAAQ,MAAM,SAAS;AAElE;AAKO,SAAS,KAAK,QAA0C;AAC7D,MAAI,OAAO,WAAW,GAAG;AACvB,WAAO,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;AAAA,EACzB;AAEA,QAAM,OAAO,QAAoB,MAAM;AACvC,MAAI,KAAK,WAAW,GAAG;AACrB,WAAO,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;AAAA,EACzB;AAEA,QAAM,cAAiC,CAAC;AACxC,MAAI,oBAA+C,CAAC;AAEpD,QAAM,eAAe,MAAM;AACzB,QAAI,kBAAkB,WAAW,GAAG;AAClC;AAAA,IACF;AACA,gBAAY,KAAK,EAAE,GAAG,iBAAiB,CAAC;AACxC,wBAAoB,CAAC;AAAA,EACvB;AAEA,aAAW,SAAS,MAAM;AACxB,QAAI,kBAAkB,KAAK,GAAG;AAC5B,mBAAa;AACb,kBAAY,KAAK,KAAK;AACtB;AAAA,IACF;AAEA,QAAI,YAAY,KAAK,KAAK,OAAO,UAAU,UAAU;AACnD,wBAAkB,KAAK,KAAK;AAAA,IAC9B;AAAA,EACF;AAEA,eAAa;AAEb,MAAI,YAAY,WAAW,GAAG;AAC5B,WAAO,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;AAAA,EACzB;AAEA,SAAO,EAAE,SAAS,WAAW;AAC/B;AAMO,SAAS,KACX,YACc;AACjB,MAAI,WAAW,WAAW,GAAG;AAC3B,WAAO,EAAE,oBAAoB,CAAC,EAAE,CAAC,CAAC;AAAA,EACpC;AAEA,QAAM,OAAO,QAA4B,UAAU;AACnD,MAAI,KAAK,WAAW,GAAG;AACrB,WAAO,EAAE,oBAAoB,CAAC,EAAE,CAAC,CAAC;AAAA,EACpC;AAEA,SAAO;AAAA,IACL;AAAA,IACA,KAAK,IAAI,CAAC,UAAW,OAAO,UAAU,WAAW,EAAE,KAAK,IAAI,KAAM;AAAA,EACpE;AACF;AAIO,SAAS,KAAK,QAA0C;AAC7D,MAAI,OAAO,WAAW,GAAG;AACvB,WAAO,EAAE,aAAa,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC;AAAA,EAC/C;AAEA,QAAM,OAAO,QAAgB,MAAM;AACnC,MAAI,KAAK,WAAW,GAAG;AACrB,WAAO,EAAE,aAAa,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC;AAAA,EAC/C;AAEA,SAAO;AAAA,IACL;AAAA,IACA,KAAK,IAAI,CAAC,iBAAiB,EAAE,gBAAgB,YAAY,CAAC;AAAA,EAC5D;AACF;","names":[]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["/** biome-ignore-all lint/style/useUnifiedTypeSignatures: fine */\nimport type {\n Component,\n Field,\n FieldRepetition,\n Group,\n Root,\n RootContent,\n Segment,\n} from \"@rethinkhealth/hl7v2-ast\";\nimport { u } from \"unist-builder\";\n\nexport function m(...children: RootContent[]): Root {\n return u(\"root\", children);\n}\n\nexport function g(name: string, ...children: Array<Segment | Group>): Group {\n const group: Group = u(\"group\", children);\n group.name = name;\n return group;\n}\n\n// TODO: Add support for string[]\n// export function s(name: string, ...fields: string[]): Segment;\n// export function s(name: string, ...fields: string[] | Field[]): Segment {\nexport function s(name: string, ...fields: Field[]): Segment {\n const segment: Segment = u(\"segment\", fields);\n segment.name = name;\n return segment;\n}\n\ntype FieldValue = FieldRepetition | Component | string;\ntype Flattenable<T> = T | T[];\n\nfunction flatten<T>(values: Flattenable<T>[]): T[] {\n return values.flatMap((value) => (Array.isArray(value) ? value : [value]));\n}\n\nfunction isFieldRepetition(value: FieldValue): value is FieldRepetition {\n return (\n typeof value === \"object\" &&\n value !== null &&\n value.type === \"field-repetition\"\n );\n}\n\nfunction isComponent(value: FieldValue): value is Component {\n return (\n typeof value === \"object\" && value !== null && value.type === \"component\"\n );\n}\n\n/** Empty field */\nexport function f(): Field;\nexport function f(...values: Flattenable<FieldValue>[]): Field;\nexport function f(...values: Flattenable<FieldValue>[]): Field {\n if (values.length === 0) {\n return u(\"field\", [r()]);\n }\n\n const flat = flatten<FieldValue>(values);\n if (flat.length === 0) {\n return u(\"field\", [r()]);\n }\n\n const repetitions: FieldRepetition[] = [];\n let pendingComponents: Array<Component | string> = [];\n\n const flushPending = () => {\n if (pendingComponents.length === 0) {\n return;\n }\n repetitions.push(r(...pendingComponents));\n pendingComponents = [];\n };\n\n for (const value of flat) {\n if (isFieldRepetition(value)) {\n flushPending();\n repetitions.push(value);\n continue;\n }\n\n if (isComponent(value) || typeof value === \"string\") {\n pendingComponents.push(value);\n }\n }\n\n flushPending();\n\n if (repetitions.length === 0) {\n return u(\"field\", [r()]);\n }\n\n return u(\"field\", repetitions);\n}\n\nexport function r(): FieldRepetition;\nexport function r(\n ...components: Flattenable<Component | string>[]\n): FieldRepetition;\nexport function r(\n ...components: Flattenable<Component | string>[]\n): FieldRepetition {\n if (components.length === 0) {\n return u(\"field-repetition\", [c()]);\n }\n\n const flat = flatten<Component | string>(components);\n if (flat.length === 0) {\n return u(\"field-repetition\", [c()]);\n }\n\n return u(\n \"field-repetition\",\n flat.map((value) => (typeof value === \"string\" ? c(value) : value))\n );\n}\n\nexport function c(): Component;\nexport function c(...values: Flattenable<string>[]): Component;\nexport function c(...values: Flattenable<string>[]): Component {\n if (values.length === 0) {\n return u(\"component\", [u(\"subcomponent\", \"\")]);\n }\n\n const flat = flatten<string>(values);\n if (flat.length === 0) {\n return u(\"component\", [u(\"subcomponent\", \"\")]);\n }\n\n return u(\n \"component\",\n flat.map((subcomponent) => u(\"subcomponent\", subcomponent))\n );\n}\n"],"mappings":";AAUA,SAAS,SAAS;AAEX,SAAS,KAAK,UAA+B;AAClD,SAAO,EAAE,QAAQ,QAAQ;AAC3B;AAEO,SAAS,EAAE,SAAiB,UAAyC;AAC1E,QAAM,QAAe,EAAE,SAAS,QAAQ;AACxC,QAAM,OAAO;AACb,SAAO;AACT;AAKO,SAAS,EAAE,SAAiB,QAA0B;AAC3D,QAAM,UAAmB,EAAE,WAAW,MAAM;AAC5C,UAAQ,OAAO;AACf,SAAO;AACT;AAKA,SAAS,QAAW,QAA+B;AACjD,SAAO,OAAO,QAAQ,CAAC,UAAW,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAE;AAC3E;AAEA,SAAS,kBAAkB,OAA6C;AACtE,SACE,OAAO,UAAU,YACjB,UAAU,QACV,MAAM,SAAS;AAEnB;AAEA,SAAS,YAAY,OAAuC;AAC1D,SACE,OAAO,UAAU,YAAY,UAAU,QAAQ,MAAM,SAAS;AAElE;AAKO,SAAS,KAAK,QAA0C;AAC7D,MAAI,OAAO,WAAW,GAAG;AACvB,WAAO,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;AAAA,EACzB;AAEA,QAAM,OAAO,QAAoB,MAAM;AACvC,MAAI,KAAK,WAAW,GAAG;AACrB,WAAO,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;AAAA,EACzB;AAEA,QAAM,cAAiC,CAAC;AACxC,MAAI,oBAA+C,CAAC;AAEpD,QAAM,eAAe,MAAM;AACzB,QAAI,kBAAkB,WAAW,GAAG;AAClC;AAAA,IACF;AACA,gBAAY,KAAK,EAAE,GAAG,iBAAiB,CAAC;AACxC,wBAAoB,CAAC;AAAA,EACvB;AAEA,aAAW,SAAS,MAAM;AACxB,QAAI,kBAAkB,KAAK,GAAG;AAC5B,mBAAa;AACb,kBAAY,KAAK,KAAK;AACtB;AAAA,IACF;AAEA,QAAI,YAAY,KAAK,KAAK,OAAO,UAAU,UAAU;AACnD,wBAAkB,KAAK,KAAK;AAAA,IAC9B;AAAA,EACF;AAEA,eAAa;AAEb,MAAI,YAAY,WAAW,GAAG;AAC5B,WAAO,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;AAAA,EACzB;AAEA,SAAO,EAAE,SAAS,WAAW;AAC/B;AAMO,SAAS,KACX,YACc;AACjB,MAAI,WAAW,WAAW,GAAG;AAC3B,WAAO,EAAE,oBAAoB,CAAC,EAAE,CAAC,CAAC;AAAA,EACpC;AAEA,QAAM,OAAO,QAA4B,UAAU;AACnD,MAAI,KAAK,WAAW,GAAG;AACrB,WAAO,EAAE,oBAAoB,CAAC,EAAE,CAAC,CAAC;AAAA,EACpC;AAEA,SAAO;AAAA,IACL;AAAA,IACA,KAAK,IAAI,CAAC,UAAW,OAAO,UAAU,WAAW,EAAE,KAAK,IAAI,KAAM;AAAA,EACpE;AACF;AAIO,SAAS,KAAK,QAA0C;AAC7D,MAAI,OAAO,WAAW,GAAG;AACvB,WAAO,EAAE,aAAa,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC;AAAA,EAC/C;AAEA,QAAM,OAAO,QAAgB,MAAM;AACnC,MAAI,KAAK,WAAW,GAAG;AACrB,WAAO,EAAE,aAAa,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC;AAAA,EAC/C;AAEA,SAAO;AAAA,IACL;AAAA,IACA,KAAK,IAAI,CAAC,iBAAiB,EAAE,gBAAgB,YAAY,CAAC;AAAA,EAC5D;AACF;","names":[]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@rethinkhealth/hl7v2-builder",
3
3
  "description": "Build HL7v2 AST nodes",
4
- "version": "0.2.17",
4
+ "version": "0.2.19",
5
5
  "license": "MIT",
6
6
  "author": {
7
7
  "name": "Melek Somai",
@@ -17,7 +17,7 @@
17
17
  },
18
18
  "dependencies": {
19
19
  "unist-builder": "4.0.0",
20
- "@rethinkhealth/hl7v2-ast": "0.2.17"
20
+ "@rethinkhealth/hl7v2-ast": "0.2.19"
21
21
  },
22
22
  "devDependencies": {
23
23
  "@types/node": "24.5.2",
@@ -27,7 +27,7 @@
27
27
  "typescript": "^5.8.3",
28
28
  "unified": "^11.0.5",
29
29
  "vitest": "^3.2.4",
30
- "@rethinkhealth/hl7v2-to-hl7v2": "0.2.17",
30
+ "@rethinkhealth/hl7v2-to-hl7v2": "0.2.19",
31
31
  "@rethinkhealth/testing": "0.0.1",
32
32
  "@rethinkhealth/tsconfig": "0.0.1"
33
33
  },