@flowselections/layout-maker 1.7.2 → 1.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.
Files changed (99) hide show
  1. package/README.md +78 -1
  2. package/dist-lib/components/AfdrukKnop.d.ts +1 -1
  3. package/dist-lib/components/AfdrukKnop.js +2 -2
  4. package/dist-lib/components/AiLayoutImportDialog.js +4 -4
  5. package/dist-lib/components/BlokOntwerperPage.js +5 -5
  6. package/dist-lib/components/ComputersLijst.js +2 -2
  7. package/dist-lib/components/DocumentSettingsPanel.d.ts +2 -2
  8. package/dist-lib/components/DocumentSettingsPanel.js +3 -3
  9. package/dist-lib/components/FormaatOrientatieBar.d.ts +1 -1
  10. package/dist-lib/components/FormaatOrientatieBar.js +2 -2
  11. package/dist-lib/components/LayoutsPage.js +4 -4
  12. package/dist-lib/components/LogoBibliotheekDialog.d.ts +1 -1
  13. package/dist-lib/components/LogoBibliotheekDialog.js +2 -2
  14. package/dist-lib/components/LogosPage.d.ts +1 -1
  15. package/dist-lib/components/LogosPage.js +2 -2
  16. package/dist-lib/components/NetwerkPrintersDialog.js +2 -2
  17. package/dist-lib/components/PakbonBuilderPage.js +8 -8
  18. package/dist-lib/components/PakbonPreview.d.ts +1 -1
  19. package/dist-lib/components/PakbonPreview.js +3 -3
  20. package/dist-lib/components/PakbonSectiesPanel.d.ts +1 -1
  21. package/dist-lib/components/PakbonSectiesPanel.js +4 -4
  22. package/dist-lib/components/PrintQueuePage.d.ts.map +1 -1
  23. package/dist-lib/components/PrintQueuePage.js +7 -6
  24. package/dist-lib/components/PrinterSetupWizard.js +5 -5
  25. package/dist-lib/components/PrintersPage.js +7 -7
  26. package/dist-lib/components/ProductiebonBlokkenPanel.d.ts +1 -1
  27. package/dist-lib/components/ProductiebonBlokkenPanel.js +1 -1
  28. package/dist-lib/components/ProductiebonBuilderPage.js +6 -6
  29. package/dist-lib/components/ProductiebonPreview.d.ts +1 -1
  30. package/dist-lib/components/ProductiebonPreview.js +2 -2
  31. package/dist-lib/components/WerkplekConfiguratiePage.js +7 -7
  32. package/dist-lib/index.d.ts +62 -46
  33. package/dist-lib/index.d.ts.map +1 -1
  34. package/dist-lib/index.js +47 -47
  35. package/dist-lib/integrations/supabase/auth-attacher.js +1 -1
  36. package/dist-lib/integrations/supabase/auth-middleware.d.ts +1600 -780
  37. package/dist-lib/integrations/supabase/auth-middleware.d.ts.map +1 -1
  38. package/dist-lib/integrations/supabase/client.d.ts +1 -1
  39. package/dist-lib/integrations/supabase/client.js +1 -1
  40. package/dist-lib/integrations/supabase/client.server.d.ts +1600 -780
  41. package/dist-lib/integrations/supabase/client.server.d.ts.map +1 -1
  42. package/dist-lib/integrations/supabase/client.server.js +1 -1
  43. package/dist-lib/integrations/supabase/types.d.ts +1001 -165
  44. package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
  45. package/dist-lib/integrations/supabase/types.js +3 -0
  46. package/dist-lib/lib/aiLayout.functions.d.ts +1679 -859
  47. package/dist-lib/lib/aiLayout.functions.d.ts.map +1 -1
  48. package/dist-lib/lib/aiLayout.functions.js +2 -2
  49. package/dist-lib/lib/aiLayout.server.d.ts +1 -1
  50. package/dist-lib/lib/browserPrint.d.ts +1 -1
  51. package/dist-lib/lib/browserPrint.js +3 -3
  52. package/dist-lib/lib/directPrint.d.ts +1 -1
  53. package/dist-lib/lib/directPrint.js +4 -4
  54. package/dist-lib/lib/documentPdf.d.ts +1 -1
  55. package/dist-lib/lib/documentProfiles.d.ts +1 -1
  56. package/dist-lib/lib/documentProfiles.d.ts.map +1 -1
  57. package/dist-lib/lib/documentProfiles.js +3 -0
  58. package/dist-lib/lib/documentTypes.d.ts +1 -1
  59. package/dist-lib/lib/documentTypes.d.ts.map +1 -1
  60. package/dist-lib/lib/documentTypes.js +3 -0
  61. package/dist-lib/lib/formaatPrinters.js +1 -1
  62. package/dist-lib/lib/htmlNaarPdf.server.js +1 -1
  63. package/dist-lib/lib/layoutPreview.d.ts +1 -1
  64. package/dist-lib/lib/layoutPreview.js +1 -1
  65. package/dist-lib/lib/logoLibrary.js +1 -1
  66. package/dist-lib/lib/orderData.server.d.ts +2 -1
  67. package/dist-lib/lib/orderData.server.d.ts.map +1 -1
  68. package/dist-lib/lib/orderData.server.js +7 -8
  69. package/dist-lib/lib/pakbonBuilder.d.ts +1 -1
  70. package/dist-lib/lib/pakbonHtml.d.ts +1 -1
  71. package/dist-lib/lib/pakbonHtml.js +2 -2
  72. package/dist-lib/lib/printApi.d.ts +72 -1
  73. package/dist-lib/lib/printApi.d.ts.map +1 -1
  74. package/dist-lib/lib/printApi.js +155 -15
  75. package/dist-lib/lib/printQueue.server.d.ts +12 -3
  76. package/dist-lib/lib/printQueue.server.d.ts.map +1 -1
  77. package/dist-lib/lib/printQueue.server.js +66 -48
  78. package/dist-lib/lib/printService.functions.d.ts +6628 -24446
  79. package/dist-lib/lib/printService.functions.d.ts.map +1 -1
  80. package/dist-lib/lib/printService.functions.js +5 -31
  81. package/dist-lib/lib/printService.server.js +1 -1
  82. package/dist-lib/lib/productiebonBuilder.d.ts +1 -1
  83. package/dist-lib/lib/productiebonHtml.js +2 -2
  84. package/dist-lib/lib/profielHtml.js +2 -2
  85. package/dist-lib/lib/queueTick.d.ts +11 -3
  86. package/dist-lib/lib/queueTick.d.ts.map +1 -1
  87. package/dist-lib/lib/queueTick.js +68 -21
  88. package/dist-lib/lib/queueTickClient.d.ts +8 -0
  89. package/dist-lib/lib/queueTickClient.d.ts.map +1 -0
  90. package/dist-lib/lib/queueTickClient.js +37 -0
  91. package/dist-lib/lib/runnerRegistry.server.d.ts +3 -2
  92. package/dist-lib/lib/runnerRegistry.server.d.ts.map +1 -1
  93. package/dist-lib/lib/runnerRegistry.server.js +6 -8
  94. package/dist-lib/lib/supabaseClient.d.ts +1 -1
  95. package/dist-lib/lib/testpagina.js +2 -2
  96. package/dist-lib/lib/useDocumentData.d.ts +1 -1
  97. package/dist-lib/lib/useDocumentData.js +1 -1
  98. package/dist-lib/lib/useNetwerkPrinters.js +1 -1
  99. package/package.json +2 -2
@@ -1,4 +1,4 @@
1
- import type { PapierFormaatDef } from "./documentTypes";
1
+ import type { PapierFormaatDef } from "./documentTypes.js";
2
2
  export type InstellingType = "schakelaar" | "keuze" | "meerkeuze" | "tekst" | "getal" | "kleur";
3
3
  export interface InstellingDef {
4
4
  key: string;
@@ -1 +1 @@
1
- {"version":3,"file":"documentProfiles.d.ts","sourceRoot":"","sources":["../../src/lib/documentProfiles.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExD,MAAM,MAAM,cAAc,GAAG,YAAY,GAAG,OAAO,GAAG,WAAW,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;AAEhG,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,cAAc,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oCAAoC;IACpC,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC5C,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,aAAa,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,eAAe;IAC9B,qDAAqD;IACrD,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,sCAAsC;IACtC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,8CAA8C;IAC9C,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,gBAAgB,EAAE,MAAM,CAAC;IACzB,mBAAmB,EAAE,UAAU,GAAG,WAAW,CAAC;IAC9C,wDAAwD;IACxD,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,+CAA+C;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,OAAO,EAAE,eAAe,EAAE,CAAC;CAC5B;AAyBD,eAAO,MAAM,gBAAgB,EAAE,gBAAgB,EAO9C,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,gBAAgB,EAOnD,CAAC;AA4YF,eAAO,MAAM,kBAAkB,EAAE,eAAe,EAe/C,CAAC;AAEF,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,eAAe,CAK3D;AAED,wBAAgB,iBAAiB,IAAI,eAAe,EAAE,CAErD;AAED,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAErE,0EAA0E;AAC1E,wBAAgB,eAAe,CAAC,OAAO,EAAE,eAAe,GAAG,cAAc,CAUxE;AAED,4EAA4E;AAC5E,wBAAgB,YAAY,CAC1B,MAAM,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS,EACzC,KAAK,EAAE,eAAe,EACtB,IAAI,EAAE,aAAa,GAClB,OAAO,CAIT"}
1
+ {"version":3,"file":"documentProfiles.d.ts","sourceRoot":"","sources":["../../src/lib/documentProfiles.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExD,MAAM,MAAM,cAAc,GAAG,YAAY,GAAG,OAAO,GAAG,WAAW,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;AAEhG,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,cAAc,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oCAAoC;IACpC,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC5C,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,aAAa,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,eAAe;IAC9B,qDAAqD;IACrD,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,sCAAsC;IACtC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,8CAA8C;IAC9C,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,gBAAgB,EAAE,MAAM,CAAC;IACzB,mBAAmB,EAAE,UAAU,GAAG,WAAW,CAAC;IAC9C,wDAAwD;IACxD,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,+CAA+C;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,OAAO,EAAE,eAAe,EAAE,CAAC;CAC5B;AAyBD,eAAO,MAAM,gBAAgB,EAAE,gBAAgB,EAO9C,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,gBAAgB,EAOnD,CAAC;AA4YF,eAAO,MAAM,kBAAkB,EAAE,eAAe,EAmB/C,CAAC;AAEF,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,eAAe,CAK3D;AAED,wBAAgB,iBAAiB,IAAI,eAAe,EAAE,CAErD;AAED,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAErE,0EAA0E;AAC1E,wBAAgB,eAAe,CAAC,OAAO,EAAE,eAAe,GAAG,cAAc,CAUxE;AAED,4EAA4E;AAC5E,wBAAgB,YAAY,CAC1B,MAAM,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS,EACzC,KAAK,EAAE,eAAe,EACtB,IAAI,EAAE,aAAa,GAClB,OAAO,CAIT"}
@@ -428,6 +428,9 @@ export const DOCUMENT_PROFIELEN = [
428
428
  generiek("magazijnlijst", "Magazijnlijst", "Verzamellijst voor het magazijn."),
429
429
  generiek("controlelijst", "Controlelijst", "Afvinklijst voor controle."),
430
430
  generiek("transportdocument", "Transportdocument", "Document voor de rit."),
431
+ generiek("veilingbon", "Veilingbon", "Bon voor de veiling, per kar of partij."),
432
+ generiek("afleverbrief", "Afleverbrief", "Afleverbrief bij een levering."),
433
+ generiek("veilingbrief", "Veilingbrief", "Begeleidende brief voor de veiling."),
431
434
  generiek("vrij", "Vrij document", "Lege layout zonder vooraf ingestelde onderdelen."),
432
435
  ];
433
436
  export function documentProfiel(id) {
@@ -1,4 +1,4 @@
1
- export type DocumentType = "pakbon" | "sticker" | "productiebon" | "factuur" | "offerte" | "orderbevestiging" | "etiket" | "verzendlabel" | "productlabel" | "barcode_label" | "magazijnlijst" | "controlelijst" | "transportdocument" | "vrij";
1
+ export type DocumentType = "pakbon" | "sticker" | "productiebon" | "factuur" | "offerte" | "orderbevestiging" | "etiket" | "verzendlabel" | "productlabel" | "barcode_label" | "magazijnlijst" | "controlelijst" | "transportdocument" | "veilingbon" | "afleverbrief" | "veilingbrief" | "vrij";
2
2
  export declare const DOCUMENT_TYPES: {
3
3
  value: DocumentType;
4
4
  label: string;
@@ -1 +1 @@
1
- {"version":3,"file":"documentTypes.d.ts","sourceRoot":"","sources":["../../src/lib/documentTypes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"documentTypes.d.ts","sourceRoot":"","sources":["../../src/lib/documentTypes.ts"],"names":[],"mappings":"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"}
@@ -15,6 +15,9 @@ export const DOCUMENT_TYPES = [
15
15
  { value: "magazijnlijst", label: "Magazijnlijst" },
16
16
  { value: "controlelijst", label: "Controlelijst" },
17
17
  { value: "transportdocument", label: "Transportdocument" },
18
+ { value: "veilingbon", label: "Veilingbon" },
19
+ { value: "afleverbrief", label: "Afleverbrief" },
20
+ { value: "veilingbrief", label: "Veilingbrief" },
18
21
  { value: "vrij", label: "Vrij document" },
19
22
  ];
20
23
  export function documentTypeLabel(value) {
@@ -2,7 +2,7 @@
2
2
  // src/lib/formaatPrinters.ts — standaardprinter per documentsoort en formaat
3
3
  // ============================================================================
4
4
  import { useCallback, useEffect, useState } from "react";
5
- import { supabase } from "./supabaseClient";
5
+ import { supabase } from "./supabaseClient.js";
6
6
  const arr = (v) => (Array.isArray(v) ? v : []);
7
7
  export function useFormaatPrinters(documenttype) {
8
8
  const [koppelingen, setKoppelingen] = useState([]);
@@ -3,7 +3,7 @@
3
3
  // Gebruikt de eigen documentmaker (src/lib/htmlPdf.server.ts). Geen externe
4
4
  // dienst, geen browser en geen instellingen per shell nodig.
5
5
  // ============================================================================
6
- import { bytesNaarBase64, htmlNaarPdfBytes } from "./htmlPdf.server";
6
+ import { bytesNaarBase64, htmlNaarPdfBytes } from "./htmlPdf.server.js";
7
7
  export class PdfRenderFout extends Error {
8
8
  constructor(code, boodschap) {
9
9
  super(boodschap);
@@ -1,4 +1,4 @@
1
- import type { LayoutElementModel, LayoutModel } from "./documentTypes";
1
+ import type { LayoutElementModel, LayoutModel } from "./documentTypes.js";
2
2
  export declare function voorbeeldContext(): Record<string, string>;
3
3
  export declare function vulVelden(tekst: string, ctx: Record<string, string>): string;
4
4
  export declare function conditieVoldoet(el: LayoutElementModel, ctx: Record<string, string>): boolean;
@@ -1,7 +1,7 @@
1
1
  // ============================================================================
2
2
  // src/lib/layoutPreview.ts — voorbeeldgegevens, veldvervanging en print-HTML
3
3
  // ============================================================================
4
- import { alleVelden } from "./fieldRegistry";
4
+ import { alleVelden } from "./fieldRegistry.js";
5
5
  export function voorbeeldContext() {
6
6
  const ctx = {};
7
7
  for (const v of alleVelden())
@@ -2,7 +2,7 @@
2
2
  // src/lib/logoLibrary.ts — centrale Logo Bibliotheek
3
3
  // ============================================================================
4
4
  import { useCallback, useEffect, useState } from "react";
5
- import { supabase } from "./supabaseClient";
5
+ import { supabase } from "./supabaseClient.js";
6
6
  export const LOGO_BUCKET = "layout-logos";
7
7
  export const LOGO_CATEGORIEEN = [
8
8
  { value: "hoofdlogo", label: "Hoofdlogo" },
@@ -1,3 +1,4 @@
1
+ import type { PrintDb } from "./printQueue.server.js";
1
2
  type Rij = Record<string, any>;
2
3
  /** Bevat de meegestuurde payload zelf al orderregels of karren? */
3
4
  export declare function heeftOrderInhoud(bron: unknown): boolean;
@@ -10,6 +11,6 @@ export declare function zoekOrderVerwijzing(payload: unknown): {
10
11
  * Bouwt de ruwe ordergegevens (vorm die `maakPakbonOrder` verwacht) op basis
11
12
  * van het order-id of ordernummer. Geeft `null` als de order niet te vinden is.
12
13
  */
13
- export declare function laadOrderVanuitDatabase(payload: unknown): Promise<Rij | null>;
14
+ export declare function laadOrderVanuitDatabase(db: PrintDb, payload: unknown): Promise<Rij | null>;
14
15
  export {};
15
16
  //# sourceMappingURL=orderData.server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"orderData.server.d.ts","sourceRoot":"","sources":["../../src/lib/orderData.server.ts"],"names":[],"mappings":"AAYA,KAAK,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAuB/B,mEAAmE;AACnE,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAKvD;AAED,wEAAwE;AACxE,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG;IACrD,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B,CAyBA;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,CAiKnF"}
1
+ {"version":3,"file":"orderData.server.d.ts","sourceRoot":"","sources":["../../src/lib/orderData.server.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAEnD,KAAK,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAuB/B,mEAAmE;AACnE,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAKvD;AAED,wEAAwE;AACxE,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG;IACrD,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B,CAyBA;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,CAiKhG"}
@@ -7,7 +7,6 @@
7
7
  // `order_items`, `order_carts` en `order_cart_items`.
8
8
  // Draait alleen op de server (printwachtrij).
9
9
  // ============================================================================
10
- import { adminDb as supabaseAdmin } from "./supabaseAdmin.server";
11
10
  const arr = (v) => (Array.isArray(v) ? v : []);
12
11
  const num = (v) => (Number.isFinite(Number(v)) ? Number(v) : 0);
13
12
  /**
@@ -66,16 +65,16 @@ export function zoekOrderVerwijzing(payload) {
66
65
  * Bouwt de ruwe ordergegevens (vorm die `maakPakbonOrder` verwacht) op basis
67
66
  * van het order-id of ordernummer. Geeft `null` als de order niet te vinden is.
68
67
  */
69
- export async function laadOrderVanuitDatabase(payload) {
68
+ export async function laadOrderVanuitDatabase(db, payload) {
70
69
  const { orderId, ordernummer } = zoekOrderVerwijzing(payload);
71
70
  if (!orderId && !ordernummer)
72
71
  return null;
73
72
  let order = null;
74
73
  if (orderId) {
75
- order = await veilig(() => supabaseAdmin.from("orders").select("*").eq("id", orderId).maybeSingle());
74
+ order = await veilig(() => db.from("orders").select("*").eq("id", orderId).maybeSingle());
76
75
  }
77
76
  if (!order && ordernummer) {
78
- const rijen = await veilig(() => supabaseAdmin
77
+ const rijen = await veilig(() => db
79
78
  .from("orders")
80
79
  .select("*")
81
80
  .eq("order_number", ordernummer)
@@ -86,8 +85,8 @@ export async function laadOrderVanuitDatabase(payload) {
86
85
  if (!order)
87
86
  return null;
88
87
  const [regelsRuw, karrenRuw] = await Promise.all([
89
- veilig(() => supabaseAdmin.from("order_items").select("*").eq("order_id", order["id"])),
90
- veilig(() => supabaseAdmin
88
+ veilig(() => db.from("order_items").select("*").eq("order_id", order["id"])),
89
+ veilig(() => db
91
90
  .from("order_carts")
92
91
  .select("*")
93
92
  .eq("order_id", order["id"])
@@ -97,7 +96,7 @@ export async function laadOrderVanuitDatabase(payload) {
97
96
  const karrenRijen = arr(karrenRuw);
98
97
  let karItems = [];
99
98
  if (karrenRijen.length) {
100
- karItems = arr(await veilig(() => supabaseAdmin
99
+ karItems = arr(await veilig(() => db
101
100
  .from("order_cart_items")
102
101
  .select("*")
103
102
  .in("cart_id", karrenRijen.map((k) => k["id"]))));
@@ -107,7 +106,7 @@ export async function laadOrderVanuitDatabase(payload) {
107
106
  .filter((v) => typeof v === "string")));
108
107
  const producten = new Map();
109
108
  if (productIds.length) {
110
- const data = await veilig(() => supabaseAdmin
109
+ const data = await veilig(() => db
111
110
  .from("products")
112
111
  .select("id, product, article_number, barcode, location, unit, weight, custom_fields")
113
112
  .in("id", productIds));
@@ -1,4 +1,4 @@
1
- import type { InstellingDef } from "./documentProfiles";
1
+ import type { InstellingDef } from "./documentProfiles.js";
2
2
  export type PakbonSectieType = "logo" | "bedrijfsgegevens" | "klantgegevens" | "afleveradres" | "factuuradres" | "orderinformatie" | "transportinformatie" | "opmerkingen" | "orderregels" | "pickmethode" | "karren" | "lagen" | "producten" | "fusten" | "totalen" | "handtekening" | "tekstblok" | "qrcode" | "barcode" | "afbeelding";
3
3
  export interface PakbonKolom {
4
4
  key: string;
@@ -1,4 +1,4 @@
1
- import { type DemoOrder, type PakbonConfig } from "./pakbonBuilder";
1
+ import { type DemoOrder, type PakbonConfig } from "./pakbonBuilder.js";
2
2
  /** Gegevensvorm van een pakbon. Gelijk aan de vorm van het live voorbeeld. */
3
3
  export type PakbonOrder = DemoOrder;
4
4
  export interface PakbonLogo {
@@ -7,8 +7,8 @@
7
7
  // layoutconfiguratie en de echte ordergegevens. Zo tonen het live voorbeeld en
8
8
  // de afdruk altijd exact dezelfde secties — inclusief de orderregels.
9
9
  // ============================================================================
10
- import { DEMO_ORDER, conditieContext, groepeerIdentiekeKarren, groepeerIdentiekeLagen, karBundelTekst, fustVerzamellijst, pickMethode, productVeldBreedtes, sectieOnderdrukt, laagBundelTekst, leesPakbonConfig, sectieZichtbaar, sorteerProducten, totalen, vulVeldcodes, } from "./pakbonBuilder";
11
- import { haalPrintLogos } from "./logoLibrary";
10
+ import { DEMO_ORDER, conditieContext, groepeerIdentiekeKarren, groepeerIdentiekeLagen, karBundelTekst, fustVerzamellijst, pickMethode, productVeldBreedtes, sectieOnderdrukt, laagBundelTekst, leesPakbonConfig, sectieZichtbaar, sorteerProducten, totalen, vulVeldcodes, } from "./pakbonBuilder.js";
11
+ import { haalPrintLogos } from "./logoLibrary.js";
12
12
  // --- kleine hulpjes ---------------------------------------------------------
13
13
  const arr = (v) => (Array.isArray(v) ? v : []);
14
14
  const opt = (s, key, fallback) => s.opties?.[key] ?? fallback;
@@ -1,4 +1,4 @@
1
- import type { DocumentType } from "./documentTypes";
1
+ import type { DocumentType } from "./documentTypes.js";
2
2
  export interface PrintDocumentInput {
3
3
  /** Documentsoort, bijv. "pakbon" of "productiebon". */
4
4
  documenttype: DocumentType | string;
@@ -18,11 +18,82 @@ export interface PrintDocumentResult {
18
18
  layoutId: string;
19
19
  printerId: string | null;
20
20
  }
21
+ /** Fout wanneer een identieke aanvraag kort geleden al is aangemaakt. */
22
+ export declare class DubbeleAanvraagFout extends Error {
23
+ name: string;
24
+ constructor();
25
+ }
21
26
  /**
22
27
  * Zet een document in de printwachtrij. Bedoeld voor gebruik vanuit andere
23
28
  * modules binnen dezelfde shell en database.
24
29
  */
25
30
  export declare function printDocument(input: PrintDocumentInput): Promise<PrintDocumentResult>;
31
+ /**
32
+ * De printer die aan een documentsoort hangt: eerst de standaard (of nieuwste
33
+ * actieve) layout voor die soort, dan de printerkoppeling op die layout, anders
34
+ * de koppeling op papierformaat. Geeft `null` als er niets gekoppeld is.
35
+ */
36
+ export declare function printerVoorDocumenttype(documenttype: DocumentType | string, papierformaat?: string): Promise<string | null>;
37
+ export interface PrintPdfInput {
38
+ /** Documentsoort, alleen voor overzicht en printerkeuze. */
39
+ documenttype: DocumentType | string;
40
+ documentnaam: string;
41
+ /** PDF als base64 (met of zonder data:-voorvoegsel) óf een webadres. */
42
+ pdfBase64?: string;
43
+ pdfUrl?: string;
44
+ /**
45
+ * Optioneel. Zonder printer wordt de printer bepaald via de gekoppelde
46
+ * layout of het papierformaat van de documentsoort.
47
+ */
48
+ printerId?: string;
49
+ kopieen?: number;
50
+ papierformaat?: string;
51
+ payload?: Record<string, unknown>;
52
+ isHerprint?: boolean;
53
+ }
54
+ /**
55
+ * Print een kant-en-klare PDF (klantsticker, Floriday-document, factuur van een
56
+ * externe dienst). De PDF gaat ongewijzigd naar de printer; er wordt geen
57
+ * layout gebruikt om het document op te bouwen.
58
+ */
59
+ export declare function printPdf(input: PrintPdfInput): Promise<{
60
+ jobId: string;
61
+ }>;
62
+ export interface PrintHtmlInput {
63
+ documenttype: DocumentType | string;
64
+ documentnaam: string;
65
+ /** De opmaak die exact zo afgedrukt moet worden. */
66
+ html: string;
67
+ /** Verplicht: zonder layout kan de wachtrij zelf geen printer afleiden. */
68
+ printerId: string;
69
+ kopieen?: number;
70
+ payload?: Record<string, unknown>;
71
+ isHerprint?: boolean;
72
+ }
73
+ /**
74
+ * Print eigen opmaak. Er wordt bewust géén layout meegegeven: een gekoppelde
75
+ * layout wint altijd van meegestuurde HTML.
76
+ */
77
+ export declare function printHtml(input: PrintHtmlInput): Promise<{
78
+ jobId: string;
79
+ }>;
80
+ /**
81
+ * De printer die bij een werkplek hoort. Een werkplek is de naam van de
82
+ * computer waarop het printprogramma draait; printers worden daaraan gekoppeld
83
+ * via hun locatie of systeemnaam.
84
+ */
85
+ export declare function printerVoorWerkplek(werkplek: string, papierformaat?: string): Promise<string | null>;
86
+ export interface JobStatus {
87
+ id: string;
88
+ status: string;
89
+ documentnaam: string;
90
+ foutmelding: string | null;
91
+ }
92
+ /**
93
+ * Volgt één printopdracht live. Geeft een functie terug om te stoppen.
94
+ * Zo hoeft geen enkele andere module zelf een realtime-abonnement te bouwen.
95
+ */
96
+ export declare function volgJobStatus(jobId: string, cb: (status: JobStatus) => void): () => void;
26
97
  /** Alle beschikbare layouts voor een documentsoort (voor keuzelijsten elders). */
27
98
  export declare function beschikbareLayouts(documenttype?: string): Promise<{
28
99
  id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"printApi.d.ts","sourceRoot":"","sources":["../../src/lib/printApi.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAIpD,MAAM,WAAW,kBAAkB;IACjC,uDAAuD;IACvD,YAAY,EAAE,YAAY,GAAG,MAAM,CAAC;IACpC,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0EAA0E;IAC1E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAkDD;;;GAGG;AACH,wBAAsB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CA6B3F;AAYD,kFAAkF;AAClF,wBAAsB,kBAAkB,CAAC,YAAY,CAAC,EAAE,MAAM;QAQtD,MAAM;UACJ,MAAM;kBACE,MAAM;mBACL,MAAM;gBACT,MAAM;kBACJ,OAAO;KAExB;AAED,wDAAwD;AACxD,wBAAsB,mBAAmB;QAOjC,MAAM;UACJ,MAAM;WACL,MAAM;aACJ,MAAM,GAAG,IAAI;mBACP,MAAM,GAAG,IAAI;YACpB,OAAO;YACP,OAAO;KAElB"}
1
+ {"version":3,"file":"printApi.d.ts","sourceRoot":"","sources":["../../src/lib/printApi.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@
3
3
  // ============================================================================
4
4
  // Andere modules gebruiken uitsluitend deze functies; zij hoeven de tabellen
5
5
  // van deze module niet te kennen.
6
- import { supabase } from "./supabaseClient";
6
+ import { supabase } from "./supabaseClient.js";
7
7
  const arr = (v) => (Array.isArray(v) ? v : []);
8
8
  /** Zoekt de te gebruiken layout: expliciet, anders standaard, anders de nieuwste. */
9
9
  async function bepaalLayout(documenttype, layoutId) {
@@ -48,6 +48,29 @@ async function bepaalPrinter(documenttype, layoutId, papierformaat) {
48
48
  }
49
49
  return null;
50
50
  }
51
+ /** Rij in de wachtrij zetten. Geeft null als de dubbelbeveiliging hem tegenhield. */
52
+ async function zetInWachtrij(rij) {
53
+ const { data, error } = await supabase
54
+ .from("print_jobs")
55
+ .insert({ status: "wachtend", ...rij })
56
+ .select("id")
57
+ .maybeSingle();
58
+ if (error)
59
+ throw error;
60
+ const id = data?.id ?? null;
61
+ // Direct laten verwerken; wacht niet op de cron-ronde. Mislukt dit, dan
62
+ // blijft de opdracht gewoon wachtend staan voor een volgende poging.
63
+ if (id)
64
+ void startWachtrijVerwerking();
65
+ return id;
66
+ }
67
+ /** Fout wanneer een identieke aanvraag kort geleden al is aangemaakt. */
68
+ export class DubbeleAanvraagFout extends Error {
69
+ constructor() {
70
+ super("Dit document stond al in de printwachtrij; de dubbele aanvraag is genegeerd.");
71
+ this.name = "DubbeleAanvraagFout";
72
+ }
73
+ }
51
74
  /**
52
75
  * Zet een document in de printwachtrij. Bedoeld voor gebruik vanuit andere
53
76
  * modules binnen dezelfde shell en database.
@@ -58,9 +81,7 @@ export async function printDocument(input) {
58
81
  throw new Error(`Geen layout gevonden voor documenttype "${input.documenttype}"`);
59
82
  const printerId = input.printerId ??
60
83
  (await bepaalPrinter(input.documenttype, layout.id, layout.papierformaat ?? null));
61
- const { data, error } = await supabase
62
- .from("print_jobs")
63
- .insert({
84
+ const jobId = await zetInWachtrij({
64
85
  layout_id: layout.id,
65
86
  printer_id: printerId,
66
87
  documenttype: input.documenttype,
@@ -68,22 +89,141 @@ export async function printDocument(input) {
68
89
  kopieen: input.kopieen ?? 1,
69
90
  payload: input.payload ?? {},
70
91
  is_herprint: input.isHerprint ?? false,
71
- status: "wachtend",
92
+ });
93
+ if (!jobId)
94
+ throw new DubbeleAanvraagFout();
95
+ return { jobId, layoutId: layout.id, printerId };
96
+ }
97
+ /**
98
+ * De printer die aan een documentsoort hangt: eerst de standaard (of nieuwste
99
+ * actieve) layout voor die soort, dan de printerkoppeling op die layout, anders
100
+ * de koppeling op papierformaat. Geeft `null` als er niets gekoppeld is.
101
+ */
102
+ export async function printerVoorDocumenttype(documenttype, papierformaat) {
103
+ const layout = await bepaalLayout(documenttype);
104
+ if (!layout) {
105
+ if (!papierformaat)
106
+ return null;
107
+ const { data } = await supabase
108
+ .from("document_formaat_printers")
109
+ .select("printer_id")
110
+ .eq("documenttype", documenttype)
111
+ .eq("formaat_code", papierformaat)
112
+ .maybeSingle();
113
+ return data?.printer_id ?? null;
114
+ }
115
+ return bepaalPrinter(documenttype, layout.id, papierformaat ?? layout.papierformaat ?? null);
116
+ }
117
+ /**
118
+ * Print een kant-en-klare PDF (klantsticker, Floriday-document, factuur van een
119
+ * externe dienst). De PDF gaat ongewijzigd naar de printer; er wordt geen
120
+ * layout gebruikt om het document op te bouwen.
121
+ */
122
+ export async function printPdf(input) {
123
+ const base64 = (input.pdfBase64 ?? "").replace(/^data:application\/pdf;base64,/i, "").trim();
124
+ if (!base64 && !input.pdfUrl)
125
+ throw new Error("Geef een PDF mee via pdfBase64 of pdfUrl.");
126
+ const printerId = input.printerId ??
127
+ (await printerVoorDocumenttype(input.documenttype, input.papierformaat));
128
+ if (!printerId) {
129
+ throw new Error(`Geen printer gekoppeld voor ${input.documenttype} — stel dit in bij Layouts en printers.`);
130
+ }
131
+ const jobId = await zetInWachtrij({
132
+ layout_id: null,
133
+ printer_id: printerId,
134
+ documenttype: input.documenttype,
135
+ documentnaam: input.documentnaam,
136
+ kopieen: input.kopieen ?? 1,
137
+ payload: input.payload ?? {},
138
+ is_herprint: input.isHerprint ?? false,
139
+ ...(base64 ? { pdf_base64: base64 } : {}),
140
+ ...(input.pdfUrl ? { pdf_url: input.pdfUrl } : {}),
141
+ });
142
+ if (!jobId)
143
+ throw new DubbeleAanvraagFout();
144
+ return { jobId };
145
+ }
146
+ /**
147
+ * Print eigen opmaak. Er wordt bewust géén layout meegegeven: een gekoppelde
148
+ * layout wint altijd van meegestuurde HTML.
149
+ */
150
+ export async function printHtml(input) {
151
+ if (!input.html || input.html.trim().length < 40)
152
+ throw new Error("Er is geen opmaak meegegeven.");
153
+ if (!input.printerId)
154
+ throw new Error("Kies een printer: een HTML-opdracht heeft geen layout.");
155
+ const jobId = await zetInWachtrij({
156
+ layout_id: null,
157
+ printer_id: input.printerId,
158
+ documenttype: input.documenttype,
159
+ documentnaam: input.documentnaam,
160
+ kopieen: input.kopieen ?? 1,
161
+ payload: input.payload ?? {},
162
+ is_herprint: input.isHerprint ?? false,
163
+ render_html: input.html,
164
+ });
165
+ if (!jobId)
166
+ throw new DubbeleAanvraagFout();
167
+ return { jobId };
168
+ }
169
+ /**
170
+ * De printer die bij een werkplek hoort. Een werkplek is de naam van de
171
+ * computer waarop het printprogramma draait; printers worden daaraan gekoppeld
172
+ * via hun locatie of systeemnaam.
173
+ */
174
+ export async function printerVoorWerkplek(werkplek, papierformaat) {
175
+ const naam = (werkplek ?? "").trim();
176
+ if (!naam)
177
+ return null;
178
+ const { data } = await supabase
179
+ .from("printers")
180
+ .select("id, naam, locatie, systeemnaam, papierformaat, actief")
181
+ .eq("actief", true)
182
+ .order("naam");
183
+ const kandidaten = arr(data).filter((p) => (p.locatie ?? "").trim().toLowerCase() === naam.toLowerCase() ||
184
+ (p.systeemnaam ?? "").trim().toLowerCase() === naam.toLowerCase());
185
+ if (!kandidaten.length)
186
+ return null;
187
+ if (papierformaat) {
188
+ const match = kandidaten.find((p) => p.papierformaat === papierformaat);
189
+ if (match)
190
+ return match.id;
191
+ }
192
+ return kandidaten[0].id;
193
+ }
194
+ /**
195
+ * Volgt één printopdracht live. Geeft een functie terug om te stoppen.
196
+ * Zo hoeft geen enkele andere module zelf een realtime-abonnement te bouwen.
197
+ */
198
+ export function volgJobStatus(jobId, cb) {
199
+ let gestopt = false;
200
+ const lees = async () => {
201
+ const { data } = await supabase
202
+ .from("print_jobs")
203
+ .select("id, status, documentnaam, foutmelding")
204
+ .eq("id", jobId)
205
+ .maybeSingle();
206
+ if (data && !gestopt)
207
+ cb(data);
208
+ };
209
+ void lees();
210
+ const kanaal = supabase
211
+ .channel(`print_job_${jobId}`)
212
+ .on("postgres_changes", { event: "UPDATE", schema: "public", table: "print_jobs", filter: `id=eq.${jobId}` }, (payload) => {
213
+ if (!gestopt)
214
+ cb(payload.new);
72
215
  })
73
- .select("id")
74
- .single();
75
- if (error)
76
- throw error;
77
- // Direct laten verwerken; wacht niet op de cron-ronde. Mislukt dit, dan
78
- // blijft de opdracht gewoon wachtend staan voor een volgende poging.
79
- void startWachtrijVerwerking();
80
- return { jobId: data.id, layoutId: layout.id, printerId };
216
+ .subscribe();
217
+ return () => {
218
+ gestopt = true;
219
+ void supabase.removeChannel(kanaal);
220
+ };
81
221
  }
82
222
  /** Zet de wachtrijverwerking op de achtergrond in gang (best effort). */
83
223
  async function startWachtrijVerwerking() {
84
224
  try {
85
- const { wachtrijTick } = await import("./printService.functions");
86
- await wachtrijTick();
225
+ const { vraagWachtrijRonde } = await import("./queueTickClient.js");
226
+ await vraagWachtrijRonde();
87
227
  }
88
228
  catch {
89
229
  // Geen probleem: de cron of de printwachtrij-pagina pakt het op.
@@ -1,4 +1,13 @@
1
+ import type { SupabaseClient } from "@supabase/supabase-js";
1
2
  type Job = Record<string, any>;
3
+ /** De databaseclient die de shell aanlevert. De module maakt er zelf nooit een. */
4
+ export type PrintDb = SupabaseClient<any, any, any>;
5
+ /**
6
+ * Goedkope controle of de aangeleverde client de printtabellen kan lezen.
7
+ * Vervangt de oude controle op omgevingsvariabelen: die kende de module niet
8
+ * meer nu de shell de client levert.
9
+ */
10
+ export declare function controleerClient(db: PrintDb): Promise<string | null>;
2
11
  type LayoutKeuze = {
3
12
  layout: Job | null;
4
13
  expliciet: boolean;
@@ -7,13 +16,13 @@ type LayoutKeuze = {
7
16
  * Haalt een kant-en-klare PDF van de opdracht op (klantstickers, standaard
8
17
  * Floriday-documenten). Die gaat ongewijzigd naar de printer.
9
18
  */
10
- export declare function kantEnKlarePdf(job: Job): Promise<string | null>;
19
+ export declare function kantEnKlarePdf(_db: PrintDb, job: Job): Promise<string | null>;
11
20
  /**
12
21
  * Bouwt de HTML van de opdracht.
13
22
  * Volgorde: gekoppelde layout wint > meegestuurde HTML > actieve layout van
14
23
  * het documenttype. Zo werkt een bijgewerkte layout meteen door.
15
24
  */
16
- export declare function bouwHtml(job: Job, keuze: LayoutKeuze): Promise<string>;
25
+ export declare function bouwHtml(db: PrintDb, job: Job, keuze: LayoutKeuze): Promise<string>;
17
26
  /**
18
27
  * Controleert of het document echt iets afdrukt. Zonder deze controle kan een
19
28
  * lege layout of een opdracht zonder gegevens een blanco vel opleveren.
@@ -26,6 +35,6 @@ export interface WachtrijResultaat {
26
35
  bijgewerkt: number;
27
36
  }
28
37
  /** Eén ronde: wachtende opdrachten afdrukken en statussen bijwerken. */
29
- export declare function verwerkWachtrij(max?: number): Promise<WachtrijResultaat>;
38
+ export declare function verwerkWachtrij(db: PrintDb, max?: number): Promise<WachtrijResultaat>;
30
39
  export {};
31
40
  //# sourceMappingURL=printQueue.server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"printQueue.server.d.ts","sourceRoot":"","sources":["../../src/lib/printQueue.server.ts"],"names":[],"mappings":"AAoBA,KAAK,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAe/B,KAAK,WAAW,GAAG;IAAE,MAAM,EAAE,GAAG,GAAG,IAAI,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAAC;AAqC9D;;;GAGG;AACH,wBAAsB,cAAc,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA+BrE;AAqED;;;;GAIG;AACH,wBAAsB,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAoH5E;AAGD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAY1D;AA6ID,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wEAAwE;AACxE,wBAAsB,eAAe,CAAC,GAAG,SAAI,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAmBzE"}
1
+ {"version":3,"file":"printQueue.server.d.ts","sourceRoot":"","sources":["../../src/lib/printQueue.server.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAc5D,KAAK,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAE/B,mFAAmF;AACnF,MAAM,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAEpD;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,EAAE,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAW1E;AAeD,KAAK,WAAW,GAAG;IAAE,MAAM,EAAE,GAAG,GAAG,IAAI,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAAC;AAqC9D;;;GAGG;AACH,wBAAsB,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA+BnF;AAqED;;;;GAIG;AACH,wBAAsB,QAAQ,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAoHzF;AAGD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAY1D;AA6ID,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wEAAwE;AACxE,wBAAsB,eAAe,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,SAAI,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAmBtF"}