@oakbun/scalar 0.1.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 (121) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +33 -0
  3. package/dist/core/src/adapter/mysql.d.ts +21 -0
  4. package/dist/core/src/adapter/mysql.d.ts.map +1 -0
  5. package/dist/core/src/adapter/postgres.d.ts +16 -0
  6. package/dist/core/src/adapter/postgres.d.ts.map +1 -0
  7. package/dist/core/src/adapter/resolve.d.ts +16 -0
  8. package/dist/core/src/adapter/resolve.d.ts.map +1 -0
  9. package/dist/core/src/adapter/sqlite.d.ts +17 -0
  10. package/dist/core/src/adapter/sqlite.d.ts.map +1 -0
  11. package/dist/core/src/adapter/types.d.ts +29 -0
  12. package/dist/core/src/adapter/types.d.ts.map +1 -0
  13. package/dist/core/src/app/audit-wiring.d.ts +6 -0
  14. package/dist/core/src/app/audit-wiring.d.ts.map +1 -0
  15. package/dist/core/src/app/body-size-limit.d.ts +29 -0
  16. package/dist/core/src/app/body-size-limit.d.ts.map +1 -0
  17. package/dist/core/src/app/compression.d.ts +25 -0
  18. package/dist/core/src/app/compression.d.ts.map +1 -0
  19. package/dist/core/src/app/cookies.d.ts +17 -0
  20. package/dist/core/src/app/cookies.d.ts.map +1 -0
  21. package/dist/core/src/app/cors.d.ts +65 -0
  22. package/dist/core/src/app/cors.d.ts.map +1 -0
  23. package/dist/core/src/app/csrf.d.ts +52 -0
  24. package/dist/core/src/app/csrf.d.ts.map +1 -0
  25. package/dist/core/src/app/health.d.ts +36 -0
  26. package/dist/core/src/app/health.d.ts.map +1 -0
  27. package/dist/core/src/app/index.d.ts +282 -0
  28. package/dist/core/src/app/index.d.ts.map +1 -0
  29. package/dist/core/src/app/logger.d.ts +4 -0
  30. package/dist/core/src/app/logger.d.ts.map +1 -0
  31. package/dist/core/src/app/middleware.d.ts +20 -0
  32. package/dist/core/src/app/middleware.d.ts.map +1 -0
  33. package/dist/core/src/app/module.d.ts +273 -0
  34. package/dist/core/src/app/module.d.ts.map +1 -0
  35. package/dist/core/src/app/plugin.d.ts +112 -0
  36. package/dist/core/src/app/plugin.d.ts.map +1 -0
  37. package/dist/core/src/app/rate-limit.d.ts +76 -0
  38. package/dist/core/src/app/rate-limit.d.ts.map +1 -0
  39. package/dist/core/src/app/request-id.d.ts +52 -0
  40. package/dist/core/src/app/request-id.d.ts.map +1 -0
  41. package/dist/core/src/app/router.d.ts +6 -0
  42. package/dist/core/src/app/router.d.ts.map +1 -0
  43. package/dist/core/src/app/scalar.d.ts +40 -0
  44. package/dist/core/src/app/scalar.d.ts.map +1 -0
  45. package/dist/core/src/app/secure-headers.d.ts +48 -0
  46. package/dist/core/src/app/secure-headers.d.ts.map +1 -0
  47. package/dist/core/src/app/system-ctx.d.ts +3 -0
  48. package/dist/core/src/app/system-ctx.d.ts.map +1 -0
  49. package/dist/core/src/app/types.d.ts +277 -0
  50. package/dist/core/src/app/types.d.ts.map +1 -0
  51. package/dist/core/src/cli/config/types.d.ts +31 -0
  52. package/dist/core/src/cli/config/types.d.ts.map +1 -0
  53. package/dist/core/src/cli/index.d.ts +3 -0
  54. package/dist/core/src/cli/index.d.ts.map +1 -0
  55. package/dist/core/src/client/error.d.ts +8 -0
  56. package/dist/core/src/client/error.d.ts.map +1 -0
  57. package/dist/core/src/client/index.d.ts +33 -0
  58. package/dist/core/src/client/index.d.ts.map +1 -0
  59. package/dist/core/src/client/proxy.d.ts +88 -0
  60. package/dist/core/src/client/proxy.d.ts.map +1 -0
  61. package/dist/core/src/client/test-client.d.ts +30 -0
  62. package/dist/core/src/client/test-client.d.ts.map +1 -0
  63. package/dist/core/src/cron/index.d.ts +73 -0
  64. package/dist/core/src/cron/index.d.ts.map +1 -0
  65. package/dist/core/src/db/index.d.ts +281 -0
  66. package/dist/core/src/db/index.d.ts.map +1 -0
  67. package/dist/core/src/db/migrations/diff.d.ts +5 -0
  68. package/dist/core/src/db/migrations/diff.d.ts.map +1 -0
  69. package/dist/core/src/db/migrations/generator.d.ts +26 -0
  70. package/dist/core/src/db/migrations/generator.d.ts.map +1 -0
  71. package/dist/core/src/db/migrations/index.d.ts +9 -0
  72. package/dist/core/src/db/migrations/index.d.ts.map +1 -0
  73. package/dist/core/src/db/migrations/introspect.d.ts +8 -0
  74. package/dist/core/src/db/migrations/introspect.d.ts.map +1 -0
  75. package/dist/core/src/db/migrations/migrator.d.ts +10 -0
  76. package/dist/core/src/db/migrations/migrator.d.ts.map +1 -0
  77. package/dist/core/src/db/migrations/runner.d.ts +7 -0
  78. package/dist/core/src/db/migrations/runner.d.ts.map +1 -0
  79. package/dist/core/src/db/migrations/tracker.d.ts +7 -0
  80. package/dist/core/src/db/migrations/tracker.d.ts.map +1 -0
  81. package/dist/core/src/db/migrations/types.d.ts +70 -0
  82. package/dist/core/src/db/migrations/types.d.ts.map +1 -0
  83. package/dist/core/src/db/sql.d.ts +148 -0
  84. package/dist/core/src/db/sql.d.ts.map +1 -0
  85. package/dist/core/src/errors/index.d.ts +30 -0
  86. package/dist/core/src/errors/index.d.ts.map +1 -0
  87. package/dist/core/src/events/handler.d.ts +42 -0
  88. package/dist/core/src/events/handler.d.ts.map +1 -0
  89. package/dist/core/src/events/index.d.ts +48 -0
  90. package/dist/core/src/events/index.d.ts.map +1 -0
  91. package/dist/core/src/hooks/executor.d.ts +20 -0
  92. package/dist/core/src/hooks/executor.d.ts.map +1 -0
  93. package/dist/core/src/hooks/types.d.ts +10 -0
  94. package/dist/core/src/hooks/types.d.ts.map +1 -0
  95. package/dist/core/src/index.d.ts +83 -0
  96. package/dist/core/src/index.d.ts.map +1 -0
  97. package/dist/core/src/model/index.d.ts +24 -0
  98. package/dist/core/src/model/index.d.ts.map +1 -0
  99. package/dist/core/src/openapi/generator.d.ts +58 -0
  100. package/dist/core/src/openapi/generator.d.ts.map +1 -0
  101. package/dist/core/src/openapi/zod-to-schema.d.ts +4 -0
  102. package/dist/core/src/openapi/zod-to-schema.d.ts.map +1 -0
  103. package/dist/core/src/resource/errors.d.ts +2 -0
  104. package/dist/core/src/resource/errors.d.ts.map +1 -0
  105. package/dist/core/src/resource/index.d.ts +98 -0
  106. package/dist/core/src/resource/index.d.ts.map +1 -0
  107. package/dist/core/src/resource/zod-table.d.ts +6 -0
  108. package/dist/core/src/resource/zod-table.d.ts.map +1 -0
  109. package/dist/core/src/schema/audit.d.ts +25 -0
  110. package/dist/core/src/schema/audit.d.ts.map +1 -0
  111. package/dist/core/src/schema/column.d.ts +31 -0
  112. package/dist/core/src/schema/column.d.ts.map +1 -0
  113. package/dist/core/src/schema/table.d.ts +68 -0
  114. package/dist/core/src/schema/table.d.ts.map +1 -0
  115. package/dist/core/src/service/index.d.ts +27 -0
  116. package/dist/core/src/service/index.d.ts.map +1 -0
  117. package/dist/index.js +41 -0
  118. package/dist/index.js.map +1 -0
  119. package/dist/scalar/src/index.d.ts +15 -0
  120. package/dist/scalar/src/index.d.ts.map +1 -0
  121. package/package.json +50 -0
@@ -0,0 +1,83 @@
1
+ export type { VelnAdapter, BindingValue, ExecuteResult, QueryLogEntry } from './adapter/types';
2
+ export { SQLiteAdapter } from './adapter/sqlite';
3
+ export type { SQLiteConfig } from './adapter/sqlite';
4
+ export { PostgresAdapter } from './adapter/postgres';
5
+ export type { PostgresConfig } from './adapter/postgres';
6
+ export { MySQLAdapter } from './adapter/mysql';
7
+ export type { MySQLConfig } from './adapter/mysql';
8
+ export { resolveAdapter } from './adapter/resolve';
9
+ export type { AdapterConfig } from './adapter/resolve';
10
+ export { column } from './schema/column';
11
+ export type { Column, ColumnDef, SqlType } from './schema/column';
12
+ export { defineTable, toCreateTableSql } from './schema/table';
13
+ export type { SchemaMap, InferRow, InferInsert, InferUpdate, InferTable, TableDef, TableHookHandlers, TableEventMap, InferTableEvents, } from './schema/table';
14
+ export { defineAuditTable } from './schema/audit';
15
+ export type { AuditTableDef, AuditLog, AuditConfig } from './schema/audit';
16
+ export type { ModuleHookHandlers, HookOperation } from './hooks/types';
17
+ export { createMigrator, generateMigration, compareSchemas, introspectSchema, splitSqlStatements } from './db/migrations/index';
18
+ export type { Migrator, MigratorOptions, MigrationResult, MigrationStatus, MigrationRecord, SchemaDiff, TableDiff, TableModification, ColumnDef as MigrationColumnDef, IndexDef, ColumnModification, GenerateOptions, GenerateResult, } from './db/migrations/index';
19
+ export { VelnDB, BoundVelnDB, SelectBuilder, InsertBuilder, JoinBuilder } from './db/index';
20
+ export type { PendingEvent, TransactionResult, QueryLog, } from './db/index';
21
+ export type { JoinClause, SelectOptions, AggregateClause, WhereInput, WhereOp, WhereConditions, FieldCondition, SqlDialect } from './db/sql';
22
+ export type { EventBus as EventBusInterface } from './db/index';
23
+ export { InMemoryEventBus, EventBus, RequestEventQueue } from './events/index';
24
+ export type { EventBusAdapter, EventBusOptions, EventBusErrorHandler } from './events/index';
25
+ export type { EventHandler, VelnEvents } from './events/index';
26
+ export { defineEventHandler, EventHandlerBuilder } from './events/handler';
27
+ export type { EventHandlerDef, EventCallback, EventHandlerFn } from './events/handler';
28
+ export { defineModel, ModelBuilder } from './model/index';
29
+ export type { ModelDef, ModelInstance } from './model/index';
30
+ export { defineService } from './service/index';
31
+ export type { ServiceDef } from './service/index';
32
+ export { defineMiddleware, MiddlewareBuilder } from './app/middleware';
33
+ export type { MiddlewareDef } from './app/middleware';
34
+ export { createApp, Veln } from './app/index';
35
+ export { createSystemCtx } from './app/system-ctx';
36
+ export { defineModule, ModuleBuilder } from './app/module';
37
+ export type { VelnModule, HookDeclaration, AuditDeclaration, ServiceDeclaration } from './app/module';
38
+ export { loggerPlugin, dbPlugin, eventBusPlugin, createPlugin, definePlugin, PluginBuilder } from './app/plugin';
39
+ export type { DbPluginConfig, DbLogOptions, NavItem } from './app/plugin';
40
+ export type { Plugin } from './app/plugin';
41
+ export type { BaseCtx, Guard, ErrorHandler, RouteHandler, Logger, AuthPayload, LogOptions, BaseOptions, AuthUser, AuthAdapter } from './app/types';
42
+ export { ValidationError, createGuard, defineGuard, createOnRequest, createOnBeforeHandle, createOnResponse } from './app/types';
43
+ export { secureHeadersPlugin } from './app/secure-headers';
44
+ export type { SecureHeadersOptions, CspPreset } from './app/secure-headers';
45
+ export { rateLimitPlugin, InMemoryStore } from './app/rate-limit';
46
+ export type { RateLimitOptions, RateLimitStore } from './app/rate-limit';
47
+ export { csrfPlugin } from './app/csrf';
48
+ export type { CsrfOptions, CsrfPlugin } from './app/csrf';
49
+ export { scalarPlugin } from './app/scalar';
50
+ export type { ScalarOptions } from './app/scalar';
51
+ export { bodySizeLimitPlugin } from './app/body-size-limit';
52
+ export type { BodySizeLimitOptions } from './app/body-size-limit';
53
+ export { corsPlugin } from './app/cors';
54
+ export type { CorsOptions, CorsPlugin } from './app/cors';
55
+ export { requestIdPlugin } from './app/request-id';
56
+ export type { RequestIdOptions, RequestIdCtx, RequestIdPlugin } from './app/request-id';
57
+ export { compressionPlugin } from './app/compression';
58
+ export type { CompressionOptions } from './app/compression';
59
+ export { healthPlugin } from './app/health';
60
+ export type { HealthPluginOptions, HealthCheck, HealthPlugin } from './app/health';
61
+ export type { VelnWsAdapter, WsRouteShape } from './app/types';
62
+ export type { RouteSchema, RouteHandlerWithSchema, InferCtx } from './app/types';
63
+ export type { RouteMap, RouteEntry, RouteKey } from './app/types';
64
+ export type { StreamController, StreamOptions, SseController } from './app/types';
65
+ export type { OnRequestHook, OnBeforeHandleHook, OnResponseHook, OnRequestFn, OnBeforeHandleFn, OnResponseFn } from './app/types';
66
+ export { createClient } from './client/index';
67
+ export { createProxyClient, createModuleClient, pathToClientKey } from './client/index';
68
+ export type { ClientResult, InferProxyClient, ProxyClientOptions } from './client/index';
69
+ export { createTestClient } from './client/test-client';
70
+ export type { TestClientOptions } from './client/test-client';
71
+ export { VelnClientError } from './client/error';
72
+ export { generateOpenApiSpec } from './openapi/generator';
73
+ export type { OpenApiSpec } from './openapi/generator';
74
+ export { zodToJsonSchema } from './openapi/zod-to-schema';
75
+ export type { JsonSchema } from './openapi/zod-to-schema';
76
+ export { defineResource, ResourceBuilder, NotFoundError, ConflictError, tableToZodInsert, tableToZodRow } from './resource/index';
77
+ export type { ResourceResult, DefaultModelMethods, ResourceOptions, ModelOverrides, ServiceOverrides, RouteConfig } from './resource/index';
78
+ export { defineCron, resolveExpression, NoOpCronLockAdapter } from './cron/index';
79
+ export type { CronDef, CronBuilder, CronCtx, CronBuildOptions, LogLevel, CronLockAdapter } from './cron/index';
80
+ export { defineConfig, defineCommand } from './cli/index';
81
+ export type { VelnConfig, CommandDef, CommandOption } from './cli/index';
82
+ export { VelnError, BadRequestError, UnauthorizedError, ForbiddenError, UnprocessableError, TooManyRequestsError, InternalError, } from './errors/index';
83
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../core/src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type { BoundVelnDB } from '../db/index';
2
+ import type { Logger, BaseOptions } from '../app/types';
3
+ export type ModelInstance<TDef> = TDef & {
4
+ readonly db: BoundVelnDB;
5
+ };
6
+ export interface ModelDef<TName extends string, TDef> {
7
+ readonly _modelName: TName;
8
+ readonly _factory: (db: BoundVelnDB) => ModelInstance<TDef>;
9
+ }
10
+ export declare class ModelBuilder<TName extends string, TTable> {
11
+ private readonly _name;
12
+ private readonly _table;
13
+ private _opts;
14
+ constructor(_name: TName, _table: TTable);
15
+ options(opts: BaseOptions): this;
16
+ define<TDef extends object>(factory: (db: BoundVelnDB, ctx: {
17
+ logger: Logger;
18
+ }) => TDef): ModelDef<TName, TDef>;
19
+ }
20
+ export declare function defineModel<TName extends string, TTable>(name: TName, table: TTable): ModelBuilder<TName, TTable>;
21
+ export declare function defineModel<TName extends string, TTable, TDef extends object>(name: TName, table: TTable, factory: (db: BoundVelnDB, ctx: {
22
+ logger: Logger;
23
+ }) => TDef): ModelDef<TName, TDef>;
24
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../core/src/model/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAE9C,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAKvD,MAAM,MAAM,aAAa,CAAC,IAAI,IAAI,IAAI,GAAG;IAAE,QAAQ,CAAC,EAAE,EAAE,WAAW,CAAA;CAAE,CAAA;AAIrE,MAAM,WAAW,QAAQ,CAAC,KAAK,SAAS,MAAM,EAAE,IAAI;IAClD,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAA;IAC1B,QAAQ,CAAC,QAAQ,EAAI,CAAC,EAAE,EAAE,WAAW,KAAK,aAAa,CAAC,IAAI,CAAC,CAAA;CAC9D;AAID,qBAAa,YAAY,CAAC,KAAK,SAAS,MAAM,EAAE,MAAM;IAIlD,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAJzB,OAAO,CAAC,KAAK,CAAkB;gBAGZ,KAAK,EAAG,KAAK,EACb,MAAM,EAAE,MAAM;IAGjC,OAAO,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;IAKhC,MAAM,CAAC,IAAI,SAAS,MAAM,EACxB,OAAO,EAAE,CAAC,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,GAC1D,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;CAWzB;AAaD,wBAAgB,WAAW,CACzB,KAAK,SAAS,MAAM,EACpB,MAAM,EAEN,IAAI,EAAG,KAAK,EACZ,KAAK,EAAE,MAAM,GACZ,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;AAE9B,wBAAgB,WAAW,CACzB,KAAK,SAAS,MAAM,EACpB,MAAM,EACN,IAAI,SAAS,MAAM,EAEnB,IAAI,EAAK,KAAK,EACd,KAAK,EAAI,MAAM,EACf,OAAO,EAAE,CAAC,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,KAAK,IAAI,GAC1D,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA"}
@@ -0,0 +1,58 @@
1
+ import type { Route } from '../app/types';
2
+ import type { JsonSchema } from './zod-to-schema';
3
+ export interface OpenApiSpec {
4
+ openapi: '3.1.0';
5
+ info: {
6
+ title: string;
7
+ version: string;
8
+ description?: string;
9
+ };
10
+ paths: Record<string, Record<string, OpenApiOperation>>;
11
+ components?: {
12
+ securitySchemes?: Record<string, OpenApiSecurityScheme>;
13
+ };
14
+ }
15
+ interface OpenApiSecurityScheme {
16
+ type: 'http';
17
+ scheme: 'bearer';
18
+ bearerFormat?: string;
19
+ }
20
+ interface OpenApiOperation {
21
+ operationId?: string;
22
+ summary?: string;
23
+ description?: string;
24
+ tags?: string[];
25
+ security?: Array<Record<string, string[]>>;
26
+ parameters?: OpenApiParameter[];
27
+ requestBody?: OpenApiRequestBody;
28
+ responses: Record<string, OpenApiResponse>;
29
+ }
30
+ interface OpenApiParameter {
31
+ name: string;
32
+ in: 'path' | 'query';
33
+ required: boolean;
34
+ schema: JsonSchema;
35
+ }
36
+ interface OpenApiRequestBody {
37
+ required: true;
38
+ content: {
39
+ 'application/json': {
40
+ schema: JsonSchema;
41
+ };
42
+ };
43
+ }
44
+ interface OpenApiResponse {
45
+ description: string;
46
+ content?: {
47
+ 'application/json': {
48
+ schema: JsonSchema;
49
+ };
50
+ };
51
+ }
52
+ export declare function generateOpenApiSpec(routes: readonly Route<unknown>[], options?: {
53
+ title?: string;
54
+ version?: string;
55
+ description?: string;
56
+ }): OpenApiSpec;
57
+ export {};
58
+ //# sourceMappingURL=generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../../../../core/src/openapi/generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AAEzC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAGjD,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAC9D,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAA;IACvD,UAAU,CAAC,EAAE;QACX,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAA;KACxD,CAAA;CACF;AAED,UAAU,qBAAqB;IAC7B,IAAI,EAAW,MAAM,CAAA;IACrB,MAAM,EAAS,QAAQ,CAAA;IACvB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,UAAU,gBAAgB;IACxB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAM,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,CAAC,EAAS,MAAM,EAAE,CAAA;IACtB,QAAQ,CAAC,EAAK,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAA;IAC7C,UAAU,CAAC,EAAG,gBAAgB,EAAE,CAAA;IAChC,WAAW,CAAC,EAAE,kBAAkB,CAAA;IAChC,SAAS,EAAK,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;CAC9C;AAED,UAAU,gBAAgB;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,EAAE,MAAM,GAAG,OAAO,CAAA;IACpB,QAAQ,EAAE,OAAO,CAAA;IACjB,MAAM,EAAE,UAAU,CAAA;CACnB;AAED,UAAU,kBAAkB;IAC1B,QAAQ,EAAE,IAAI,CAAA;IACd,OAAO,EAAE;QACP,kBAAkB,EAAE;YAClB,MAAM,EAAE,UAAU,CAAA;SACnB,CAAA;KACF,CAAA;CACF;AAED,UAAU,eAAe;IACvB,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,EAAE;QACR,kBAAkB,EAAE;YAClB,MAAM,EAAE,UAAU,CAAA;SACnB,CAAA;KACF,CAAA;CACF;AA6FD,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,SAAS,KAAK,CAAC,OAAO,CAAC,EAAE,EACjC,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GACnE,WAAW,CAoHb"}
@@ -0,0 +1,4 @@
1
+ import type { ZodTypeAny } from 'zod';
2
+ export type JsonSchema = Record<string, unknown>;
3
+ export declare function zodToJsonSchema(schema: ZodTypeAny): JsonSchema;
4
+ //# sourceMappingURL=zod-to-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zod-to-schema.d.ts","sourceRoot":"","sources":["../../../../../core/src/openapi/zod-to-schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,KAAK,CAAA;AAErC,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AA0BhD,wBAAgB,eAAe,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAwD9D"}
@@ -0,0 +1,2 @@
1
+ export { NotFoundError, ConflictError } from '../errors/index';
2
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../../../core/src/resource/errors.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA"}
@@ -0,0 +1,98 @@
1
+ import type { TableDef, SchemaMap, InferRow, InferInsert } from '../schema/table';
2
+ import type { BoundVelnDB } from '../db/index';
3
+ import type { BaseCtx, BaseOptions } from '../app/types';
4
+ import type { Guard, ErrorHandler, OnRequestHook, OnBeforeHandleHook, OnResponseHook } from '../app/types';
5
+ import type { Plugin } from '../app/plugin';
6
+ import type { AuditConfig } from '../schema/audit';
7
+ import type { ModuleHookHandlers } from '../hooks/types';
8
+ import type { ServiceDef } from '../service/index';
9
+ import type { EventHandlerDef } from '../events/handler';
10
+ import type { VelnModule } from '../app/module';
11
+ export { NotFoundError, ConflictError } from './errors';
12
+ export { tableToZodInsert, tableToZodRow } from './zod-table';
13
+ type ResourceServiceKey<TName extends string> = `${TName}Resource`;
14
+ export interface DefaultModelMethods<TRow, TInsert> {
15
+ index(): Promise<TRow[]>;
16
+ show(id: number): Promise<TRow>;
17
+ store(data: TInsert): Promise<TRow>;
18
+ update(id: number, data: Partial<TInsert>): Promise<TRow>;
19
+ destroy(id: number): Promise<void>;
20
+ }
21
+ export interface ModelOverrides<TRow, TInsert> {
22
+ index?: (db: BoundVelnDB) => () => Promise<TRow[]>;
23
+ show?: (db: BoundVelnDB) => (id: number) => Promise<TRow>;
24
+ store?: (db: BoundVelnDB) => (data: TInsert) => Promise<TRow>;
25
+ update?: (db: BoundVelnDB) => (id: number, data: Partial<TInsert>) => Promise<TRow>;
26
+ destroy?: (db: BoundVelnDB) => (id: number) => Promise<void>;
27
+ [key: string]: ((db: BoundVelnDB) => (...args: never[]) => unknown) | undefined;
28
+ }
29
+ export type ServiceOverrides<TModel, TRow, TInsert> = {
30
+ index?: (deps: {
31
+ model: TModel;
32
+ }) => () => Promise<TRow[]>;
33
+ show?: (deps: {
34
+ model: TModel;
35
+ }) => (id: number) => Promise<TRow>;
36
+ store?: (deps: {
37
+ model: TModel;
38
+ }) => (data: TInsert) => Promise<TRow>;
39
+ update?: (deps: {
40
+ model: TModel;
41
+ }) => (id: number, data: Partial<TInsert>) => Promise<TRow>;
42
+ destroy?: (deps: {
43
+ model: TModel;
44
+ }) => (id: number) => Promise<void>;
45
+ };
46
+ export type RouteConfig = {
47
+ guard?: Guard<BaseCtx>;
48
+ summary?: string;
49
+ } | false;
50
+ export interface ResourceOptions<TRow, TInsert> {
51
+ prefix?: string;
52
+ model?: ModelOverrides<TRow, TInsert>;
53
+ service?: ServiceOverrides<DefaultModelMethods<TRow, TInsert> & Record<string, unknown>, TRow, TInsert>;
54
+ routes?: {
55
+ index?: RouteConfig;
56
+ show?: RouteConfig;
57
+ store?: RouteConfig;
58
+ update?: RouteConfig;
59
+ destroy?: RouteConfig;
60
+ };
61
+ }
62
+ declare function buildResourceModel<T, S extends SchemaMap>(table: TableDef<T, S>, overrides: ModelOverrides<InferRow<TableDef<T, S>>, InferInsert<TableDef<T, S>>>): import("..").ModelDef<`${string}Model`, DefaultModelMethods<T, { [K in keyof S as (S[K]["def"]["primaryKey"] extends true ? true : S[K]["def"]["defaultValue"] extends undefined ? S[K]["def"]["defaultFn"] extends undefined ? S[K]["def"]["nullable"] extends true ? true : false : true : true) extends true ? never : K]: S[K] extends import("..").Column<infer T_1> ? NonNullable<T_1> : never; } & { [K_1 in keyof S as (S[K_1]["def"]["primaryKey"] extends true ? true : S[K_1]["def"]["defaultValue"] extends undefined ? S[K_1]["def"]["defaultFn"] extends undefined ? S[K_1]["def"]["nullable"] extends true ? true : false : true : true) extends true ? K_1 : never]?: S[K_1] extends import("..").Column<infer T_1> ? T_1 : never; }> & Record<string, unknown>>;
63
+ export interface ResourceResult<T, S extends SchemaMap> {
64
+ Model: ReturnType<typeof buildResourceModel<T, S>>;
65
+ Service: ServiceDef<ResourceServiceKey<string>, DefaultModelMethods<InferRow<TableDef<T, S>>, InferInsert<TableDef<T, S>>>>;
66
+ module: VelnModule;
67
+ }
68
+ export declare class ResourceBuilder<TCtx extends BaseCtx, T, S extends SchemaMap> {
69
+ private readonly _table;
70
+ private readonly _options;
71
+ private readonly _builderFns;
72
+ private constructor();
73
+ static create<T, S extends SchemaMap>(table: TableDef<T, S>, options: ResourceOptions<InferRow<TableDef<T, S>>, InferInsert<TableDef<T, S>>>): ResourceBuilder<BaseCtx, T, S>;
74
+ options(opts: BaseOptions): ResourceBuilder<TCtx, T, S>;
75
+ plugin<TAdd extends object>(p: Plugin<TCtx, TAdd>): ResourceBuilder<TCtx & TAdd, T, S>;
76
+ guard(g: Guard<TCtx>): ResourceBuilder<TCtx, T, S>;
77
+ hook(table: TableDef<T, S>, handlers: ModuleHookHandlers<T, TCtx>): ResourceBuilder<TCtx, T, S>;
78
+ audit<AT extends Record<string, unknown>, AS extends SchemaMap>(auditTable: TableDef<AT, AS>, config: AuditConfig<TCtx, AT, AS>): ResourceBuilder<TCtx, T, S>;
79
+ use<TKey extends string, TDef>(service: ServiceDef<TKey, TDef>): ResourceBuilder<TCtx & Record<TKey, TDef>, T, S>;
80
+ onRequest(hook: OnRequestHook<TCtx>): ResourceBuilder<TCtx, T, S>;
81
+ onBeforeHandle(hook: OnBeforeHandleHook<TCtx>): ResourceBuilder<TCtx, T, S>;
82
+ onResponse(hook: OnResponseHook<TCtx>): ResourceBuilder<TCtx, T, S>;
83
+ onError(handler: ErrorHandler<TCtx>): ResourceBuilder<TCtx, T, S>;
84
+ events(handler: EventHandlerDef): ResourceBuilder<TCtx, T, S>;
85
+ build(): ResourceResult<T, S>;
86
+ }
87
+ /**
88
+ * defineResource — generates CRUD routes, a Model, and a Service from a table definition.
89
+ *
90
+ * @param table The table definition produced by `defineTable(...).build()`.
91
+ * @param options Route prefix string or `ResourceOptions` for customization.
92
+ *
93
+ * @example
94
+ * const { module } = defineResource(usersTable, '/users').build()
95
+ * app.register(module)
96
+ */
97
+ export declare function defineResource<T, S extends SchemaMap>(table: TableDef<T, S>, options?: ResourceOptions<InferRow<TableDef<T, S>>, InferInsert<TableDef<T, S>>> | string): ResourceBuilder<BaseCtx, T, S>;
98
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../core/src/resource/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { z } from 'zod';
2
+ import type { ZodTypeAny } from 'zod';
3
+ import type { SchemaMap, TableDef } from '../schema/table';
4
+ export declare function tableToZodInsert<T, S extends SchemaMap>(table: TableDef<T, S>): z.ZodObject<Record<string, ZodTypeAny>>;
5
+ export declare function tableToZodRow<T, S extends SchemaMap>(table: TableDef<T, S>): z.ZodObject<Record<string, ZodTypeAny>>;
6
+ //# sourceMappingURL=zod-table.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zod-table.d.ts","sourceRoot":"","sources":["../../../../../core/src/resource/zod-table.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,KAAK,CAAA;AAErC,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAkC1D,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,CAAC,SAAS,SAAS,EACrD,KAAK,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,GACpB,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAoBzC;AAID,wBAAgB,aAAa,CAAC,CAAC,EAAE,CAAC,SAAS,SAAS,EAClD,KAAK,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,GACpB,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAQzC"}
@@ -0,0 +1,25 @@
1
+ import type { SchemaMap, TableDef, InferRow, TableBuilder } from './table';
2
+ declare const _baseAuditFields: {
3
+ readonly id: import("./column").Column<number>;
4
+ readonly tableName: import("./column").Column<string>;
5
+ readonly operation: import("./column").Column<string>;
6
+ readonly actor: import("./column").Column<string>;
7
+ readonly before: import("./column").Column<string>;
8
+ readonly after: import("./column").Column<string>;
9
+ readonly changedAt: import("./column").Column<Date>;
10
+ };
11
+ type BaseAuditSchema = typeof _baseAuditFields;
12
+ export declare function defineAuditTable<S extends SchemaMap = Record<never, never>>(name: string, extraSchema?: S): TableBuilder<InferRow<BaseAuditSchema & S>, BaseAuditSchema & S>;
13
+ export type AuditTableDef<S extends SchemaMap = BaseAuditSchema> = TableDef<InferRow<BaseAuditSchema & S>, BaseAuditSchema & S>;
14
+ export type AuditLog = InferRow<BaseAuditSchema>;
15
+ export interface AuditConfig<TCtx, TRow, S extends SchemaMap = BaseAuditSchema> {
16
+ /** The audit table to write into. */
17
+ storeIn: AuditTableDef<S>;
18
+ /** Extract actor identifier from request context. Return null for anonymous. */
19
+ actor: (ctx: TCtx) => string | null | undefined;
20
+ /** Field names to replace with '[REDACTED]' in before/after snapshots. */
21
+ redact?: (keyof TRow & string)[];
22
+ }
23
+ export declare function applyRedact<T extends Record<string, unknown>>(row: T, fields: string[]): T;
24
+ export {};
25
+ //# sourceMappingURL=audit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../../../../core/src/schema/audit.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAK1E,QAAA,MAAM,gBAAgB;;;;;;;;CAQZ,CAAA;AAEV,KAAK,eAAe,GAAG,OAAO,gBAAgB,CAAA;AAS9C,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,SAAS,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,EACzE,IAAI,EAAE,MAAM,EACZ,WAAW,CAAC,EAAE,CAAC,GACd,YAAY,CAAC,QAAQ,CAAC,eAAe,GAAG,CAAC,CAAC,EAAE,eAAe,GAAG,CAAC,CAAC,CAGlE;AAID,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,SAAS,GAAG,eAAe,IAC7D,QAAQ,CAAC,QAAQ,CAAC,eAAe,GAAG,CAAC,CAAC,EAAE,eAAe,GAAG,CAAC,CAAC,CAAA;AAI9D,MAAM,MAAM,QAAQ,GAAG,QAAQ,CAAC,eAAe,CAAC,CAAA;AAIhD,MAAM,WAAW,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,SAAS,SAAS,GAAG,eAAe;IAC5E,qCAAqC;IACrC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA;IACzB,gFAAgF;IAChF,KAAK,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;IAC/C,0EAA0E;IAC1E,MAAM,CAAC,EAAE,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC,EAAE,CAAA;CACjC;AAMD,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC3D,GAAG,EAAE,CAAC,EACN,MAAM,EAAE,MAAM,EAAE,GACf,CAAC,CAOH"}
@@ -0,0 +1,31 @@
1
+ export type SqlType = 'INTEGER' | 'TEXT' | 'REAL' | 'BOOLEAN' | 'TIMESTAMP' | 'JSON' | 'UUID' | 'BLOB';
2
+ export interface ColumnDef {
3
+ type: SqlType;
4
+ nullable: boolean;
5
+ primaryKey: boolean;
6
+ autoIncrement: boolean;
7
+ unique: boolean;
8
+ defaultValue?: unknown;
9
+ defaultFn?: () => unknown;
10
+ }
11
+ export declare class Column<T> {
12
+ readonly def: Readonly<ColumnDef>;
13
+ readonly _: T;
14
+ constructor(def: Readonly<ColumnDef>);
15
+ nullable(): Column<T | null>;
16
+ primaryKey(): Column<T>;
17
+ unique(): Column<T>;
18
+ default(value: NonNullable<T>): Column<T>;
19
+ defaultFn(fn: () => NonNullable<T>): Column<T>;
20
+ }
21
+ export declare const column: {
22
+ integer: () => Column<number>;
23
+ text: () => Column<string>;
24
+ real: () => Column<number>;
25
+ boolean: () => Column<boolean>;
26
+ timestamp: () => Column<Date>;
27
+ uuid: () => Column<string>;
28
+ blob: () => Column<Uint8Array>;
29
+ json: <T = unknown>() => Column<T>;
30
+ };
31
+ //# sourceMappingURL=column.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"column.d.ts","sourceRoot":"","sources":["../../../../../core/src/schema/column.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,OAAO,GACf,SAAS,GACT,MAAM,GACN,MAAM,GACN,SAAS,GACT,WAAW,GACX,MAAM,GACN,MAAM,GACN,MAAM,CAAA;AAEV,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,OAAO,CAAA;IACb,QAAQ,EAAE,OAAO,CAAA;IACjB,UAAU,EAAE,OAAO,CAAA;IACnB,aAAa,EAAE,OAAO,CAAA;IACtB,MAAM,EAAE,OAAO,CAAA;IACf,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,SAAS,CAAC,EAAE,MAAM,OAAO,CAAA;CAC1B;AAED,qBAAa,MAAM,CAAC,CAAC;IAIP,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,SAAS,CAAC;IAF7C,SAAiB,CAAC,EAAE,CAAC,CAAA;gBAEA,GAAG,EAAE,QAAQ,CAAC,SAAS,CAAC;IAE7C,QAAQ,IAAI,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC;IAI5B,UAAU,IAAI,MAAM,CAAC,CAAC,CAAC;IAIvB,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC;IAInB,OAAO,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;IAIzC,SAAS,CAAC,EAAE,EAAE,MAAM,WAAW,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;CAG/C;AAUD,eAAO,MAAM,MAAM;mBACF,MAAM,CAAC,MAAM,CAAC;gBACd,MAAM,CAAC,MAAM,CAAC;gBACd,MAAM,CAAC,MAAM,CAAC;mBACd,MAAM,CAAC,OAAO,CAAC;qBACf,MAAM,CAAC,IAAI,CAAC;gBACZ,MAAM,CAAC,MAAM,CAAC;gBACd,MAAM,CAAC,UAAU,CAAC;WACrB,CAAC,iBAAe,MAAM,CAAC,CAAC,CAAC;CACtC,CAAA"}
@@ -0,0 +1,68 @@
1
+ import type { Column } from './column';
2
+ export type SchemaMap = Record<string, Column<any>>;
3
+ export type InferRow<T> = T extends TableDef<infer R, any, any> ? R : T extends SchemaMap ? {
4
+ [K in keyof T]: T[K] extends Column<infer C> ? C : never;
5
+ } : never;
6
+ type IsOptionalOnInsert<C extends Column<any>> = C['def']['primaryKey'] extends true ? true : C['def']['defaultValue'] extends undefined ? C['def']['defaultFn'] extends undefined ? C['def']['nullable'] extends true ? true : false : true : true;
7
+ type InferInsertFromSchema<S extends SchemaMap> = {
8
+ [K in keyof S as IsOptionalOnInsert<S[K]> extends true ? never : K]: S[K] extends Column<infer T> ? NonNullable<T> : never;
9
+ } & {
10
+ [K in keyof S as IsOptionalOnInsert<S[K]> extends true ? K : never]?: S[K] extends Column<infer T> ? T : never;
11
+ };
12
+ export type InferInsert<T> = T extends TableDef<any, infer S, any> ? InferInsertFromSchema<S> : T extends SchemaMap ? InferInsertFromSchema<T> : never;
13
+ export type InferUpdate<T> = T extends TableDef<infer R, infer S, any> ? Partial<R> & {
14
+ [K in keyof S as S[K] extends Column<any> ? S[K]['def']['primaryKey'] extends true ? K : never : never]: R[K & keyof R];
15
+ } : T extends SchemaMap ? Partial<{
16
+ [K in keyof T]: T[K] extends Column<infer C> ? C : never;
17
+ }> : never;
18
+ export type InferTable<T extends TableDef<any, any, any>> = {
19
+ row: InferRow<T>;
20
+ insert: InferInsert<T>;
21
+ update: InferUpdate<T>;
22
+ };
23
+ export interface TableHookHandlers<T> {
24
+ beforeInsert?: (data: Partial<T>) => Partial<T> | void | Promise<Partial<T> | void>;
25
+ afterInsert?: (result: T, input: Partial<T>) => void | Promise<void>;
26
+ beforeUpdate?: (current: T, patch: Partial<T>) => Partial<T> | void | Promise<Partial<T> | void>;
27
+ afterUpdate?: (result: T, before: T) => void | Promise<void>;
28
+ beforeDelete?: (current: T) => void | Promise<void>;
29
+ afterDelete?: (deleted: T) => void | Promise<void>;
30
+ }
31
+ export interface TableEventMap {
32
+ afterInsert?: string;
33
+ afterUpdate?: string;
34
+ afterDelete?: string;
35
+ }
36
+ export type InferTableEvents<T, M extends TableEventMap> = (M['afterInsert'] extends string ? {
37
+ [_ in M['afterInsert']]: T;
38
+ } : Record<never, never>) & (M['afterUpdate'] extends string ? {
39
+ [_ in M['afterUpdate']]: {
40
+ before: T;
41
+ after: T;
42
+ };
43
+ } : Record<never, never>) & (M['afterDelete'] extends string ? {
44
+ [_ in M['afterDelete']]: T;
45
+ } : Record<never, never>);
46
+ export interface TableDef<T, S extends SchemaMap = SchemaMap, TEvents extends TableEventMap = TableEventMap> {
47
+ readonly name: string;
48
+ readonly schema: S;
49
+ readonly primaryKey: keyof T & string;
50
+ readonly hooks: TableHookHandlers<T>[];
51
+ readonly events: TEvents;
52
+ readonly _eventMap: InferTableEvents<T, TEvents>;
53
+ }
54
+ export declare class TableBuilder<T, S extends SchemaMap, TEvents extends TableEventMap = Record<string, never>> {
55
+ private readonly _name;
56
+ private readonly _schema;
57
+ private readonly _hooks;
58
+ private _events;
59
+ constructor(_name: string, _schema: S);
60
+ hook(handlers: TableHookHandlers<T>): this;
61
+ emits<M extends TableEventMap>(map: M): TableBuilder<T, S, M>;
62
+ build(): TableDef<T, S, TEvents>;
63
+ private _findPrimaryKey;
64
+ }
65
+ export declare function defineTable<S extends SchemaMap>(name: string, schema: S): TableBuilder<InferRow<S>, S>;
66
+ export declare function toCreateTableSql<T>(table: TableDef<T>): string;
67
+ export {};
68
+ //# sourceMappingURL=table.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../../../../core/src/schema/table.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import type { BoundVelnDB } from '../db/index';
2
+ import type { ModelDef, ModelInstance } from '../model/index';
3
+ import type { BaseOptions } from '../app/types';
4
+ export type Dep<TKey extends string, TDef> = ModelDef<TKey, TDef> | ServiceDef<TKey, TDef>;
5
+ type DepKey<D> = D extends ModelDef<infer K, unknown> ? K : D extends ServiceDef<infer K, unknown> ? K : never;
6
+ type DepInst<D> = D extends ModelDef<string, infer T> ? ModelInstance<T> : D extends ServiceDef<string, infer T> ? T : never;
7
+ export interface ServiceDef<TKey extends string, TDef> {
8
+ readonly _serviceKey: TKey;
9
+ readonly _deps: ReadonlyArray<Dep<string, unknown>>;
10
+ readonly _options: BaseOptions;
11
+ readonly _factory: (deps: Record<string, unknown>) => TDef;
12
+ }
13
+ export declare class ServiceBuilder<TKey extends string, TDeps extends Record<string, unknown>> {
14
+ private readonly _key;
15
+ private readonly _deps;
16
+ private readonly _opts;
17
+ private constructor();
18
+ static create<TKey extends string>(key: TKey): ServiceBuilder<TKey, Record<never, never>>;
19
+ use<TDep extends Dep<string, unknown>>(dep: TDep): ServiceBuilder<TKey, TDeps & Record<DepKey<TDep>, DepInst<TDep>>>;
20
+ options(opts: BaseOptions): ServiceBuilder<TKey, TDeps>;
21
+ define<TDef>(factory: (deps: TDeps & Record<'logger', import('../app/types').Logger>) => TDef): ServiceDef<TKey, TDef>;
22
+ }
23
+ export declare function defineService<TKey extends string>(key: TKey): ServiceBuilder<TKey, Record<never, never>>;
24
+ export declare function detectCircular(services: ReadonlyArray<ServiceDef<string, unknown>>): void;
25
+ export declare function instantiateServices(services: ReadonlyArray<ServiceDef<string, unknown>>, db: BoundVelnDB): Record<string, unknown>;
26
+ export {};
27
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../core/src/service/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAC9C,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAM/C,MAAM,MAAM,GAAG,CAAC,IAAI,SAAS,MAAM,EAAE,IAAI,IACrC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,GACpB,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;AAG1B,KAAK,MAAM,CAAC,CAAC,IAAK,CAAC,SAAS,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,GAAI,CAAC,GACzC,CAAC,SAAS,UAAU,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,GAC1C,KAAK,CAAA;AAGvB,KAAK,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAK,aAAa,CAAC,CAAC,CAAC,GACxD,CAAC,SAAS,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAI,CAAC,GAC1C,KAAK,CAAA;AAIvB,MAAM,WAAW,UAAU,CAAC,IAAI,SAAS,MAAM,EAAE,IAAI;IACnD,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAA;IAC1B,QAAQ,CAAC,KAAK,EAAQ,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IACzD,QAAQ,CAAC,QAAQ,EAAK,WAAW,CAAA;IACjC,QAAQ,CAAC,QAAQ,EAAK,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAA;CAC9D;AAID,qBAAa,cAAc,CAAC,IAAI,SAAS,MAAM,EAAE,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAElF,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAHxB,OAAO;IAMP,MAAM,CAAC,MAAM,CAAC,IAAI,SAAS,MAAM,EAAE,GAAG,EAAE,IAAI,GAAG,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAIzF,GAAG,CAAC,IAAI,SAAS,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,EACnC,GAAG,EAAE,IAAI,GACR,cAAc,CAAC,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAQpE,OAAO,CAAC,IAAI,EAAE,WAAW,GAAG,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC;IAQvD,MAAM,CAAC,IAAI,EACT,OAAO,EAAE,CAAC,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,OAAO,cAAc,EAAE,MAAM,CAAC,KAAK,IAAI,GAC/E,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC;CAQ1B;AAED,wBAAgB,aAAa,CAAC,IAAI,SAAS,MAAM,EAC/C,GAAG,EAAE,IAAI,GACR,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAE5C;AAiBD,wBAAgB,cAAc,CAAC,QAAQ,EAAE,aAAa,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,IAAI,CA4CzF;AAKD,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,aAAa,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACpD,EAAE,EAAE,WAAW,GACd,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAmCzB"}
package/dist/index.js ADDED
@@ -0,0 +1,41 @@
1
+ // src/index.ts
2
+ function scalarPlugin(app, options) {
3
+ const docPath = options?.path ?? "/docs";
4
+ const title = options?.title ?? "Veln API";
5
+ const version = options?.version ?? "1.0.0";
6
+ app.get(docPath, (_ctx) => {
7
+ const spec = app.getOpenApiSpec({ title, version });
8
+ const specJson = JSON.stringify(spec);
9
+ const html = buildScalarHtml(specJson, title);
10
+ return new Response(html, {
11
+ status: 200,
12
+ headers: { "Content-Type": "text/html; charset=utf-8" }
13
+ });
14
+ });
15
+ return {
16
+ name: "scalar",
17
+ request: (ctx) => ({ ...ctx })
18
+ };
19
+ }
20
+ function buildScalarHtml(specJson, title) {
21
+ const escaped = specJson.replace(/</g, "\\u003c").replace(/\//g, "\\/");
22
+ return `<!DOCTYPE html>
23
+ <html>
24
+ <head>
25
+ <title>${title}</title>
26
+ <meta charset="utf-8" />
27
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
28
+ </head>
29
+ <body>
30
+ <script
31
+ id="api-reference"
32
+ type="application/json"
33
+ >${escaped}</script>
34
+ <script src="https://cdn.jsdelivr.net/npm/@scalar/api-reference"></script>
35
+ </body>
36
+ </html>`;
37
+ }
38
+ export {
39
+ scalarPlugin
40
+ };
41
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import type { Plugin, BaseCtx, OpenApiSpec } from 'oakbun'\n\n// Minimal interface for what scalarPlugin needs from the app\ninterface AppWithDocs {\n get: (path: string, handler: (ctx: BaseCtx) => Response | Promise<Response>) => unknown\n getOpenApiSpec: (options?: { title?: string; version?: string }) => OpenApiSpec\n}\n\nexport function scalarPlugin(\n app: AppWithDocs,\n options?: { path?: string; title?: string; version?: string },\n): Plugin<BaseCtx, Record<never, never>> {\n const docPath = options?.path ?? '/docs'\n const title = options?.title ?? 'Veln API'\n const version = options?.version ?? '1.0.0'\n\n // Register the docs route immediately on the app\n app.get(docPath, (_ctx) => {\n const spec = app.getOpenApiSpec({ title, version })\n const specJson = JSON.stringify(spec)\n const html = buildScalarHtml(specJson, title)\n return new Response(html, {\n status: 200,\n headers: { 'Content-Type': 'text/html; charset=utf-8' },\n })\n })\n\n return {\n name: 'scalar',\n request: (ctx) => ({ ...ctx }),\n }\n}\n\nfunction buildScalarHtml(specJson: string, title: string): string {\n // Escape for safe embedding in script tag\n const escaped = specJson.replace(/</g, '\\\\u003c').replace(/\\//g, '\\\\/')\n return `<!DOCTYPE html>\n<html>\n<head>\n <title>${title}</title>\n <meta charset=\"utf-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n</head>\n<body>\n <script\n id=\"api-reference\"\n type=\"application/json\"\n >${escaped}</script>\n <script src=\"https://cdn.jsdelivr.net/npm/@scalar/api-reference\"></script>\n</body>\n</html>`\n}\n"],"mappings":";AAQO,SAAS,aACd,KACA,SACuC;AACvC,QAAM,UAAU,SAAS,QAAQ;AACjC,QAAM,QAAU,SAAS,SAAW;AACpC,QAAM,UAAU,SAAS,WAAW;AAGpC,MAAI,IAAI,SAAS,CAAC,SAAS;AACzB,UAAM,OAAO,IAAI,eAAe,EAAE,OAAO,QAAQ,CAAC;AAClD,UAAM,WAAW,KAAK,UAAU,IAAI;AACpC,UAAM,OAAO,gBAAgB,UAAU,KAAK;AAC5C,WAAO,IAAI,SAAS,MAAM;AAAA,MACxB,QAAQ;AAAA,MACR,SAAS,EAAE,gBAAgB,2BAA2B;AAAA,IACxD,CAAC;AAAA,EACH,CAAC;AAED,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS,CAAC,SAAS,EAAE,GAAG,IAAI;AAAA,EAC9B;AACF;AAEA,SAAS,gBAAgB,UAAkB,OAAuB;AAEhE,QAAM,UAAU,SAAS,QAAQ,MAAM,SAAS,EAAE,QAAQ,OAAO,KAAK;AACtE,SAAO;AAAA;AAAA;AAAA,WAGE,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAQX,OAAO;AAAA;AAAA;AAAA;AAIZ;","names":[]}
@@ -0,0 +1,15 @@
1
+ import type { Plugin, BaseCtx, OpenApiSpec } from 'oakbun';
2
+ interface AppWithDocs {
3
+ get: (path: string, handler: (ctx: BaseCtx) => Response | Promise<Response>) => unknown;
4
+ getOpenApiSpec: (options?: {
5
+ title?: string;
6
+ version?: string;
7
+ }) => OpenApiSpec;
8
+ }
9
+ export declare function scalarPlugin(app: AppWithDocs, options?: {
10
+ path?: string;
11
+ title?: string;
12
+ version?: string;
13
+ }): Plugin<BaseCtx, Record<never, never>>;
14
+ export {};
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA;AAG1D,UAAU,WAAW;IACnB,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,OAAO,CAAA;IACvF,cAAc,EAAE,CAAC,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,WAAW,CAAA;CAChF;AAED,wBAAgB,YAAY,CAC1B,GAAG,EAAE,WAAW,EAChB,OAAO,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5D,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAoBvC"}