@beignet/core 0.0.1
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/CHANGELOG.md +5 -0
- package/README.md +288 -0
- package/dist/application/index.d.ts +260 -0
- package/dist/application/index.d.ts.map +1 -0
- package/dist/application/index.js +324 -0
- package/dist/application/index.js.map +1 -0
- package/dist/client/client.d.ts +241 -0
- package/dist/client/client.d.ts.map +1 -0
- package/dist/client/client.js +531 -0
- package/dist/client/client.js.map +1 -0
- package/dist/client/index.d.ts +10 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +8 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/types.d.ts +139 -0
- package/dist/client/types.d.ts.map +1 -0
- package/dist/client/types.js +2 -0
- package/dist/client/types.js.map +1 -0
- package/dist/config/index.d.ts +122 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +216 -0
- package/dist/config/index.js.map +1 -0
- package/dist/contracts/contract-builder.d.ts +121 -0
- package/dist/contracts/contract-builder.d.ts.map +1 -0
- package/dist/contracts/contract-builder.js +346 -0
- package/dist/contracts/contract-builder.js.map +1 -0
- package/dist/contracts/contract-group.d.ts +106 -0
- package/dist/contracts/contract-group.d.ts.map +1 -0
- package/dist/contracts/contract-group.js +240 -0
- package/dist/contracts/contract-group.js.map +1 -0
- package/dist/contracts/contract-like.d.ts +21 -0
- package/dist/contracts/contract-like.d.ts.map +1 -0
- package/dist/contracts/contract-like.js +9 -0
- package/dist/contracts/contract-like.js.map +1 -0
- package/dist/contracts/index.d.ts +15 -0
- package/dist/contracts/index.d.ts.map +1 -0
- package/dist/contracts/index.js +11 -0
- package/dist/contracts/index.js.map +1 -0
- package/dist/contracts/openapi-meta.d.ts +23 -0
- package/dist/contracts/openapi-meta.d.ts.map +1 -0
- package/dist/contracts/openapi-meta.js +2 -0
- package/dist/contracts/openapi-meta.js.map +1 -0
- package/dist/contracts/path-template.d.ts +17 -0
- package/dist/contracts/path-template.d.ts.map +1 -0
- package/dist/contracts/path-template.js +50 -0
- package/dist/contracts/path-template.js.map +1 -0
- package/dist/contracts/rate-limit.d.ts +50 -0
- package/dist/contracts/rate-limit.d.ts.map +1 -0
- package/dist/contracts/rate-limit.js +2 -0
- package/dist/contracts/rate-limit.js.map +1 -0
- package/dist/contracts/types.d.ts +97 -0
- package/dist/contracts/types.d.ts.map +1 -0
- package/dist/contracts/types.js +54 -0
- package/dist/contracts/types.js.map +1 -0
- package/dist/contracts/utils.d.ts +3 -0
- package/dist/contracts/utils.d.ts.map +1 -0
- package/dist/contracts/utils.js +44 -0
- package/dist/contracts/utils.js.map +1 -0
- package/dist/domain/entity.d.ts +87 -0
- package/dist/domain/entity.d.ts.map +1 -0
- package/dist/domain/entity.js +155 -0
- package/dist/domain/entity.js.map +1 -0
- package/dist/domain/events.d.ts +41 -0
- package/dist/domain/events.d.ts.map +1 -0
- package/dist/domain/events.js +21 -0
- package/dist/domain/events.js.map +1 -0
- package/dist/domain/index.d.ts +14 -0
- package/dist/domain/index.d.ts.map +1 -0
- package/dist/domain/index.js +14 -0
- package/dist/domain/index.js.map +1 -0
- package/dist/domain/value-object.d.ts +60 -0
- package/dist/domain/value-object.d.ts.map +1 -0
- package/dist/domain/value-object.js +87 -0
- package/dist/domain/value-object.js.map +1 -0
- package/dist/errors/catalog.d.ts +71 -0
- package/dist/errors/catalog.d.ts.map +1 -0
- package/dist/errors/catalog.js +71 -0
- package/dist/errors/catalog.js.map +1 -0
- package/dist/errors/http.d.ts +77 -0
- package/dist/errors/http.d.ts.map +1 -0
- package/dist/errors/http.js +74 -0
- package/dist/errors/http.js.map +1 -0
- package/dist/errors/index.d.ts +10 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +14 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/errors/response.d.ts +26 -0
- package/dist/errors/response.d.ts.map +1 -0
- package/dist/errors/response.js +34 -0
- package/dist/errors/response.js.map +1 -0
- package/dist/errors/validation.d.ts +18 -0
- package/dist/errors/validation.d.ts.map +1 -0
- package/dist/errors/validation.js +21 -0
- package/dist/errors/validation.js.map +1 -0
- package/dist/events/index.d.ts +58 -0
- package/dist/events/index.d.ts.map +1 -0
- package/dist/events/index.js +102 -0
- package/dist/events/index.js.map +1 -0
- package/dist/jobs/index.d.ts +56 -0
- package/dist/jobs/index.d.ts.map +1 -0
- package/dist/jobs/index.js +89 -0
- package/dist/jobs/index.js.map +1 -0
- package/dist/mail/index.d.ts +75 -0
- package/dist/mail/index.d.ts.map +1 -0
- package/dist/mail/index.js +84 -0
- package/dist/mail/index.js.map +1 -0
- package/dist/openapi/index.d.ts +207 -0
- package/dist/openapi/index.d.ts.map +1 -0
- package/dist/openapi/index.js +449 -0
- package/dist/openapi/index.js.map +1 -0
- package/dist/openapi/schema-introspector.d.ts +38 -0
- package/dist/openapi/schema-introspector.d.ts.map +1 -0
- package/dist/openapi/schema-introspector.js +67 -0
- package/dist/openapi/schema-introspector.js.map +1 -0
- package/dist/ports/audit.d.ts +58 -0
- package/dist/ports/audit.d.ts.map +1 -0
- package/dist/ports/audit.js +74 -0
- package/dist/ports/audit.js.map +1 -0
- package/dist/ports/auth.d.ts +23 -0
- package/dist/ports/auth.d.ts.map +1 -0
- package/dist/ports/auth.js +31 -0
- package/dist/ports/auth.js.map +1 -0
- package/dist/ports/builder.d.ts +61 -0
- package/dist/ports/builder.d.ts.map +1 -0
- package/dist/ports/builder.js +48 -0
- package/dist/ports/builder.js.map +1 -0
- package/dist/ports/cache.d.ts +15 -0
- package/dist/ports/cache.d.ts.map +1 -0
- package/dist/ports/cache.js +57 -0
- package/dist/ports/cache.js.map +1 -0
- package/dist/ports/clock.d.ts +10 -0
- package/dist/ports/clock.d.ts.map +1 -0
- package/dist/ports/clock.js +21 -0
- package/dist/ports/clock.js.map +1 -0
- package/dist/ports/events.d.ts +71 -0
- package/dist/ports/events.d.ts.map +1 -0
- package/dist/ports/events.js +2 -0
- package/dist/ports/events.js.map +1 -0
- package/dist/ports/id-generator.d.ts +12 -0
- package/dist/ports/id-generator.d.ts.map +1 -0
- package/dist/ports/id-generator.js +22 -0
- package/dist/ports/id-generator.js.map +1 -0
- package/dist/ports/index.d.ts +98 -0
- package/dist/ports/index.d.ts.map +1 -0
- package/dist/ports/index.js +67 -0
- package/dist/ports/index.js.map +1 -0
- package/dist/ports/logger.d.ts +22 -0
- package/dist/ports/logger.d.ts.map +1 -0
- package/dist/ports/logger.js +34 -0
- package/dist/ports/logger.js.map +1 -0
- package/dist/ports/mailer.d.ts +6 -0
- package/dist/ports/mailer.d.ts.map +1 -0
- package/dist/ports/mailer.js +2 -0
- package/dist/ports/mailer.js.map +1 -0
- package/dist/ports/policy.d.ts +53 -0
- package/dist/ports/policy.d.ts.map +1 -0
- package/dist/ports/policy.js +81 -0
- package/dist/ports/policy.js.map +1 -0
- package/dist/ports/rate-limit.d.ts +41 -0
- package/dist/ports/rate-limit.d.ts.map +1 -0
- package/dist/ports/rate-limit.js +37 -0
- package/dist/ports/rate-limit.js.map +1 -0
- package/dist/ports/redaction.d.ts +26 -0
- package/dist/ports/redaction.d.ts.map +1 -0
- package/dist/ports/redaction.js +126 -0
- package/dist/ports/redaction.js.map +1 -0
- package/dist/ports/schedules.d.ts +9 -0
- package/dist/ports/schedules.d.ts.map +1 -0
- package/dist/ports/schedules.js +2 -0
- package/dist/ports/schedules.js.map +1 -0
- package/dist/ports/storage.d.ts +47 -0
- package/dist/ports/storage.d.ts.map +1 -0
- package/dist/ports/storage.js +185 -0
- package/dist/ports/storage.js.map +1 -0
- package/dist/ports/testing.d.ts +73 -0
- package/dist/ports/testing.d.ts.map +1 -0
- package/dist/ports/testing.js +105 -0
- package/dist/ports/testing.js.map +1 -0
- package/dist/ports/unit-of-work.d.ts +56 -0
- package/dist/ports/unit-of-work.d.ts.map +1 -0
- package/dist/ports/unit-of-work.js +64 -0
- package/dist/ports/unit-of-work.js.map +1 -0
- package/dist/providers/index.d.ts +8 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +8 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/instrumentation.d.ts +91 -0
- package/dist/providers/instrumentation.d.ts.map +1 -0
- package/dist/providers/instrumentation.js +93 -0
- package/dist/providers/instrumentation.js.map +1 -0
- package/dist/providers/provider.d.ts +146 -0
- package/dist/providers/provider.d.ts.map +1 -0
- package/dist/providers/provider.js +31 -0
- package/dist/providers/provider.js.map +1 -0
- package/dist/schedules/index.d.ts +105 -0
- package/dist/schedules/index.d.ts.map +1 -0
- package/dist/schedules/index.js +178 -0
- package/dist/schedules/index.js.map +1 -0
- package/dist/server/contract-like.d.ts +5 -0
- package/dist/server/contract-like.d.ts.map +1 -0
- package/dist/server/contract-like.js +5 -0
- package/dist/server/contract-like.js.map +1 -0
- package/dist/server/health.d.ts +41 -0
- package/dist/server/health.d.ts.map +1 -0
- package/dist/server/health.js +46 -0
- package/dist/server/health.js.map +1 -0
- package/dist/server/hooks/auth.d.ts +42 -0
- package/dist/server/hooks/auth.d.ts.map +1 -0
- package/dist/server/hooks/auth.js +61 -0
- package/dist/server/hooks/auth.js.map +1 -0
- package/dist/server/hooks/cors.d.ts +13 -0
- package/dist/server/hooks/cors.d.ts.map +1 -0
- package/dist/server/hooks/cors.js +70 -0
- package/dist/server/hooks/cors.js.map +1 -0
- package/dist/server/hooks/errors.d.ts +66 -0
- package/dist/server/hooks/errors.d.ts.map +1 -0
- package/dist/server/hooks/errors.js +83 -0
- package/dist/server/hooks/errors.js.map +1 -0
- package/dist/server/hooks/index.d.ts +12 -0
- package/dist/server/hooks/index.d.ts.map +1 -0
- package/dist/server/hooks/index.js +12 -0
- package/dist/server/hooks/index.js.map +1 -0
- package/dist/server/hooks/logging.d.ts +33 -0
- package/dist/server/hooks/logging.d.ts.map +1 -0
- package/dist/server/hooks/logging.js +90 -0
- package/dist/server/hooks/logging.js.map +1 -0
- package/dist/server/hooks/rate-limit.d.ts +29 -0
- package/dist/server/hooks/rate-limit.d.ts.map +1 -0
- package/dist/server/hooks/rate-limit.js +93 -0
- package/dist/server/hooks/rate-limit.js.map +1 -0
- package/dist/server/hooks/utils.d.ts +9 -0
- package/dist/server/hooks/utils.d.ts.map +1 -0
- package/dist/server/hooks/utils.js +16 -0
- package/dist/server/hooks/utils.js.map +1 -0
- package/dist/server/hooks.d.ts +2 -0
- package/dist/server/hooks.d.ts.map +1 -0
- package/dist/server/hooks.js +2 -0
- package/dist/server/hooks.js.map +1 -0
- package/dist/server/http.d.ts +124 -0
- package/dist/server/http.d.ts.map +1 -0
- package/dist/server/http.js +2 -0
- package/dist/server/http.js.map +1 -0
- package/dist/server/index.d.ts +19 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +15 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/openapi.d.ts +32 -0
- package/dist/server/openapi.d.ts.map +1 -0
- package/dist/server/openapi.js +43 -0
- package/dist/server/openapi.js.map +1 -0
- package/dist/server/providers/index.d.ts +4 -0
- package/dist/server/providers/index.d.ts.map +1 -0
- package/dist/server/providers/index.js +4 -0
- package/dist/server/providers/index.js.map +1 -0
- package/dist/server/providers/loadProviderConfig.d.ts +7 -0
- package/dist/server/providers/loadProviderConfig.d.ts.map +1 -0
- package/dist/server/providers/loadProviderConfig.js +42 -0
- package/dist/server/providers/loadProviderConfig.js.map +1 -0
- package/dist/server/server.d.ts +86 -0
- package/dist/server/server.d.ts.map +1 -0
- package/dist/server/server.js +1031 -0
- package/dist/server/server.js.map +1 -0
- package/dist/server/types.d.ts +3 -0
- package/dist/server/types.d.ts.map +1 -0
- package/dist/server/types.js +3 -0
- package/dist/server/types.js.map +1 -0
- package/package.json +129 -0
- package/src/application/index.ts +747 -0
- package/src/client/client.ts +1105 -0
- package/src/client/index.ts +45 -0
- package/src/client/types.ts +305 -0
- package/src/config/index.ts +497 -0
- package/src/contracts/contract-builder.ts +583 -0
- package/src/contracts/contract-group.ts +502 -0
- package/src/contracts/contract-like.ts +29 -0
- package/src/contracts/index.ts +53 -0
- package/src/contracts/openapi-meta.ts +22 -0
- package/src/contracts/path-template.ts +91 -0
- package/src/contracts/rate-limit.ts +50 -0
- package/src/contracts/types.ts +207 -0
- package/src/contracts/utils.ts +56 -0
- package/src/domain/entity.ts +256 -0
- package/src/domain/events.ts +52 -0
- package/src/domain/index.ts +18 -0
- package/src/domain/value-object.ts +135 -0
- package/src/errors/catalog.ts +149 -0
- package/src/errors/http.ts +80 -0
- package/src/errors/index.ts +28 -0
- package/src/errors/response.ts +54 -0
- package/src/errors/validation.ts +35 -0
- package/src/events/index.ts +246 -0
- package/src/jobs/index.ts +211 -0
- package/src/mail/index.ts +177 -0
- package/src/openapi/index.ts +865 -0
- package/src/openapi/schema-introspector.ts +107 -0
- package/src/ports/audit.ts +176 -0
- package/src/ports/auth.ts +76 -0
- package/src/ports/builder.ts +97 -0
- package/src/ports/cache.ts +94 -0
- package/src/ports/clock.ts +34 -0
- package/src/ports/events.ts +100 -0
- package/src/ports/id-generator.ts +36 -0
- package/src/ports/index.ts +221 -0
- package/src/ports/logger.ts +67 -0
- package/src/ports/policy.ts +242 -0
- package/src/ports/rate-limit.ts +91 -0
- package/src/ports/redaction.ts +199 -0
- package/src/ports/storage.ts +282 -0
- package/src/ports/testing.ts +234 -0
- package/src/ports/unit-of-work.ts +134 -0
- package/src/providers/index.ts +40 -0
- package/src/providers/instrumentation.ts +248 -0
- package/src/providers/provider.ts +191 -0
- package/src/schedules/index.ts +442 -0
- package/src/server/contract-like.ts +8 -0
- package/src/server/health.ts +82 -0
- package/src/server/hooks/auth.ts +147 -0
- package/src/server/hooks/cors.ts +87 -0
- package/src/server/hooks/errors.ts +126 -0
- package/src/server/hooks/index.ts +43 -0
- package/src/server/hooks/logging.ts +121 -0
- package/src/server/hooks/rate-limit.ts +171 -0
- package/src/server/hooks/utils.ts +16 -0
- package/src/server/hooks.ts +1 -0
- package/src/server/http.ts +189 -0
- package/src/server/index.ts +35 -0
- package/src/server/openapi.ts +72 -0
- package/src/server/providers/index.ts +3 -0
- package/src/server/providers/loadProviderConfig.ts +72 -0
- package/src/server/server.ts +1521 -0
- package/src/server/types.ts +2 -0
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { StandardSchemaV1 } from "@standard-schema/spec";
|
|
2
|
+
export type StandardSchema = StandardSchemaV1<unknown, unknown>;
|
|
3
|
+
export type MaybePromise<T> = T | Promise<T>;
|
|
4
|
+
export type InferSchemaOutput<T extends StandardSchemaV1> = StandardSchemaV1.InferOutput<T>;
|
|
5
|
+
export interface JobDef<Name extends string = string, Payload extends StandardSchema = StandardSchema, Ctx = unknown> {
|
|
6
|
+
readonly kind: "job";
|
|
7
|
+
readonly name: Name;
|
|
8
|
+
readonly payload: Payload;
|
|
9
|
+
readonly description?: string;
|
|
10
|
+
readonly retry?: JobRetryOptions;
|
|
11
|
+
handle(args: JobHandleArgs<JobDef<Name, Payload, Ctx>, Ctx>): MaybePromise<void>;
|
|
12
|
+
}
|
|
13
|
+
export type InferJobPayload<J extends JobDef> = J["payload"] extends StandardSchemaV1<unknown, infer Output> ? Output : never;
|
|
14
|
+
export interface JobHandleArgs<J extends JobDef, Ctx> {
|
|
15
|
+
job: J;
|
|
16
|
+
payload: InferJobPayload<J>;
|
|
17
|
+
ctx: Ctx;
|
|
18
|
+
}
|
|
19
|
+
export interface JobRetryOptions {
|
|
20
|
+
/**
|
|
21
|
+
* Maximum number of retry attempts a durable job adapter should request.
|
|
22
|
+
*
|
|
23
|
+
* Providers may impose their own range limits. For example, the Inngest
|
|
24
|
+
* adapter validates this as a function-level `retries` value.
|
|
25
|
+
*/
|
|
26
|
+
attempts?: number;
|
|
27
|
+
}
|
|
28
|
+
export interface DefineJobOptions<Name extends string, Payload extends StandardSchema, Ctx> {
|
|
29
|
+
payload: Payload;
|
|
30
|
+
description?: string;
|
|
31
|
+
retry?: JobRetryOptions;
|
|
32
|
+
handle(args: JobHandleArgs<JobDef<Name, Payload, Ctx>, Ctx>): MaybePromise<void>;
|
|
33
|
+
}
|
|
34
|
+
export interface InlineJobDispatcherOptions<Ctx> {
|
|
35
|
+
ctx?: Ctx | (() => MaybePromise<Ctx>);
|
|
36
|
+
onError?: (error: unknown, job: JobDef<string, StandardSchema, Ctx>) => void;
|
|
37
|
+
}
|
|
38
|
+
export interface InlineJobDispatcher<Ctx = unknown> {
|
|
39
|
+
dispatch<J extends JobDef<string, StandardSchema, Ctx>>(job: J, payload: InferJobPayload<J>): Promise<void>;
|
|
40
|
+
}
|
|
41
|
+
export interface JobHandlers<Ctx> {
|
|
42
|
+
defineJob<Name extends string, Payload extends StandardSchema>(name: Name, options: DefineJobOptions<Name, Payload, Ctx>): JobDef<Name, Payload, Ctx>;
|
|
43
|
+
createInlineJobDispatcher(options?: InlineJobDispatcherOptions<Ctx>): InlineJobDispatcher<Ctx>;
|
|
44
|
+
}
|
|
45
|
+
export declare class JobValidationError extends Error {
|
|
46
|
+
readonly issues: readonly StandardSchemaV1.Issue[];
|
|
47
|
+
constructor(args: {
|
|
48
|
+
name: string;
|
|
49
|
+
issues: readonly StandardSchemaV1.Issue[];
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
export declare function defineJob<Name extends string, Payload extends StandardSchema, Ctx = unknown>(name: Name, options: DefineJobOptions<Name, Payload, Ctx>): JobDef<Name, Payload, Ctx>;
|
|
53
|
+
export declare function parseJobPayload<J extends JobDef>(job: J, payload: unknown): Promise<InferJobPayload<J>>;
|
|
54
|
+
export declare function createInlineJobDispatcher<Ctx>(options?: InlineJobDispatcherOptions<Ctx>): InlineJobDispatcher<Ctx>;
|
|
55
|
+
export declare function createJobHandlers<Ctx>(): JobHandlers<Ctx>;
|
|
56
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/jobs/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
export class JobValidationError extends Error {
|
|
2
|
+
issues;
|
|
3
|
+
constructor(args) {
|
|
4
|
+
super(`Job "${args.name}" payload validation failed: ${formatIssues(args.issues)}`);
|
|
5
|
+
this.name = "JobValidationError";
|
|
6
|
+
this.issues = args.issues;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
function formatPath(path) {
|
|
10
|
+
if (!path?.length)
|
|
11
|
+
return "";
|
|
12
|
+
return path
|
|
13
|
+
.map((segment) => typeof segment === "object" && segment !== null && "key" in segment
|
|
14
|
+
? String(segment.key)
|
|
15
|
+
: String(segment))
|
|
16
|
+
.join(".");
|
|
17
|
+
}
|
|
18
|
+
function formatIssues(issues) {
|
|
19
|
+
return issues
|
|
20
|
+
.map((issue) => {
|
|
21
|
+
const path = formatPath(issue.path);
|
|
22
|
+
return path ? `${path}: ${issue.message}` : issue.message;
|
|
23
|
+
})
|
|
24
|
+
.join("; ");
|
|
25
|
+
}
|
|
26
|
+
async function parsePayload(schema, input, args) {
|
|
27
|
+
const result = await schema["~standard"].validate(input);
|
|
28
|
+
if (result.issues?.length) {
|
|
29
|
+
throw new JobValidationError({
|
|
30
|
+
name: args.name,
|
|
31
|
+
issues: result.issues,
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
if ("value" in result) {
|
|
35
|
+
return result.value;
|
|
36
|
+
}
|
|
37
|
+
throw new Error("Invalid Standard Schema result: missing value");
|
|
38
|
+
}
|
|
39
|
+
async function resolveCtx(ctx) {
|
|
40
|
+
if (typeof ctx === "function") {
|
|
41
|
+
return ctx();
|
|
42
|
+
}
|
|
43
|
+
return ctx;
|
|
44
|
+
}
|
|
45
|
+
export function defineJob(name, options) {
|
|
46
|
+
return {
|
|
47
|
+
kind: "job",
|
|
48
|
+
name,
|
|
49
|
+
payload: options.payload,
|
|
50
|
+
description: options.description,
|
|
51
|
+
retry: options.retry,
|
|
52
|
+
handle: options.handle,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
export async function parseJobPayload(job, payload) {
|
|
56
|
+
return (await parsePayload(job.payload, payload, {
|
|
57
|
+
name: job.name,
|
|
58
|
+
}));
|
|
59
|
+
}
|
|
60
|
+
export function createInlineJobDispatcher(options = {}) {
|
|
61
|
+
return {
|
|
62
|
+
async dispatch(job, payload) {
|
|
63
|
+
try {
|
|
64
|
+
const parsed = await parseJobPayload(job, payload);
|
|
65
|
+
await job.handle({
|
|
66
|
+
job,
|
|
67
|
+
payload: parsed,
|
|
68
|
+
ctx: await resolveCtx(options.ctx),
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
options.onError?.(error, job);
|
|
73
|
+
if (!options.onError)
|
|
74
|
+
throw error;
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
export function createJobHandlers() {
|
|
80
|
+
return {
|
|
81
|
+
defineJob(name, options) {
|
|
82
|
+
return defineJob(name, options);
|
|
83
|
+
},
|
|
84
|
+
createInlineJobDispatcher(options = {}) {
|
|
85
|
+
return createInlineJobDispatcher(options);
|
|
86
|
+
},
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/jobs/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @beignet/core/mail
|
|
3
|
+
*
|
|
4
|
+
* Shared mail port and test adapters for Beignet applications.
|
|
5
|
+
*/
|
|
6
|
+
export type MaybePromise<T> = T | Promise<T>;
|
|
7
|
+
export type MailAddress = string | {
|
|
8
|
+
email: string;
|
|
9
|
+
name?: string;
|
|
10
|
+
};
|
|
11
|
+
export type MailAddressList = MailAddress | readonly MailAddress[];
|
|
12
|
+
export interface MailBaseMessage {
|
|
13
|
+
to: MailAddressList;
|
|
14
|
+
subject: string;
|
|
15
|
+
from?: MailAddress;
|
|
16
|
+
cc?: MailAddressList;
|
|
17
|
+
bcc?: MailAddressList;
|
|
18
|
+
replyTo?: MailAddressList;
|
|
19
|
+
headers?: Record<string, string>;
|
|
20
|
+
}
|
|
21
|
+
export type SendMailOptions = MailBaseMessage & ({
|
|
22
|
+
text: string;
|
|
23
|
+
html?: string;
|
|
24
|
+
} | {
|
|
25
|
+
html: string;
|
|
26
|
+
text?: string;
|
|
27
|
+
});
|
|
28
|
+
export interface NormalizedMailMessage extends MailBaseMessage {
|
|
29
|
+
to: readonly MailAddress[];
|
|
30
|
+
from?: MailAddress;
|
|
31
|
+
cc?: readonly MailAddress[];
|
|
32
|
+
bcc?: readonly MailAddress[];
|
|
33
|
+
replyTo?: readonly MailAddress[];
|
|
34
|
+
text?: string;
|
|
35
|
+
html?: string;
|
|
36
|
+
}
|
|
37
|
+
export interface SendMailResult {
|
|
38
|
+
id?: string;
|
|
39
|
+
provider?: string;
|
|
40
|
+
}
|
|
41
|
+
export interface MailerPort {
|
|
42
|
+
send(message: SendMailOptions): Promise<SendMailResult>;
|
|
43
|
+
}
|
|
44
|
+
export interface MemoryMailDelivery {
|
|
45
|
+
id: string;
|
|
46
|
+
message: NormalizedMailMessage;
|
|
47
|
+
sentAt: Date;
|
|
48
|
+
}
|
|
49
|
+
export interface MemoryMailerPort extends MailerPort {
|
|
50
|
+
readonly deliveries: readonly MemoryMailDelivery[];
|
|
51
|
+
clear(): void;
|
|
52
|
+
}
|
|
53
|
+
export interface CreateMemoryMailerOptions {
|
|
54
|
+
defaultFrom?: MailAddress;
|
|
55
|
+
now?: () => Date;
|
|
56
|
+
id?: () => string;
|
|
57
|
+
onSend?: (delivery: MemoryMailDelivery) => MaybePromise<void>;
|
|
58
|
+
}
|
|
59
|
+
export declare class MailDeliveryError extends Error {
|
|
60
|
+
readonly provider?: string;
|
|
61
|
+
readonly cause?: unknown;
|
|
62
|
+
constructor(args: {
|
|
63
|
+
provider?: string;
|
|
64
|
+
message: string;
|
|
65
|
+
cause?: unknown;
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
export declare function normalizeMailAddressList(addresses: MailAddressList | undefined): readonly MailAddress[] | undefined;
|
|
69
|
+
export declare function formatMailAddress(address: MailAddress): string;
|
|
70
|
+
export declare function formatMailAddressList(addresses: MailAddressList): string | string[];
|
|
71
|
+
export declare function normalizeMailMessage(message: SendMailOptions, options?: {
|
|
72
|
+
defaultFrom?: MailAddress;
|
|
73
|
+
}): NormalizedMailMessage;
|
|
74
|
+
export declare function createMemoryMailer(options?: CreateMemoryMailerOptions): MemoryMailerPort;
|
|
75
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mail/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @beignet/core/mail
|
|
3
|
+
*
|
|
4
|
+
* Shared mail port and test adapters for Beignet applications.
|
|
5
|
+
*/
|
|
6
|
+
export class MailDeliveryError extends Error {
|
|
7
|
+
provider;
|
|
8
|
+
cause;
|
|
9
|
+
constructor(args) {
|
|
10
|
+
super(args.message);
|
|
11
|
+
this.name = "MailDeliveryError";
|
|
12
|
+
this.provider = args.provider;
|
|
13
|
+
this.cause = args.cause;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
export function normalizeMailAddressList(addresses) {
|
|
17
|
+
if (addresses === undefined)
|
|
18
|
+
return undefined;
|
|
19
|
+
return Array.isArray(addresses) ? [...addresses] : [addresses];
|
|
20
|
+
}
|
|
21
|
+
function normalizeOptionalMailAddressList(addresses) {
|
|
22
|
+
const normalized = normalizeMailAddressList(addresses);
|
|
23
|
+
return normalized && normalized.length > 0 ? normalized : undefined;
|
|
24
|
+
}
|
|
25
|
+
export function formatMailAddress(address) {
|
|
26
|
+
if (typeof address === "string")
|
|
27
|
+
return address;
|
|
28
|
+
if (!address.name)
|
|
29
|
+
return address.email;
|
|
30
|
+
const escapedName = address.name.replace(/"/g, '\\"');
|
|
31
|
+
return `"${escapedName}" <${address.email}>`;
|
|
32
|
+
}
|
|
33
|
+
export function formatMailAddressList(addresses) {
|
|
34
|
+
const normalized = normalizeMailAddressList(addresses) ?? [];
|
|
35
|
+
const formatted = normalized.map(formatMailAddress);
|
|
36
|
+
return formatted.length === 1 ? formatted[0] : formatted;
|
|
37
|
+
}
|
|
38
|
+
export function normalizeMailMessage(message, options = {}) {
|
|
39
|
+
const to = normalizeMailAddressList(message.to) ?? [];
|
|
40
|
+
if (to.length === 0) {
|
|
41
|
+
throw new MailDeliveryError({
|
|
42
|
+
message: "Cannot send email without at least one recipient.",
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
return {
|
|
46
|
+
...message,
|
|
47
|
+
to,
|
|
48
|
+
from: message.from ?? options.defaultFrom,
|
|
49
|
+
cc: normalizeOptionalMailAddressList(message.cc),
|
|
50
|
+
bcc: normalizeOptionalMailAddressList(message.bcc),
|
|
51
|
+
replyTo: normalizeOptionalMailAddressList(message.replyTo),
|
|
52
|
+
text: "text" in message ? message.text : undefined,
|
|
53
|
+
html: "html" in message ? message.html : undefined,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
export function createMemoryMailer(options = {}) {
|
|
57
|
+
const deliveries = [];
|
|
58
|
+
const now = options.now ?? (() => new Date());
|
|
59
|
+
const id = options.id ?? (() => crypto.randomUUID());
|
|
60
|
+
return {
|
|
61
|
+
get deliveries() {
|
|
62
|
+
return deliveries;
|
|
63
|
+
},
|
|
64
|
+
async send(message) {
|
|
65
|
+
const delivery = {
|
|
66
|
+
id: id(),
|
|
67
|
+
message: normalizeMailMessage(message, {
|
|
68
|
+
defaultFrom: options.defaultFrom,
|
|
69
|
+
}),
|
|
70
|
+
sentAt: now(),
|
|
71
|
+
};
|
|
72
|
+
deliveries.push(delivery);
|
|
73
|
+
await options.onSend?.(delivery);
|
|
74
|
+
return {
|
|
75
|
+
id: delivery.id,
|
|
76
|
+
provider: "memory",
|
|
77
|
+
};
|
|
78
|
+
},
|
|
79
|
+
clear() {
|
|
80
|
+
deliveries.length = 0;
|
|
81
|
+
},
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mail/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @beignet/core/openapi
|
|
3
|
+
*
|
|
4
|
+
* OpenAPI 3.1 generation from Beignet contracts
|
|
5
|
+
*/
|
|
6
|
+
import { type ContractLike } from "../contracts";
|
|
7
|
+
import { type SchemaIntrospector } from "./schema-introspector";
|
|
8
|
+
export { createZodIntrospector, type SchemaIntrospector, } from "./schema-introspector";
|
|
9
|
+
/**
|
|
10
|
+
* OpenAPI 3.1 Info Object
|
|
11
|
+
*/
|
|
12
|
+
export interface OpenAPIInfo {
|
|
13
|
+
title: string;
|
|
14
|
+
version: string;
|
|
15
|
+
description?: string;
|
|
16
|
+
termsOfService?: string;
|
|
17
|
+
contact?: {
|
|
18
|
+
name?: string;
|
|
19
|
+
url?: string;
|
|
20
|
+
email?: string;
|
|
21
|
+
};
|
|
22
|
+
license?: {
|
|
23
|
+
name: string;
|
|
24
|
+
url?: string;
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* OpenAPI 3.1 Server Object
|
|
29
|
+
*/
|
|
30
|
+
export interface OpenAPIServer {
|
|
31
|
+
url: string;
|
|
32
|
+
description?: string;
|
|
33
|
+
variables?: Record<string, {
|
|
34
|
+
default: string;
|
|
35
|
+
enum?: string[];
|
|
36
|
+
description?: string;
|
|
37
|
+
}>;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* OpenAPI 3.1 Security Scheme Object
|
|
41
|
+
*/
|
|
42
|
+
export type OpenAPISecurityScheme = {
|
|
43
|
+
type: "apiKey";
|
|
44
|
+
name: string;
|
|
45
|
+
in: "query" | "header" | "cookie";
|
|
46
|
+
description?: string;
|
|
47
|
+
} | {
|
|
48
|
+
type: "http";
|
|
49
|
+
scheme: string;
|
|
50
|
+
bearerFormat?: string;
|
|
51
|
+
description?: string;
|
|
52
|
+
} | {
|
|
53
|
+
type: "oauth2";
|
|
54
|
+
flows: Record<string, unknown>;
|
|
55
|
+
description?: string;
|
|
56
|
+
} | {
|
|
57
|
+
type: "openIdConnect";
|
|
58
|
+
openIdConnectUrl: string;
|
|
59
|
+
description?: string;
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* Schema or Reference object for OpenAPI
|
|
63
|
+
*/
|
|
64
|
+
export type SchemaObject = Record<string, unknown>;
|
|
65
|
+
export type ReferenceObject = {
|
|
66
|
+
$ref: string;
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* OpenAPI Parameter Object
|
|
70
|
+
*/
|
|
71
|
+
export interface ParameterObject {
|
|
72
|
+
name: string;
|
|
73
|
+
in: "path" | "query" | "header" | "cookie";
|
|
74
|
+
required?: boolean;
|
|
75
|
+
schema?: SchemaObject | ReferenceObject;
|
|
76
|
+
description?: string;
|
|
77
|
+
deprecated?: boolean;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* OpenAPI Request Body Object
|
|
81
|
+
*/
|
|
82
|
+
export interface RequestBodyObject {
|
|
83
|
+
required?: boolean;
|
|
84
|
+
description?: string;
|
|
85
|
+
content: Record<string, {
|
|
86
|
+
schema?: SchemaObject | ReferenceObject;
|
|
87
|
+
}>;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* OpenAPI Response Object
|
|
91
|
+
*/
|
|
92
|
+
export interface ResponseObject {
|
|
93
|
+
description: string;
|
|
94
|
+
content?: Record<string, {
|
|
95
|
+
schema?: SchemaObject | ReferenceObject;
|
|
96
|
+
examples?: Record<string, {
|
|
97
|
+
summary?: string;
|
|
98
|
+
value?: unknown;
|
|
99
|
+
}>;
|
|
100
|
+
}>;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* OpenAPI Operation Object
|
|
104
|
+
*/
|
|
105
|
+
export interface OperationObject {
|
|
106
|
+
operationId?: string;
|
|
107
|
+
summary?: string;
|
|
108
|
+
description?: string;
|
|
109
|
+
tags?: string[];
|
|
110
|
+
deprecated?: boolean;
|
|
111
|
+
externalDocs?: {
|
|
112
|
+
description?: string;
|
|
113
|
+
url: string;
|
|
114
|
+
};
|
|
115
|
+
security?: Array<Record<string, string[]>>;
|
|
116
|
+
parameters?: ParameterObject[];
|
|
117
|
+
requestBody?: RequestBodyObject;
|
|
118
|
+
responses: Record<string, ResponseObject>;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* OpenAPI Path Item Object
|
|
122
|
+
*/
|
|
123
|
+
export interface PathItemObject {
|
|
124
|
+
get?: OperationObject;
|
|
125
|
+
post?: OperationObject;
|
|
126
|
+
put?: OperationObject;
|
|
127
|
+
patch?: OperationObject;
|
|
128
|
+
delete?: OperationObject;
|
|
129
|
+
head?: OperationObject;
|
|
130
|
+
options?: OperationObject;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* OpenAPI Paths Object
|
|
134
|
+
*/
|
|
135
|
+
export type PathsObject = Record<string, PathItemObject>;
|
|
136
|
+
/**
|
|
137
|
+
* OpenAPI Components Object
|
|
138
|
+
*/
|
|
139
|
+
export interface ComponentsObject {
|
|
140
|
+
schemas?: Record<string, SchemaObject>;
|
|
141
|
+
securitySchemes?: Record<string, OpenAPISecurityScheme>;
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* OpenAPI 3.1 Document
|
|
145
|
+
*/
|
|
146
|
+
export interface OpenAPIObject {
|
|
147
|
+
openapi: "3.1.0";
|
|
148
|
+
info: OpenAPIInfo;
|
|
149
|
+
servers?: OpenAPIServer[];
|
|
150
|
+
paths: PathsObject;
|
|
151
|
+
components?: ComponentsObject;
|
|
152
|
+
security?: Array<Record<string, string[]>>;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Options for generating OpenAPI spec
|
|
156
|
+
*/
|
|
157
|
+
export interface OpenAPIGeneratorOptions {
|
|
158
|
+
/** API title */
|
|
159
|
+
title: string;
|
|
160
|
+
/** API version */
|
|
161
|
+
version: string;
|
|
162
|
+
/** API description */
|
|
163
|
+
description?: string;
|
|
164
|
+
/** Server configurations */
|
|
165
|
+
servers?: OpenAPIServer[];
|
|
166
|
+
/** Media type for JSON content (default: application/json) */
|
|
167
|
+
jsonMediaType?: string;
|
|
168
|
+
/** Security schemes for authentication */
|
|
169
|
+
securitySchemes?: Record<string, OpenAPISecurityScheme>;
|
|
170
|
+
/** Global security requirements */
|
|
171
|
+
security?: Array<Record<string, string[]>>;
|
|
172
|
+
/**
|
|
173
|
+
* Schema introspector for reading metadata from schema objects.
|
|
174
|
+
* Defaults to a Zod introspector. Provide a custom implementation
|
|
175
|
+
* to support other schema libraries.
|
|
176
|
+
*/
|
|
177
|
+
schemaIntrospector?: SchemaIntrospector;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Type for contracts that can be passed to the generator.
|
|
181
|
+
* Accepts both ContractBuilder instances and plain HttpContractConfig objects.
|
|
182
|
+
*/
|
|
183
|
+
export type ContractInput = ContractLike;
|
|
184
|
+
/**
|
|
185
|
+
* Convert an array of contracts to an OpenAPI 3.1 document
|
|
186
|
+
*
|
|
187
|
+
* @param contracts - Array of HTTP contracts (ContractBuilder instances or configs)
|
|
188
|
+
* @param options - OpenAPI generation options
|
|
189
|
+
* @returns OpenAPI 3.1 document object
|
|
190
|
+
*
|
|
191
|
+
* @example
|
|
192
|
+
* ```ts
|
|
193
|
+
* import { contractsToOpenAPI } from "@beignet/core/openapi";
|
|
194
|
+
* import { getTodo, listTodos } from "./contracts";
|
|
195
|
+
*
|
|
196
|
+
* const spec = contractsToOpenAPI(
|
|
197
|
+
* [getTodo, listTodos],
|
|
198
|
+
* {
|
|
199
|
+
* title: "Todo API",
|
|
200
|
+
* version: "1.0.0",
|
|
201
|
+
* servers: [{ url: "https://api.example.com" }],
|
|
202
|
+
* }
|
|
203
|
+
* );
|
|
204
|
+
* ```
|
|
205
|
+
*/
|
|
206
|
+
export declare function contractsToOpenAPI(contracts: readonly ContractInput[], options: OpenAPIGeneratorOptions): OpenAPIObject;
|
|
207
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/openapi/index.ts"],"names":[],"mappings":"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"}
|