@digitalservicebund/a2j-xjustiz-bridge 0.7.1 → 0.9.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.
@@ -2403,33 +2403,6 @@ type ConsumeCharactersFrom<Input extends string, SetOfCharactersToConsume extend
2403
2403
  * Typically used to ensure the true identity of a base type.
2404
2404
  */
2405
2405
  type Invariant<Basis> = (basis: Basis) => Basis;
2406
- type IsTuple<MaybeTuple> = MaybeTuple extends readonly unknown[] ? number extends MaybeTuple["length"] ? false : true : false;
2407
- type NTuple<Item, Length extends number, NMinusOneTuple extends readonly Item[] = []> = NMinusOneTuple["length"] extends Length ? NMinusOneTuple : NTuple<Item, Length, [...NMinusOneTuple, Item]>;
2408
- /**
2409
- * Increment a given literal number type by one.
2410
- * Intended to by used without unions. In case of a union, it will increment the
2411
- * smallest literal number type in the union
2412
- *
2413
- * @example
2414
- * ```typescript
2415
- * Increment<1> // 2
2416
- * Increment<99> // 100
2417
- * Increment<99, 5, 27> // 6
2418
- * Increment<number> // 1
2419
- * ```
2420
- */
2421
- type Increment<Operand extends number> = [...NTuple<unknown, Operand>, unknown]["length"] extends (infer Incremented extends number) ? Incremented : never;
2422
- type IsEqualTo<Left, Right> = (<Probe>() => Probe extends Left ? 1 : 2) extends (<Probe>() => Probe extends Right ? 1 : 2) ? true : false;
2423
- /**
2424
- * Just the clean numerical indices of the tuple entries. Exclude symbols for
2425
- * iterator etc.
2426
- *
2427
- * @example
2428
- * ```typescript
2429
- * IndicesOfTuple<["a", "b", "c"]> // 1 | 2 | 3
2430
- * ```
2431
- */
2432
- type IndicesOfTuple<Tuple extends readonly unknown[]> = Extract<keyof Tuple, `${number}`> extends `${infer Indices extends number}` ? Indices : never;
2433
2406
  //#endregion
2434
2407
  //#region src/xjustiz-schemata/shared-kernel/refined-types.d.ts
2435
2408
  /**
@@ -2655,20 +2628,21 @@ declare const datatypeA: RefinedTypeFactory<string, DatatypeA, <Value extends st
2655
2628
  }>;
2656
2629
  /**
2657
2630
  * Adapted version of the default {@link Array.prototype.join} operation that
2658
- * maintains the invariants of {@link DatatypeA}.
2659
- *
2631
+ * maintains the invariants of {@link DatatypeA}. Any `undefined` entry in
2632
+ * `segments` is filtered automatically.
2660
2633
  * @example
2661
2634
  * ```typescript
2662
2635
  * const fullName = join(
2663
2636
  * datatypeA(" ").value,
2664
2637
  * datatypeA("Frau").value,
2665
2638
  * datatypeA("Erika").value,
2639
+ * undefined,
2666
2640
  * datatypeA("Musterfrau").value,
2667
2641
  * );
2668
2642
  * // "Frau Erika Musterfrau" - still DatatypeA no plain string
2669
2643
  * ```
2670
2644
  */
2671
- declare function join(separator: DatatypeA, ...segments: readonly DatatypeA[]): DatatypeA;
2645
+ declare function join(separator: DatatypeA, ...segments: readonly (DatatypeA | undefined)[]): DatatypeA;
2672
2646
  type DatatypeACharacterIncomplete = LateinischeBuchstabenIncomplete | NichtBuchstabenN1;
2673
2647
  type GuaranteedInvalidCharacter = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "#" | "$" | "%" | "&" | "*" | "+" | "/" | "<" | "=" | ">" | "@" | "\\" | "^" | "_" | "|" | "!" | '"' | "(" | ")" | ":" | ";" | "?" | "[" | "]" | "{" | "}";
2674
2648
  //#endregion
@@ -2716,20 +2690,24 @@ declare const datatypeB: RefinedTypeFactory<string, DatatypeB, <Value extends st
2716
2690
  }>;
2717
2691
  /**
2718
2692
  * Adapted version of the default {@link Array.prototype.join} operation that
2719
- * maintains the invariants of {@link DatatypeB}.
2693
+ * maintains the invariants of {@link DatatypeB}. Also supports passing
2694
+ * and mixing {@link DatatypeA} values, as any {@link DatentypA} is also a valid
2695
+ * {@link DatatypeB}. Any `undefined` entry in `segments` is filtered
2696
+ * automatically.
2720
2697
  *
2721
2698
  * @example
2722
2699
  * ```typescript
2723
2700
  * const fullAddress = join(
2724
- * datatypeB(" ").value,
2701
+ * datatypeA(" ").value,
2725
2702
  * datatypeB("Musterstraße").value,
2726
2703
  * datatypeB("1A").value,
2704
+ * undefined,
2727
2705
  * datatypeB("Musterstadt").value,
2728
2706
  * );
2729
2707
  * // "Musterstraße 1A Musterstadt" - still DatatypeB no plain string
2730
2708
  * ```
2731
2709
  */
2732
- declare function join$1(separator: DatatypeB, ...segments: readonly DatatypeB[]): DatatypeB;
2710
+ declare function join$1(separator: DatatypeA | DatatypeB, ...segments: readonly (DatatypeA | DatatypeB | undefined)[]): DatatypeB;
2733
2711
  type DatatypeBCharacterIncomplete = LateinischeBuchstabenIncomplete | NichtBuchstabenN1 | NichtBuchstabenN2;
2734
2712
  //#endregion
2735
2713
  //#region src/xjustiz-schemata/din-91379/datatypeC.d.ts
@@ -2779,20 +2757,24 @@ declare const datatypeC: RefinedTypeFactory<string, DatatypeC, <Value extends st
2779
2757
  }>;
2780
2758
  /**
2781
2759
  * Adapted version of the default {@link Array.prototype.join} operation that
2782
- * maintains the invariants of {@link DatatypeC}.
2760
+ * maintains the invariants of {@link DatatypeC}. Also supports passing
2761
+ * and mixing {@link DatatypeA} and {@link DatatypeB} values, as any of them is
2762
+ * also a valid {@link DatatypeC}. Any `undefined` entry in `segments` is
2763
+ * filtered automatically.
2783
2764
  *
2784
2765
  * @example
2785
2766
  * ```typescript
2786
- * const fullName = join(
2787
- * datatypeC(" ").value,
2767
+ * const output = join(
2768
+ * datatypeA(" ").value,
2788
2769
  * datatypeC("Lorem").value,
2789
- * datatypeC("ipsum").value,
2770
+ * datatypeB("ipsum").value,
2771
+ * undefined,
2790
2772
  * datatypeC("dolor").value,
2791
2773
  * );
2792
2774
  * // "Lorem ipsum dolor" - still DatatypeC no plain string
2793
2775
  * ```
2794
2776
  */
2795
- declare function join$2(separator: DatatypeC, ...segments: readonly DatatypeC[]): DatatypeC;
2777
+ declare function join$2(separator: DatatypeA | DatatypeB | DatatypeC, ...segments: readonly (DatatypeA | DatatypeB | DatatypeC | undefined)[]): DatatypeC;
2796
2778
  //#endregion
2797
2779
  //#region src/xjustiz-schemata/din-91379/datatypeD.d.ts
2798
2780
  declare const TAG$9: unique symbol;
@@ -2843,20 +2825,24 @@ declare const datatypeD: RefinedTypeFactory<string, DatatypeD, <Value extends st
2843
2825
  }>;
2844
2826
  /**
2845
2827
  * Adapted version of the default {@link Array.prototype.join} operation that
2846
- * maintains the invariants of {@link DatatypeD}.
2828
+ * maintains the invariants of {@link DatatypeD}. Also supports passing
2829
+ * and mixing {@link DatatypeA} and {@link DatatypeB} values, as any of them is
2830
+ * also a valid {@link DatatypeD}. Any `undefined` entry in `segments` is
2831
+ * filtered automatically.
2847
2832
  *
2848
2833
  * @example
2849
2834
  * ```typescript
2850
- * const fullName = join(
2851
- * datatypeD(" ").value,
2835
+ * const output = join(
2836
+ * datatypeA(" ").value,
2852
2837
  * datatypeD("Lorem").value,
2853
- * datatypeD("ipsum").value,
2838
+ * datatypeB("ipsum").value,
2839
+ * undefined,
2854
2840
  * datatypeD("dolor").value,
2855
2841
  * );
2856
2842
  * // "Lorem ipsum dolor" - still DatatypeD no plain string
2857
2843
  * ```
2858
2844
  */
2859
- declare function join$3(separator: DatatypeD, ...segments: readonly DatatypeD[]): DatatypeD;
2845
+ declare function join$3(separator: DatatypeA | DatatypeB | DatatypeD, ...segments: readonly (DatatypeA | DatatypeB | DatatypeD | undefined)[]): DatatypeD;
2860
2846
  //#endregion
2861
2847
  //#region src/xjustiz-schemata/xml-schema-definition/decimal.d.ts
2862
2848
  declare const TAG$8: unique symbol;
@@ -2898,9 +2884,6 @@ interface DistinctiveMarker<Value, Ordinal extends number> {
2898
2884
  readonly [DISTINCTIVE_MARKER]: readonly [Value, Ordinal];
2899
2885
  }
2900
2886
  declare const DISTINCTIVE_MARKER: unique symbol;
2901
- type GetDistinctValueFrom<MaybeDistinctivelyMarked> = MaybeDistinctivelyMarked extends {
2902
- readonly [DISTINCTIVE_MARKER]: readonly [infer Value, infer Ordinal];
2903
- } ? [Value, Ordinal] : MaybeDistinctivelyMarked;
2904
2887
  //#endregion
2905
2888
  //#region src/xjustiz-schemata/shared-kernel/identifiers/occurrences.d.ts
2906
2889
  interface IdentifierDeclaration {
@@ -2917,39 +2900,6 @@ interface Reference<Identifier extends IdentifierDeclaration> {
2917
2900
  readonly [IDENTIFIER_REFERENCE_MARKER]: Identifier;
2918
2901
  }
2919
2902
  declare const IDENTIFIER_REFERENCE_MARKER: unique symbol;
2920
- type FindAllIdentifierDeclarations<DocumentPart> = DocumentPart extends IdentifierDeclaration ? DocumentPart : DocumentPart extends Reference<IdentifierDeclaration> ? never : DocumentPart extends readonly (infer Entry)[] ? FindAllIdentifierDeclarations<Entry> : DocumentPart extends object ? FindAllIdentifierDeclarations<DocumentPart[keyof DocumentPart]> : never;
2921
- type FindAllIdentifierReferences<DocumentPart> = DocumentPart extends Reference<IdentifierDeclaration> ? ExtractIdentifierDeclarationFrom<DocumentPart> : DocumentPart extends readonly (infer Entry)[] ? FindAllIdentifierReferences<Entry> : DocumentPart extends object ? FindAllIdentifierReferences<DocumentPart[keyof DocumentPart]> : never;
2922
- type ExtractIdentifierDeclarationFrom<SomeReference extends Reference<IdentifierDeclaration>> = SomeReference extends {
2923
- readonly [IDENTIFIER_REFERENCE_MARKER]: infer Declaration;
2924
- } ? Declaration : never;
2925
- //#endregion
2926
- //#region src/xjustiz-schemata/shared-kernel/identifiers/referential-integrity.d.ts
2927
- type VerifyReferentialIntegrity<Document> = FindMissingIdentifierDeclarations<Document> extends (infer MissingIdentifierDeclarations) ? IsEmpty$2<MissingIdentifierDeclarations> extends true ? AllGood$2 : DanglingReferencesError<MissingIdentifierDeclarations> : Unreachable$2;
2928
- type FindMissingIdentifierDeclarations<Document> = Exclude<FindAllIdentifierReferences<Document>, FindAllIdentifierDeclarations<Document>>;
2929
- type DanglingReferencesError<MissingIdentifierDeclarations> = TypeError & "Found dangling references. Add all missing elements that are referenced." & {
2930
- readonly missingIdentifierReferences: MissingIdentifierDeclarations;
2931
- };
2932
- type IsEmpty$2<MaybeEmpty> = [MaybeEmpty] extends [never] ? true : false;
2933
- type AllGood$2 = never;
2934
- type Unreachable$2 = never;
2935
- //#endregion
2936
- //#region src/xjustiz-schemata/shared-kernel/identifiers/uniqueness.d.ts
2937
- type VerifyUniquenessOfIdentifierDeclarations<Document> = FindUncheckableCollectionsWithIdentifiers<Document> extends (infer UncheckableCollectionsWithIdentifiers) ? IsEmpty$1<UncheckableCollectionsWithIdentifiers> extends false ? UncheckableCollectionsWithIdentifiersError<UncheckableCollectionsWithIdentifiers> : FindDuplicateIdentifierDeclarations<Document> extends (infer DuplicateIdentifierDeclarations) ? IsEmpty$1<DuplicateIdentifierDeclarations> extends false ? DuplicateIdentifierDeclarationsError<DuplicateIdentifierDeclarations> : AllGood$1 : Unreachable$1 : Unreachable$1;
2938
- type FindUncheckableCollectionsWithIdentifiers<DocumentPart> = DocumentPart extends readonly (infer Entry)[] ? IsTuple<DocumentPart> extends true ? FindUncheckableCollectionsWithIdentifiers<Entry> : IncludesIdentifierDeclarations<Entry> extends true ? Entry : AllGood$1 : DocumentPart extends object ? FindUncheckableCollectionsWithIdentifiers<DocumentPart[keyof DocumentPart]> : AllGood$1;
2939
- type IncludesIdentifierDeclarations<DocumentPart> = IsEmpty$1<FindAllIdentifierDeclarations<DocumentPart>> extends true ? false : true;
2940
- type UncheckableCollectionsWithIdentifiersError<UncheckableCollectionsWithIdentifiers> = TypeError & "Found collection including identifiers that can't be verified for uniqueness. Try to use the `satisfies` operator." & {
2941
- readonly uncheckableCollectionsWithIdentifiers: UncheckableCollectionsWithIdentifiers;
2942
- };
2943
- type FindDuplicateIdentifierDeclarations<DocumentPart> = DocumentPart extends readonly unknown[] ? FindDuplicateIdentifierDeclarationsAmongSiblings<DocumentPart, IndicesOfTuple<DocumentPart>> : DocumentPart extends object ? FindDuplicateIdentifierDeclarationsAmongSiblings<DocumentPart, keyof DocumentPart> : NoDuplicates;
2944
- type FindDuplicateIdentifierDeclarationsAmongSiblings<DocumentPart, Keys extends keyof DocumentPart> = { [Key in Keys]: FindDuplicateIdentifierDeclarations<DocumentPart[Key]> | (Exclude<Keys, Key> extends (infer SiblingKeys extends keyof DocumentPart) ? IsEmpty$1<SiblingKeys> extends true ? NoDuplicates : FindDuplicateIdentifierDeclarationsBetweenGroups<FindAllIdentifierDeclarations<DocumentPart[Key]>, FindAllIdentifierDeclarations<DocumentPart[SiblingKeys]>> : Unreachable$1); }[Keys];
2945
- type FindDuplicateIdentifierDeclarationsBetweenGroups<Left, Right> = Left extends unknown ? Right extends unknown ? IsEqualTo<GetDistinctValueFrom<Left>, GetDistinctValueFrom<Right>> extends true ? Left : NoDuplicates : Unreachable$1 : Unreachable$1;
2946
- type DuplicateIdentifierDeclarationsError<DuplicateIdentifierDeclarations> = TypeError & "Found duplicate identifier declarations. Remove duplicate element or generate separate identifier." & {
2947
- readonly duplicateIdentifierDeclarations: DuplicateIdentifierDeclarations;
2948
- };
2949
- type IsEmpty$1<MaybeEmpty> = [MaybeEmpty] extends [never] ? true : false;
2950
- type AllGood$1 = never;
2951
- type NoDuplicates = never;
2952
- type Unreachable$1 = never;
2953
2903
  //#endregion
2954
2904
  //#region src/xjustiz-schemata/shared-kernel/scoping.d.ts
2955
2905
  /**
@@ -3000,7 +2950,6 @@ type ScopeGuard<Scope> = Invariant<Scope>;
3000
2950
  //#endregion
3001
2951
  //#region src/xjustiz-schemata/shared-kernel/identifiers/index.d.ts
3002
2952
  interface WithIdentifierCapabilities<Value, Scope, Ordinal extends number> extends IdentifierDeclaration, DistinctiveMarker<Value, Ordinal>, WithScope<Scope> {}
3003
- type VerifyIdentityConstraints<Document> = VerifyUniquenessOfIdentifierDeclarations<Document> | VerifyReferentialIntegrity<Document>;
3004
2953
  //#endregion
3005
2954
  //#region src/xjustiz-schemata/grunddatensatz/rollennummer.d.ts
3006
2955
  /**
@@ -3055,9 +3004,14 @@ declare const ZUGEHOERIGE_ROLLENBEZEICHNUNG: unique symbol;
3055
3004
  * ```
3056
3005
  */
3057
3006
  declare function createRollennummerGenerator<NachrichtenScope>(scope: ScopeToken<NachrichtenScope>): RollennummerGenerator<NachrichtenScope>;
3007
+ /**
3008
+ * **ATTENTION:**
3009
+ * Incrementing ordinals for generated identifiers are currently turned off,
3010
+ * because of technical limitations to enable dynamic input lists.
3011
+ */
3058
3012
  interface RollennummerGenerator<NachrichtenScope> {
3059
- first: <ZugehoerigeRollenbezeichnung extends Rollenbezeichnung>(zugehoerigeRollenbezeichnung: ZugehoerigeRollenbezeichnung) => Rollennummer<NachrichtenScope, ZugehoerigeRollenbezeichnung, 0>;
3060
- next: <ZugehoerigeRollenbezeichnung extends Rollenbezeichnung, Ordinal extends number>(previous: Rollennummer<NachrichtenScope, Rollenbezeichnung, Ordinal>, zugehoerigeRollenbezeichnung: ZugehoerigeRollenbezeichnung) => Rollennummer<NachrichtenScope, ZugehoerigeRollenbezeichnung, Increment<Ordinal>>;
3013
+ first: <ZugehoerigeRollenbezeichnung extends Rollenbezeichnung>(zugehoerigeRollenbezeichnung: ZugehoerigeRollenbezeichnung) => Rollennummer<NachrichtenScope, ZugehoerigeRollenbezeichnung>;
3014
+ next: <ZugehoerigeRollenbezeichnung extends Rollenbezeichnung, Ordinal extends number>(previous: Rollennummer<NachrichtenScope, Rollenbezeichnung, Ordinal>, zugehoerigeRollenbezeichnung: ZugehoerigeRollenbezeichnung) => Rollennummer<NachrichtenScope, ZugehoerigeRollenbezeichnung>;
3061
3015
  }
3062
3016
  //#endregion
3063
3017
  //#region src/xjustiz-schemata/grunddatensatz/uuid.d.ts
@@ -3095,15 +3049,26 @@ declare const TAG$5: unique symbol;
3095
3049
  * ```
3096
3050
  */
3097
3051
  declare function createUuidGenerator<NachrichtenScope>(scope: ScopeToken<NachrichtenScope>): UuidGenerator<NachrichtenScope>;
3052
+ /**
3053
+ * **ATTENTION:**
3054
+ * Incrementing ordinals for generated identifiers are currently turned off,
3055
+ * because of technical limitations to enable dynamic input lists.
3056
+ */
3098
3057
  interface UuidGenerator<NachrichtenScope> {
3099
- first: () => UUID<NachrichtenScope, 0>;
3100
- next: <Ordinal extends number>(previous: UUID<NachrichtenScope, Ordinal>) => UUID<NachrichtenScope, Increment<Ordinal>>;
3058
+ first: () => UUID<NachrichtenScope>;
3059
+ next: <Ordinal extends number>(previous: UUID<NachrichtenScope, Ordinal>) => UUID<NachrichtenScope>;
3101
3060
  }
3102
3061
  //#endregion
3103
3062
  //#region src/xjustiz-schemata/grunddatensatz/composites.d.ts
3063
+ /**
3064
+ * The Herstellerinformationen are fixed agreed on with the Bundesministerium
3065
+ * der Justiz und für Verbraucherschutz. The `version` is expected to be the one
3066
+ * of the XJustiz-Bridge. It can be constructed ergonomically with the
3067
+ * {@link herstellerinformation} constructor function.
3068
+ */
3104
3069
  interface Herstellerinformation {
3105
- nameDesProdukts: DatatypeD;
3106
- herstellerDesProdukts: DatatypeD;
3070
+ nameDesProdukts: "Justizportal XJustiz Services";
3071
+ herstellerDesProdukts: "Bundesministerium der Justiz und für Verbraucherschutz, ausgeführt durch DigitalService GmbH des Bundes";
3107
3072
  version: DatatypeC;
3108
3073
  }
3109
3074
  interface NatuerlichePerson {
@@ -3139,6 +3104,10 @@ interface Anschrift {
3139
3104
  postleitzahl?: DatatypeC;
3140
3105
  ort?: DatatypeB;
3141
3106
  }
3107
+ /**
3108
+ * Can be constructed ergonomically with the {@link email} and {@link telefon}
3109
+ * constructor functions.
3110
+ */
3142
3111
  interface Kommunikation {
3143
3112
  telekommunikationsart: Telekommunikationsart;
3144
3113
  verbindung: DatatypeC;
@@ -3249,20 +3218,25 @@ declare const datatypeE: RefinedTypeFactory<string, DatatypeE, <Value extends st
3249
3218
  }>;
3250
3219
  /**
3251
3220
  * Adapted version of the default {@link Array.prototype.join} operation that
3252
- * maintains the invariants of {@link DatatypeE}.
3221
+ * maintains the invariants of {@link DatatypeE}. Also supports passing
3222
+ * and mixing {@link DatatypeA}, {@link DatatypeB}, {@link DatatypeC} and
3223
+ * {@link DatatypeD} values, as any of them is also a valid {@link DatatypeE}.
3224
+ * Any `undefined` entry in `segments` is filtered automatically.
3253
3225
  *
3254
3226
  * @example
3255
3227
  * ```typescript
3256
- * const fullName = join(
3257
- * datatypeE(" ").value,
3258
- * datatypeE("Lorem").value,
3259
- * datatypeE("ipsum").value,
3260
- * datatypeE("dolor").value,
3228
+ * const output = join(
3229
+ * datatypeA(" ").value,
3230
+ * datatypeB("Lorem").value,
3231
+ * datatypeC("ipsum").value,
3232
+ * datatypeD("dolor").value,
3233
+ * undefined,
3234
+ * datatypeE("sit").value,
3261
3235
  * );
3262
- * // "Lorem ipsum dolor" - still DatatypeE no plain string
3236
+ * // "Lorem ipsum dolor sit" - still DatatypeE no plain string
3263
3237
  * ```
3264
3238
  */
3265
- declare function join$4(separator: DatatypeE, ...segments: readonly DatatypeE[]): DatatypeE;
3239
+ declare function join$4(separator: DatatypeA | DatatypeB | DatatypeC | DatatypeD | DatatypeE, ...segments: readonly (DatatypeA | DatatypeB | DatatypeC | DatatypeD | DatatypeE | undefined)[]): DatatypeE;
3266
3240
  //#endregion
3267
3241
  //#region src/xjustiz-schemata/klaver/fortlaufende-nummer.d.ts
3268
3242
  /**
@@ -3309,9 +3283,14 @@ type ArtVonBezugselement = "Anspruch" | "Zinsanspruch";
3309
3283
  * ```
3310
3284
  */
3311
3285
  declare function createFortlaufendeNummerGenerator<NachrichtenScope>(scope: ScopeToken<NachrichtenScope>): FortlaufendeNummerGenerator<NachrichtenScope>;
3286
+ /**
3287
+ * **ATTENTION:**
3288
+ * Incrementing ordinals for generated identifiers are currently turned off,
3289
+ * because of technical limitations to enable dynamic input lists.
3290
+ */
3312
3291
  interface FortlaufendeNummerGenerator<NachrichtenScope> {
3313
- first: <Bezugselement extends ArtVonBezugselement>(bezugselement: Bezugselement) => FortlaufendeNummer<NachrichtenScope, Bezugselement, 0>;
3314
- next: <Bezugselement extends ArtVonBezugselement, Ordinal extends number>(previous: FortlaufendeNummer<NachrichtenScope, ArtVonBezugselement, Ordinal>, bezugselement: Bezugselement) => FortlaufendeNummer<NachrichtenScope, Bezugselement, Increment<Ordinal>>;
3292
+ first: <Bezugselement extends ArtVonBezugselement>(bezugselement: Bezugselement) => FortlaufendeNummer<NachrichtenScope, Bezugselement>;
3293
+ next: <Bezugselement extends ArtVonBezugselement, Ordinal extends number>(previous: FortlaufendeNummer<NachrichtenScope, ArtVonBezugselement, Ordinal>, bezugselement: Bezugselement) => FortlaufendeNummer<NachrichtenScope, Bezugselement>;
3315
3294
  }
3316
3295
  //#endregion
3317
3296
  //#region src/xjustiz-schemata/klaver/composites.d.ts
@@ -3535,59 +3514,18 @@ type VerifiedNachricht<MessageProfile> = MessageProfile & {
3535
3514
  };
3536
3515
  declare const TAG: unique symbol;
3537
3516
  /**
3517
+ * **!!! WARNING !!!**
3518
+ * Verification of constraints on a type-level is currently turned off due to
3519
+ * technical limitations on dynamic input lists. You **MUST** take great care to
3520
+ * not use the same identifier multiple times (uniqueness constraint) and include
3521
+ * any referenced identifier declaration in the final message (referential
3522
+ * integrity constraint). Until further updates, any violation passes silently.
3523
+ *
3538
3524
  * Type-level verification of multiple constraints on `Nachricht`, based on the
3539
3525
  * related `MessageProfile`. The resolved type can either be a successfully
3540
3526
  * {@link VerifiedNachricht} or all the detected errors.
3541
3527
  */
3542
- type VerifiedNachrichtOrErrors<Nachricht, MessageProfile> = VerifyIdentityConstraints<Nachricht> | VerifyNoExcessProperties<Nachricht, MessageProfile> extends (infer Errors) ? [Errors] extends [never] ? VerifiedNachricht<Nachricht> : Errors : never;
3543
- type ExcessPropertiesError<ExcessProperties> = TypeError & "Found properties in Nachricht not allowed by the message profile. Remove excess properties." & {
3544
- readonly excessProperties: ExcessProperties;
3545
- };
3546
- 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>;
3548
- /**
3549
- * A `MessageProfile` can define type unions on different levels in the
3550
- * document tree structure. Unions of objects with different key sets are
3551
- * especially tricky in the context of finding excess properties.
3552
- *
3553
- * This predicate evaluates if there is any variant of the `MessageProfile`,
3554
- * that cleanly matches the `Nachricht` without excess properties. Because
3555
- * {@link FindMatchingVariantOfMessageProfileWithoutExcessProperties} must
3556
- * distribute over the union of variants, this predicate type interprets the
3557
- * result of it — a union of by itself.
3558
- *
3559
- * Because of dealing with unions, there is no way to implement it so excess
3560
- * properties are collected, while trying to find a clean variant. In case this
3561
- * predicate evaluates to `false`, the actual excess properties must be found
3562
- * separate.
3563
- */
3564
- type HasMatchingVariantOfMessageProfileWithoutExcessProperties<Nachricht, MessageProfile> = [FindMatchingVariantOfMessageProfileWithoutExcessProperties<Nachricht, MessageProfile>] extends [never] ? false : true;
3565
- /**
3566
- * This type distributes over the variants of the `MessageProfile`. In case the
3567
- * `MessageProfile` is not a union, there is always only one variant. If the
3568
- * `Nachricht` matches one of the variants, meaning it has no excess properties
3569
- * in comparison, this variant is returned as clean match.
3570
- */
3571
- type FindMatchingVariantOfMessageProfileWithoutExcessProperties<Nachricht, MessageProfile> = MessageProfile extends (infer VariantOfMessageProfile) ? FindExcessPropertiesAgainst<Nachricht, VariantOfMessageProfile> extends (infer ExcessProperties) ? IsEmpty<ExcessProperties> extends true ? VariantOfMessageProfile : never : Unreachable : Unreachable;
3572
- type FindExcessPropertiesAgainst<Nachricht, MessageProfile> = Nachricht extends readonly unknown[] ? MessageProfile extends readonly unknown[] ? IsTuple<Nachricht> extends true ? IsTuple<MessageProfile> extends true ? FindExcessPropertiesBetweenTuples<Nachricht, MessageProfile> : FindExcessPropertiesBetweenTupleAndArray<Nachricht, MessageProfile> : FindExcessPropertiesBetweenArrays<Nachricht, MessageProfile> : StructuralIncompatibilityIssues : Nachricht extends object ? MessageProfile extends object ? FindExcessPropertiesBetweenObjects<Nachricht, MessageProfile> : StructuralIncompatibilityIssues : AllGood;
3573
- type FindExcessPropertiesBetweenTuples<Nachricht extends readonly unknown[], MessageProfile extends readonly unknown[]> = { [Index in IndicesOfTuple<Nachricht>]: Index extends IndicesOfTuple<MessageProfile> ? FindExcessProperties<Nachricht[Index], MessageProfile[Index]> : Index; }[IndicesOfTuple<Nachricht>];
3574
- type FindExcessPropertiesBetweenTupleAndArray<Nachricht extends readonly unknown[], MessageProfile extends readonly unknown[]> = { [Index in IndicesOfTuple<Nachricht>]: FindExcessProperties<Nachricht[Index], MessageProfile[number]>; }[IndicesOfTuple<Nachricht>];
3575
- type FindExcessPropertiesBetweenArrays<Nachricht extends readonly unknown[], MessageProfile extends readonly unknown[]> = FindExcessProperties<Nachricht[number], MessageProfile[number]>;
3576
- type FindExcessPropertiesBetweenObjects<Nachricht extends object, MessageProfile extends object> = Exclude<keyof Nachricht, keyof MessageProfile> | FindExcessPropertiesInSharedKeys<Nachricht, MessageProfile>;
3577
- type FindExcessPropertiesInSharedKeys<Nachricht extends object, MessageProfile extends object> = { [Key in keyof Nachricht & keyof MessageProfile]: FindExcessProperties<Nachricht[Key], MessageProfile[Key]>; }[keyof Nachricht & keyof MessageProfile];
3578
- type IsEmpty<MaybeEmpty> = [MaybeEmpty] extends [never] ? true : false;
3579
- type AllGood = never;
3580
- type Unreachable = never;
3581
- /**
3582
- * Nachricht and MessageProfile differ in a way they can't be compared with each
3583
- * other to find excess properties. This is a separate and deeper issue to excess
3584
- * properties. It is not a concern of the verification for no excess properties.
3585
- * However, it must be distinctive in the type-level computation with a plain
3586
- * `never` case, which in some cases indicates a positive match. Without, a
3587
- * structural incompatible Nachricht would be reported as correct.
3588
- */
3589
- type StructuralIncompatibilityIssues = typeof StructuralIncompatibilityIssues;
3590
- declare const StructuralIncompatibilityIssues: unique symbol;
3528
+ type VerifiedNachrichtOrErrors<Nachricht, _MessageProfile> = VerifiedNachricht<Nachricht>;
3591
3529
  //#endregion
3592
3530
  //#region src/generate-xml-document.d.ts
3593
3531
  type XjustizToolsConnectionParameter = {
@@ -3613,6 +3551,13 @@ type XjustizMessageXmlResult = {
3613
3551
  */
3614
3552
  declare function zahlungsklage(compose: <NachrichtenScope>(scope: ScopeToken<NachrichtenScope>) => VerifiedNachricht<Zahlungsklage<NachrichtenScope>>, xjustizToolsConnectionParameter: XjustizToolsConnectionParameter): Promise<XjustizMessageXmlResult>;
3615
3553
  /**
3554
+ * **!!! WARNING !!!**
3555
+ * Verification of constraints on a type-level is currently turned off due to
3556
+ * technical limitations on dynamic input lists. You **MUST** take great care to
3557
+ * not use the same identifier multiple times (uniqueness constraint) and include
3558
+ * any referenced identifier declaration in the final message (referential
3559
+ * integrity constraint). Until further updates, any violation passes silently.
3560
+ *
3616
3561
  * Used as last step of composing a `Zahlungsklage` with the {@link zahlungsklage}
3617
3562
  * orchestrator to output a valid {@link VerifiedNachricht}. It will apply
3618
3563
  * multiple type-level computations to verify constraints like for identities or
@@ -3703,6 +3648,43 @@ declare function antragAufVersaeumnisurteil(): AntragAufVersaeumnisurteil;
3703
3648
  */
3704
3649
  declare function weitererAntrag(antragInTextform: DatatypeE): WeitererAntrag;
3705
3650
  //#endregion
3651
+ //#region src/nachricht/zahlungsklage/ergonomics/nachrichtenkopf.d.ts
3652
+ /**
3653
+ * Constructs a {@link NachrichtenkopfFuerZahlungsklage} with the `klaeger` as
3654
+ * Absender and `gericht` as Empfänger.
3655
+ *
3656
+ * The `erstellungszeitpunkt` will be current date-time at the call.
3657
+ *
3658
+ * The `klaeger` will be formatted based on their Geschlecht, Titel, Vorname and
3659
+ * Nachname. For example: `"Frau Dr. Erika Musterfrau"`. A Titel which can't be
3660
+ * parsed from {@link DatatypeC} to {@link DatatypeD} will be discarded. Any
3661
+ * Geschlecht but männlich or weiblich will also be discarded for the Anrede.
3662
+ */
3663
+ 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
3664
+ , gericht: Gericht): {
3665
+ xjustizVersion: "3.6.2";
3666
+ erstellungszeitpunkt: Temporal.Instant;
3667
+ absender: {
3668
+ informationen: {
3669
+ auswahlKommunikationspartner: {
3670
+ sonstige: DatatypeD;
3671
+ };
3672
+ };
3673
+ eigeneNachrichtenID: EigeneNachrichtenID;
3674
+ };
3675
+ empfaenger: {
3676
+ informationen: {
3677
+ auswahlKommunikationspartner: {
3678
+ gericht: Gerichte;
3679
+ };
3680
+ };
3681
+ auswahlAktenzeichen: {
3682
+ aktenzeichenNeu: true;
3683
+ };
3684
+ };
3685
+ herstellerinformation: Herstellerinformation;
3686
+ };
3687
+ //#endregion
3706
3688
  //#region src/xjustiz-schemata/klaver/ergonomics/beweis.d.ts
3707
3689
  /**
3708
3690
  * Constructs a {@link Beweis} with Zeugen as Beweismittel. The referenced
@@ -3777,8 +3759,27 @@ declare function parteivernehmung<NachrichtenScope, const Nummer extends BeweisN
3777
3759
  * ```
3778
3760
  */
3779
3761
  declare function geldbetrag(zahl: Double): Geldbetrag;
3762
+ //#endregion
3763
+ //#region src/xjustiz-schemata/grunddatensatz/ergonomics/herstellerinformation.d.ts
3764
+ /**
3765
+ * Constructs the static {@link Herstellerinformationen} with the version of the
3766
+ * XJustiz-Bridge in use.
3767
+ */
3768
+ declare function herstellerinformation(): Herstellerinformation;
3769
+ //#endregion
3770
+ //#region src/xjustiz-schemata/grunddatensatz/ergonomics/kommunikation.d.ts
3771
+ /**
3772
+ * Constructs a {@link Kommunikation} with {@link Telekommunikationsart.EMail}
3773
+ * as `telekommunikationsart`.
3774
+ */
3775
+ declare function email(address: DatatypeC): Kommunikation;
3776
+ /**
3777
+ * Constructs a {@link Kommunikation} with {@link Telekommunikationsart.Telefon}
3778
+ * as `telekommunikationsart`.
3779
+ */
3780
+ declare function telefon(number: DatatypeC): Kommunikation;
3780
3781
  declare namespace index_d_exports {
3781
- export { antragAufAnwaltskosten, antragAufVersaeumnisurteil, geldbetrag, parteivernehmung, weitererAntrag, zeuge };
3782
+ export { antragAufAnwaltskosten, antragAufVersaeumnisurteil, email, geldbetrag, herstellerinformation, nachrichtenkopf, parteivernehmung, telefon, weitererAntrag, zeuge };
3782
3783
  }
3783
3784
  //#endregion
3784
3785
  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.9.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
@@ -3258,6 +3312,13 @@ function zahlungsklage(compose, xjustizToolsConnectionParameter) {
3258
3312
  });
3259
3313
  }
3260
3314
  /**
3315
+ * **!!! WARNING !!!**
3316
+ * Verification of constraints on a type-level is currently turned off due to
3317
+ * technical limitations on dynamic input lists. You **MUST** take great care to
3318
+ * not use the same identifier multiple times (uniqueness constraint) and include
3319
+ * any referenced identifier declaration in the final message (referential
3320
+ * integrity constraint). Until further updates, any violation passes silently.
3321
+ *
3261
3322
  * Used as last step of composing a `Zahlungsklage` with the {@link zahlungsklage}
3262
3323
  * orchestrator to output a valid {@link VerifiedNachricht}. It will apply
3263
3324
  * multiple type-level computations to verify constraints like for identities or
@@ -3287,12 +3348,62 @@ function verifyZahlungsklage(_scope, nachricht) {
3287
3348
  return nachricht;
3288
3349
  }
3289
3350
  //#endregion
3351
+ //#region src/nachricht/zahlungsklage/ergonomics/nachrichtenkopf.ts
3352
+ /**
3353
+ * Constructs a {@link NachrichtenkopfFuerZahlungsklage} with the `klaeger` as
3354
+ * Absender and `gericht` as Empfänger.
3355
+ *
3356
+ * The `erstellungszeitpunkt` will be current date-time at the call.
3357
+ *
3358
+ * The `klaeger` will be formatted based on their Geschlecht, Titel, Vorname and
3359
+ * Nachname. For example: `"Frau Dr. Erika Musterfrau"`. A Titel which can't be
3360
+ * parsed from {@link DatatypeC} to {@link DatatypeD} will be discarded. Any
3361
+ * Geschlecht but männlich or weiblich will also be discarded for the Anrede.
3362
+ */
3363
+ function nachrichtenkopf(_scope, eigeneNachrichtenID, klaeger, gericht) {
3364
+ return {
3365
+ xjustizVersion: "3.6.2",
3366
+ erstellungszeitpunkt: Temporal.Now.instant(),
3367
+ absender: {
3368
+ informationen: { auswahlKommunikationspartner: { sonstige: formatKlaegerAsAbsender(klaeger.beteiligter.auswahlBeteiligter.natuerlichePerson) } },
3369
+ eigeneNachrichtenID
3370
+ },
3371
+ empfaenger: {
3372
+ informationen: { auswahlKommunikationspartner: { gericht } },
3373
+ auswahlAktenzeichen: { aktenzeichenNeu: true }
3374
+ },
3375
+ herstellerinformation: herstellerinformation()
3376
+ };
3377
+ }
3378
+ function formatKlaegerAsAbsender(klaeger) {
3379
+ return join$3(datatypeD(" ").value, mapGeschlechtToAndrede(klaeger.geschlecht), tryToParseTitelAsDatatypeD(klaeger.vollerName.titel), klaeger.vollerName.vorname, klaeger.vollerName.nachname);
3380
+ }
3381
+ function tryToParseTitelAsDatatypeD(titel) {
3382
+ const maybeResult = titel ? datatypeD(titel) : { issues: [] };
3383
+ return maybeResult.issues === void 0 ? maybeResult.value : void 0;
3384
+ }
3385
+ function mapGeschlechtToAndrede(geschlecht) {
3386
+ switch (geschlecht) {
3387
+ case void 0:
3388
+ case Geschlecht.Unbekannt:
3389
+ case Geschlecht.Divers:
3390
+ case Geschlecht.Saechlich: return;
3391
+ case Geschlecht.Maennlich: return datatypeD("Herr").value;
3392
+ case Geschlecht.Weiblich: return datatypeD("Frau").value;
3393
+ default: return;
3394
+ }
3395
+ }
3396
+ //#endregion
3290
3397
  //#region src/nachricht/zahlungsklage/ergonomics/index.ts
3291
3398
  var ergonomics_exports = /* @__PURE__ */ __exportAll({
3292
3399
  antragAufAnwaltskosten: () => antragAufAnwaltskosten,
3293
3400
  antragAufVersaeumnisurteil: () => antragAufVersaeumnisurteil,
3401
+ email: () => email,
3294
3402
  geldbetrag: () => geldbetrag,
3403
+ herstellerinformation: () => herstellerinformation,
3404
+ nachrichtenkopf: () => nachrichtenkopf,
3295
3405
  parteivernehmung: () => parteivernehmung,
3406
+ telefon: () => telefon,
3296
3407
  weitererAntrag: () => weitererAntrag,
3297
3408
  zeuge: () => zeuge
3298
3409
  });
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.9.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
  }