@flowselections/logistiek-engine 1.0.171 → 1.0.174
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/db/schema/logistiek-engine.sql +28263 -0
- package/dist-lib/components/BeheerPage.d.ts.map +1 -1
- package/dist-lib/components/BeheerPage.js +3 -1
- package/dist-lib/components/BeladingVerstuurderCard.d.ts +2 -0
- package/dist-lib/components/BeladingVerstuurderCard.d.ts.map +1 -0
- package/dist-lib/components/BeladingVerstuurderCard.js +23 -0
- package/dist-lib/components/MinuutrondeStartMelding.d.ts +2 -0
- package/dist-lib/components/MinuutrondeStartMelding.d.ts.map +1 -0
- package/dist-lib/components/MinuutrondeStartMelding.js +11 -0
- package/dist-lib/hooks/useMinuutrondeStart.d.ts +6 -0
- package/dist-lib/hooks/useMinuutrondeStart.d.ts.map +1 -0
- package/dist-lib/hooks/useMinuutrondeStart.js +26 -0
- package/dist-lib/index.d.ts +2 -0
- package/dist-lib/index.d.ts.map +1 -1
- package/dist-lib/index.js +2 -0
- package/dist-lib/integrations/supabase/types.d.ts +284 -0
- package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
- package/dist-lib/lib/handlers/logistics-tick.server.d.ts.map +1 -1
- package/dist-lib/lib/handlers/logistics-tick.server.js +7 -0
- package/dist-lib/lib/moduleVersion.d.ts +1 -1
- package/dist-lib/lib/moduleVersion.js +1 -1
- package/dist-lib/lib/shellAdres.d.ts +9 -0
- package/dist-lib/lib/shellAdres.d.ts.map +1 -1
- package/dist-lib/lib/shellAdres.functions.d.ts +14 -0
- package/dist-lib/lib/shellAdres.functions.d.ts.map +1 -1
- package/dist-lib/lib/shellAdres.functions.js +40 -0
- package/dist-lib/lib/shellAdres.js +23 -0
- package/dist-lib/lib/stickerQueue.server.d.ts +2 -0
- package/dist-lib/lib/stickerQueue.server.d.ts.map +1 -1
- package/dist-lib/lib/stickerQueue.server.js +31 -0
- package/package.json +8 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logistics-tick.server.d.ts","sourceRoot":"","sources":["../../../src/lib/handlers/logistics-tick.server.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAG5D,qFAAqF;AACrF,wBAAgB,WAAW,CAAC,IAAI,CAAC,EAAE;IAAE,aAAa,CAAC,EAAE,OAAO,CAAA;CAAE;;;;EAE7D;AAQD,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,cAAc,EACxB,IAAI,CAAC,EAAE;IAAE,aAAa,CAAC,EAAE,OAAO,CAAA;CAAE,GACjC,OAAO,CAAC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"logistics-tick.server.d.ts","sourceRoot":"","sources":["../../../src/lib/handlers/logistics-tick.server.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAG5D,qFAAqF;AACrF,wBAAgB,WAAW,CAAC,IAAI,CAAC,EAAE;IAAE,aAAa,CAAC,EAAE,OAAO,CAAA;CAAE;;;;EAE7D;AAQD,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,cAAc,EACxB,IAAI,CAAC,EAAE;IAAE,aAAa,CAAC,EAAE,OAAO,CAAA;CAAE,GACjC,OAAO,CAAC,QAAQ,CAAC,CAoFnB;AAED,qFAAqF;AACrF,eAAO,MAAM,mBAAmB,eAAe,CAAC"}
|
|
@@ -46,6 +46,13 @@ export async function handleLogisticsTick(request, supabase, opts) {
|
|
|
46
46
|
catch {
|
|
47
47
|
// Een ontbrekende hartslag mag de verwerking nooit tegenhouden.
|
|
48
48
|
}
|
|
49
|
+
// 1.0.172: ontbrekende standaardinstellingen aanvullen (bestaande waarden blijven).
|
|
50
|
+
try {
|
|
51
|
+
await supabase.rpc("logistics_ensure_runtime_defaults");
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
// Niet aanvullen = fail closed (verzendbrieven wachten); ronde loopt door.
|
|
55
|
+
}
|
|
49
56
|
// Rondeslot: nooit twee tick-rondes tegelijk (minuut-cron én wek-aanroep
|
|
50
57
|
// komen hier allebei binnen). Hergebruikt het bestaande planslot met
|
|
51
58
|
// vervaltijd. Fail-closed: bij twijfel wordt de ronde overgeslagen; de
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const MODULE_VERSION = "1.0.
|
|
1
|
+
export declare const MODULE_VERSION = "1.0.174";
|
|
2
2
|
//# sourceMappingURL=moduleVersion.d.ts.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// Automatisch gegenereerd door prebuild:lib; niet handmatig aanpassen.
|
|
2
|
-
export const MODULE_VERSION = "1.0.
|
|
2
|
+
export const MODULE_VERSION = "1.0.174";
|
|
@@ -12,4 +12,13 @@ export declare function isShellAdresStatus(v: unknown): v is ShellAdresStatus;
|
|
|
12
12
|
* JSON-antwoord telt niet.
|
|
13
13
|
*/
|
|
14
14
|
export declare function isEngineAntwoord(status: number | null | undefined, body: string | null | undefined): boolean;
|
|
15
|
+
export interface MinuutrondeStartInvoer {
|
|
16
|
+
shellBaseUrl: string | null;
|
|
17
|
+
tickBaseUrl: string | null;
|
|
18
|
+
tickApikey: string | null;
|
|
19
|
+
/** Antwoord van de registratie; "geen_sleutel_op_server" als de Shell-server zelf geen sleutel heeft. */
|
|
20
|
+
registratie: string | null;
|
|
21
|
+
}
|
|
22
|
+
/** Geeft null als de minuutronde kan starten, anders de melding voor Beheer. */
|
|
23
|
+
export declare function minuutrondeStartProbleem(s: MinuutrondeStartInvoer): string | null;
|
|
15
24
|
//# sourceMappingURL=shellAdres.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shellAdres.d.ts","sourceRoot":"","sources":["../../src/lib/shellAdres.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,qBAAqB,wIAQxB,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEtE,yFAAyF;AACzF,eAAO,MAAM,kBAAkB,mBAAmB,CAAC;AACnD,eAAO,MAAM,mBAAmB,qCAAqC,CAAC;AAEtE,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAQ9D,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,gBAAgB,CAEpE;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAS5G"}
|
|
1
|
+
{"version":3,"file":"shellAdres.d.ts","sourceRoot":"","sources":["../../src/lib/shellAdres.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,qBAAqB,wIAQxB,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEtE,yFAAyF;AACzF,eAAO,MAAM,kBAAkB,mBAAmB,CAAC;AACnD,eAAO,MAAM,mBAAmB,qCAAqC,CAAC;AAEtE,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAQ9D,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,gBAAgB,CAEpE;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAS5G;AASD,MAAM,WAAW,sBAAsB;IACrC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,yGAAyG;IACzG,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAMD,gFAAgF;AAChF,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,sBAAsB,GAAG,MAAM,GAAG,IAAI,CAkBjF"}
|
|
@@ -12,4 +12,18 @@ export declare const startShellAdresControle: import("@tanstack/start-client-cor
|
|
|
12
12
|
}, undefined, undefined, undefined>], undefined, Promise<{
|
|
13
13
|
status: string;
|
|
14
14
|
}>>;
|
|
15
|
+
/**
|
|
16
|
+
* Legt de sleutel van de minuutronde automatisch vast (1.0.173) en geeft terug
|
|
17
|
+
* of de minuutronde kan starten. De sleutel is de openbare databasesleutel van
|
|
18
|
+
* deze Shell-server: precies de waarde waarmee de minuutronde-route controleert.
|
|
19
|
+
* Fail closed: ontbreekt hij op de server, dan wordt niets vastgelegd.
|
|
20
|
+
*/
|
|
21
|
+
export declare const registreerMinuutrondeSleutel: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, undefined, undefined, undefined, undefined>, import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
|
|
22
|
+
supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
|
|
23
|
+
userId: string;
|
|
24
|
+
claims: import("@supabase/auth-js").User;
|
|
25
|
+
}, undefined, undefined, undefined>], undefined, Promise<{
|
|
26
|
+
registratie: string | null;
|
|
27
|
+
probleem: string | null;
|
|
28
|
+
}>>;
|
|
15
29
|
//# sourceMappingURL=shellAdres.functions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shellAdres.functions.d.ts","sourceRoot":"","sources":["../../src/lib/shellAdres.functions.ts"],"names":[],"mappings":"AAqBA,eAAO,MAAM,kBAAkB;;;;;UAEM,MAAM;GAKvC,CAAC;AAEL,eAAO,MAAM,uBAAuB;;;;;YAEc,MAAM;GAUpD,CAAC"}
|
|
1
|
+
{"version":3,"file":"shellAdres.functions.d.ts","sourceRoot":"","sources":["../../src/lib/shellAdres.functions.ts"],"names":[],"mappings":"AAqBA,eAAO,MAAM,kBAAkB;;;;;UAEM,MAAM;GAKvC,CAAC;AAEL,eAAO,MAAM,uBAAuB;;;;;YAEc,MAAM;GAUpD,CAAC;AAEL;;;;;GAKG;AACH,eAAO,MAAM,4BAA4B;;;;;iBAEG,MAAM,GAAG,IAAI;cAAY,MAAM,GAAG,IAAI;GA6B9E,CAAC"}
|
|
@@ -39,3 +39,43 @@ export const startShellAdresControle = createServerFn({ method: "POST" })
|
|
|
39
39
|
const status = data?.status;
|
|
40
40
|
return { status: typeof status === "string" ? status : "onbekend" };
|
|
41
41
|
});
|
|
42
|
+
/**
|
|
43
|
+
* Legt de sleutel van de minuutronde automatisch vast (1.0.173) en geeft terug
|
|
44
|
+
* of de minuutronde kan starten. De sleutel is de openbare databasesleutel van
|
|
45
|
+
* deze Shell-server: precies de waarde waarmee de minuutronde-route controleert.
|
|
46
|
+
* Fail closed: ontbreekt hij op de server, dan wordt niets vastgelegd.
|
|
47
|
+
*/
|
|
48
|
+
export const registreerMinuutrondeSleutel = createServerFn({ method: "POST" })
|
|
49
|
+
.middleware([readableServerErrors, requireSupabaseAuth])
|
|
50
|
+
.handler(async () => {
|
|
51
|
+
const { minuutrondeStartProbleem } = await import("./shellAdres.js");
|
|
52
|
+
const { supabaseAdmin } = await import("../integrations/supabase/client.server.js");
|
|
53
|
+
const sleutel = (process.env["SUPABASE_PUBLISHABLE_KEY"] ?? process.env["SUPABASE_ANON_KEY"] ?? "")
|
|
54
|
+
.replace(/^["']|["']$/g, "")
|
|
55
|
+
.trim();
|
|
56
|
+
let registratie = null;
|
|
57
|
+
const { data: reg, error: regErr } = await supabaseAdmin.rpc("logistics_register_tick_apikey", {
|
|
58
|
+
p_key: sleutel,
|
|
59
|
+
});
|
|
60
|
+
if (regErr)
|
|
61
|
+
registratie = "fout: " + regErr.message;
|
|
62
|
+
else
|
|
63
|
+
registratie = typeof reg?.status === "string" ? reg.status : null;
|
|
64
|
+
const { data: rijen, error } = await supabaseAdmin
|
|
65
|
+
.from("module_runtime_config")
|
|
66
|
+
.select("key, value")
|
|
67
|
+
.in("key", ["shell_base_url", "logistics_tick_base_url", "logistics_tick_apikey"]);
|
|
68
|
+
if (error)
|
|
69
|
+
throw new Error(error.message);
|
|
70
|
+
const safe = Array.isArray(rijen) ? rijen : [];
|
|
71
|
+
const waarde = (k) => safe.find((r) => r.key === k)?.value ?? null;
|
|
72
|
+
return {
|
|
73
|
+
registratie,
|
|
74
|
+
probleem: minuutrondeStartProbleem({
|
|
75
|
+
shellBaseUrl: waarde("shell_base_url"),
|
|
76
|
+
tickBaseUrl: waarde("logistics_tick_base_url"),
|
|
77
|
+
tickApikey: waarde("logistics_tick_apikey"),
|
|
78
|
+
registratie,
|
|
79
|
+
}),
|
|
80
|
+
};
|
|
81
|
+
});
|
|
@@ -48,3 +48,26 @@ export function isEngineAntwoord(status, body) {
|
|
|
48
48
|
return false;
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
|
+
function leeg(v) {
|
|
52
|
+
return v == null || v.trim() === "";
|
|
53
|
+
}
|
|
54
|
+
/** Geeft null als de minuutronde kan starten, anders de melding voor Beheer. */
|
|
55
|
+
export function minuutrondeStartProbleem(s) {
|
|
56
|
+
const pre = "Minuutronde kan niet starten: ";
|
|
57
|
+
if (leeg(s.tickApikey)) {
|
|
58
|
+
if (s.registratie === "geen_sleutel_op_server") {
|
|
59
|
+
return pre + "de Shell heeft geen openbare databasesleutel in zijn serverinstellingen, dus de sleutel kon niet automatisch worden vastgelegd.";
|
|
60
|
+
}
|
|
61
|
+
if (s.registratie === "ongeldige_sleutel") {
|
|
62
|
+
return pre + "de openbare databasesleutel van de Shell heeft een onverwachte vorm en is niet vastgelegd.";
|
|
63
|
+
}
|
|
64
|
+
return pre + "de sleutel voor de minuutronde is nog niet vastgelegd. Open deze pagina in de Shell zelf om hem automatisch vast te leggen.";
|
|
65
|
+
}
|
|
66
|
+
if (leeg(s.tickBaseUrl)) {
|
|
67
|
+
if (leeg(s.shellBaseUrl)) {
|
|
68
|
+
return pre + "het Shell-adres is onbekend. Dat vult de Floriday-authenticatiemodule automatisch.";
|
|
69
|
+
}
|
|
70
|
+
return pre + "het adres van de minuutronde is nog niet ingesteld. Gebruik \"Shell-adres controleren\" op de Regiepagina.";
|
|
71
|
+
}
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
@@ -12,4 +12,6 @@ export interface StickerRun {
|
|
|
12
12
|
export declare function runStickerQueue(sb: SupabaseClient, opts?: {
|
|
13
13
|
limit?: number;
|
|
14
14
|
}): Promise<StickerRun>;
|
|
15
|
+
/** Reden die de layoutkeuze geeft als er geen (eenduidige) Floriday-layout is. */
|
|
16
|
+
export declare function isGeenLayoutReden(reden: unknown): boolean;
|
|
15
17
|
//# sourceMappingURL=stickerQueue.server.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stickerQueue.server.d.ts","sourceRoot":"","sources":["../../src/lib/stickerQueue.server.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAiB5D,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAoCD,wBAAsB,eAAe,CAAC,EAAE,EAAE,cAAc,EAAE,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,CAAC,UAAU,CAAC,
|
|
1
|
+
{"version":3,"file":"stickerQueue.server.d.ts","sourceRoot":"","sources":["../../src/lib/stickerQueue.server.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAiB5D,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAoCD,wBAAsB,eAAe,CAAC,EAAE,EAAE,cAAc,EAAE,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,CAAC,UAAU,CAAC,CA8T5G;AAoGD,kFAAkF;AAClF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAGzD"}
|
|
@@ -64,6 +64,8 @@ export async function runStickerQueue(sb, opts = {}) {
|
|
|
64
64
|
}
|
|
65
65
|
}
|
|
66
66
|
}
|
|
67
|
+
// 2b. Tray-stickers die alleen op "geen layout" vastzaten: vrijgeven zodra er een is.
|
|
68
|
+
run.released += await traystickerLayoutVrijgeven(sb);
|
|
67
69
|
// Geladen etiketten per printplek (één keer per ronde).
|
|
68
70
|
const etiketCache = new Map();
|
|
69
71
|
const etiketten = async (plek) => {
|
|
@@ -437,3 +439,32 @@ async function afmelden(sb, run) {
|
|
|
437
439
|
return 0;
|
|
438
440
|
}
|
|
439
441
|
}
|
|
442
|
+
/** Reden die de layoutkeuze geeft als er geen (eenduidige) Floriday-layout is. */
|
|
443
|
+
export function isGeenLayoutReden(reden) {
|
|
444
|
+
if (typeof reden !== "string")
|
|
445
|
+
return false;
|
|
446
|
+
return /^Geen actieve layout voor /i.test(reden) || /actieve Floriday-layouts voor .* standaard/i.test(reden) || /^Geen actieve Floriday-layout/i.test(reden);
|
|
447
|
+
}
|
|
448
|
+
/** Zet geblokkeerde tray-stickers met een layout-reden terug op "klaar" zodra de traysticker-layout bestaat. */
|
|
449
|
+
async function traystickerLayoutVrijgeven(sb) {
|
|
450
|
+
const { data } = await sb
|
|
451
|
+
.from("logistics_sticker_prints")
|
|
452
|
+
.select("id, reden")
|
|
453
|
+
.eq("soort", "traysticker")
|
|
454
|
+
.eq("status", "geblokkeerd")
|
|
455
|
+
.limit(200);
|
|
456
|
+
const ids = (Array.isArray(data) ? data : [])
|
|
457
|
+
.filter((r) => isGeenLayoutReden(r.reden))
|
|
458
|
+
.map((r) => r.id);
|
|
459
|
+
if (ids.length === 0)
|
|
460
|
+
return 0;
|
|
461
|
+
const layout = await floridayLayout(sb, "traysticker");
|
|
462
|
+
if (!layout.layoutId)
|
|
463
|
+
return 0;
|
|
464
|
+
await sb
|
|
465
|
+
.from("logistics_sticker_prints")
|
|
466
|
+
.update({ status: "klaar", reden: null, next_attempt_at: null })
|
|
467
|
+
.in("id", ids)
|
|
468
|
+
.eq("status", "geblokkeerd");
|
|
469
|
+
return ids.length;
|
|
470
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flowselections/logistiek-engine",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.174",
|
|
4
4
|
"flowselections": {
|
|
5
5
|
"moduleId": "logistiek-engine",
|
|
6
6
|
"pages": [
|
|
@@ -83,7 +83,11 @@
|
|
|
83
83
|
"OPTIONS"
|
|
84
84
|
]
|
|
85
85
|
}
|
|
86
|
-
]
|
|
86
|
+
],
|
|
87
|
+
"schema": {
|
|
88
|
+
"file": "db/schema/logistiek-engine.sql",
|
|
89
|
+
"order": 60
|
|
90
|
+
}
|
|
87
91
|
},
|
|
88
92
|
"private": false,
|
|
89
93
|
"sideEffects": false,
|
|
@@ -103,7 +107,8 @@
|
|
|
103
107
|
},
|
|
104
108
|
"files": [
|
|
105
109
|
"dist-lib",
|
|
106
|
-
"public"
|
|
110
|
+
"public",
|
|
111
|
+
"db/schema"
|
|
107
112
|
],
|
|
108
113
|
"publishConfig": {
|
|
109
114
|
"access": "public"
|