@timbro/invoices 0.7.0-next.30

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 (144) hide show
  1. package/README.md +308 -0
  2. package/dist/artifact-headers.d.ts +9 -0
  3. package/dist/artifact-headers.d.ts.map +1 -0
  4. package/dist/artifact-headers.js +43 -0
  5. package/dist/certificate-custody-import.d.ts +13 -0
  6. package/dist/certificate-custody-import.d.ts.map +1 -0
  7. package/dist/certificate-custody-import.js +30 -0
  8. package/dist/certificate-custody-readiness.d.ts +6 -0
  9. package/dist/certificate-custody-readiness.d.ts.map +1 -0
  10. package/dist/certificate-custody-readiness.js +13 -0
  11. package/dist/collection.d.ts +13 -0
  12. package/dist/collection.d.ts.map +1 -0
  13. package/dist/collection.js +21 -0
  14. package/dist/direct-connection.d.ts +74 -0
  15. package/dist/direct-connection.d.ts.map +1 -0
  16. package/dist/direct-connection.js +192 -0
  17. package/dist/document-node.d.ts +15 -0
  18. package/dist/document-node.d.ts.map +1 -0
  19. package/dist/document-node.js +67 -0
  20. package/dist/document-worker-protocol.d.ts +30 -0
  21. package/dist/document-worker-protocol.d.ts.map +1 -0
  22. package/dist/document-worker-protocol.js +103 -0
  23. package/dist/document-worker.d.ts +2 -0
  24. package/dist/document-worker.d.ts.map +1 -0
  25. package/dist/document-worker.js +71 -0
  26. package/dist/document.d.ts +38 -0
  27. package/dist/document.d.ts.map +1 -0
  28. package/dist/document.js +204 -0
  29. package/dist/fiscal-delivery.d.ts +12 -0
  30. package/dist/fiscal-delivery.d.ts.map +1 -0
  31. package/dist/fiscal-delivery.js +45 -0
  32. package/dist/fiscal-engine-runtime.manifest.json +637 -0
  33. package/dist/fiscal-engine-runtime.provenance.json +1010 -0
  34. package/dist/fiscal-error.d.ts +23 -0
  35. package/dist/fiscal-error.d.ts.map +1 -0
  36. package/dist/fiscal-error.js +36 -0
  37. package/dist/fiscal-numbering-readiness.d.ts +6 -0
  38. package/dist/fiscal-numbering-readiness.d.ts.map +1 -0
  39. package/dist/fiscal-numbering-readiness.js +13 -0
  40. package/dist/fiscal-operation-timing.d.ts +9 -0
  41. package/dist/fiscal-operation-timing.d.ts.map +1 -0
  42. package/dist/fiscal-operation-timing.js +22 -0
  43. package/dist/fiscal-operation.d.ts +112 -0
  44. package/dist/fiscal-operation.d.ts.map +1 -0
  45. package/dist/fiscal-operation.js +193 -0
  46. package/dist/fiscal-receipt.d.ts +19 -0
  47. package/dist/fiscal-receipt.d.ts.map +1 -0
  48. package/dist/fiscal-receipt.js +66 -0
  49. package/dist/generated/index.d.ts +5 -0
  50. package/dist/generated/index.d.ts.map +1 -0
  51. package/dist/generated/index.js +4 -0
  52. package/dist/generated/problem-catalog.d.ts +7 -0
  53. package/dist/generated/problem-catalog.d.ts.map +1 -0
  54. package/dist/generated/problem-catalog.js +198 -0
  55. package/dist/generated/sdk.gen.d.ts +240 -0
  56. package/dist/generated/sdk.gen.d.ts.map +1 -0
  57. package/dist/generated/sdk.gen.js +4486 -0
  58. package/dist/generated/types.gen.d.ts +6906 -0
  59. package/dist/generated/types.gen.d.ts.map +1 -0
  60. package/dist/generated/types.gen.js +2 -0
  61. package/dist/generated/zod.gen.d.ts +146666 -0
  62. package/dist/generated/zod.gen.d.ts.map +1 -0
  63. package/dist/generated/zod.gen.js +25077 -0
  64. package/dist/generated-operation-client.d.ts +47 -0
  65. package/dist/generated-operation-client.d.ts.map +1 -0
  66. package/dist/generated-operation-client.js +112 -0
  67. package/dist/generated-problem.d.ts +12 -0
  68. package/dist/generated-problem.d.ts.map +1 -0
  69. package/dist/generated-problem.js +37 -0
  70. package/dist/hosted-tenant.d.ts +38 -0
  71. package/dist/hosted-tenant.d.ts.map +1 -0
  72. package/dist/hosted-tenant.js +67 -0
  73. package/dist/hosted-workspace-transport.d.ts +15 -0
  74. package/dist/hosted-workspace-transport.d.ts.map +1 -0
  75. package/dist/hosted-workspace-transport.js +15 -0
  76. package/dist/idempotency-key.d.ts +3 -0
  77. package/dist/idempotency-key.d.ts.map +1 -0
  78. package/dist/idempotency-key.js +11 -0
  79. package/dist/index.d.ts +42 -0
  80. package/dist/index.d.ts.map +1 -0
  81. package/dist/index.js +14 -0
  82. package/dist/printed-representation.d.ts +23 -0
  83. package/dist/printed-representation.d.ts.map +1 -0
  84. package/dist/printed-representation.js +135 -0
  85. package/dist/problem-contract.d.ts +265 -0
  86. package/dist/problem-contract.d.ts.map +1 -0
  87. package/dist/problem-contract.js +25 -0
  88. package/dist/public-case.d.ts +15 -0
  89. package/dist/public-case.d.ts.map +1 -0
  90. package/dist/public-case.js +26 -0
  91. package/dist/received-documents.d.ts +35 -0
  92. package/dist/received-documents.d.ts.map +1 -0
  93. package/dist/received-documents.js +83 -0
  94. package/dist/sha256.d.ts +2 -0
  95. package/dist/sha256.d.ts.map +1 -0
  96. package/dist/sha256.js +6 -0
  97. package/dist/signed-document.d.ts +15 -0
  98. package/dist/signed-document.d.ts.map +1 -0
  99. package/dist/signed-document.js +57 -0
  100. package/dist/source-command-validation.d.ts +3 -0
  101. package/dist/source-command-validation.d.ts.map +1 -0
  102. package/dist/source-command-validation.js +14 -0
  103. package/dist/source-connection-activation.d.ts +18 -0
  104. package/dist/source-connection-activation.d.ts.map +1 -0
  105. package/dist/source-connection-activation.js +41 -0
  106. package/dist/source-connection-transport.d.ts +8 -0
  107. package/dist/source-connection-transport.d.ts.map +1 -0
  108. package/dist/source-connection-transport.js +8 -0
  109. package/dist/source-connection.d.ts +18 -0
  110. package/dist/source-connection.d.ts.map +1 -0
  111. package/dist/source-connection.js +35 -0
  112. package/dist/stamp-server-http-transport.d.ts +23 -0
  113. package/dist/stamp-server-http-transport.d.ts.map +1 -0
  114. package/dist/stamp-server-http-transport.js +179 -0
  115. package/dist/timbro-client.d.ts +124 -0
  116. package/dist/timbro-client.d.ts.map +1 -0
  117. package/dist/timbro-client.js +72 -0
  118. package/dist/timbro_fiscal_engine.js +239 -0
  119. package/dist/timbro_fiscal_engine_bg.wasm +0 -0
  120. package/dist/transport-contract.d.ts +16 -0
  121. package/dist/transport-contract.d.ts.map +1 -0
  122. package/dist/transport-contract.js +1 -0
  123. package/dist/webhook-delivery.d.ts +14 -0
  124. package/dist/webhook-delivery.d.ts.map +1 -0
  125. package/dist/webhook-delivery.js +32 -0
  126. package/dist/webhook-event.d.ts +2711 -0
  127. package/dist/webhook-event.d.ts.map +1 -0
  128. package/dist/webhook-event.js +15 -0
  129. package/dist/webhook-registration.d.ts +12 -0
  130. package/dist/webhook-registration.d.ts.map +1 -0
  131. package/dist/webhook-registration.js +37 -0
  132. package/dist/webhook-replay.d.ts +12 -0
  133. package/dist/webhook-replay.d.ts.map +1 -0
  134. package/dist/webhook-replay.js +27 -0
  135. package/dist/webhook-verification.d.ts +25 -0
  136. package/dist/webhook-verification.d.ts.map +1 -0
  137. package/dist/webhook-verification.js +53 -0
  138. package/dist/workspace-session-transport.d.ts +8 -0
  139. package/dist/workspace-session-transport.d.ts.map +1 -0
  140. package/dist/workspace-session-transport.js +11 -0
  141. package/dist/workspace.d.ts +74 -0
  142. package/dist/workspace.d.ts.map +1 -0
  143. package/dist/workspace.js +278 -0
  144. package/package.json +73 -0
@@ -0,0 +1,204 @@
1
+ // biome-ignore-all lint/correctness/useQwikValidLexicalScope: this module is a plain SDK worker adapter, not a Qwik component.
2
+ import { DOCUMENT_EVALUATION_PROTOCOL as DOCUMENT_EVALUATION_PROTOCOL_VALUE, decodeDocumentWorkerEvent, decodeDocumentWorkerResponse, } from "./document-worker-protocol.js";
3
+ import { zSourceDocumentEvaluationRequest } from "./generated/index.js";
4
+ export const DOCUMENT_EVALUATION_PROTOCOL = DOCUMENT_EVALUATION_PROTOCOL_VALUE;
5
+ export class FiscalDocumentEvaluatorError extends Error {
6
+ code;
7
+ constructor(message, code) {
8
+ super(message);
9
+ this.name = "FiscalDocumentEvaluatorError";
10
+ this.code = code;
11
+ }
12
+ }
13
+ let defaultEvaluator;
14
+ /** Evaluates a Source sales draft through the lazy browser-safe Rust/Wasm document runtime. */
15
+ export function evaluateFiscalDocument(input) {
16
+ defaultEvaluator ??= createDocumentEvaluator();
17
+ return defaultEvaluator.evaluate(input);
18
+ }
19
+ /** Releases the lazily created default worker, if one has been created. */
20
+ export function disposeFiscalDocumentEvaluator() {
21
+ defaultEvaluator?.dispose();
22
+ defaultEvaluator = undefined;
23
+ }
24
+ /** Creates an evaluator while keeping worker and artifact details out of the common call. */
25
+ export function createDocumentEvaluator(options = {}) {
26
+ const workerRuntime = options.runtime === undefined ? createWorkerRuntime(options) : undefined;
27
+ const runtime = options.runtime ??
28
+ ((requestJson) => {
29
+ if (workerRuntime === undefined) {
30
+ throw new FiscalDocumentEvaluatorError("no fiscal document runtime is available", "runtime_unavailable");
31
+ }
32
+ return workerRuntime.evaluate(requestJson);
33
+ });
34
+ return {
35
+ async evaluate(input) {
36
+ const request = zSourceDocumentEvaluationRequest.parse({
37
+ protocol: DOCUMENT_EVALUATION_PROTOCOL,
38
+ request_id: crypto.randomUUID(),
39
+ document: input.document,
40
+ });
41
+ const serialized = await runtime(JSON.stringify(request));
42
+ if (typeof serialized !== "string") {
43
+ throw new FiscalDocumentEvaluatorError("the fiscal document runtime returned a non-string response", "protocol_mismatch");
44
+ }
45
+ let candidate;
46
+ try {
47
+ candidate = JSON.parse(serialized);
48
+ }
49
+ catch (cause) {
50
+ const error = new FiscalDocumentEvaluatorError("the fiscal document runtime returned invalid JSON", "protocol_mismatch");
51
+ error.cause = cause;
52
+ throw error;
53
+ }
54
+ const decoded = decodeDocumentWorkerResponse(candidate, request.request_id);
55
+ if (decoded.outcome === "protocol_mismatch") {
56
+ throw new FiscalDocumentEvaluatorError(decoded.detail, "protocol_mismatch");
57
+ }
58
+ return decoded.response;
59
+ },
60
+ dispose: () => workerRuntime?.dispose(),
61
+ };
62
+ }
63
+ function createWorkerRuntime(options) {
64
+ const worker = options.worker ?? createDefaultWorker();
65
+ const timeoutMs = options.timeoutMs ?? 15_000;
66
+ const glueModuleUrl = options.glueModuleUrl ?? new URL("./timbro_fiscal_engine.js", import.meta.url).href;
67
+ const wasmModuleUrl = options.wasmModuleUrl ?? new URL("./timbro_fiscal_engine_bg.wasm", import.meta.url).href;
68
+ let initialized = false;
69
+ let sequence = 0;
70
+ const pending = new Map();
71
+ let disposed = false;
72
+ let terminalError;
73
+ const rejectAll = (error) => {
74
+ for (const [requestId, item] of pending) {
75
+ clearTimeout(item.timer);
76
+ pending.delete(requestId);
77
+ item.reject(error);
78
+ }
79
+ };
80
+ const rejectOne = (requestId, error) => {
81
+ const item = pending.get(requestId);
82
+ if (item === undefined) {
83
+ return;
84
+ }
85
+ clearTimeout(item.timer);
86
+ pending.delete(requestId);
87
+ item.reject(error);
88
+ };
89
+ const complete = (requestId, response) => {
90
+ const item = pending.get(requestId);
91
+ if (item === undefined) {
92
+ return;
93
+ }
94
+ clearTimeout(item.timer);
95
+ pending.delete(requestId);
96
+ item.resolve(JSON.stringify(response));
97
+ };
98
+ const routeFailure = (requestId, detail, code) => {
99
+ const error = new FiscalDocumentEvaluatorError(detail, code);
100
+ if (requestId !== null && pending.has(requestId)) {
101
+ rejectOne(requestId, error);
102
+ }
103
+ else {
104
+ rejectAll(error);
105
+ }
106
+ };
107
+ const onMessage = (event) => {
108
+ if (!("data" in event)) {
109
+ return;
110
+ }
111
+ const candidate = event.data;
112
+ const requestId = workerRequestId(candidate);
113
+ const expectedEvaluatorRequestId = pending.get(requestId ?? "")?.evaluatorRequestId ?? null;
114
+ const decoded = decodeDocumentWorkerEvent(candidate, requestId, expectedEvaluatorRequestId);
115
+ if (decoded.outcome !== "evaluated") {
116
+ routeFailure(requestId, decoded.detail, decoded.outcome === "failed" ? "worker_failure" : "protocol_mismatch");
117
+ return;
118
+ }
119
+ if (requestId !== null) {
120
+ complete(requestId, decoded.response);
121
+ }
122
+ };
123
+ const onWorkerError = () => {
124
+ terminalError = new FiscalDocumentEvaluatorError("the fiscal document worker failed", "worker_failure");
125
+ rejectAll(terminalError);
126
+ };
127
+ const onMessageError = () => rejectAll(new FiscalDocumentEvaluatorError("the fiscal document worker returned an unreadable message", "protocol_mismatch"));
128
+ const postEvaluation = (requestId, requestJson, rejectOneRequest) => {
129
+ try {
130
+ if (!initialized) {
131
+ worker.postMessage({
132
+ type: "initialize",
133
+ glue_module_url: glueModuleUrl,
134
+ wasm_module_url: wasmModuleUrl,
135
+ });
136
+ initialized = true;
137
+ }
138
+ worker.postMessage({ type: "evaluate", request_id: requestId, request: requestJson });
139
+ }
140
+ catch (cause) {
141
+ rejectOneRequest(requestId, new FiscalDocumentEvaluatorError(cause instanceof Error
142
+ ? cause.message
143
+ : "the fiscal document worker could not be reached", "worker_failure"));
144
+ }
145
+ };
146
+ worker.addEventListener("message", onMessage);
147
+ worker.addEventListener("error", onWorkerError);
148
+ worker.addEventListener("messageerror", onMessageError);
149
+ const evaluate = (requestJson) => {
150
+ if (disposed || terminalError !== undefined) {
151
+ return Promise.reject(terminalError ??
152
+ new FiscalDocumentEvaluatorError("the fiscal document evaluator was disposed", "worker_failure"));
153
+ }
154
+ sequence += 1;
155
+ const requestId = `document-${String(sequence)}`;
156
+ return new Promise((resolve, reject) => {
157
+ let evaluatorRequestId;
158
+ try {
159
+ evaluatorRequestId = parseEvaluatorRequestId(requestJson);
160
+ }
161
+ catch (cause) {
162
+ reject(new FiscalDocumentEvaluatorError(cause instanceof Error ? cause.message : "invalid evaluator request", "protocol_mismatch"));
163
+ return;
164
+ }
165
+ const timer = setTimeout(() => rejectOne(requestId, new FiscalDocumentEvaluatorError(`the fiscal document worker did not answer within ${String(timeoutMs)} ms`, "worker_failure")), timeoutMs);
166
+ pending.set(requestId, { resolve, reject, timer, evaluatorRequestId });
167
+ postEvaluation(requestId, requestJson, rejectOne);
168
+ });
169
+ };
170
+ return {
171
+ evaluate,
172
+ dispose: () => {
173
+ if (disposed) {
174
+ return;
175
+ }
176
+ disposed = true;
177
+ rejectAll(new FiscalDocumentEvaluatorError("the fiscal document evaluator was disposed", "worker_failure"));
178
+ worker.removeEventListener?.("message", onMessage);
179
+ worker.removeEventListener?.("error", onWorkerError);
180
+ worker.removeEventListener?.("messageerror", onMessageError);
181
+ worker.terminate?.();
182
+ },
183
+ };
184
+ }
185
+ function parseEvaluatorRequestId(requestJson) {
186
+ const parsed = JSON.parse(requestJson);
187
+ if (typeof parsed.request_id !== "string") {
188
+ throw new Error("missing evaluator request id");
189
+ }
190
+ return parsed.request_id;
191
+ }
192
+ function workerRequestId(candidate) {
193
+ if (typeof candidate !== "object" || candidate === null || Array.isArray(candidate)) {
194
+ return null;
195
+ }
196
+ const requestId = candidate.request_id;
197
+ return typeof requestId === "string" ? requestId : null;
198
+ }
199
+ function createDefaultWorker() {
200
+ if (typeof Worker !== "function") {
201
+ throw new FiscalDocumentEvaluatorError("no browser Worker runtime is available", "runtime_unavailable");
202
+ }
203
+ return new Worker(new URL("./document-worker.js", import.meta.url), { type: "module" });
204
+ }
@@ -0,0 +1,12 @@
1
+ import { type FiscalDeliveryResource } from "./generated/index.ts";
2
+ import type { Client } from "./generated-operation-client.ts";
3
+ export type FiscalDeliveryCreateCommand = {
4
+ readonly accountClaimUrl?: string;
5
+ readonly fiscalOperationId: string;
6
+ readonly idempotencyKey: string;
7
+ readonly recipientEmail: string;
8
+ readonly signal?: AbortSignal;
9
+ };
10
+ export declare function createFiscalDeliveryResource(client: Client, command: FiscalDeliveryCreateCommand): Promise<FiscalDeliveryResource>;
11
+ export declare function getFiscalDeliveryResource(client: Client, deliveryId: string, signal: AbortSignal | undefined): Promise<FiscalDeliveryResource | undefined>;
12
+ //# sourceMappingURL=fiscal-delivery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fiscal-delivery.d.ts","sourceRoot":"","sources":["../src/fiscal-delivery.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,sBAAsB,EAG5B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAC;AAI9D,MAAM,MAAM,2BAA2B,GAAG;IACxC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CAC/B,CAAC;AAEF,wBAAsB,4BAA4B,CAChD,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,2BAA2B,GACnC,OAAO,CAAC,sBAAsB,CAAC,CAwBjC;AAED,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,WAAW,GAAG,SAAS,GAC9B,OAAO,CAAC,sBAAsB,GAAG,SAAS,CAAC,CAsB7C"}
@@ -0,0 +1,45 @@
1
+ import { createFiscalDelivery, retrieveFiscalDelivery, zCreateFiscalDeliveryRequest, } from "./generated/index.js";
2
+ import { isExpectedNotFoundProblem, throwGeneratedProblem } from "./generated-problem.js";
3
+ import { isValidIdempotencyKey } from "./idempotency-key.js";
4
+ export async function createFiscalDeliveryResource(client, command) {
5
+ if (command.fiscalOperationId.trim() === "") {
6
+ throw new TypeError("fiscalOperationId must not be blank");
7
+ }
8
+ if (!isValidIdempotencyKey(command.idempotencyKey)) {
9
+ throw new TypeError("idempotencyKey must contain 16 to 255 allowed characters");
10
+ }
11
+ const body = zCreateFiscalDeliveryRequest.parse({
12
+ fiscal_operation_id: command.fiscalOperationId,
13
+ recipient_email: command.recipientEmail,
14
+ ...(command.accountClaimUrl === undefined
15
+ ? {}
16
+ : { account_claim_url: command.accountClaimUrl }),
17
+ });
18
+ const response = await createFiscalDelivery({
19
+ client,
20
+ body,
21
+ headers: { "idempotency-key": command.idempotencyKey },
22
+ ...(command.signal === undefined ? {} : { signal: command.signal }),
23
+ });
24
+ if (response.status !== 200 && response.status !== 201) {
25
+ throwGeneratedProblem(response, "Fiscal delivery creation failed");
26
+ }
27
+ return response.body;
28
+ }
29
+ export async function getFiscalDeliveryResource(client, deliveryId, signal) {
30
+ if (deliveryId.trim() === "") {
31
+ throw new TypeError("deliveryId must not be blank");
32
+ }
33
+ const response = await retrieveFiscalDelivery({
34
+ client,
35
+ path: { fiscal_delivery_id: deliveryId },
36
+ ...(signal === undefined ? {} : { signal }),
37
+ });
38
+ if (isExpectedNotFoundProblem(response, "fiscal_delivery_not_found", "Fiscal delivery lookup failed")) {
39
+ return;
40
+ }
41
+ if (response.status !== 200) {
42
+ throwGeneratedProblem(response, "Fiscal delivery lookup failed");
43
+ }
44
+ return response.body;
45
+ }