@digitalservicebund/a2j-xjustiz-bridge 0.7.1 → 0.8.0

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.
@@ -22,6 +22,7 @@ import { StandardSchemaV1 } from "@standard-schema/spec";
22
22
  type InferCodeliste<Liste extends Codeliste<Codelisteneintraege>> = Liste[keyof Liste];
23
23
  type Codelisteneintraege = Record<string, string>;
24
24
  type Codeliste<Eintraege extends Codelisteneintraege> = { readonly [Name in keyof Eintraege]: Eintraege[Name] extends (infer Code) ? Codelisteneintrag<Name & string, Code & string> : never; };
25
+ type IsCodeliste<MaybeCodeliste> = [MaybeCodeliste] extends [Codelisteneintrag<string, string>] ? [keyof MaybeCodeliste] extends [keyof Codelisteneintrag<string, string>] ? true : false : false;
25
26
  /**
26
27
  * Prettifies the display of Codelisteinträge, conserving the name to improve
27
28
  * comprehensibility.
@@ -2655,20 +2656,21 @@ declare const datatypeA: RefinedTypeFactory<string, DatatypeA, <Value extends st
2655
2656
  }>;
2656
2657
  /**
2657
2658
  * Adapted version of the default {@link Array.prototype.join} operation that
2658
- * maintains the invariants of {@link DatatypeA}.
2659
- *
2659
+ * maintains the invariants of {@link DatatypeA}. Any `undefined` entry in
2660
+ * `segments` is filtered automatically.
2660
2661
  * @example
2661
2662
  * ```typescript
2662
2663
  * const fullName = join(
2663
2664
  * datatypeA(" ").value,
2664
2665
  * datatypeA("Frau").value,
2665
2666
  * datatypeA("Erika").value,
2667
+ * undefined,
2666
2668
  * datatypeA("Musterfrau").value,
2667
2669
  * );
2668
2670
  * // "Frau Erika Musterfrau" - still DatatypeA no plain string
2669
2671
  * ```
2670
2672
  */
2671
- declare function join(separator: DatatypeA, ...segments: readonly DatatypeA[]): DatatypeA;
2673
+ declare function join(separator: DatatypeA, ...segments: readonly (DatatypeA | undefined)[]): DatatypeA;
2672
2674
  type DatatypeACharacterIncomplete = LateinischeBuchstabenIncomplete | NichtBuchstabenN1;
2673
2675
  type GuaranteedInvalidCharacter = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "#" | "$" | "%" | "&" | "*" | "+" | "/" | "<" | "=" | ">" | "@" | "\\" | "^" | "_" | "|" | "!" | '"' | "(" | ")" | ":" | ";" | "?" | "[" | "]" | "{" | "}";
2674
2676
  //#endregion
@@ -2716,20 +2718,24 @@ declare const datatypeB: RefinedTypeFactory<string, DatatypeB, <Value extends st
2716
2718
  }>;
2717
2719
  /**
2718
2720
  * Adapted version of the default {@link Array.prototype.join} operation that
2719
- * maintains the invariants of {@link DatatypeB}.
2721
+ * maintains the invariants of {@link DatatypeB}. Also supports passing
2722
+ * and mixing {@link DatatypeA} values, as any {@link DatentypA} is also a valid
2723
+ * {@link DatatypeB}. Any `undefined` entry in `segments` is filtered
2724
+ * automatically.
2720
2725
  *
2721
2726
  * @example
2722
2727
  * ```typescript
2723
2728
  * const fullAddress = join(
2724
- * datatypeB(" ").value,
2729
+ * datatypeA(" ").value,
2725
2730
  * datatypeB("Musterstraße").value,
2726
2731
  * datatypeB("1A").value,
2732
+ * undefined,
2727
2733
  * datatypeB("Musterstadt").value,
2728
2734
  * );
2729
2735
  * // "Musterstraße 1A Musterstadt" - still DatatypeB no plain string
2730
2736
  * ```
2731
2737
  */
2732
- declare function join$1(separator: DatatypeB, ...segments: readonly DatatypeB[]): DatatypeB;
2738
+ declare function join$1(separator: DatatypeA | DatatypeB, ...segments: readonly (DatatypeA | DatatypeB | undefined)[]): DatatypeB;
2733
2739
  type DatatypeBCharacterIncomplete = LateinischeBuchstabenIncomplete | NichtBuchstabenN1 | NichtBuchstabenN2;
2734
2740
  //#endregion
2735
2741
  //#region src/xjustiz-schemata/din-91379/datatypeC.d.ts
@@ -2779,20 +2785,24 @@ declare const datatypeC: RefinedTypeFactory<string, DatatypeC, <Value extends st
2779
2785
  }>;
2780
2786
  /**
2781
2787
  * Adapted version of the default {@link Array.prototype.join} operation that
2782
- * maintains the invariants of {@link DatatypeC}.
2788
+ * maintains the invariants of {@link DatatypeC}. Also supports passing
2789
+ * and mixing {@link DatatypeA} and {@link DatatypeB} values, as any of them is
2790
+ * also a valid {@link DatatypeC}. Any `undefined` entry in `segments` is
2791
+ * filtered automatically.
2783
2792
  *
2784
2793
  * @example
2785
2794
  * ```typescript
2786
- * const fullName = join(
2787
- * datatypeC(" ").value,
2795
+ * const output = join(
2796
+ * datatypeA(" ").value,
2788
2797
  * datatypeC("Lorem").value,
2789
- * datatypeC("ipsum").value,
2798
+ * datatypeB("ipsum").value,
2799
+ * undefined,
2790
2800
  * datatypeC("dolor").value,
2791
2801
  * );
2792
2802
  * // "Lorem ipsum dolor" - still DatatypeC no plain string
2793
2803
  * ```
2794
2804
  */
2795
- declare function join$2(separator: DatatypeC, ...segments: readonly DatatypeC[]): DatatypeC;
2805
+ declare function join$2(separator: DatatypeA | DatatypeB | DatatypeC, ...segments: readonly (DatatypeA | DatatypeB | DatatypeC | undefined)[]): DatatypeC;
2796
2806
  //#endregion
2797
2807
  //#region src/xjustiz-schemata/din-91379/datatypeD.d.ts
2798
2808
  declare const TAG$9: unique symbol;
@@ -2843,20 +2853,24 @@ declare const datatypeD: RefinedTypeFactory<string, DatatypeD, <Value extends st
2843
2853
  }>;
2844
2854
  /**
2845
2855
  * Adapted version of the default {@link Array.prototype.join} operation that
2846
- * maintains the invariants of {@link DatatypeD}.
2856
+ * maintains the invariants of {@link DatatypeD}. Also supports passing
2857
+ * and mixing {@link DatatypeA} and {@link DatatypeB} values, as any of them is
2858
+ * also a valid {@link DatatypeD}. Any `undefined` entry in `segments` is
2859
+ * filtered automatically.
2847
2860
  *
2848
2861
  * @example
2849
2862
  * ```typescript
2850
- * const fullName = join(
2851
- * datatypeD(" ").value,
2863
+ * const output = join(
2864
+ * datatypeA(" ").value,
2852
2865
  * datatypeD("Lorem").value,
2853
- * datatypeD("ipsum").value,
2866
+ * datatypeB("ipsum").value,
2867
+ * undefined,
2854
2868
  * datatypeD("dolor").value,
2855
2869
  * );
2856
2870
  * // "Lorem ipsum dolor" - still DatatypeD no plain string
2857
2871
  * ```
2858
2872
  */
2859
- declare function join$3(separator: DatatypeD, ...segments: readonly DatatypeD[]): DatatypeD;
2873
+ declare function join$3(separator: DatatypeA | DatatypeB | DatatypeD, ...segments: readonly (DatatypeA | DatatypeB | DatatypeD | undefined)[]): DatatypeD;
2860
2874
  //#endregion
2861
2875
  //#region src/xjustiz-schemata/xml-schema-definition/decimal.d.ts
2862
2876
  declare const TAG$8: unique symbol;
@@ -3101,9 +3115,15 @@ interface UuidGenerator<NachrichtenScope> {
3101
3115
  }
3102
3116
  //#endregion
3103
3117
  //#region src/xjustiz-schemata/grunddatensatz/composites.d.ts
3118
+ /**
3119
+ * The Herstellerinformationen are fixed agreed on with the Bundesministerium
3120
+ * der Justiz und für Verbraucherschutz. The `version` is expected to be the one
3121
+ * of the XJustiz-Bridge. It can be constructed ergonomically with the
3122
+ * {@link herstellerinformation} constructor function.
3123
+ */
3104
3124
  interface Herstellerinformation {
3105
- nameDesProdukts: DatatypeD;
3106
- herstellerDesProdukts: DatatypeD;
3125
+ nameDesProdukts: "Justizportal XJustiz Services";
3126
+ herstellerDesProdukts: "Bundesministerium der Justiz und für Verbraucherschutz, ausgeführt durch DigitalService GmbH des Bundes";
3107
3127
  version: DatatypeC;
3108
3128
  }
3109
3129
  interface NatuerlichePerson {
@@ -3139,6 +3159,10 @@ interface Anschrift {
3139
3159
  postleitzahl?: DatatypeC;
3140
3160
  ort?: DatatypeB;
3141
3161
  }
3162
+ /**
3163
+ * Can be constructed ergonomically with the {@link email} and {@link telefon}
3164
+ * constructor functions.
3165
+ */
3142
3166
  interface Kommunikation {
3143
3167
  telekommunikationsart: Telekommunikationsart;
3144
3168
  verbindung: DatatypeC;
@@ -3249,20 +3273,25 @@ declare const datatypeE: RefinedTypeFactory<string, DatatypeE, <Value extends st
3249
3273
  }>;
3250
3274
  /**
3251
3275
  * Adapted version of the default {@link Array.prototype.join} operation that
3252
- * maintains the invariants of {@link DatatypeE}.
3276
+ * maintains the invariants of {@link DatatypeE}. Also supports passing
3277
+ * and mixing {@link DatatypeA}, {@link DatatypeB}, {@link DatatypeC} and
3278
+ * {@link DatatypeD} values, as any of them is also a valid {@link DatatypeE}.
3279
+ * Any `undefined` entry in `segments` is filtered automatically.
3253
3280
  *
3254
3281
  * @example
3255
3282
  * ```typescript
3256
- * const fullName = join(
3257
- * datatypeE(" ").value,
3258
- * datatypeE("Lorem").value,
3259
- * datatypeE("ipsum").value,
3260
- * datatypeE("dolor").value,
3283
+ * const output = join(
3284
+ * datatypeA(" ").value,
3285
+ * datatypeB("Lorem").value,
3286
+ * datatypeC("ipsum").value,
3287
+ * datatypeD("dolor").value,
3288
+ * undefined,
3289
+ * datatypeE("sit").value,
3261
3290
  * );
3262
- * // "Lorem ipsum dolor" - still DatatypeE no plain string
3291
+ * // "Lorem ipsum dolor sit" - still DatatypeE no plain string
3263
3292
  * ```
3264
3293
  */
3265
- declare function join$4(separator: DatatypeE, ...segments: readonly DatatypeE[]): DatatypeE;
3294
+ declare function join$4(separator: DatatypeA | DatatypeB | DatatypeC | DatatypeD | DatatypeE, ...segments: readonly (DatatypeA | DatatypeB | DatatypeC | DatatypeD | DatatypeE | undefined)[]): DatatypeE;
3266
3295
  //#endregion
3267
3296
  //#region src/xjustiz-schemata/klaver/fortlaufende-nummer.d.ts
3268
3297
  /**
@@ -3544,7 +3573,7 @@ type ExcessPropertiesError<ExcessProperties> = TypeError & "Found properties in
3544
3573
  readonly excessProperties: ExcessProperties;
3545
3574
  };
3546
3575
  type VerifyNoExcessProperties<Nachricht, MessageProfile> = FindExcessProperties<Nachricht, MessageProfile> extends (infer ExcessProperties) ? IsEmpty<ExcessProperties> extends false ? ExcessPropertiesError<ExcessProperties> : AllGood : Unreachable;
3547
- type FindExcessProperties<Nachricht, MessageProfile> = HasMatchingVariantOfMessageProfileWithoutExcessProperties<Nachricht, MessageProfile> extends true ? AllGood : Exclude<FindExcessPropertiesAgainst<Nachricht, MessageProfile>, StructuralIncompatibilityIssues>;
3576
+ type FindExcessProperties<Nachricht, MessageProfile> = IsCodeliste<MessageProfile> extends true ? [Nachricht] extends [object] ? Exclude<keyof Nachricht, keyof MessageProfile> : StructuralIncompatibilityIssues : HasMatchingVariantOfMessageProfileWithoutExcessProperties<Nachricht, MessageProfile> extends true ? AllGood : Exclude<FindExcessPropertiesAgainst<Nachricht, MessageProfile>, StructuralIncompatibilityIssues>;
3548
3577
  /**
3549
3578
  * A `MessageProfile` can define type unions on different levels in the
3550
3579
  * document tree structure. Unions of objects with different key sets are
@@ -3703,6 +3732,43 @@ declare function antragAufVersaeumnisurteil(): AntragAufVersaeumnisurteil;
3703
3732
  */
3704
3733
  declare function weitererAntrag(antragInTextform: DatatypeE): WeitererAntrag;
3705
3734
  //#endregion
3735
+ //#region src/nachricht/zahlungsklage/ergonomics/nachrichtenkopf.d.ts
3736
+ /**
3737
+ * Constructs a {@link NachrichtenkopfFuerZahlungsklage} with the `klaeger` as
3738
+ * Absender and `gericht` as Empfänger.
3739
+ *
3740
+ * The `erstellungszeitpunkt` will be current date-time at the call.
3741
+ *
3742
+ * The `klaeger` will be formatted based on their Geschlecht, Titel, Vorname and
3743
+ * Nachname. For example: `"Frau Dr. Erika Musterfrau"`. A Titel which can't be
3744
+ * parsed from {@link DatatypeC} to {@link DatatypeD} will be discarded. Any
3745
+ * Geschlecht but männlich or weiblich will also be discarded for the Anrede.
3746
+ */
3747
+ declare function nachrichtenkopf<NachrichtenScope, const EigeneNachrichtenID extends UUID<NachrichtenScope>, const Gericht extends Gerichte>(_scope: ScopeToken<NachrichtenScope>, eigeneNachrichtenID: EigeneNachrichtenID, klaeger: Klaeger<NachrichtenScope> // oxlint-disable-line typescript/prefer-readonly-parameter-types -- false positive
3748
+ , gericht: Gericht): {
3749
+ xjustizVersion: "3.6.2";
3750
+ erstellungszeitpunkt: Temporal.Instant;
3751
+ absender: {
3752
+ informationen: {
3753
+ auswahlKommunikationspartner: {
3754
+ sonstige: DatatypeD;
3755
+ };
3756
+ };
3757
+ eigeneNachrichtenID: EigeneNachrichtenID;
3758
+ };
3759
+ empfaenger: {
3760
+ informationen: {
3761
+ auswahlKommunikationspartner: {
3762
+ gericht: Gerichte;
3763
+ };
3764
+ };
3765
+ auswahlAktenzeichen: {
3766
+ aktenzeichenNeu: true;
3767
+ };
3768
+ };
3769
+ herstellerinformation: Herstellerinformation;
3770
+ };
3771
+ //#endregion
3706
3772
  //#region src/xjustiz-schemata/klaver/ergonomics/beweis.d.ts
3707
3773
  /**
3708
3774
  * Constructs a {@link Beweis} with Zeugen as Beweismittel. The referenced
@@ -3777,8 +3843,27 @@ declare function parteivernehmung<NachrichtenScope, const Nummer extends BeweisN
3777
3843
  * ```
3778
3844
  */
3779
3845
  declare function geldbetrag(zahl: Double): Geldbetrag;
3846
+ //#endregion
3847
+ //#region src/xjustiz-schemata/grunddatensatz/ergonomics/herstellerinformation.d.ts
3848
+ /**
3849
+ * Constructs the static {@link Herstellerinformationen} with the version of the
3850
+ * XJustiz-Bridge in use.
3851
+ */
3852
+ declare function herstellerinformation(): Herstellerinformation;
3853
+ //#endregion
3854
+ //#region src/xjustiz-schemata/grunddatensatz/ergonomics/kommunikation.d.ts
3855
+ /**
3856
+ * Constructs a {@link Kommunikation} with {@link Telekommunikationsart.EMail}
3857
+ * as `telekommunikationsart`.
3858
+ */
3859
+ declare function email(address: DatatypeC): Kommunikation;
3860
+ /**
3861
+ * Constructs a {@link Kommunikation} with {@link Telekommunikationsart.Telefon}
3862
+ * as `telekommunikationsart`.
3863
+ */
3864
+ declare function telefon(number: DatatypeC): Kommunikation;
3780
3865
  declare namespace index_d_exports {
3781
- export { antragAufAnwaltskosten, antragAufVersaeumnisurteil, geldbetrag, parteivernehmung, weitererAntrag, zeuge };
3866
+ export { antragAufAnwaltskosten, antragAufVersaeumnisurteil, email, geldbetrag, herstellerinformation, nachrichtenkopf, parteivernehmung, telefon, weitererAntrag, zeuge };
3782
3867
  }
3783
3868
  //#endregion
3784
3869
  export { type AnspruchFuerZahlungsklage, Anspruchsart, type AntraegeFuerZahlungsklage, type AntragAufAnwaltskosten, type AntragAufVersaeumnisurteil, AntragCodeliste, type AusfuehrungenFuerZahlungsklage, type BegruendetheitFuerZahlungsklage, type BeklagteOrganisation, type BeklagtePerson, type Beklagter, type DatatypeA, type DatatypeB, type DatatypeC, type DatatypeD, type DatatypeE, type Decimal, Gerichte, Geschlecht, type GesetzlicherVertreter, type GrunddatenFuerZahlungsklage, Kanzleiform, type Klaeger, type NachrichtenkopfFuerZahlungsklage, type Prozessbevollmaechtiger, Rollenbezeichnung, type ScopeToken, type SonstigerAntragFuerZahlungsklage, Telekommunikationsart, type VortragZurBegruendetheitFuerZahlungsklage, Waehrung, type WeitererAntrag, type Zahlungsklage, type Zeuge, Zinsmethode, createFortlaufendeNummerGenerator, createRollennummerGenerator, createUuidGenerator, datatypeA, datatypeB, datatypeC, datatypeD, datatypeE, decimal, index_d_exports as ergonomics, join as joinDatatyeA, join$1 as joinDatatyeB, join$2 as joinDatatyeC, join$3 as joinDatatyeD, join$4 as joinDatatyeE, verifyZahlungsklage, zahlungsklage };
@@ -2351,6 +2351,35 @@ const Gerichte = defineCodeliste({
2351
2351
  "Der Generalbundesanwalt beim Bundesgerichtshof Ref. IV 3 AZ. IV 29 H 2/90": "Z7350"
2352
2352
  });
2353
2353
  //#endregion
2354
+ //#region src/xjustiz-schemata/grunddatensatz/ergonomics/geldbetrag.ts
2355
+ /**
2356
+ * Constructs a {@link Geldbetrag} from an amount in Euro.
2357
+ *
2358
+ * @example
2359
+ * ```typescript
2360
+ * const betrag = geldbetrag(5_000);
2361
+ * ```
2362
+ */
2363
+ function geldbetrag(zahl) {
2364
+ return {
2365
+ zahl,
2366
+ auswahlWaehrung: { waehrung: Waehrung.Euro }
2367
+ };
2368
+ }
2369
+ //#endregion
2370
+ //#region src/xjustiz-schemata/grunddatensatz/ergonomics/herstellerinformation.ts
2371
+ /**
2372
+ * Constructs the static {@link Herstellerinformationen} with the version of the
2373
+ * XJustiz-Bridge in use.
2374
+ */
2375
+ function herstellerinformation() {
2376
+ return {
2377
+ nameDesProdukts: "Justizportal XJustiz Services",
2378
+ herstellerDesProdukts: "Bundesministerium der Justiz und für Verbraucherschutz, ausgeführt durch DigitalService GmbH des Bundes",
2379
+ version: "\"0.8.0\""
2380
+ };
2381
+ }
2382
+ //#endregion
2354
2383
  //#region src/xjustiz-schemata/shared-kernel/refined-types.ts
2355
2384
  /**
2356
2385
  * Produce a factory to construct valid instanced for a refined type.
@@ -2555,21 +2584,23 @@ invalidCharacters: (characters) => `Contains characters not allowed by DIN 91379
2555
2584
  const datatypeA = defineRefinedType(isString, parseDatatypeA);
2556
2585
  /**
2557
2586
  * Adapted version of the default {@link Array.prototype.join} operation that
2558
- * maintains the invariants of {@link DatatypeA}.
2559
- *
2587
+ * maintains the invariants of {@link DatatypeA}. Any `undefined` entry in
2588
+ * `segments` is filtered automatically.
2589
+
2560
2590
  * @example
2561
2591
  * ```typescript
2562
2592
  * const fullName = join(
2563
2593
  * datatypeA(" ").value,
2564
2594
  * datatypeA("Frau").value,
2565
2595
  * datatypeA("Erika").value,
2596
+ * undefined,
2566
2597
  * datatypeA("Musterfrau").value,
2567
2598
  * );
2568
2599
  * // "Frau Erika Musterfrau" - still DatatypeA no plain string
2569
2600
  * ```
2570
2601
  */
2571
2602
  function join(separator, ...segments) {
2572
- return segments.join(separator);
2603
+ return segments.filter((segment) => segment !== void 0).join(separator);
2573
2604
  }
2574
2605
  const DATATYPE_A_PATTERN = transformXsdPatternToJavaScriptExpression(String.raw`(&#x0020;|&#x0027;|[&#x002C;-\&#x002E;]|[&#x0041;-&#x005A;]|[&#x0060;-&#x007A;]|&#x007E;|&#x00A8;|&#x00B4;|&#x00B7;|[&#x00C0;-&#x00D6;]|[&#x00D8;-&#x00F6;]|[&#x00F8;-&#x017E;]|[&#x0187;-&#x0188;]|&#x018F;|&#x0197;|[&#x01A0;-&#x01A1;]|[&#x01AF;-&#x01B0;]|&#x01B7;|[&#x01CD;-&#x01DC;]|[&#x01DE;-&#x01DF;]|[&#x01E2;-&#x01F0;]|[&#x01F4;-&#x01F5;]|[&#x01F8;-&#x01FF;]|[&#x0212;-&#x0213;]|[&#x0218;-&#x021B;]|[&#x021E;-&#x021F;]|[&#x0227;-&#x0233;]|&#x0259;|&#x0268;|&#x0292;|[&#x02B9;-&#x02BA;]|[&#x02BE;-&#x02BF;]|&#x02C8;|&#x02CC;|[&#x1E02;-&#x1E03;]|[&#x1E06;-&#x1E07;]|[&#x1E0A;-&#x1E11;]|&#x1E17;|[&#x1E1C;-&#x1E2B;]|[&#x1E2F;-&#x1E37;]|[&#x1E3A;-&#x1E3B;]|[&#x1E40;-&#x1E49;]|[&#x1E52;-&#x1E5B;]|[&#x1E5E;-&#x1E63;]|[&#x1E6A;-&#x1E6F;]|[&#x1E80;-&#x1E87;]|[&#x1E8C;-&#x1E97;]|&#x1E9E;|[&#x1EA0;-&#x1EF9;]|&#x2019;|&#x2021;|&#x0041;&#x030B;|&#x0043;(&#x0300;|&#x0304;|&#x0306;|&#x0308;|&#x0315;|&#x0323;|&#x0326;|&#x0328;&#x0306;)|&#x0044;&#x0302;|&#x0046;(&#x0300;|&#x0304;)|&#x0047;&#x0300;|&#x0048;(&#x0304;|&#x0326;|&#x0331;)|&#x004A;(&#x0301;|&#x030C;)|&#x004B;(&#x0300;|&#x0302;|&#x0304;|&#x0307;|&#x0315;|&#x031B;|&#x0326;|&#x035F;&#x0048;|&#x035F;&#x0068;)|&#x004C;(&#x0302;|&#x0325;|&#x0325;&#x0304;|&#x0326;)|&#x004D;(&#x0300;|&#x0302;|&#x0306;|&#x0310;)|&#x004E;(&#x0302;|&#x0304;|&#x0306;|&#x0326;)|&#x0050;(&#x0300;|&#x0304;|&#x0315;|&#x0323;)|&#x0052;(&#x0306;|&#x0325;|&#x0325;&#x0304;)|&#x0053;(&#x0300;|&#x0304;|&#x031B;&#x0304;|&#x0331;)|&#x0054;(&#x0300;|&#x0304;|&#x0308;|&#x0315;|&#x031B;)|&#x0055;&#x0307;|&#x005A;(&#x0300;|&#x0304;|&#x0306;|&#x0308;|&#x0327;)|&#x0061;&#x030B;|&#x0063;(&#x0300;|&#x0304;|&#x0306;|&#x0308;|&#x0315;|&#x0323;|&#x0326;|&#x0328;&#x0306;)|&#x0064;&#x0302;|&#x0066;(&#x0300;|&#x0304;)|&#x0067;&#x0300;|&#x0068;(&#x0304;|&#x0326;)|&#x006A;&#x0301;|&#x006B;(&#x0300;|&#x0302;|&#x0304;|&#x0307;|&#x0315;|&#x031B;|&#x0326;|&#x035F;&#x0068;)|&#x006C;(&#x0302;|&#x0325;|&#x0325;&#x0304;|&#x0326;)|&#x006D;(&#x0300;|&#x0302;|&#x0306;|&#x0310;)|&#x006E;(&#x0302;|&#x0304;|&#x0306;|&#x0326;)|&#x0070;(&#x0300;|&#x0304;|&#x0315;|&#x0323;)|&#x0072;(&#x0306;|&#x0325;|&#x0325;&#x0304;)|&#x0073;(&#x0300;|&#x0304;|&#x031B;&#x0304;|&#x0331;)|&#x0074;(&#x0300;|&#x0304;|&#x0315;|&#x031B;)|&#x0075;&#x0307;|&#x007A;(&#x0300;|&#x0304;|&#x0306;|&#x0308;|&#x0327;)|&#x00C7;&#x0306;|&#x00DB;&#x0304;|&#x00E7;&#x0306;|&#x00FB;&#x0304;|&#x00FF;&#x0301;|&#x010C;(&#x0315;|&#x0323;)|&#x010D;(&#x0315;|&#x0323;)|&#x0113;&#x030D;|&#x012A;&#x0301;|&#x012B;&#x0301;|&#x014D;&#x030D;|&#x017D;(&#x0326;|&#x0327;)|&#x017E;(&#x0326;|&#x0327;)|&#x1E32;&#x0304;|&#x1E33;&#x0304;|&#x1E62;&#x0304;|&#x1E63;&#x0304;|&#x1E6C;&#x0304;|&#x1E6D;&#x0304;|&#x1EA0;&#x0308;|&#x1EA1;&#x0308;|&#x1ECC;&#x0308;|&#x1ECD;&#x0308;|&#x1EE4;(&#x0304;|&#x0308;)|&#x1EE5;(&#x0304;|&#x0308;))*`);
2575
2606
  //#endregion
@@ -2612,21 +2643,25 @@ invalidCharacters: (characters) => `Contains characters not allowed by DIN 91379
2612
2643
  const datatypeB = defineRefinedType(isString, parseDatatypeB);
2613
2644
  /**
2614
2645
  * Adapted version of the default {@link Array.prototype.join} operation that
2615
- * maintains the invariants of {@link DatatypeB}.
2646
+ * maintains the invariants of {@link DatatypeB}. Also supports passing
2647
+ * and mixing {@link DatatypeA} values, as any {@link DatentypA} is also a valid
2648
+ * {@link DatatypeB}. Any `undefined` entry in `segments` is filtered
2649
+ * automatically.
2616
2650
  *
2617
2651
  * @example
2618
2652
  * ```typescript
2619
2653
  * const fullAddress = join(
2620
- * datatypeB(" ").value,
2654
+ * datatypeA(" ").value,
2621
2655
  * datatypeB("Musterstraße").value,
2622
2656
  * datatypeB("1A").value,
2657
+ * undefined,
2623
2658
  * datatypeB("Musterstadt").value,
2624
2659
  * );
2625
2660
  * // "Musterstraße 1A Musterstadt" - still DatatypeB no plain string
2626
2661
  * ```
2627
2662
  */
2628
2663
  function join$1(separator, ...segments) {
2629
- return segments.join(separator);
2664
+ return segments.filter((segment) => segment !== void 0).join(separator);
2630
2665
  }
2631
2666
  const DATATYPE_B_PATTERN = transformXsdPatternToJavaScriptExpression(String.raw`([&#x0020;-&#x007E;]|[&#x00A1;-&#x00A3;]|&#x00A5;|[&#x00A7;-&#x00AC;]|[&#x00AE;-&#x00B7;]|[&#x00B9;-&#x00BB;]|[&#x00BF;-&#x017E;]|[&#x0187;-&#x0188;]|&#x018F;|&#x0197;|[&#x01A0;-&#x01A1;]|[&#x01AF;-&#x01B0;]|&#x01B7;|[&#x01CD;-&#x01DC;]|[&#x01DE;-&#x01DF;]|[&#x01E2;-&#x01F0;]|[&#x01F4;-&#x01F5;]|[&#x01F8;-&#x01FF;]|[&#x0212;-&#x0213;]|[&#x0218;-&#x021B;]|[&#x021E;-&#x021F;]|[&#x0227;-&#x0233;]|&#x0259;|&#x0268;|&#x0292;|[&#x02B9;-&#x02BA;]|[&#x02BE;-&#x02BF;]|&#x02C8;|&#x02CC;|[&#x1E02;-&#x1E03;]|[&#x1E06;-&#x1E07;]|[&#x1E0A;-&#x1E11;]|&#x1E17;|[&#x1E1C;-&#x1E2B;]|[&#x1E2F;-&#x1E37;]|[&#x1E3A;-&#x1E3B;]|[&#x1E40;-&#x1E49;]|[&#x1E52;-&#x1E5B;]|[&#x1E5E;-&#x1E63;]|[&#x1E6A;-&#x1E6F;]|[&#x1E80;-&#x1E87;]|[&#x1E8C;-&#x1E97;]|&#x1E9E;|[&#x1EA0;-&#x1EF9;]|&#x2019;|&#x2021;|&#x20AC;|&#x0041;&#x030B;|&#x0043;(&#x0300;|&#x0304;|&#x0306;|&#x0308;|&#x0315;|&#x0323;|&#x0326;|&#x0328;&#x0306;)|&#x0044;&#x0302;|&#x0046;(&#x0300;|&#x0304;)|&#x0047;&#x0300;|&#x0048;(&#x0304;|&#x0326;|&#x0331;)|&#x004A;(&#x0301;|&#x030C;)|&#x004B;(&#x0300;|&#x0302;|&#x0304;|&#x0307;|&#x0315;|&#x031B;|&#x0326;|&#x035F;&#x0048;|&#x035F;&#x0068;)|&#x004C;(&#x0302;|&#x0325;|&#x0325;&#x0304;|&#x0326;)|&#x004D;(&#x0300;|&#x0302;|&#x0306;|&#x0310;)|&#x004E;(&#x0302;|&#x0304;|&#x0306;|&#x0326;)|&#x0050;(&#x0300;|&#x0304;|&#x0315;|&#x0323;)|&#x0052;(&#x0306;|&#x0325;|&#x0325;&#x0304;)|&#x0053;(&#x0300;|&#x0304;|&#x031B;&#x0304;|&#x0331;)|&#x0054;(&#x0300;|&#x0304;|&#x0308;|&#x0315;|&#x031B;)|&#x0055;&#x0307;|&#x005A;(&#x0300;|&#x0304;|&#x0306;|&#x0308;|&#x0327;)|&#x0061;&#x030B;|&#x0063;(&#x0300;|&#x0304;|&#x0306;|&#x0308;|&#x0315;|&#x0323;|&#x0326;|&#x0328;&#x0306;)|&#x0064;&#x0302;|&#x0066;(&#x0300;|&#x0304;)|&#x0067;&#x0300;|&#x0068;(&#x0304;|&#x0326;)|&#x006A;&#x0301;|&#x006B;(&#x0300;|&#x0302;|&#x0304;|&#x0307;|&#x0315;|&#x031B;|&#x0326;|&#x035F;&#x0068;)|&#x006C;(&#x0302;|&#x0325;|&#x0325;&#x0304;|&#x0326;)|&#x006D;(&#x0300;|&#x0302;|&#x0306;|&#x0310;)|&#x006E;(&#x0302;|&#x0304;|&#x0306;|&#x0326;)|&#x0070;(&#x0300;|&#x0304;|&#x0315;|&#x0323;)|&#x0072;(&#x0306;|&#x0325;|&#x0325;&#x0304;)|&#x0073;(&#x0300;|&#x0304;|&#x031B;&#x0304;|&#x0331;)|&#x0074;(&#x0300;|&#x0304;|&#x0315;|&#x031B;)|&#x0075;&#x0307;|&#x007A;(&#x0300;|&#x0304;|&#x0306;|&#x0308;|&#x0327;)|&#x00C7;&#x0306;|&#x00DB;&#x0304;|&#x00E7;&#x0306;|&#x00FB;&#x0304;|&#x00FF;&#x0301;|&#x010C;(&#x0315;|&#x0323;)|&#x010D;(&#x0315;|&#x0323;)|&#x0113;&#x030D;|&#x012A;&#x0301;|&#x012B;&#x0301;|&#x014D;&#x030D;|&#x017D;(&#x0326;|&#x0327;)|&#x017E;(&#x0326;|&#x0327;)|&#x1E32;&#x0304;|&#x1E33;&#x0304;|&#x1E62;&#x0304;|&#x1E63;&#x0304;|&#x1E6C;&#x0304;|&#x1E6D;&#x0304;|&#x1EA0;&#x0308;|&#x1EA1;&#x0308;|&#x1ECC;&#x0308;|&#x1ECD;&#x0308;|&#x1EE4;(&#x0304;|&#x0308;)|&#x1EE5;(&#x0304;|&#x0308;))*`);
2632
2667
  //#endregion
@@ -2669,24 +2704,50 @@ invalidCharacters: (characters) => `Contains characters not allowed by DIN 91379
2669
2704
  const datatypeC = defineRefinedType(isString, parseDatatypeC);
2670
2705
  /**
2671
2706
  * Adapted version of the default {@link Array.prototype.join} operation that
2672
- * maintains the invariants of {@link DatatypeC}.
2707
+ * maintains the invariants of {@link DatatypeC}. Also supports passing
2708
+ * and mixing {@link DatatypeA} and {@link DatatypeB} values, as any of them is
2709
+ * also a valid {@link DatatypeC}. Any `undefined` entry in `segments` is
2710
+ * filtered automatically.
2673
2711
  *
2674
2712
  * @example
2675
2713
  * ```typescript
2676
- * const fullName = join(
2677
- * datatypeC(" ").value,
2714
+ * const output = join(
2715
+ * datatypeA(" ").value,
2678
2716
  * datatypeC("Lorem").value,
2679
- * datatypeC("ipsum").value,
2717
+ * datatypeB("ipsum").value,
2718
+ * undefined,
2680
2719
  * datatypeC("dolor").value,
2681
2720
  * );
2682
2721
  * // "Lorem ipsum dolor" - still DatatypeC no plain string
2683
2722
  * ```
2684
2723
  */
2685
2724
  function join$2(separator, ...segments) {
2686
- return segments.join(separator);
2725
+ return segments.filter((segment) => segment !== void 0).join(separator);
2687
2726
  }
2688
2727
  const DATATYPE_C_PATTERN = transformXsdPatternToJavaScriptExpression(String.raw`([&#x0009;-&#x000A;]|&#x000D;|[&#x0020;-&#x007E;]|[&#x00A0;-&#x00AC;]|[&#x00AE;-&#x017E;]|[&#x0187;-&#x0188;]|&#x018F;|&#x0197;|[&#x01A0;-&#x01A1;]|[&#x01AF;-&#x01B0;]|&#x01B7;|[&#x01CD;-&#x01DC;]|[&#x01DE;-&#x01DF;]|[&#x01E2;-&#x01F0;]|[&#x01F4;-&#x01F5;]|[&#x01F8;-&#x01FF;]|[&#x0212;-&#x0213;]|[&#x0218;-&#x021B;]|[&#x021E;-&#x021F;]|[&#x0227;-&#x0233;]|&#x0259;|&#x0268;|&#x0292;|[&#x02B9;-&#x02BA;]|[&#x02BE;-&#x02BF;]|&#x02C8;|&#x02CC;|[&#x1E02;-&#x1E03;]|[&#x1E06;-&#x1E07;]|[&#x1E0A;-&#x1E11;]|&#x1E17;|[&#x1E1C;-&#x1E2B;]|[&#x1E2F;-&#x1E37;]|[&#x1E3A;-&#x1E3B;]|[&#x1E40;-&#x1E49;]|[&#x1E52;-&#x1E5B;]|[&#x1E5E;-&#x1E63;]|[&#x1E6A;-&#x1E6F;]|[&#x1E80;-&#x1E87;]|[&#x1E8C;-&#x1E97;]|&#x1E9E;|[&#x1EA0;-&#x1EF9;]|&#x2019;|&#x2021;|&#x20AC;|&#x0041;&#x030B;|&#x0043;(&#x0300;|&#x0304;|&#x0306;|&#x0308;|&#x0315;|&#x0323;|&#x0326;|&#x0328;&#x0306;)|&#x0044;&#x0302;|&#x0046;(&#x0300;|&#x0304;)|&#x0047;&#x0300;|&#x0048;(&#x0304;|&#x0326;|&#x0331;)|&#x004A;(&#x0301;|&#x030C;)|&#x004B;(&#x0300;|&#x0302;|&#x0304;|&#x0307;|&#x0315;|&#x031B;|&#x0326;|&#x035F;&#x0048;|&#x035F;&#x0068;)|&#x004C;(&#x0302;|&#x0325;|&#x0325;&#x0304;|&#x0326;)|&#x004D;(&#x0300;|&#x0302;|&#x0306;|&#x0310;)|&#x004E;(&#x0302;|&#x0304;|&#x0306;|&#x0326;)|&#x0050;(&#x0300;|&#x0304;|&#x0315;|&#x0323;)|&#x0052;(&#x0306;|&#x0325;|&#x0325;&#x0304;)|&#x0053;(&#x0300;|&#x0304;|&#x031B;&#x0304;|&#x0331;)|&#x0054;(&#x0300;|&#x0304;|&#x0308;|&#x0315;|&#x031B;)|&#x0055;&#x0307;|&#x005A;(&#x0300;|&#x0304;|&#x0306;|&#x0308;|&#x0327;)|&#x0061;&#x030B;|&#x0063;(&#x0300;|&#x0304;|&#x0306;|&#x0308;|&#x0315;|&#x0323;|&#x0326;|&#x0328;&#x0306;)|&#x0064;&#x0302;|&#x0066;(&#x0300;|&#x0304;)|&#x0067;&#x0300;|&#x0068;(&#x0304;|&#x0326;)|&#x006A;&#x0301;|&#x006B;(&#x0300;|&#x0302;|&#x0304;|&#x0307;|&#x0315;|&#x031B;|&#x0326;|&#x035F;&#x0068;)|&#x006C;(&#x0302;|&#x0325;|&#x0325;&#x0304;|&#x0326;)|&#x006D;(&#x0300;|&#x0302;|&#x0306;|&#x0310;)|&#x006E;(&#x0302;|&#x0304;|&#x0306;|&#x0326;)|&#x0070;(&#x0300;|&#x0304;|&#x0315;|&#x0323;)|&#x0072;(&#x0306;|&#x0325;|&#x0325;&#x0304;)|&#x0073;(&#x0300;|&#x0304;|&#x031B;&#x0304;|&#x0331;)|&#x0074;(&#x0300;|&#x0304;|&#x0315;|&#x031B;)|&#x0075;&#x0307;|&#x007A;(&#x0300;|&#x0304;|&#x0306;|&#x0308;|&#x0327;)|&#x00C7;&#x0306;|&#x00DB;&#x0304;|&#x00E7;&#x0306;|&#x00FB;&#x0304;|&#x00FF;&#x0301;|&#x010C;(&#x0315;|&#x0323;)|&#x010D;(&#x0315;|&#x0323;)|&#x0113;&#x030D;|&#x012A;&#x0301;|&#x012B;&#x0301;|&#x014D;&#x030D;|&#x017D;(&#x0326;|&#x0327;)|&#x017E;(&#x0326;|&#x0327;)|&#x1E32;&#x0304;|&#x1E33;&#x0304;|&#x1E62;&#x0304;|&#x1E63;&#x0304;|&#x1E6C;&#x0304;|&#x1E6D;&#x0304;|&#x1EA0;&#x0308;|&#x1EA1;&#x0308;|&#x1ECC;&#x0308;|&#x1ECD;&#x0308;|&#x1EE4;(&#x0304;|&#x0308;)|&#x1EE5;(&#x0304;|&#x0308;))*`);
2689
2728
  //#endregion
2729
+ //#region src/xjustiz-schemata/grunddatensatz/ergonomics/kommunikation.ts
2730
+ /**
2731
+ * Constructs a {@link Kommunikation} with {@link Telekommunikationsart.EMail}
2732
+ * as `telekommunikationsart`.
2733
+ */
2734
+ function email(address) {
2735
+ return {
2736
+ verbindung: address,
2737
+ telekommunikationsart: Telekommunikationsart.EMail
2738
+ };
2739
+ }
2740
+ /**
2741
+ * Constructs a {@link Kommunikation} with {@link Telekommunikationsart.Telefon}
2742
+ * as `telekommunikationsart`.
2743
+ */
2744
+ function telefon(number) {
2745
+ return {
2746
+ verbindung: number,
2747
+ telekommunikationsart: Telekommunikationsart.Telefon
2748
+ };
2749
+ }
2750
+ //#endregion
2690
2751
  //#region src/xjustiz-schemata/din-91379/datatypeD.ts
2691
2752
  function parseDatatypeD(issueMessages = DEFAULT_ISSUE_MESSAGES$3) {
2692
2753
  return function parse(input) {
@@ -2726,21 +2787,25 @@ invalidCharacters: (characters) => `Contains characters not allowed by DIN 91379
2726
2787
  const datatypeD = defineRefinedType(isString, parseDatatypeD);
2727
2788
  /**
2728
2789
  * Adapted version of the default {@link Array.prototype.join} operation that
2729
- * maintains the invariants of {@link DatatypeD}.
2790
+ * maintains the invariants of {@link DatatypeD}. Also supports passing
2791
+ * and mixing {@link DatatypeA} and {@link DatatypeB} values, as any of them is
2792
+ * also a valid {@link DatatypeD}. Any `undefined` entry in `segments` is
2793
+ * filtered automatically.
2730
2794
  *
2731
2795
  * @example
2732
2796
  * ```typescript
2733
- * const fullName = join(
2734
- * datatypeD(" ").value,
2797
+ * const output = join(
2798
+ * datatypeA(" ").value,
2735
2799
  * datatypeD("Lorem").value,
2736
- * datatypeD("ipsum").value,
2800
+ * datatypeB("ipsum").value,
2801
+ * undefined,
2737
2802
  * datatypeD("dolor").value,
2738
2803
  * );
2739
2804
  * // "Lorem ipsum dolor" - still DatatypeD no plain string
2740
2805
  * ```
2741
2806
  */
2742
2807
  function join$3(separator, ...segments) {
2743
- return segments.join(separator);
2808
+ return segments.filter((segment) => segment !== void 0).join(separator);
2744
2809
  }
2745
2810
  const DATATYPE_D_PATTERN = transformXsdPatternToJavaScriptExpression(String.raw`([&#x0020;-&#x007E;]|[&#x00A1;-&#x00AC;]|[&#x00AE;-&#x017E;]|[&#x0187;-&#x0188;]|&#x018F;|&#x0192;|&#x0197;|[&#x01A0;-&#x01A1;]|[&#x01AF;-&#x01B0;]|&#x01B7;|[&#x01CD;-&#x01DC;]|[&#x01DE;-&#x01DF;]|[&#x01E2;-&#x01F0;]|[&#x01F4;-&#x01F5;]|[&#x01F8;-&#x01FF;]|[&#x0212;-&#x0213;]|[&#x0218;-&#x021B;]|[&#x021E;-&#x021F;]|[&#x0227;-&#x0233;]|&#x0259;|&#x0268;|&#x0292;|&#x02B0;|&#x02B3;|[&#x02B9;-&#x02BA;]|[&#x02BE;-&#x02BF;]|&#x02C6;|&#x02C8;|&#x02CC;|&#x02DC;|&#x02E2;|&#x0386;|[&#x0388;-&#x038A;]|&#x038C;|[&#x038E;-&#x03A1;]|[&#x03A3;-&#x03CE;]|&#x1D48;|&#x1D57;|[&#x1E02;-&#x1E03;]|[&#x1E06;-&#x1E07;]|[&#x1E0A;-&#x1E11;]|&#x1E17;|[&#x1E1C;-&#x1E2B;]|[&#x1E2F;-&#x1E37;]|[&#x1E3A;-&#x1E3B;]|[&#x1E40;-&#x1E49;]|[&#x1E52;-&#x1E5B;]|[&#x1E5E;-&#x1E63;]|[&#x1E6A;-&#x1E6F;]|[&#x1E80;-&#x1E87;]|[&#x1E8C;-&#x1E97;]|&#x1E9E;|[&#x1EA0;-&#x1EF9;]|[&#x2018;-&#x201A;]|[&#x201C;-&#x201E;]|[&#x2020;-&#x2021;]|&#x2026;|&#x2030;|[&#x2032;-&#x2033;]|[&#x2039;-&#x203A;]|&#x2070;|[&#x2074;-&#x2079;]|[&#x207F;-&#x2089;]|&#x20AC;|&#x2122;|&#x221E;|[&#x2264;-&#x2265;]|&#x0041;&#x030B;|&#x0043;(&#x0300;|&#x0304;|&#x0306;|&#x0308;|&#x0315;|&#x0323;|&#x0326;|&#x0328;&#x0306;)|&#x0044;&#x0302;|&#x0046;(&#x0300;|&#x0304;)|&#x0047;&#x0300;|&#x0048;(&#x0304;|&#x0326;|&#x0331;)|&#x004A;(&#x0301;|&#x030C;)|&#x004B;(&#x0300;|&#x0302;|&#x0304;|&#x0307;|&#x0315;|&#x031B;|&#x0326;|&#x035F;&#x0048;|&#x035F;&#x0068;)|&#x004C;(&#x0302;|&#x0325;|&#x0325;&#x0304;|&#x0326;)|&#x004D;(&#x0300;|&#x0302;|&#x0306;|&#x0310;)|&#x004E;(&#x0302;|&#x0304;|&#x0306;|&#x0326;)|&#x0050;(&#x0300;|&#x0304;|&#x0315;|&#x0323;)|&#x0052;(&#x0306;|&#x0325;|&#x0325;&#x0304;)|&#x0053;(&#x0300;|&#x0304;|&#x031B;&#x0304;|&#x0331;)|&#x0054;(&#x0300;|&#x0304;|&#x0308;|&#x0315;|&#x031B;)|&#x0055;&#x0307;|&#x005A;(&#x0300;|&#x0304;|&#x0306;|&#x0308;|&#x0327;)|&#x0061;&#x030B;|&#x0063;(&#x0300;|&#x0304;|&#x0306;|&#x0308;|&#x0315;|&#x0323;|&#x0326;|&#x0328;&#x0306;)|&#x0064;&#x0302;|&#x0066;(&#x0300;|&#x0304;)|&#x0067;&#x0300;|&#x0068;(&#x0304;|&#x0326;)|&#x006A;&#x0301;|&#x006B;(&#x0300;|&#x0302;|&#x0304;|&#x0307;|&#x0315;|&#x031B;|&#x0326;|&#x035F;&#x0068;)|&#x006C;(&#x0302;|&#x0325;|&#x0325;&#x0304;|&#x0326;)|&#x006D;(&#x0300;|&#x0302;|&#x0306;|&#x0310;)|&#x006E;(&#x0302;|&#x0304;|&#x0306;|&#x0326;)|&#x0070;(&#x0300;|&#x0304;|&#x0315;|&#x0323;)|&#x0072;(&#x0306;|&#x0325;|&#x0325;&#x0304;)|&#x0073;(&#x0300;|&#x0304;|&#x031B;&#x0304;|&#x0331;)|&#x0074;(&#x0300;|&#x0304;|&#x0315;|&#x031B;)|&#x0075;&#x0307;|&#x007A;(&#x0300;|&#x0304;|&#x0306;|&#x0308;|&#x0327;)|&#x00C7;&#x0306;|&#x00DB;&#x0304;|&#x00E7;&#x0306;|&#x00FB;&#x0304;|&#x00FF;&#x0301;|&#x010C;(&#x0315;|&#x0323;)|&#x010D;(&#x0315;|&#x0323;)|&#x0113;&#x030D;|&#x012A;&#x0301;|&#x012B;&#x0301;|&#x014D;&#x030D;|&#x017D;(&#x0326;|&#x0327;)|&#x017E;(&#x0326;|&#x0327;)|&#x1E32;&#x0304;|&#x1E33;&#x0304;|&#x1E62;&#x0304;|&#x1E63;&#x0304;|&#x1E6C;&#x0304;|&#x1E6D;&#x0304;|&#x1EA0;&#x0308;|&#x1EA1;&#x0308;|&#x1ECC;&#x0308;|&#x1ECD;&#x0308;|&#x1EE4;(&#x0304;|&#x0308;)|&#x1EE5;(&#x0304;|&#x0308;))*`);
2746
2811
  //#endregion
@@ -2937,22 +3002,6 @@ function randomUUID() {
2937
3002
  return globalThis.crypto.randomUUID();
2938
3003
  }
2939
3004
  //#endregion
2940
- //#region src/xjustiz-schemata/grunddatensatz/ergonomics/geldbetrag.ts
2941
- /**
2942
- * Constructs a {@link Geldbetrag} from an amount in Euro.
2943
- *
2944
- * @example
2945
- * ```typescript
2946
- * const betrag = geldbetrag(5_000);
2947
- * ```
2948
- */
2949
- function geldbetrag(zahl) {
2950
- return {
2951
- zahl,
2952
- auswahlWaehrung: { waehrung: Waehrung.Euro }
2953
- };
2954
- }
2955
- //#endregion
2956
3005
  //#region src/xjustiz-schemata/din-91379/datatypeE.ts
2957
3006
  function parseDatatypeE(issueMessages = DEFAULT_ISSUE_MESSAGES$1) {
2958
3007
  return function parse(input) {
@@ -2993,21 +3042,26 @@ invalidCharacters: (characters) => `Contains characters not allowed by DIN 91379
2993
3042
  const datatypeE = defineRefinedType(isString, parseDatatypeE);
2994
3043
  /**
2995
3044
  * Adapted version of the default {@link Array.prototype.join} operation that
2996
- * maintains the invariants of {@link DatatypeE}.
3045
+ * maintains the invariants of {@link DatatypeE}. Also supports passing
3046
+ * and mixing {@link DatatypeA}, {@link DatatypeB}, {@link DatatypeC} and
3047
+ * {@link DatatypeD} values, as any of them is also a valid {@link DatatypeE}.
3048
+ * Any `undefined` entry in `segments` is filtered automatically.
2997
3049
  *
2998
3050
  * @example
2999
3051
  * ```typescript
3000
- * const fullName = join(
3001
- * datatypeE(" ").value,
3002
- * datatypeE("Lorem").value,
3003
- * datatypeE("ipsum").value,
3004
- * datatypeE("dolor").value,
3052
+ * const output = join(
3053
+ * datatypeA(" ").value,
3054
+ * datatypeB("Lorem").value,
3055
+ * datatypeC("ipsum").value,
3056
+ * datatypeD("dolor").value,
3057
+ * undefined,
3058
+ * datatypeE("sit").value,
3005
3059
  * );
3006
- * // "Lorem ipsum dolor" - still DatatypeE no plain string
3060
+ * // "Lorem ipsum dolor sit" - still DatatypeE no plain string
3007
3061
  * ```
3008
3062
  */
3009
3063
  function join$4(separator, ...segments) {
3010
- return segments.join(separator);
3064
+ return segments.filter((segment) => segment !== void 0).join(separator);
3011
3065
  }
3012
3066
  const DATATYPE_E_PATTERN = transformXsdPatternToJavaScriptExpression(String.raw`([&#x0009;-&#x000A;]|&#x000D;|[&#x0020;-&#x007E;]|[&#x00A0;-&#x00AC;]|[&#x00AE;-&#x017E;]|[&#x0187;-&#x0188;]|&#x018F;|&#x0192;|&#x0197;|[&#x01A0;-&#x01A1;]|[&#x01AF;-&#x01B0;]|&#x01B7;|[&#x01CD;-&#x01DC;]|[&#x01DE;-&#x01DF;]|[&#x01E2;-&#x01F0;]|[&#x01F4;-&#x01F5;]|[&#x01F8;-&#x01FF;]|[&#x0212;-&#x0213;]|[&#x0218;-&#x021B;]|[&#x021E;-&#x021F;]|[&#x0227;-&#x0233;]|&#x0259;|&#x0268;|&#x0292;|&#x02B0;|&#x02B3;|[&#x02B9;-&#x02BA;]|[&#x02BE;-&#x02BF;]|&#x02C6;|&#x02C8;|&#x02CC;|&#x02DC;|&#x02E2;|&#x0386;|[&#x0388;-&#x038A;]|&#x038C;|[&#x038E;-&#x03A1;]|[&#x03A3;-&#x03CE;]|&#x040D;|[&#x0410;-&#x042A;]|&#x042C;|[&#x042E;-&#x044A;]|&#x044C;|[&#x044E;-&#x044F;]|&#x045D;|&#x1D48;|&#x1D57;|[&#x1E02;-&#x1E03;]|[&#x1E06;-&#x1E07;]|[&#x1E0A;-&#x1E11;]|&#x1E17;|[&#x1E1C;-&#x1E2B;]|[&#x1E2F;-&#x1E37;]|[&#x1E3A;-&#x1E3B;]|[&#x1E40;-&#x1E49;]|[&#x1E52;-&#x1E5B;]|[&#x1E5E;-&#x1E63;]|[&#x1E6A;-&#x1E6F;]|[&#x1E80;-&#x1E87;]|[&#x1E8C;-&#x1E97;]|&#x1E9E;|[&#x1EA0;-&#x1EF9;]|[&#x2018;-&#x201A;]|[&#x201C;-&#x201E;]|[&#x2020;-&#x2021;]|&#x2026;|&#x2030;|[&#x2032;-&#x2033;]|[&#x2039;-&#x203A;]|&#x2070;|[&#x2074;-&#x2079;]|[&#x207F;-&#x2089;]|&#x20AC;|&#x2122;|&#x221E;|[&#x2264;-&#x2265;]|&#x0041;&#x030B;|&#x0043;(&#x0300;|&#x0304;|&#x0306;|&#x0308;|&#x0315;|&#x0323;|&#x0326;|&#x0328;&#x0306;)|&#x0044;&#x0302;|&#x0046;(&#x0300;|&#x0304;)|&#x0047;&#x0300;|&#x0048;(&#x0304;|&#x0326;|&#x0331;)|&#x004A;(&#x0301;|&#x030C;)|&#x004B;(&#x0300;|&#x0302;|&#x0304;|&#x0307;|&#x0315;|&#x031B;|&#x0326;|&#x035F;&#x0048;|&#x035F;&#x0068;)|&#x004C;(&#x0302;|&#x0325;|&#x0325;&#x0304;|&#x0326;)|&#x004D;(&#x0300;|&#x0302;|&#x0306;|&#x0310;)|&#x004E;(&#x0302;|&#x0304;|&#x0306;|&#x0326;)|&#x0050;(&#x0300;|&#x0304;|&#x0315;|&#x0323;)|&#x0052;(&#x0306;|&#x0325;|&#x0325;&#x0304;)|&#x0053;(&#x0300;|&#x0304;|&#x031B;&#x0304;|&#x0331;)|&#x0054;(&#x0300;|&#x0304;|&#x0308;|&#x0315;|&#x031B;)|&#x0055;&#x0307;|&#x005A;(&#x0300;|&#x0304;|&#x0306;|&#x0308;|&#x0327;)|&#x0061;&#x030B;|&#x0063;(&#x0300;|&#x0304;|&#x0306;|&#x0308;|&#x0315;|&#x0323;|&#x0326;|&#x0328;&#x0306;)|&#x0064;&#x0302;|&#x0066;(&#x0300;|&#x0304;)|&#x0067;&#x0300;|&#x0068;(&#x0304;|&#x0326;)|&#x006A;&#x0301;|&#x006B;(&#x0300;|&#x0302;|&#x0304;|&#x0307;|&#x0315;|&#x031B;|&#x0326;|&#x035F;&#x0068;)|&#x006C;(&#x0302;|&#x0325;|&#x0325;&#x0304;|&#x0326;)|&#x006D;(&#x0300;|&#x0302;|&#x0306;|&#x0310;)|&#x006E;(&#x0302;|&#x0304;|&#x0306;|&#x0326;)|&#x0070;(&#x0300;|&#x0304;|&#x0315;|&#x0323;)|&#x0072;(&#x0306;|&#x0325;|&#x0325;&#x0304;)|&#x0073;(&#x0300;|&#x0304;|&#x031B;&#x0304;|&#x0331;)|&#x0074;(&#x0300;|&#x0304;|&#x0315;|&#x031B;)|&#x0075;&#x0307;|&#x007A;(&#x0300;|&#x0304;|&#x0306;|&#x0308;|&#x0327;)|&#x00C7;&#x0306;|&#x00DB;&#x0304;|&#x00E7;&#x0306;|&#x00FB;&#x0304;|&#x00FF;&#x0301;|&#x010C;(&#x0315;|&#x0323;)|&#x010D;(&#x0315;|&#x0323;)|&#x0113;&#x030D;|&#x012A;&#x0301;|&#x012B;&#x0301;|&#x014D;&#x030D;|&#x017D;(&#x0326;|&#x0327;)|&#x017E;(&#x0326;|&#x0327;)|&#x1E32;&#x0304;|&#x1E33;&#x0304;|&#x1E62;&#x0304;|&#x1E63;&#x0304;|&#x1E6C;&#x0304;|&#x1E6D;&#x0304;|&#x1EA0;&#x0308;|&#x1EA1;&#x0308;|&#x1ECC;&#x0308;|&#x1ECD;&#x0308;|&#x1EE4;(&#x0304;|&#x0308;)|&#x1EE5;(&#x0304;|&#x0308;))*`);
3013
3067
  //#endregion
@@ -3287,12 +3341,62 @@ function verifyZahlungsklage(_scope, nachricht) {
3287
3341
  return nachricht;
3288
3342
  }
3289
3343
  //#endregion
3344
+ //#region src/nachricht/zahlungsklage/ergonomics/nachrichtenkopf.ts
3345
+ /**
3346
+ * Constructs a {@link NachrichtenkopfFuerZahlungsklage} with the `klaeger` as
3347
+ * Absender and `gericht` as Empfänger.
3348
+ *
3349
+ * The `erstellungszeitpunkt` will be current date-time at the call.
3350
+ *
3351
+ * The `klaeger` will be formatted based on their Geschlecht, Titel, Vorname and
3352
+ * Nachname. For example: `"Frau Dr. Erika Musterfrau"`. A Titel which can't be
3353
+ * parsed from {@link DatatypeC} to {@link DatatypeD} will be discarded. Any
3354
+ * Geschlecht but männlich or weiblich will also be discarded for the Anrede.
3355
+ */
3356
+ function nachrichtenkopf(_scope, eigeneNachrichtenID, klaeger, gericht) {
3357
+ return {
3358
+ xjustizVersion: "3.6.2",
3359
+ erstellungszeitpunkt: Temporal.Now.instant(),
3360
+ absender: {
3361
+ informationen: { auswahlKommunikationspartner: { sonstige: formatKlaegerAsAbsender(klaeger.beteiligter.auswahlBeteiligter.natuerlichePerson) } },
3362
+ eigeneNachrichtenID
3363
+ },
3364
+ empfaenger: {
3365
+ informationen: { auswahlKommunikationspartner: { gericht } },
3366
+ auswahlAktenzeichen: { aktenzeichenNeu: true }
3367
+ },
3368
+ herstellerinformation: herstellerinformation()
3369
+ };
3370
+ }
3371
+ function formatKlaegerAsAbsender(klaeger) {
3372
+ return join$3(datatypeD(" ").value, mapGeschlechtToAndrede(klaeger.geschlecht), tryToParseTitelAsDatatypeD(klaeger.vollerName.titel), klaeger.vollerName.vorname, klaeger.vollerName.nachname);
3373
+ }
3374
+ function tryToParseTitelAsDatatypeD(titel) {
3375
+ const maybeResult = titel ? datatypeD(titel) : { issues: [] };
3376
+ return maybeResult.issues === void 0 ? maybeResult.value : void 0;
3377
+ }
3378
+ function mapGeschlechtToAndrede(geschlecht) {
3379
+ switch (geschlecht) {
3380
+ case void 0:
3381
+ case Geschlecht.Unbekannt:
3382
+ case Geschlecht.Divers:
3383
+ case Geschlecht.Saechlich: return;
3384
+ case Geschlecht.Maennlich: return datatypeD("Herr").value;
3385
+ case Geschlecht.Weiblich: return datatypeD("Frau").value;
3386
+ default: return;
3387
+ }
3388
+ }
3389
+ //#endregion
3290
3390
  //#region src/nachricht/zahlungsklage/ergonomics/index.ts
3291
3391
  var ergonomics_exports = /* @__PURE__ */ __exportAll({
3292
3392
  antragAufAnwaltskosten: () => antragAufAnwaltskosten,
3293
3393
  antragAufVersaeumnisurteil: () => antragAufVersaeumnisurteil,
3394
+ email: () => email,
3294
3395
  geldbetrag: () => geldbetrag,
3396
+ herstellerinformation: () => herstellerinformation,
3397
+ nachrichtenkopf: () => nachrichtenkopf,
3295
3398
  parteivernehmung: () => parteivernehmung,
3399
+ telefon: () => telefon,
3296
3400
  weitererAntrag: () => weitererAntrag,
3297
3401
  zeuge: () => zeuge
3298
3402
  });
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://www.schemastore.org/package.json",
3
3
  "name": "@digitalservicebund/a2j-xjustiz-bridge",
4
- "version": "0.7.1",
4
+ "version": "0.8.0",
5
5
  "description": "Assisted composition of XJustiz messages that are ensured to be valid.",
6
6
  "author": "Team Court Communication (Access to Justice) - DigitalService GmbH des Bundes",
7
7
  "license": "MIT",
@@ -28,14 +28,14 @@
28
28
  },
29
29
  "dependencies": {
30
30
  "@standard-schema/spec": "^1.1.0",
31
- "ky": "^2.0.2",
32
- "typescript": "^6.0.3"
31
+ "ky": "^2.1.0"
33
32
  },
34
33
  "devDependencies": {
35
- "fast-check": "^4.8.0",
36
- "publint": "^0.3.21",
34
+ "fast-check": "^4.9.0",
35
+ "publint": "^0.3.24",
37
36
  "testcontainers": "^12.1.0",
38
- "tsdown": "^0.22.0",
39
- "vitest": "^4.1.10"
37
+ "tsdown": "^0.22.14",
38
+ "typescript": "^7.0.2",
39
+ "vitest": "^4.1.11"
40
40
  }
41
41
  }