@voyantjs/finance 0.4.5 → 0.6.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.
package/dist/index.d.ts CHANGED
@@ -1,11 +1,11 @@
1
1
  import type { LinkableDefinition, Module } from "@voyantjs/core";
2
2
  import type { HonoModule } from "@voyantjs/hono/module";
3
- import { type FinanceDocumentRouteOptions } from "./routes-documents.js";
4
- import { type FinanceSettlementRouteOptions } from "./routes-settlement.js";
3
+ import { type FinanceRuntimeOptions } from "./route-runtime.js";
4
+ import { type PublicFinanceRouteOptions } from "./routes-public.js";
5
5
  export type { FinanceRoutes } from "./routes.js";
6
6
  export type { PublicFinanceRoutes } from "./routes-public.js";
7
- export { publicFinanceRoutes } from "./routes-public.js";
8
- export { publicFinanceService } from "./service-public.js";
7
+ export { createPublicFinanceRoutes, type PublicFinanceRouteOptions, publicFinanceRoutes, } from "./routes-public.js";
8
+ export { type PublicFinanceRuntimeOptions, publicFinanceService } from "./service-public.js";
9
9
  export declare const invoiceLinkable: LinkableDefinition;
10
10
  export declare const invoiceTemplateLinkable: LinkableDefinition;
11
11
  export declare const creditNoteLinkable: LinkableDefinition;
@@ -15,10 +15,11 @@ export declare const financeLinkable: {
15
15
  creditNote: LinkableDefinition;
16
16
  };
17
17
  export declare const financeModule: Module;
18
- export interface FinanceHonoModuleOptions extends FinanceDocumentRouteOptions, FinanceSettlementRouteOptions {
18
+ export interface FinanceHonoModuleOptions extends FinanceRuntimeOptions, PublicFinanceRouteOptions {
19
19
  }
20
20
  export declare function createFinanceHonoModule(options?: FinanceHonoModuleOptions): HonoModule;
21
21
  export declare const financeHonoModule: HonoModule;
22
+ export { buildFinanceRouteRuntime, FINANCE_ROUTE_RUNTIME_CONTAINER_KEY, type FinanceRouteRuntime, type FinanceRuntimeOptions, } from "./route-runtime.js";
22
23
  export { createFinanceAdminDocumentRoutes, type FinanceDocumentRouteOptions, type InvoiceDocumentGenerator, } from "./routes-documents.js";
23
24
  export { createFinanceAdminSettlementRoutes, type FinanceSettlementRouteOptions, type InvoiceSettlementPoller, } from "./routes-settlement.js";
24
25
  export type { BookingGuarantee, BookingItemCommission, BookingItemTaxLine, BookingPaymentSchedule, CreditNote, CreditNoteLineItem, FinanceNote, Invoice, InvoiceExternalRef, InvoiceLineItem, InvoiceNumberSeries, InvoiceRendition, InvoiceTemplate, NewBookingGuarantee, NewBookingItemCommission, NewBookingItemTaxLine, NewBookingPaymentSchedule, NewCreditNote, NewCreditNoteLineItem, NewFinanceNote, NewInvoice, NewInvoiceExternalRef, NewInvoiceLineItem, NewInvoiceNumberSeries, NewInvoiceRendition, NewInvoiceTemplate, NewPayment, NewPaymentAuthorization, NewPaymentCapture, NewPaymentInstrument, NewPaymentSession, NewSupplierPayment, NewTaxRegime, Payment, PaymentAuthorization, PaymentCapture, PaymentInstrument, PaymentSession, SupplierPayment, TaxRegime, } from "./schema.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,9 +1,10 @@
1
1
  import { Hono } from "hono";
2
+ import { buildFinanceRouteRuntime, FINANCE_ROUTE_RUNTIME_CONTAINER_KEY, } from "./route-runtime.js";
2
3
  import { financeRoutes } from "./routes.js";
3
- import { createFinanceAdminDocumentRoutes, } from "./routes-documents.js";
4
- import { publicFinanceRoutes } from "./routes-public.js";
5
- import { createFinanceAdminSettlementRoutes, } from "./routes-settlement.js";
6
- export { publicFinanceRoutes } from "./routes-public.js";
4
+ import { createFinanceAdminDocumentRoutes } from "./routes-documents.js";
5
+ import { createPublicFinanceRoutes } from "./routes-public.js";
6
+ import { createFinanceAdminSettlementRoutes } from "./routes-settlement.js";
7
+ export { createPublicFinanceRoutes, publicFinanceRoutes, } from "./routes-public.js";
7
8
  export { publicFinanceService } from "./service-public.js";
8
9
  export const invoiceLinkable = {
9
10
  module: "finance",
@@ -37,14 +38,21 @@ export function createFinanceHonoModule(options = {}) {
37
38
  .route("/", financeRoutes)
38
39
  .route("/", createFinanceAdminDocumentRoutes(options))
39
40
  .route("/", createFinanceAdminSettlementRoutes(options));
41
+ const module = {
42
+ ...financeModule,
43
+ bootstrap: ({ bindings, container }) => {
44
+ container.register(FINANCE_ROUTE_RUNTIME_CONTAINER_KEY, buildFinanceRouteRuntime(bindings, options));
45
+ },
46
+ };
40
47
  return {
41
- module: financeModule,
48
+ module,
42
49
  adminRoutes,
43
- publicRoutes: publicFinanceRoutes,
50
+ publicRoutes: createPublicFinanceRoutes(options),
44
51
  routes: adminRoutes,
45
52
  };
46
53
  }
47
54
  export const financeHonoModule = createFinanceHonoModule();
55
+ export { buildFinanceRouteRuntime, FINANCE_ROUTE_RUNTIME_CONTAINER_KEY, } from "./route-runtime.js";
48
56
  export { createFinanceAdminDocumentRoutes, } from "./routes-documents.js";
49
57
  export { createFinanceAdminSettlementRoutes, } from "./routes-settlement.js";
50
58
  export { bookingGuarantees, bookingItemCommissions, bookingItemTaxLines, bookingPaymentSchedules, creditNoteLineItems, creditNotes, financeNotes, invoiceExternalRefs, invoiceLineItems, invoiceNumberSeries, invoiceRenditions, invoices, invoiceTemplates, paymentAuthorizations, paymentCaptures, paymentInstruments, paymentSessions, payments, supplierPayments, taxRegimes, } from "./schema.js";
@@ -0,0 +1,13 @@
1
+ import type { EventBus } from "@voyantjs/core";
2
+ import type { FinanceDocumentRouteOptions, InvoiceDocumentGenerator } from "./routes-documents.js";
3
+ import type { FinanceSettlementRouteOptions, InvoiceSettlementPoller } from "./routes-settlement.js";
4
+ export type FinanceRouteRuntime = {
5
+ invoiceDocumentGenerator?: InvoiceDocumentGenerator;
6
+ invoiceSettlementPollers: Record<string, InvoiceSettlementPoller>;
7
+ eventBus?: EventBus;
8
+ };
9
+ export declare const FINANCE_ROUTE_RUNTIME_CONTAINER_KEY = "providers.finance.runtime";
10
+ export interface FinanceRuntimeOptions extends FinanceDocumentRouteOptions, FinanceSettlementRouteOptions {
11
+ }
12
+ export declare function buildFinanceRouteRuntime(bindings: Record<string, unknown>, options?: FinanceRuntimeOptions): FinanceRouteRuntime;
13
+ //# sourceMappingURL=route-runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route-runtime.d.ts","sourceRoot":"","sources":["../src/route-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAE9C,OAAO,KAAK,EAAE,2BAA2B,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA;AAClG,OAAO,KAAK,EAAE,6BAA6B,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAA;AAEpG,MAAM,MAAM,mBAAmB,GAAG;IAChC,wBAAwB,CAAC,EAAE,wBAAwB,CAAA;IACnD,wBAAwB,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAA;IACjE,QAAQ,CAAC,EAAE,QAAQ,CAAA;CACpB,CAAA;AAED,eAAO,MAAM,mCAAmC,8BAA8B,CAAA;AAE9E,MAAM,WAAW,qBACf,SAAQ,2BAA2B,EACjC,6BAA6B;CAAG;AAEpC,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,OAAO,GAAE,qBAA0B,GAClC,mBAAmB,CAQrB"}
@@ -0,0 +1,8 @@
1
+ export const FINANCE_ROUTE_RUNTIME_CONTAINER_KEY = "providers.finance.runtime";
2
+ export function buildFinanceRouteRuntime(bindings, options = {}) {
3
+ return {
4
+ invoiceDocumentGenerator: options.resolveInvoiceDocumentGenerator?.(bindings) ?? options.invoiceDocumentGenerator,
5
+ invoiceSettlementPollers: options.resolveInvoiceSettlementPollers?.(bindings) ?? options.invoiceSettlementPollers ?? {},
6
+ eventBus: options.resolveEventBus?.(bindings) ?? options.eventBus,
7
+ };
8
+ }
@@ -1,9 +1,10 @@
1
- import type { EventBus } from "@voyantjs/core";
1
+ import type { EventBus, ModuleContainer } from "@voyantjs/core";
2
2
  import type { PostgresJsDatabase } from "drizzle-orm/postgres-js";
3
3
  import { financeDocumentsService } from "./service-documents.js";
4
4
  type Env = {
5
5
  Bindings: Record<string, unknown>;
6
6
  Variables: {
7
+ container: ModuleContainer;
7
8
  db: PostgresJsDatabase;
8
9
  userId?: string;
9
10
  };
@@ -12,6 +13,7 @@ export type InvoiceDocumentGenerator = Parameters<typeof financeDocumentsService
12
13
  export interface FinanceDocumentRouteOptions {
13
14
  invoiceDocumentGenerator?: InvoiceDocumentGenerator;
14
15
  resolveInvoiceDocumentGenerator?: (bindings: Record<string, unknown>) => InvoiceDocumentGenerator | undefined;
16
+ resolveDocumentDownloadUrl?: (bindings: unknown, storageKey: string) => Promise<string | null> | string | null;
15
17
  eventBus?: EventBus;
16
18
  resolveEventBus?: (bindings: Record<string, unknown>) => EventBus | undefined;
17
19
  }
@@ -65,12 +67,12 @@ export declare function createFinanceAdminDocumentRoutes(options?: FinanceDocume
65
67
  renderedBodyFormat: "html" | "markdown" | "lexical_json";
66
68
  renderedBody: string;
67
69
  rendition: {
68
- format: "json" | "pdf" | "html" | "xml";
70
+ metadata: import("hono/utils/types").JSONValue;
69
71
  id: string;
70
- status: "pending" | "failed" | "ready" | "stale";
71
72
  createdAt: string;
72
73
  updatedAt: string;
73
- metadata: import("hono/utils/types").JSONValue;
74
+ status: "pending" | "failed" | "ready" | "stale";
75
+ format: "json" | "pdf" | "html" | "xml";
74
76
  templateId: string | null;
75
77
  language: string | null;
76
78
  invoiceId: string;
@@ -136,12 +138,12 @@ export declare function createFinanceAdminDocumentRoutes(options?: FinanceDocume
136
138
  renderedBodyFormat: "html" | "markdown" | "lexical_json";
137
139
  renderedBody: string;
138
140
  rendition: {
139
- format: "json" | "pdf" | "html" | "xml";
141
+ metadata: import("hono/utils/types").JSONValue;
140
142
  id: string;
141
- status: "pending" | "failed" | "ready" | "stale";
142
143
  createdAt: string;
143
144
  updatedAt: string;
144
- metadata: import("hono/utils/types").JSONValue;
145
+ status: "pending" | "failed" | "ready" | "stale";
146
+ format: "json" | "pdf" | "html" | "xml";
145
147
  templateId: string | null;
146
148
  language: string | null;
147
149
  invoiceId: string;
@@ -157,6 +159,41 @@ export declare function createFinanceAdminDocumentRoutes(options?: FinanceDocume
157
159
  status: import("hono/utils/http-status").ContentfulStatusCode;
158
160
  };
159
161
  };
160
- }, "/", "/invoices/:id/regenerate-document">;
162
+ } & {
163
+ "/invoice-renditions/:id/download": {
164
+ $get: {
165
+ input: {
166
+ param: {
167
+ id: string;
168
+ };
169
+ };
170
+ output: {
171
+ error: string;
172
+ };
173
+ outputFormat: "json";
174
+ status: 404;
175
+ } | {
176
+ input: {
177
+ param: {
178
+ id: string;
179
+ };
180
+ };
181
+ output: {
182
+ error: string;
183
+ };
184
+ outputFormat: "json";
185
+ status: 501;
186
+ } | {
187
+ input: {
188
+ param: {
189
+ id: string;
190
+ };
191
+ };
192
+ output: undefined;
193
+ outputFormat: "redirect";
194
+ status: 302;
195
+ };
196
+ };
197
+ }, "/", "/invoice-renditions/:id/download">;
161
198
  export {};
162
199
  //# sourceMappingURL=routes-documents.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"routes-documents.d.ts","sourceRoot":"","sources":["../src/routes-documents.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAGjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAA;AAGhE,KAAK,GAAG,GAAG;IACT,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACjC,SAAS,EAAE;QACT,EAAE,EAAE,kBAAkB,CAAA;QACtB,MAAM,CAAC,EAAE,MAAM,CAAA;KAChB,CAAA;CACF,CAAA;AAED,MAAM,MAAM,wBAAwB,GAAG,UAAU,CAC/C,OAAO,uBAAuB,CAAC,uBAAuB,CACvD,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAA;AAEjB,MAAM,WAAW,2BAA2B;IAC1C,wBAAwB,CAAC,EAAE,wBAAwB,CAAA;IACnD,+BAA+B,CAAC,EAAE,CAChC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC9B,wBAAwB,GAAG,SAAS,CAAA;IACzC,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,QAAQ,GAAG,SAAS,CAAA;CAC9E;AAgBD,wBAAgB,gCAAgC,CAAC,OAAO,GAAE,2BAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6CA0CzF"}
1
+ {"version":3,"file":"routes-documents.d.ts","sourceRoot":"","sources":["../src/routes-documents.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAE/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AASjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAA;AAGhE,KAAK,GAAG,GAAG;IACT,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACjC,SAAS,EAAE;QACT,SAAS,EAAE,eAAe,CAAA;QAC1B,EAAE,EAAE,kBAAkB,CAAA;QACtB,MAAM,CAAC,EAAE,MAAM,CAAA;KAChB,CAAA;CACF,CAAA;AAED,MAAM,MAAM,wBAAwB,GAAG,UAAU,CAC/C,OAAO,uBAAuB,CAAC,uBAAuB,CACvD,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAA;AAEjB,MAAM,WAAW,2BAA2B;IAC1C,wBAAwB,CAAC,EAAE,wBAAwB,CAAA;IACnD,+BAA+B,CAAC,EAAE,CAChC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC9B,wBAAwB,GAAG,SAAS,CAAA;IACzC,0BAA0B,CAAC,EAAE,CAC3B,QAAQ,EAAE,OAAO,EACjB,UAAU,EAAE,MAAM,KACf,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,MAAM,GAAG,IAAI,CAAA;IAC3C,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,QAAQ,GAAG,SAAS,CAAA;CAC9E;AAyCD,wBAAgB,gCAAgC,CAAC,OAAO,GAAE,2BAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4CAiEzF"}
@@ -1,20 +1,44 @@
1
+ import { parseOptionalJsonBody } from "@voyantjs/hono";
1
2
  import { Hono } from "hono";
3
+ import { buildFinanceRouteRuntime, FINANCE_ROUTE_RUNTIME_CONTAINER_KEY, } from "./route-runtime.js";
4
+ import { financeService } from "./service.js";
2
5
  import { financeDocumentsService } from "./service-documents.js";
3
6
  import { generateInvoiceDocumentInputSchema } from "./validation.js";
4
- function resolveInvoiceDocumentGenerator(options, bindings) {
5
- return options?.resolveInvoiceDocumentGenerator?.(bindings) ?? options?.invoiceDocumentGenerator;
7
+ function getRuntime(options, bindings, resolveFromContainer) {
8
+ return (resolveFromContainer?.(FINANCE_ROUTE_RUNTIME_CONTAINER_KEY) ??
9
+ buildFinanceRouteRuntime(bindings, options));
6
10
  }
7
- function resolveEventBus(options, bindings) {
8
- return options?.resolveEventBus?.(bindings) ?? options?.eventBus;
11
+ function getMetadataRecord(metadata) {
12
+ if (!metadata || typeof metadata !== "object" || Array.isArray(metadata)) {
13
+ return null;
14
+ }
15
+ return metadata;
16
+ }
17
+ function maybeUrl(value) {
18
+ return typeof value === "string" && /^https?:\/\//i.test(value) ? value : null;
19
+ }
20
+ function getFallbackDownloadUrl(metadata) {
21
+ const record = getMetadataRecord(metadata);
22
+ if (!record) {
23
+ return null;
24
+ }
25
+ for (const key of ["url", "publicUrl", "downloadUrl", "download_url", "signedUrl"]) {
26
+ const value = maybeUrl(record[key]);
27
+ if (value) {
28
+ return value;
29
+ }
30
+ }
31
+ return null;
9
32
  }
10
33
  export function createFinanceAdminDocumentRoutes(options = {}) {
11
34
  return new Hono()
12
35
  .post("/invoices/:id/generate-document", async (c) => {
13
- const generator = resolveInvoiceDocumentGenerator(options, c.env);
36
+ const runtime = getRuntime(options, c.env, (key) => c.var.container?.resolve(key));
37
+ const generator = runtime.invoiceDocumentGenerator;
14
38
  if (!generator) {
15
39
  return c.json({ error: "Invoice document generator is not configured" }, 501);
16
40
  }
17
- const result = await financeDocumentsService.generateInvoiceDocument(c.get("db"), c.req.param("id"), generateInvoiceDocumentInputSchema.parse(await c.req.json().catch(() => ({}))), { generator, bindings: c.env, eventBus: resolveEventBus(options, c.env) });
41
+ const result = await financeDocumentsService.generateInvoiceDocument(c.get("db"), c.req.param("id"), await parseOptionalJsonBody(c, generateInvoiceDocumentInputSchema), { generator, bindings: c.env, eventBus: runtime.eventBus });
18
42
  if (result.status === "not_found")
19
43
  return c.json({ error: "Invoice not found" }, 404);
20
44
  if (result.status === "generator_failed") {
@@ -23,16 +47,35 @@ export function createFinanceAdminDocumentRoutes(options = {}) {
23
47
  return c.json({ data: result }, 201);
24
48
  })
25
49
  .post("/invoices/:id/regenerate-document", async (c) => {
26
- const generator = resolveInvoiceDocumentGenerator(options, c.env);
50
+ const runtime = getRuntime(options, c.env, (key) => c.var.container?.resolve(key));
51
+ const generator = runtime.invoiceDocumentGenerator;
27
52
  if (!generator) {
28
53
  return c.json({ error: "Invoice document generator is not configured" }, 501);
29
54
  }
30
- const result = await financeDocumentsService.regenerateInvoiceDocument(c.get("db"), c.req.param("id"), generateInvoiceDocumentInputSchema.parse(await c.req.json().catch(() => ({}))), { generator, bindings: c.env, eventBus: resolveEventBus(options, c.env) });
55
+ const result = await financeDocumentsService.regenerateInvoiceDocument(c.get("db"), c.req.param("id"), await parseOptionalJsonBody(c, generateInvoiceDocumentInputSchema), { generator, bindings: c.env, eventBus: runtime.eventBus });
31
56
  if (result.status === "not_found")
32
57
  return c.json({ error: "Invoice not found" }, 404);
33
58
  if (result.status === "generator_failed") {
34
59
  return c.json({ error: "Invoice document generation failed" }, 502);
35
60
  }
36
61
  return c.json({ data: result });
62
+ })
63
+ .get("/invoice-renditions/:id/download", async (c) => {
64
+ const rendition = await financeService.getInvoiceRenditionById(c.get("db"), c.req.param("id"));
65
+ if (!rendition) {
66
+ return c.json({ error: "Invoice rendition not found" }, 404);
67
+ }
68
+ let location = null;
69
+ if (rendition.storageKey) {
70
+ if (!options.resolveDocumentDownloadUrl) {
71
+ return c.json({ error: "Document download resolver is not configured" }, 501);
72
+ }
73
+ location = await options.resolveDocumentDownloadUrl(c.env, rendition.storageKey);
74
+ }
75
+ location ??= getFallbackDownloadUrl(rendition.metadata);
76
+ if (!location) {
77
+ return c.json({ error: "Invoice document is not available" }, 404);
78
+ }
79
+ return c.redirect(location, 302);
37
80
  });
38
81
  }