gemi 0.42.1 → 0.43.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app/index.js +1 -1
- package/dist/bin/gemi.js +392 -70
- package/dist/bin/gemi.js.map +15 -12
- package/dist/broadcasting/index.js +1 -1
- package/dist/bun/plugin.js +1 -1
- package/dist/bun/preload.js +1 -1
- package/dist/{chunk-522q81af.js → chunk-20376aj6.js} +3 -3
- package/dist/{chunk-522q81af.js.map → chunk-20376aj6.js.map} +1 -1
- package/dist/{chunk-wa84ybnt.js → chunk-25d4feyv.js} +22 -22
- package/dist/{chunk-wa84ybnt.js.map → chunk-25d4feyv.js.map} +8 -6
- package/dist/{chunk-qyn10pv7.js → chunk-32ct42e2.js} +1 -1
- package/dist/{chunk-cx38xsyf.js → chunk-3xqyzegw.js} +2 -2
- package/dist/{chunk-cx38xsyf.js.map → chunk-3xqyzegw.js.map} +1 -1
- package/dist/{chunk-358x9aca.js → chunk-5kx4hw7c.js} +2 -2
- package/dist/{chunk-358x9aca.js.map → chunk-5kx4hw7c.js.map} +1 -1
- package/dist/{chunk-cwq1vdcb.js → chunk-6gtmkbh0.js} +2 -2
- package/dist/{chunk-cwq1vdcb.js.map → chunk-6gtmkbh0.js.map} +1 -1
- package/dist/{chunk-z9vdcpqr.js → chunk-87keq057.js} +2 -2
- package/dist/{chunk-z9vdcpqr.js.map → chunk-87keq057.js.map} +1 -1
- package/dist/{chunk-ayjtdck4.js → chunk-8b461343.js} +2 -2
- package/dist/{chunk-ayjtdck4.js.map → chunk-8b461343.js.map} +1 -1
- package/dist/{chunk-0pjn1a5d.js → chunk-9cw39se2.js} +2 -2
- package/dist/{chunk-0pjn1a5d.js.map → chunk-9cw39se2.js.map} +1 -1
- package/dist/{chunk-b3qebxqh.js → chunk-9r2k5ykk.js} +2 -2
- package/dist/{chunk-b3qebxqh.js.map → chunk-9r2k5ykk.js.map} +1 -1
- package/dist/{chunk-8cqkdzyh.js → chunk-9s3te5pa.js} +3 -3
- package/dist/{chunk-8cqkdzyh.js.map → chunk-9s3te5pa.js.map} +1 -1
- package/dist/{chunk-9byxbqnn.js → chunk-bsfbba90.js} +2 -2
- package/dist/{chunk-9byxbqnn.js.map → chunk-bsfbba90.js.map} +1 -1
- package/dist/{chunk-8mgsjrcc.js → chunk-cbvq4keh.js} +2 -2
- package/dist/{chunk-8mgsjrcc.js.map → chunk-cbvq4keh.js.map} +1 -1
- package/dist/{chunk-xpk460d1.js → chunk-drbqadx7.js} +1 -1
- package/dist/{chunk-akbepc3f.js → chunk-errq965d.js} +3 -3
- package/dist/{chunk-akbepc3f.js.map → chunk-errq965d.js.map} +1 -1
- package/dist/chunk-fk9xtngd.js +4 -0
- package/dist/chunk-fk9xtngd.js.map +33 -0
- package/dist/{chunk-ratbccpg.js → chunk-fvtfwssb.js} +2 -2
- package/dist/{chunk-ratbccpg.js.map → chunk-fvtfwssb.js.map} +1 -1
- package/dist/{chunk-shpca068.js → chunk-gv4v6qsg.js} +2 -2
- package/dist/{chunk-shpca068.js.map → chunk-gv4v6qsg.js.map} +1 -1
- package/dist/chunk-h4rd3cwd.js +6 -0
- package/dist/{chunk-pn30zsrt.js.map → chunk-h4rd3cwd.js.map} +2 -2
- package/dist/{chunk-pygcsw1f.js → chunk-h509r9s3.js} +2 -2
- package/dist/{chunk-pygcsw1f.js.map → chunk-h509r9s3.js.map} +1 -1
- package/dist/{chunk-fb78bz10.js → chunk-j3x1fffh.js} +1 -1
- package/dist/{chunk-pfaq2mer.js → chunk-jvcbdxtq.js} +2 -2
- package/dist/{chunk-pfaq2mer.js.map → chunk-jvcbdxtq.js.map} +1 -1
- package/dist/{chunk-1kmbs8cd.js → chunk-kkdtznm5.js} +2 -2
- package/dist/{chunk-1kmbs8cd.js.map → chunk-kkdtznm5.js.map} +1 -1
- package/dist/{chunk-qeq8hv3t.js → chunk-knrx23te.js} +2 -2
- package/dist/{chunk-qeq8hv3t.js.map → chunk-knrx23te.js.map} +1 -1
- package/dist/{chunk-gsvzrj5r.js → chunk-m359awjw.js} +2 -2
- package/dist/{chunk-gsvzrj5r.js.map → chunk-m359awjw.js.map} +1 -1
- package/dist/{chunk-rrwtgt86.js → chunk-mfwbdztp.js} +2 -2
- package/dist/{chunk-rrwtgt86.js.map → chunk-mfwbdztp.js.map} +1 -1
- package/dist/{chunk-syaxsp9y.js → chunk-ngnrytfh.js} +2 -2
- package/dist/{chunk-syaxsp9y.js.map → chunk-ngnrytfh.js.map} +1 -1
- package/dist/{chunk-pr3pvtmh.js → chunk-nhyc69tx.js} +2 -2
- package/dist/{chunk-pr3pvtmh.js.map → chunk-nhyc69tx.js.map} +1 -1
- package/dist/{chunk-pxcv9ccp.js → chunk-nx8t65g3.js} +2 -2
- package/dist/{chunk-pxcv9ccp.js.map → chunk-nx8t65g3.js.map} +1 -1
- package/dist/chunk-q8haepmm.js +79 -0
- package/dist/{chunk-pjgfvdr6.js.map → chunk-q8haepmm.js.map} +5 -5
- package/dist/{chunk-hzw2y2rz.js → chunk-qy3aczt9.js} +2 -2
- package/dist/{chunk-hzw2y2rz.js.map → chunk-qy3aczt9.js.map} +1 -1
- package/dist/{chunk-zaa3yt2w.js → chunk-s49529x2.js} +2 -2
- package/dist/{chunk-zaa3yt2w.js.map → chunk-s49529x2.js.map} +1 -1
- package/dist/{chunk-qzemjynx.js → chunk-sdj112nj.js} +2 -2
- package/dist/{chunk-qzemjynx.js.map → chunk-sdj112nj.js.map} +1 -1
- package/dist/{chunk-bfnh3gwv.js → chunk-sdx8r2qb.js} +2 -2
- package/dist/{chunk-bfnh3gwv.js.map → chunk-sdx8r2qb.js.map} +1 -1
- package/dist/chunk-tatd75jn.js +5 -0
- package/dist/{chunk-tb8yy4rf.js.map → chunk-tatd75jn.js.map} +1 -1
- package/dist/{chunk-sbmg0hfr.js → chunk-ty3q916e.js} +3 -3
- package/dist/{chunk-sbmg0hfr.js.map → chunk-ty3q916e.js.map} +1 -1
- package/dist/{chunk-22pr1w8v.js → chunk-w7czqgx2.js} +2 -2
- package/dist/{chunk-22pr1w8v.js.map → chunk-w7czqgx2.js.map} +1 -1
- package/dist/chunk-whj1a3vr.js +5 -0
- package/dist/chunk-whj1a3vr.js.map +15 -0
- package/dist/{chunk-n78kxce1.js → chunk-wrp2v923.js} +2 -2
- package/dist/{chunk-n78kxce1.js.map → chunk-wrp2v923.js.map} +1 -1
- package/dist/{chunk-x3vy6dbw.js → chunk-x2cq1qp8.js} +2 -2
- package/dist/{chunk-x3vy6dbw.js.map → chunk-x2cq1qp8.js.map} +1 -1
- package/dist/{chunk-nccmdkf1.js → chunk-yrtvjmrj.js} +1 -1
- package/dist/{chunk-q0y425d3.js → chunk-ytr22fm4.js} +2 -2
- package/dist/{chunk-q0y425d3.js.map → chunk-ytr22fm4.js.map} +1 -1
- package/dist/{chunk-81yxskss.js → chunk-ywhazhqt.js} +2 -2
- package/dist/{chunk-81yxskss.js.map → chunk-ywhazhqt.js.map} +1 -1
- package/dist/config/index.js +1 -1
- package/dist/email/Email.d.ts.map +1 -1
- package/dist/email/index.js +3 -2
- package/dist/email/index.js.map +15 -4
- package/dist/facades/FileStorage.d.ts +14 -1
- package/dist/facades/FileStorage.d.ts.map +1 -1
- package/dist/facades/index.js +2 -2
- package/dist/facades/index.js.map +1 -1
- package/dist/http/ApiRouter.d.ts +41 -1
- package/dist/http/ApiRouter.d.ts.map +1 -1
- package/dist/http/HttpRequest.d.ts +7 -0
- package/dist/http/HttpRequest.d.ts.map +1 -1
- package/dist/http/ViewRouter.d.ts.map +1 -1
- package/dist/http/contentDisposition.d.ts +9 -0
- package/dist/http/contentDisposition.d.ts.map +1 -0
- package/dist/http/createStreamResponse.d.ts +38 -0
- package/dist/http/createStreamResponse.d.ts.map +1 -0
- package/dist/http/errors.d.ts +16 -0
- package/dist/http/errors.d.ts.map +1 -1
- package/dist/http/index.d.ts +3 -1
- package/dist/http/index.d.ts.map +1 -1
- package/dist/http/index.js +2 -2
- package/dist/http/index.js.map +1 -1
- package/dist/http/range.d.ts +63 -0
- package/dist/http/range.d.ts.map +1 -0
- package/dist/http/requestContext.d.ts +11 -0
- package/dist/http/requestContext.d.ts.map +1 -1
- package/dist/i18n/index.js +1 -1
- package/dist/kernel/index.js +2 -2
- package/dist/kernel/index.js.map +1 -1
- package/dist/server/index.js +2 -2
- package/dist/server/index.js.map +1 -1
- package/dist/services/file-storage/drivers/AzureBlobDriver.d.ts +78 -0
- package/dist/services/file-storage/drivers/AzureBlobDriver.d.ts.map +1 -0
- package/dist/services/file-storage/drivers/FileStorageDriver.d.ts +17 -1
- package/dist/services/file-storage/drivers/FileStorageDriver.d.ts.map +1 -1
- package/dist/services/file-storage/drivers/FileSystemDriver.d.ts +3 -1
- package/dist/services/file-storage/drivers/FileSystemDriver.d.ts.map +1 -1
- package/dist/services/file-storage/drivers/S3Driver.d.ts +3 -1
- package/dist/services/file-storage/drivers/S3Driver.d.ts.map +1 -1
- package/dist/services/file-storage/drivers/types.d.ts +45 -0
- package/dist/services/file-storage/drivers/types.d.ts.map +1 -1
- package/dist/services/index.d.ts +4 -1
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +2 -2
- package/dist/services/index.js.map +1 -1
- package/dist/services/router/ApiRouterServiceContainer.d.ts +5 -0
- package/dist/services/router/ApiRouterServiceContainer.d.ts.map +1 -1
- package/dist/services/router/createFlatApiRoutes.d.ts.map +1 -1
- package/package.json +7 -1
- package/dist/chunk-n1xpxhm0.js +0 -5
- package/dist/chunk-n1xpxhm0.js.map +0 -13
- package/dist/chunk-pjgfvdr6.js +0 -79
- package/dist/chunk-pn30zsrt.js +0 -6
- package/dist/chunk-tb8yy4rf.js +0 -5
- package/dist/chunk-yeqwzeq7.js +0 -4
- package/dist/chunk-yeqwzeq7.js.map +0 -32
- /package/dist/{chunk-qyn10pv7.js.map → chunk-32ct42e2.js.map} +0 -0
- /package/dist/{chunk-xpk460d1.js.map → chunk-drbqadx7.js.map} +0 -0
- /package/dist/{chunk-fb78bz10.js.map → chunk-j3x1fffh.js.map} +0 -0
- /package/dist/{chunk-nccmdkf1.js.map → chunk-yrtvjmrj.js.map} +0 -0
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { type ByteRange } from "./range";
|
|
2
|
+
import type { ReadResult } from "../services/file-storage/drivers/types";
|
|
3
|
+
export type StreamBody = Blob | ReadableStream<Uint8Array> | ArrayBuffer | ArrayBufferView;
|
|
4
|
+
export type StreamDescriptor = {
|
|
5
|
+
file: StreamBody;
|
|
6
|
+
/** File name sent in `Content-Disposition`. Defaults to the blob name, if any. */
|
|
7
|
+
name?: string;
|
|
8
|
+
/** Overrides the mime type. Defaults to the blob type, then `application/octet-stream`. */
|
|
9
|
+
type?: string;
|
|
10
|
+
/** `true` sends `attachment` (download), `false` (default) sends `inline`. */
|
|
11
|
+
download?: boolean;
|
|
12
|
+
/** Total size of the complete object. Required when `file` is a stream, or ranges cannot be served. */
|
|
13
|
+
total?: number;
|
|
14
|
+
start?: number;
|
|
15
|
+
end?: number;
|
|
16
|
+
/** Set when `file` already holds only the requested window. */
|
|
17
|
+
partial?: boolean;
|
|
18
|
+
etag?: string;
|
|
19
|
+
lastModified?: Date;
|
|
20
|
+
status?: number;
|
|
21
|
+
headers?: Record<string, string>;
|
|
22
|
+
};
|
|
23
|
+
export type StreamOutput = ReadResult | Blob | Response | StreamDescriptor | null | undefined;
|
|
24
|
+
/** A 416, whose `Content-Range` reports the current size and no offsets. */
|
|
25
|
+
export declare function createUnsatisfiableResponse(total: number): Response;
|
|
26
|
+
/**
|
|
27
|
+
* Turns what a `this.stream()` handler returned into an HTTP response,
|
|
28
|
+
* applying RFC 7233 range semantics.
|
|
29
|
+
*
|
|
30
|
+
* Builds a fresh `Headers` rather than taking the request context's: merging
|
|
31
|
+
* context headers and cookies is the router container's job, and doing it in
|
|
32
|
+
* both places would append `Set-Cookie` twice.
|
|
33
|
+
*/
|
|
34
|
+
export declare function createStreamResponse(output: StreamOutput, options: {
|
|
35
|
+
range: ByteRange | null;
|
|
36
|
+
method?: string;
|
|
37
|
+
}): Promise<Response>;
|
|
38
|
+
//# sourceMappingURL=createStreamResponse.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createStreamResponse.d.ts","sourceRoot":"","sources":["../../http/createStreamResponse.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,SAAS,EACf,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wCAAwC,CAAC;AAEzE,MAAM,MAAM,UAAU,GAClB,IAAI,GACJ,cAAc,CAAC,UAAU,CAAC,GAC1B,WAAW,GACX,eAAe,CAAC;AAEpB,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,UAAU,CAAC;IACjB,kFAAkF;IAClF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,2FAA2F;IAC3F,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,uGAAuG;IACvG,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,+DAA+D;IAC/D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,IAAI,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,YAAY,GACpB,UAAU,GACV,IAAI,GACJ,QAAQ,GACR,gBAAgB,GAChB,IAAI,GACJ,SAAS,CAAC;AAqBd,4EAA4E;AAC5E,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,CAanE;AAuDD;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE;IAAE,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GACpD,OAAO,CAAC,QAAQ,CAAC,CAkGnB"}
|
package/dist/http/errors.d.ts
CHANGED
|
@@ -7,6 +7,22 @@ export declare class InsufficientPermissionsError extends RequestBreakerError {
|
|
|
7
7
|
private error;
|
|
8
8
|
constructor(error?: string);
|
|
9
9
|
}
|
|
10
|
+
/**
|
|
11
|
+
* A `Range` that cannot be satisfied against the object's current size.
|
|
12
|
+
*
|
|
13
|
+
* Extends `RequestBreakerError` so a bare `FileStorage.read()` inside an
|
|
14
|
+
* ordinary route still produces a correct 416 — and, importantly, so it does
|
|
15
|
+
* not trip `onRequestFail`. A 416 is the client's header being wrong about the
|
|
16
|
+
* object, not a server failure.
|
|
17
|
+
*/
|
|
18
|
+
export declare class RangeNotSatisfiableError extends RequestBreakerError {
|
|
19
|
+
total: number;
|
|
20
|
+
constructor(total: number);
|
|
21
|
+
}
|
|
22
|
+
export declare class FileNotFoundError extends RequestBreakerError {
|
|
23
|
+
fileName: string;
|
|
24
|
+
constructor(fileName: string);
|
|
25
|
+
}
|
|
10
26
|
export declare class AuthenticationError extends RequestBreakerError {
|
|
11
27
|
constructor();
|
|
12
28
|
payload: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../http/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../http/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAG9C,qBAAa,kBAAmB,SAAQ,mBAAmB;IACzD,OAAO,CAAC,KAAK,CAAS;gBACV,KAAK,GAAE,MAAyB;CAY7C;AAED,qBAAa,4BAA6B,SAAQ,mBAAmB;IACnE,OAAO,CAAC,KAAK,CAAS;gBACV,KAAK,GAAE,MAAmC;CAYvD;AAED;;;;;;;GAOG;AACH,qBAAa,wBAAyB,SAAQ,mBAAmB;IAC5C,KAAK,EAAE,MAAM;gBAAb,KAAK,EAAE,MAAM;CAmBjC;AAED,qBAAa,iBAAkB,SAAQ,mBAAmB;IACrC,QAAQ,EAAE,MAAM;gBAAhB,QAAQ,EAAE,MAAM;CAYpC;AAED,qBAAa,mBAAoB,SAAQ,mBAAmB;;IAM1D,OAAO;;;;;;;;;;;;;;MAaL;CACH"}
|
package/dist/http/index.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
export { Controller, ResourceController } from "./Controller";
|
|
2
2
|
export { ApiRouter, type CreateRPC } from "./ApiRouter";
|
|
3
3
|
export { createFileResponse, ViewRouter, type CreateViewRPC, type FileOutput, type ViewHandler, } from "./ViewRouter";
|
|
4
|
+
export { createStreamResponse, createUnsatisfiableResponse, type StreamOutput, type StreamDescriptor, } from "./createStreamResponse";
|
|
5
|
+
export { formatContentRange, formatUnsatisfiedContentRange, parseContentRange, parseRangeHeader, resolveRange, toRangeHeaderValue, type ByteRange, type ContentRange, type ResolvedRange, } from "./range";
|
|
4
6
|
export { ValidationError } from "./Router";
|
|
5
7
|
export { HttpRequest } from "./HttpRequest";
|
|
6
8
|
export { Middleware } from "./Middleware";
|
|
@@ -14,5 +16,5 @@ export { RateLimitMiddleware } from "./RateLimitMiddleware";
|
|
|
14
16
|
export { CSRFMiddleware } from "./CSRFMiddleware";
|
|
15
17
|
export { PoliciesServiceProvider } from "./PoliciesServiceProvider";
|
|
16
18
|
export { Policies } from "./Policy";
|
|
17
|
-
export { AuthenticationError, AuthorizationError, InsufficientPermissionsError } from "./errors";
|
|
19
|
+
export { AuthenticationError, AuthorizationError, FileNotFoundError, InsufficientPermissionsError, RangeNotSatisfiableError, } from "./errors";
|
|
18
20
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/http/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../http/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EACL,kBAAkB,EAClB,UAAU,EACV,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,WAAW,GACjB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAE9C,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpC,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../http/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EACL,kBAAkB,EAClB,UAAU,EACV,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,WAAW,GACjB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,oBAAoB,EACpB,2BAA2B,EAC3B,KAAK,YAAY,EACjB,KAAK,gBAAgB,GACtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,kBAAkB,EAClB,6BAA6B,EAC7B,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,EACZ,kBAAkB,EAClB,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,aAAa,GACnB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAE9C,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpC,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,4BAA4B,EAC5B,wBAAwB,GACzB,MAAM,UAAU,CAAC"}
|
package/dist/http/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import{$ as
|
|
2
|
+
import{$ as x,O as a,P as b,S as j,T as k,U as l,V as m,W as s,X as t,Y as u,Z as v,_ as w,ca as y,da as z,ea as A,ga as B,ha as C,ia as D,ja as E}from"../chunk-fk9xtngd.js";import{Lb as c,Mb as d,Nb as e,Ob as f,Pb as g,Qb as h,Sb as i,Tb as n,Ub as o,Vb as p,Wb as q,Xb as r}from"../chunk-whj1a3vr.js";import"../chunk-sdx8r2qb.js";import"../chunk-6gtmkbh0.js";export{e as toRangeHeaderValue,d as resolveRange,c as parseRangeHeader,f as parseContentRange,w as getCookies,h as formatUnsatisfiedContentRange,g as formatContentRange,l as createUnsatisfiableResponse,m as createStreamResponse,t as createFileResponse,u as ViewRouter,j as ValidationError,b as ResourceController,i as RequestBreakerError,B as RateLimitMiddleware,p as RangeNotSatisfiableError,D as PoliciesServiceProvider,E as Policies,x as MiddlewareServiceProvider,v as Middleware,o as InsufficientPermissionsError,k as HttpRequest,q as FileNotFoundError,A as CorsMiddleware,a as Controller,z as CacheMiddleware,C as CSRFMiddleware,n as AuthorizationError,y as AuthenticationMiddleware,r as AuthenticationError,s as ApiRouter};
|
|
3
3
|
|
|
4
|
-
//# debugId=
|
|
4
|
+
//# debugId=12F3BCA529DCF87964756E2164756E21
|
package/dist/http/index.js.map
CHANGED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RFC 7233 byte-range parsing and resolution.
|
|
3
|
+
*
|
|
4
|
+
* Deliberately dependency-free: the file storage drivers import `ByteRange`
|
|
5
|
+
* from here, and drivers otherwise import nothing out of `http/`.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* A parsed but *unresolved* `Range` header. The suffix form carries no absolute
|
|
9
|
+
* offsets — resolving it needs the total size of the object.
|
|
10
|
+
*/
|
|
11
|
+
export type ByteRange = {
|
|
12
|
+
kind: "offset";
|
|
13
|
+
start: number;
|
|
14
|
+
end: number | null;
|
|
15
|
+
} | {
|
|
16
|
+
kind: "suffix";
|
|
17
|
+
suffixLength: number;
|
|
18
|
+
};
|
|
19
|
+
/** Absolute, inclusive, clamped-to-the-object byte offsets. */
|
|
20
|
+
export type ResolvedRange = {
|
|
21
|
+
start: number;
|
|
22
|
+
end: number;
|
|
23
|
+
length: number;
|
|
24
|
+
};
|
|
25
|
+
/** A parsed response `Content-Range` of the `bytes S-E/TOTAL` form. */
|
|
26
|
+
export type ContentRange = {
|
|
27
|
+
start: number;
|
|
28
|
+
end: number;
|
|
29
|
+
total: number;
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Parses a request `Range` header.
|
|
33
|
+
*
|
|
34
|
+
* Returns `null` for anything we cannot or will not serve as a partial
|
|
35
|
+
* response. That is not an error path: RFC 7233 §3.1 requires a recipient to
|
|
36
|
+
* ignore a `Range` it does not understand, and §4.1 lets a server ignore one it
|
|
37
|
+
* does. Every `null` here means "serve the complete representation with 200".
|
|
38
|
+
*
|
|
39
|
+
* Only a single range is supported — we never emit `multipart/byteranges`, so a
|
|
40
|
+
* multi-range request is ignored rather than partially honoured.
|
|
41
|
+
*/
|
|
42
|
+
export declare function parseRangeHeader(header: string | null | undefined): ByteRange | null;
|
|
43
|
+
/**
|
|
44
|
+
* Resolves a parsed range against a known total size.
|
|
45
|
+
*
|
|
46
|
+
* Returns `null` when the range is unsatisfiable, which the caller must turn
|
|
47
|
+
* into a 416 rather than a full response.
|
|
48
|
+
*/
|
|
49
|
+
export declare function resolveRange(range: ByteRange, total: number): ResolvedRange | null;
|
|
50
|
+
/** Renders a range back into a `Range` request header for a storage backend. */
|
|
51
|
+
export declare function toRangeHeaderValue(range: ByteRange): string;
|
|
52
|
+
/**
|
|
53
|
+
* Parses a response `Content-Range`. Storage backends report the authoritative
|
|
54
|
+
* total size of the object here on a ranged read, which is what lets a driver
|
|
55
|
+
* answer a range without a second round trip for the size.
|
|
56
|
+
*
|
|
57
|
+
* The unsatisfied form used on a 416 has no offsets and returns `null`.
|
|
58
|
+
*/
|
|
59
|
+
export declare function parseContentRange(value: string | null | undefined): ContentRange | null;
|
|
60
|
+
export declare function formatContentRange(start: number, end: number, total: number): string;
|
|
61
|
+
/** The `Content-Range` of a 416: no offsets, just the current total size. */
|
|
62
|
+
export declare function formatUnsatisfiedContentRange(total: number): string;
|
|
63
|
+
//# sourceMappingURL=range.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"range.d.ts","sourceRoot":"","sources":["../../http/range.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;GAGG;AACH,MAAM,MAAM,SAAS,GACjB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GACrD;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7C,+DAA+D;AAC/D,MAAM,MAAM,aAAa,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3E,uEAAuE;AACvE,MAAM,MAAM,YAAY,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAYzE;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAChC,SAAS,GAAG,IAAI,CA0DlB;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,MAAM,GACZ,aAAa,GAAG,IAAI,CA8BtB;AAED,gFAAgF;AAChF,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAO3D;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC/B,YAAY,GAAG,IAAI,CAerB;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,GACZ,MAAM,CAER;AAED,6EAA6E;AAC7E,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEnE"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { HttpRequest } from "./HttpRequest";
|
|
2
2
|
import { Metadata } from "./Metadata";
|
|
3
|
+
import type { ByteRange } from "./range";
|
|
3
4
|
export interface CreateCookieOptions {
|
|
4
5
|
maxAge?: number;
|
|
5
6
|
expires?: Date;
|
|
@@ -21,6 +22,16 @@ declare class Store {
|
|
|
21
22
|
csrfHmac: string | null;
|
|
22
23
|
locale: string | null;
|
|
23
24
|
metadata: Metadata;
|
|
25
|
+
/**
|
|
26
|
+
* The parsed `Range` of the in-flight request, picked up by
|
|
27
|
+
* `FileStorage.read()` so a range reaches the storage backend without every
|
|
28
|
+
* handler having to thread it through by hand.
|
|
29
|
+
*
|
|
30
|
+
* Only populated inside a `this.stream()` route, and cleared once that route
|
|
31
|
+
* returns: a `FileStorage.read()` in an ordinary handler must never start
|
|
32
|
+
* silently returning partial bytes.
|
|
33
|
+
*/
|
|
34
|
+
rangeRequest: ByteRange | null;
|
|
24
35
|
constructor(req: HttpRequest);
|
|
25
36
|
setLocale(locale: string): void;
|
|
26
37
|
renderMeta(): {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requestContext.d.ts","sourceRoot":"","sources":["../../http/requestContext.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"requestContext.d.ts","sourceRoot":"","sources":["../../http/requestContext.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,mBAAwB,UAelC;AAID,cAAM,KAAK;IAoBU,GAAG,EAAE,WAAW;IAnBnC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAa;IACjC,OAAO,EAAE,OAAO,CAAiB;IACjC,mBAAmB,mCAA0C;IAC7D,oBAAoB,YAAiB,OAAO,CAAC,GAAG,CAAC,EAAI;IACrD,IAAI,EAAE,GAAG,CAAQ;IACjB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAQ;IAC/B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAQ;IAC7B,QAAQ,WAAkB;IAC1B;;;;;;;;OAQG;IACH,YAAY,EAAE,SAAS,GAAG,IAAI,CAAQ;gBAEnB,GAAG,EAAE,WAAW;IAEnC,SAAS,CAAC,MAAM,EAAE,MAAM;IAIxB,UAAU;;;;;IAIV,WAAW,CAAC,IAAI,EAAE,MAAM;IAIxB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,mBAAwB;IAIxE,YAAY,CAAC,IAAI,EAAE,MAAM;IAIzB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAItC,OAAO,CAAC,IAAI,EAAE,GAAG;IAIjB,UAAU,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC;IAIrC,OAAO;CAOR;AAED,qBAAa,cAAc;IACzB,MAAM,CAAC,QAAQ;IAIf,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC;IAI5C,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC;CAGxD"}
|
package/dist/i18n/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import{q as x}from"../chunk-
|
|
2
|
+
import{q as x}from"../chunk-h509r9s3.js";import{u as S}from"../chunk-q8haepmm.js";import"../chunk-fk9xtngd.js";import"../chunk-ty3q916e.js";import"../chunk-whj1a3vr.js";import"../chunk-sdx8r2qb.js";import"../chunk-6gtmkbh0.js";import{createElement as $,Fragment as e,isValidElement as b}from"react";function y(r,n){let s=Object.values(n).some((o)=>typeof o==="function"&&b(o(""))),g=/{{([^{}]+?)(?::([^{}\[\]]+?))?(?:\[(.*?)\])?}}/g;if(!s)return r.replace(g,(f,d,t,w)=>{let P=d.includes(":")?d.split(":")[0]:d,i=n[P];if(i===void 0)return f;if(typeof i==="function"){let U=i(w!==void 0?w:"");if(b(U))throw Error("JSX returned in string context");return String(U)}if(t)switch(t.toLowerCase()){case"number":return Number(i).toString();case"string":return String(i);case"boolean":return Boolean(i).toString();default:return String(i)}return String(i)});else{let o=[],f=0,d=null;while((d=g.exec(r))!==null){let[t,w,P,i]=d,c=d.index,U=w.includes(":")?w.split(":")[0]:w;if(c>f)o.push(r.substring(f,c));let T=n[U];if(T===void 0)o.push(t);else if(typeof T==="function"){let K=T(i!==void 0?i:"");o.push(K)}else if(P)switch(P.toLowerCase()){case"number":o.push(Number(T).toString());break;case"string":o.push(String(T));break;case"boolean":o.push(Boolean(T).toString());break;default:o.push(String(T))}else o.push(String(T));f=c+t.length}if(f<r.length)o.push(r.substring(f));return $(e,{},...o)}}class R{name;dictionary;constructor(r,n){this.name=r;this.dictionary=n}reference(r){if(typeof window<"u")throw Error("Cannot use reference in the browser");if(!this.dictionary?.[r])throw Error(`Translation not found for ${String(r)}`);return this.dictionary[r]}render(r,...n){let{locale:s=S.locale(),params:g}={params:{},...n[0]};if(typeof window<"u")throw Error("Cannot use render in the browser");if(!this.dictionary?.[r]?.[s])throw Error(`Translation not found for ${String(r)} in ${String(s)}`);return y(this.dictionary[r][s],g??{})}static create(r,n){return new R(r,n)}static text(r,...n){let{locale:s=S.locale(),params:g}={params:{},...n?.[0]};if(!r?.[s])throw Error(`Translation not found for ${String(s)}`);return y(r[s],g??{})}}export{x as I18nServiceProvider,R as Dictionary};
|
|
3
3
|
|
|
4
4
|
//# debugId=1491F33D6E4F53A164756E2164756E21
|
package/dist/kernel/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import{q as y}from"../chunk-
|
|
2
|
+
import{q as y}from"../chunk-h509r9s3.js";import{r as z}from"../chunk-tatd75jn.js";import{A as X,E as Y,G as N,H as Z,I as $,K as J,M as K,N as V,s as Q,v as W}from"../chunk-q8haepmm.js";import{$ as p,ba as H,fa as L}from"../chunk-fk9xtngd.js";import{ka as T}from"../chunk-ty3q916e.js";import{Aa as u,Ea as m,Ia as C,Ka as c,La as E,na as A,oa as R,ta as S,wa as d,xa as h,ya as k,za as I}from"../chunk-25d4feyv.js";import"../chunk-knrx23te.js";import"../chunk-20376aj6.js";import"../chunk-ngnrytfh.js";import"../chunk-9s3te5pa.js";import"../chunk-qy3aczt9.js";import"../chunk-ytr22fm4.js";import"../chunk-kkdtznm5.js";import"../chunk-s49529x2.js";import"../chunk-5kx4hw7c.js";import"../chunk-nx8t65g3.js";import"../chunk-sdj112nj.js";import"../chunk-gv4v6qsg.js";import{Kb as _}from"../chunk-9r2k5ykk.js";import{_b as B}from"../chunk-whj1a3vr.js";import{$b as G,ac as O}from"../chunk-sdx8r2qb.js";import"../chunk-6gtmkbh0.js";class q extends O{service;static _name="CronServiceContainer";constructor(x){super();this.service=x;if(this.service.jobs.length===0)return;let P=globalThis.__gemiCronJobs??=new Map,f=async(w)=>{return await this.service.kernel.waitForBoot.call(this.service.kernel),await this.service.kernel.run.call(this.service.kernel,w)};for(let w of this.service.jobs){let U=new w;if(!U.name){console.error(`Cron job must have a name. Job: ${JSON.stringify(U)}`);continue}if(!U.cron){console.error(`Cron job must have an expression. Job: ${U.name}`);continue}P.get(U.name)?.stop();let l=Bun.cron(U.cron,()=>f(async()=>{try{await U.onTick.call(U)}catch(M){console.error(`Error executing cron job ${U.name}:`,M)}try{await U.callback.call(U)}catch(M){console.error(`Error in cron job ${U.name}:`,M)}try{await U.onComplete.call(U)}catch(M){console.error(`Error completing cron job ${U.name}:`,M)}}));P.set(U.name,l)}}}class D extends B{id=crypto.randomUUID();boot(){}}class F extends B{services=new Map;boot(){}}class j{emailServiceProvider=d;authenticationServiceProvider=N;middlewareServiceProvider=p;i18nServiceProvider=y;fileStorageServiceProvider=A;apiRouterServiceProvider=R;viewRouterServiceProvider=k;rateLimiterServiceProvider=S;broadcastingsServiceProvider=h;loggingServiceProvider=I;queueServiceProvider=u;imageServiceProvider=m;cronServiceProvider=C;kernelIdServiceProvider=D;redisServiceProvider=c;services={};booted=!1;boot(){this.services={[z._name]:new z(new this.emailServiceProvider),[H._name]:new H(new this.authenticationServiceProvider),[$._name]:new $(new this.middlewareServiceProvider),[T._name]:new T(new this.i18nServiceProvider),[W._name]:new W(new this.fileStorageServiceProvider),[V._name]:new V(new this.apiRouterServiceProvider),[K._name]:new K(new this.viewRouterServiceProvider),[L._name]:new L(new this.rateLimiterServiceProvider),[Q._name]:new Q(new this.broadcastingsServiceProvider),[X._name]:new X(new this.loggingServiceProvider),[_._name]:new _(new this.queueServiceProvider),[Z._name]:new Z(new this.imageServiceProvider),[q._name]:new q(new this.cronServiceProvider(this)),[J._name]:new J(new this.kernelIdServiceProvider),[Y._name]:new Y(new this.redisServiceProvider),[E._name]:new E(new F)},this.booted=!0}run(x){let P=this.services;return G.run(P,x)}destroy(){for(let x of Object.keys(this.services))delete this.services[x];G.disable()}async waitForBoot(){if(!this.booted)await new Promise((x)=>{while(!this.booted)setTimeout(()=>{if(this.booted)x()},10)})}}class v{prisma;constructor(x){this.prisma=x}async findUserByVerificationToken(x){return await this.prisma.user.findFirst({where:{verificationToken:x}})}async verifyUser(x){return await this.prisma.user.update({where:{email:x},data:{emailVerifiedAt:new Date}})}async createSessionV2(x){return await this.prisma.session.create({data:x,include:{user:{select:{password:!1,id:!0,email:!0,globalRole:!0,name:!0,locale:!0,publicId:!0,accounts:{select:{id:!0,publicId:!0,organization:!0,organizationRole:!0}}}}}})}async createSession(x){return await this.prisma.session.create({data:x,include:{user:!0}})}async createUser(x){return await this.prisma.user.create({data:x,omit:{password:!0}})}async deleteSession(x){return await this.prisma.session.deleteMany({where:{token:x.token}})}async findUserByEmailAddress(x,P){if(P)return await this.prisma.user.findUnique({where:{email:x,emailVerifiedAt:{not:null}}});return await this.prisma.user.findUnique({where:{email:x}})}async findSession(x){if(!x.token)return null;try{return await this.prisma.session.findUnique({where:{token:x.token},include:{user:{select:{password:!1,id:!0,email:!0,globalRole:!0,name:!0,locale:!0,publicId:!0,accounts:{select:{id:!0,publicId:!0,organization:!0,organizationRole:!0}}}}}})}catch(P){return console.log(P),null}}async updateSession(x){return await this.prisma.session.update({where:{token:x.token},data:{expiresAt:x.expiresAt},include:{user:{select:{id:!0,password:!1,email:!0,globalRole:!0,name:!0,locale:!0,publicId:!0,accounts:{select:{id:!0,publicId:!0,organization:!0,organizationRole:!0}},organization:!0}}}})}async updateUserPassword(x){return await this.prisma.user.update({where:{id:x.id},data:{password:x.password}})}async createPasswordResetToken(x){return await this.prisma.passwordResetToken.create({data:{user:{connect:{id:x.user.id}},token:x.token}})}async findPasswordResetToken(x){let{token:P}=x;return await this.prisma.passwordResetToken.findUnique({where:{token:P},include:{user:!0}})}async deleteAllUserSessions(x){return await this.prisma.session.deleteMany({where:{userId:x}})}async deletePasswordResetToken(x){let{token:P}=x;return await this.prisma.passwordResetToken.delete({where:{token:P}})}async createAccount(x){return await this.prisma.account.create({data:{organizationId:x.organizationId,organizationRole:x.organizationRole,userId:x.userId}})}async deleteInvitationById(x){return await this.prisma.organizationInvitation.delete({where:{publicId:x}})}async findInvitation(x,P){return await this.prisma.organizationInvitation.findFirst({where:{publicId:x,email:P}})}async createMagicLinkToken(x){return await this.prisma.magicLinkToken.create({data:{email:x.email,token:x.token,pin:x.pin}})}async findUserMagicLinkToken(x){let{token:P,pin:f,email:w}=x;if(P)return this.prisma.magicLinkToken.findUnique({where:{token_email:{email:w,token:P}}});else return await this.prisma.magicLinkToken.findUnique({where:{pin_email:{email:w,pin:f}}})}async deleteMagicLinkToken(x){return await this.prisma.magicLinkToken.deleteMany({where:{email:x}})}async createSocialAccount(x){return await this.prisma.socialAccount.create({data:x})}}export{v as PrismaAuthenticationAdapter,j as Kernel,N as AuthenticationServiceProvider};
|
|
3
3
|
|
|
4
|
-
//# debugId=
|
|
4
|
+
//# debugId=4C9A3D295A07FEA264756E2164756E21
|
package/dist/kernel/index.js.map
CHANGED
|
@@ -9,6 +9,6 @@
|
|
|
9
9
|
"import type {\n User,\n CreateSessionArgs,\n DeleteSessionArgs,\n SessionWithUser,\n CreateUserArgs,\n FindSessionArgs,\n UpdateSessionArgs,\n IAuthenticationAdapter,\n CreatePasswordResetTokenArgs,\n PasswordResetToken,\n FindPasswordResetTokenArgs,\n DeletePasswordResetTokenArgs,\n CreateAccountArgs,\n CreateSocialAccountArgs,\n} from \"./types\";\n\nexport class PrismaAuthenticationAdapter implements IAuthenticationAdapter {\n constructor(protected prisma: any) {}\n\n async findUserByVerificationToken(token: string): Promise<User | null> {\n return await this.prisma.user.findFirst({\n where: { verificationToken: token },\n });\n }\n\n async verifyUser(email: string): Promise<User> {\n return await this.prisma.user.update({\n where: { email },\n data: { emailVerifiedAt: new Date() },\n });\n }\n\n async createSessionV2(args: CreateSessionArgs): Promise<SessionWithUser> {\n return await this.prisma.session.create({\n data: args,\n include: {\n user: {\n select: {\n password: false,\n id: true,\n email: true,\n globalRole: true,\n name: true,\n locale: true,\n publicId: true,\n accounts: {\n select: {\n id: true,\n publicId: true,\n organization: true,\n organizationRole: true,\n },\n },\n },\n },\n },\n });\n }\n\n async createSession(args: CreateSessionArgs): Promise<SessionWithUser> {\n return await this.prisma.session.create({\n data: args,\n include: { user: true },\n });\n }\n\n async createUser(args: CreateUserArgs): Promise<User> {\n return await this.prisma.user.create({\n data: args,\n omit: { password: true },\n });\n }\n\n async deleteSession(args: DeleteSessionArgs): Promise<void> {\n return await this.prisma.session.deleteMany({\n where: { token: args.token },\n });\n }\n\n async findUserByEmailAddress(email: string, verify: boolean): Promise<User> {\n if (verify) {\n return await this.prisma.user.findUnique({\n where: { email, emailVerifiedAt: { not: null } },\n });\n }\n\n const user = await this.prisma.user.findUnique({\n where: { email },\n });\n\n return user;\n }\n\n async findSession(args: FindSessionArgs): Promise<SessionWithUser | null> {\n if (!args.token) return null;\n try {\n const session = await this.prisma.session.findUnique({\n where: {\n token: args.token,\n // userAgent:\n // process.env.NODE_ENV === \"development\" ? \"local\" : args.userAgent,\n },\n include: {\n user: {\n select: {\n password: false,\n id: true,\n email: true,\n globalRole: true,\n name: true,\n locale: true,\n publicId: true,\n accounts: {\n select: {\n id: true,\n publicId: true,\n organization: true,\n organizationRole: true,\n },\n },\n },\n },\n },\n });\n\n return session;\n } catch (err) {\n console.log(err);\n return null;\n }\n }\n\n async updateSession(\n args: UpdateSessionArgs,\n ): Promise<SessionWithUser | null> {\n return await this.prisma.session.update({\n where: { token: args.token },\n data: { expiresAt: args.expiresAt },\n include: {\n user: {\n select: {\n id: true,\n password: false,\n email: true,\n globalRole: true,\n name: true,\n locale: true,\n publicId: true,\n accounts: {\n select: {\n id: true,\n publicId: true,\n organization: true,\n organizationRole: true,\n },\n },\n organization: true,\n },\n },\n },\n });\n }\n\n async updateUserPassword(args: {\n id: number;\n password: string;\n }): Promise<User> {\n return await this.prisma.user.update({\n where: { id: args.id },\n data: { password: args.password },\n });\n }\n\n async createPasswordResetToken(args: CreatePasswordResetTokenArgs) {\n return await this.prisma.passwordResetToken.create({\n data: {\n user: { connect: { id: args.user.id } },\n token: args.token,\n },\n });\n }\n\n async findPasswordResetToken(\n args: FindPasswordResetTokenArgs,\n ): Promise<PasswordResetToken | null> {\n const { token } = args;\n return await this.prisma.passwordResetToken.findUnique({\n where: { token },\n include: { user: true },\n });\n }\n\n async deleteAllUserSessions(userId: number) {\n return await this.prisma.session.deleteMany({ where: { userId } });\n }\n\n async deletePasswordResetToken(args: DeletePasswordResetTokenArgs) {\n const { token } = args;\n return await this.prisma.passwordResetToken.delete({ where: { token } });\n }\n\n async createAccount(args: CreateAccountArgs) {\n return await this.prisma.account.create({\n data: {\n organizationId: args.organizationId,\n organizationRole: args.organizationRole,\n userId: args.userId,\n },\n });\n }\n\n async deleteInvitationById(invitationId: string) {\n return await this.prisma.organizationInvitation.delete({\n where: { publicId: invitationId },\n });\n }\n\n async findInvitation(invitationId: string, email: string) {\n return await this.prisma.organizationInvitation.findFirst({\n where: { publicId: invitationId, email },\n });\n }\n\n async createMagicLinkToken(args: {\n email: string;\n token: string;\n pin: string;\n }) {\n return await this.prisma.magicLinkToken.create({\n data: {\n email: args.email,\n token: args.token,\n pin: args.pin,\n },\n });\n }\n\n async findUserMagicLinkToken(args: {\n email: string;\n token?: string;\n pin?: string;\n }) {\n const { token, pin, email } = args;\n\n if (token) {\n return this.prisma.magicLinkToken.findUnique({\n where: {\n token_email: {\n email,\n token,\n },\n },\n });\n } else {\n return await this.prisma.magicLinkToken.findUnique({\n where: {\n pin_email: {\n email,\n pin,\n },\n },\n });\n }\n }\n\n async deleteMagicLinkToken(email: string) {\n return await this.prisma.magicLinkToken.deleteMany({\n where: { email },\n });\n }\n\n async createSocialAccount(args: CreateSocialAccountArgs) {\n return await this.prisma.socialAccount.create({\n data: args,\n });\n }\n}\n"
|
|
10
10
|
],
|
|
11
11
|
"mappings": "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",
|
|
12
|
-
"debugId": "
|
|
12
|
+
"debugId": "4C9A3D295A07FEA264756E2164756E21",
|
|
13
13
|
"names": []
|
|
14
14
|
}
|
package/dist/server/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import{n as g}from"../chunk-ppt296ye.js";import{o as b}from"../chunk-
|
|
2
|
+
import{n as g}from"../chunk-ppt296ye.js";import{o as b}from"../chunk-m359awjw.js";import"../chunk-q8haepmm.js";import"../chunk-fk9xtngd.js";import"../chunk-ty3q916e.js";import"../chunk-9r2k5ykk.js";import"../chunk-whj1a3vr.js";import"../chunk-sdx8r2qb.js";import{ec as S}from"../chunk-6gtmkbh0.js";class i{app;instrumentation;constructor(f){this.app=new b({kernel:f.kernel}),this.instrumentation=f.instrumentation??((z,B)=>B(z))}async start(){if(Bun.env.NODE_ENV==="production"){let{httpProd:f}=await import("../chunk-yrtvjmrj.js");await f(this.app,this.instrumentation.bind(this))}else{g();let{httpDev:f}=await import("../chunk-j3x1fffh.js");await f(this.app,this.instrumentation.bind(this))}}}export{i as Server};
|
|
3
3
|
|
|
4
|
-
//# debugId=
|
|
4
|
+
//# debugId=7B6CB429BACC298B64756E2164756E21
|
package/dist/server/index.js.map
CHANGED
|
@@ -5,6 +5,6 @@
|
|
|
5
5
|
"import { App } from \"../app\";\nimport { Kernel } from \"../kernel\";\nimport { Instrumentation } from \"./types\";\nimport { watchEnv } from \"./watchEnv\";\n\nexport class Server {\n private app: App;\n private instrumentation: Instrumentation;\n\n constructor(params: { kernel: new () => Kernel; instrumentation?: Instrumentation }) {\n this.app = new App({ kernel: params.kernel });\n this.instrumentation =\n params.instrumentation ??\n ((req: Request, next: (req: Request) => Promise<Response>) => next(req));\n }\n\n async start() {\n // Dynamic import so each mode only pulls in its own code: `httpDev` drags in\n // Vite (dev-only) and `httpProd` reads the built `dist/` manifests — neither\n // should load in the other environment.\n if (process.env.NODE_ENV === \"production\") {\n const { httpProd } = await import(\"./httpProd.js\");\n await httpProd(this.app, this.instrumentation.bind(this));\n } else {\n // Dev only: reload `.env` into process.env on change so config edits take\n // effect without restarting the dev server (Bun reads `.env` only at\n // startup, even under `--hot`).\n watchEnv();\n const { httpDev } = await import(\"./httpDev.js\");\n await httpDev(this.app, this.instrumentation.bind(this));\n }\n }\n}\n"
|
|
6
6
|
],
|
|
7
7
|
"mappings": ";kVAKO,CAAM,JAAO,JACV,DACA,WAER,MAAW,JAAC,HAAyE,CACnF,KAAK,IAAM,IAAI,EAAI,CAAE,OAAQ,EAAO,MAAO,CAAC,EAC5C,KAAK,gBACH,EAAO,kBACN,CAAC,EAAc,IAA8C,EAAK,CAAG,QAGpE,MAAK,EAAG,CAIZ,GAAI,mBAAyB,aAAc,CACzC,IAAQ,YAAa,KAAa,gCAClC,MAAM,EAAS,KAAK,IAAK,KAAK,gBAAgB,KAAK,IAAI,CAAC,EACnD,KAIL,EAAS,EACT,IAAQ,WAAY,KAAa,gCACjC,MAAM,EAAQ,KAAK,IAAK,KAAK,gBAAgB,KAAK,IAAI,CAAC,GAG7D",
|
|
8
|
-
"debugId": "
|
|
8
|
+
"debugId": "7B6CB429BACC298B64756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { Buffer } from "node:buffer";
|
|
2
|
+
import { FileStorageDriver } from "./FileStorageDriver";
|
|
3
|
+
import type { PutFileParams, ReadFileParams, ReadResult } from "./types";
|
|
4
|
+
/**
|
|
5
|
+
* The slice of `@azure/storage-blob` this driver uses. Declared structurally so
|
|
6
|
+
* the package stays an optional peer dependency: nothing here imports its types.
|
|
7
|
+
*/
|
|
8
|
+
interface BlobClientLike {
|
|
9
|
+
download(offset?: number, count?: number): Promise<{
|
|
10
|
+
readableStreamBody?: NodeJS.ReadableStream;
|
|
11
|
+
blobBody?: Promise<Blob>;
|
|
12
|
+
contentLength?: number;
|
|
13
|
+
contentType?: string;
|
|
14
|
+
contentRange?: string;
|
|
15
|
+
etag?: string;
|
|
16
|
+
lastModified?: Date;
|
|
17
|
+
}>;
|
|
18
|
+
getProperties(): Promise<{
|
|
19
|
+
contentLength?: number;
|
|
20
|
+
contentType?: string;
|
|
21
|
+
etag?: string;
|
|
22
|
+
lastModified?: Date;
|
|
23
|
+
}>;
|
|
24
|
+
uploadData(data: Buffer | Blob, options?: {
|
|
25
|
+
blobHTTPHeaders?: {
|
|
26
|
+
blobContentType?: string;
|
|
27
|
+
};
|
|
28
|
+
}): Promise<unknown>;
|
|
29
|
+
delete(): Promise<unknown>;
|
|
30
|
+
}
|
|
31
|
+
interface ContainerClientLike {
|
|
32
|
+
getBlockBlobClient(name: string): BlobClientLike;
|
|
33
|
+
listBlobsFlat(options?: {
|
|
34
|
+
prefix?: string;
|
|
35
|
+
}): AsyncIterable<{
|
|
36
|
+
name: string;
|
|
37
|
+
}>;
|
|
38
|
+
}
|
|
39
|
+
interface BlobServiceClientLike {
|
|
40
|
+
getContainerClient(name: string): ContainerClientLike;
|
|
41
|
+
}
|
|
42
|
+
export interface AzureBlobDriverConfig {
|
|
43
|
+
/** Defaults to `process.env.AZURE_STORAGE_CONNECTION_STRING`. */
|
|
44
|
+
connectionString?: string;
|
|
45
|
+
/** Account URL, e.g. `https://acct.blob.core.windows.net`, optionally carrying a SAS token. */
|
|
46
|
+
url?: string;
|
|
47
|
+
/** A `StorageSharedKeyCredential` or any `TokenCredential`, used with `url`. */
|
|
48
|
+
credential?: unknown;
|
|
49
|
+
/** Default container. Falls back to `process.env.BUCKET_NAME`. */
|
|
50
|
+
container?: string;
|
|
51
|
+
/**
|
|
52
|
+
* A pre-built `BlobServiceClient`. Supply this to configure retries, proxies
|
|
53
|
+
* or a custom credential chain yourself — the driver then never imports the
|
|
54
|
+
* SDK.
|
|
55
|
+
*/
|
|
56
|
+
serviceClient?: BlobServiceClientLike;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Azure Blob Storage.
|
|
60
|
+
*
|
|
61
|
+
* `@azure/storage-blob` is an optional peer dependency, loaded on first use, so
|
|
62
|
+
* apps that do not use Azure never install it.
|
|
63
|
+
*/
|
|
64
|
+
export declare class AzureBlobDriver extends FileStorageDriver {
|
|
65
|
+
private config;
|
|
66
|
+
private serviceClientPromise;
|
|
67
|
+
constructor(config?: AzureBlobDriverConfig);
|
|
68
|
+
private serviceClient;
|
|
69
|
+
private blob;
|
|
70
|
+
put(params: PutFileParams | Blob): Promise<string>;
|
|
71
|
+
list(folder: string): Promise<string[]>;
|
|
72
|
+
fetch(params: ReadFileParams | string): Promise<Response>;
|
|
73
|
+
read(input: ReadFileParams | string): Promise<ReadResult>;
|
|
74
|
+
size(params: ReadFileParams | string): Promise<number>;
|
|
75
|
+
delete(params: ReadFileParams | string): Promise<void>;
|
|
76
|
+
}
|
|
77
|
+
export {};
|
|
78
|
+
//# sourceMappingURL=AzureBlobDriver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AzureBlobDriver.d.ts","sourceRoot":"","sources":["../../../../services/file-storage/drivers/AzureBlobDriver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAQrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAEzE;;;GAGG;AACH,UAAU,cAAc;IACtB,QAAQ,CACN,MAAM,CAAC,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC;QACT,kBAAkB,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;QAC3C,QAAQ,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QACzB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,YAAY,CAAC,EAAE,IAAI,CAAC;KACrB,CAAC,CAAC;IACH,aAAa,IAAI,OAAO,CAAC;QACvB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,YAAY,CAAC,EAAE,IAAI,CAAC;KACrB,CAAC,CAAC;IACH,UAAU,CACR,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,OAAO,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE;YAAE,eAAe,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,GAC3D,OAAO,CAAC,OAAO,CAAC,CAAC;IACpB,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;CAC5B;AAED,UAAU,mBAAmB;IAC3B,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAAC;IACjD,aAAa,CAAC,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,aAAa,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC/E;AAED,UAAU,qBAAqB;IAC7B,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB,CAAC;CACvD;AAED,MAAM,WAAW,qBAAqB;IACpC,iEAAiE;IACjE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,+FAA+F;IAC/F,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,gFAAgF;IAChF,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,kEAAkE;IAClE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,aAAa,CAAC,EAAE,qBAAqB,CAAC;CACvC;AAkBD;;;;;GAKG;AACH,qBAAa,eAAgB,SAAQ,iBAAiB;IAGxC,OAAO,CAAC,MAAM;IAF1B,OAAO,CAAC,oBAAoB,CAA+C;gBAEvD,MAAM,GAAE,qBAA0B;YAIxC,aAAa;YAmCb,IAAI;IAeZ,GAAG,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI;IAiChC,IAAI,CAAC,MAAM,EAAE,MAAM;IAYnB,KAAK,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM;IAkBrC,IAAI,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAyDzD,IAAI,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM;IAgBpC,MAAM,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM;CAc7C"}
|
|
@@ -1,7 +1,23 @@
|
|
|
1
|
-
import type { IFileStorageDriver, ReadFileParams,
|
|
1
|
+
import type { IFileStorageDriver, PutFileParams, ReadFileParams, ReadResult } from "./types";
|
|
2
2
|
export declare abstract class FileStorageDriver implements IFileStorageDriver {
|
|
3
3
|
abstract fetch(params: ReadFileParams | string): Promise<Response>;
|
|
4
4
|
abstract put(params: PutFileParams | Blob): Promise<string>;
|
|
5
5
|
abstract list(folder: string): Promise<any>;
|
|
6
|
+
/**
|
|
7
|
+
* Default `read()` for drivers that only implement `fetch()`.
|
|
8
|
+
*
|
|
9
|
+
* Deliberately not abstract: every driver written before `read()` existed
|
|
10
|
+
* keeps compiling and gains working range support for free. It is not
|
|
11
|
+
* *efficient* though — to serve a range it buffers the whole object so the
|
|
12
|
+
* framework can slice it, which saves no bandwidth from the backend. Any
|
|
13
|
+
* driver whose backend can range natively should override this.
|
|
14
|
+
*/
|
|
15
|
+
read(input: ReadFileParams | string): Promise<ReadResult>;
|
|
16
|
+
/**
|
|
17
|
+
* Total size of an object. Used to resolve suffix ranges on backends without
|
|
18
|
+
* native suffix support, and to report the total on a 416. Override with a
|
|
19
|
+
* HEAD-style request wherever one is available.
|
|
20
|
+
*/
|
|
21
|
+
size(params: ReadFileParams | string): Promise<number>;
|
|
6
22
|
}
|
|
7
23
|
//# sourceMappingURL=FileStorageDriver.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileStorageDriver.d.ts","sourceRoot":"","sources":["../../../../services/file-storage/drivers/FileStorageDriver.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"FileStorageDriver.d.ts","sourceRoot":"","sources":["../../../../services/file-storage/drivers/FileStorageDriver.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,UAAU,EACX,MAAM,SAAS,CAAC;AAEjB,8BAAsB,iBAAkB,YAAW,kBAAkB;IACnE,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAClE,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;IAC3D,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAE3C;;;;;;;;OAQG;IACG,IAAI,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAoD/D;;;;OAIG;IACG,IAAI,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAc7D"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
import type { PutFileParams, ReadFileParams } from "./types";
|
|
1
|
+
import type { PutFileParams, ReadFileParams, ReadResult } from "./types";
|
|
2
2
|
import { FileStorageDriver } from "./FileStorageDriver";
|
|
3
3
|
export declare class FileSystemDriver extends FileStorageDriver {
|
|
4
4
|
private folderPath;
|
|
5
5
|
constructor(folderPath?: string);
|
|
6
6
|
put(params: PutFileParams | Blob): Promise<string>;
|
|
7
7
|
fetch(params: ReadFileParams | string): Promise<Response>;
|
|
8
|
+
read(input: ReadFileParams | string): Promise<ReadResult>;
|
|
9
|
+
size(params: ReadFileParams | string): Promise<number>;
|
|
8
10
|
list(): Promise<string[]>;
|
|
9
11
|
}
|
|
10
12
|
//# sourceMappingURL=FileSystemDriver.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileSystemDriver.d.ts","sourceRoot":"","sources":["../../../../services/file-storage/drivers/FileSystemDriver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"FileSystemDriver.d.ts","sourceRoot":"","sources":["../../../../services/file-storage/drivers/FileSystemDriver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAQxD,qBAAa,gBAAiB,SAAQ,iBAAiB;IACzC,OAAO,CAAC,UAAU;gBAAV,UAAU,GAAE,MAA0C;IAIpE,GAAG,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI;IA0BhC,KAAK,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM;IA+BrC,IAAI,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAyCzD,IAAI,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM;IASpC,IAAI;CAKX"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { PutFileParams, ReadFileParams } from "./types";
|
|
1
|
+
import type { PutFileParams, ReadFileParams, ReadResult } from "./types";
|
|
2
2
|
import { S3Client } from "@aws-sdk/client-s3";
|
|
3
3
|
import { FileStorageDriver } from "./FileStorageDriver";
|
|
4
4
|
export declare class S3Driver extends FileStorageDriver {
|
|
@@ -7,5 +7,7 @@ export declare class S3Driver extends FileStorageDriver {
|
|
|
7
7
|
put(params: PutFileParams | Blob): Promise<string>;
|
|
8
8
|
list(folder: string): Promise<import("@aws-sdk/client-s3").ListObjectsV2CommandOutput>;
|
|
9
9
|
fetch(params: ReadFileParams | string): Promise<Response>;
|
|
10
|
+
read(input: ReadFileParams | string): Promise<ReadResult>;
|
|
11
|
+
size(params: ReadFileParams | string): Promise<number>;
|
|
10
12
|
}
|
|
11
13
|
//# sourceMappingURL=S3Driver.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"S3Driver.d.ts","sourceRoot":"","sources":["../../../../services/file-storage/drivers/S3Driver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"S3Driver.d.ts","sourceRoot":"","sources":["../../../../services/file-storage/drivers/S3Driver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAEzE,OAAO,EAKL,QAAQ,EACT,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAOxD,qBAAa,QAAS,SAAQ,iBAAiB;IAC7C,OAAO,CAAC,MAAM,CAAW;gBAEb,GAAG,MAAM,EAAE,qBAAqB,CAAC,OAAO,QAAQ,CAAC;IAKvD,GAAG,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI;IA6ChC,IAAI,CAAC,MAAM,EAAE,MAAM;IAWnB,KAAK,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM;IAiCrC,IAAI,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAiDzD,IAAI,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM;CAkB3C"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import type { ByteRange } from "../../../http/range";
|
|
2
|
+
export type { ByteRange };
|
|
1
3
|
export interface PutFileParams {
|
|
2
4
|
name: string;
|
|
3
5
|
bucket?: string;
|
|
@@ -7,6 +9,44 @@ export interface PutFileParams {
|
|
|
7
9
|
export interface ReadFileParams {
|
|
8
10
|
name: string;
|
|
9
11
|
bucket?: string;
|
|
12
|
+
/**
|
|
13
|
+
* Ask the backend for only these bytes. Absent or `null` reads the whole
|
|
14
|
+
* object. Drivers that cannot range are free to ignore this and return the
|
|
15
|
+
* complete object with `partial: false`.
|
|
16
|
+
*/
|
|
17
|
+
range?: ByteRange | null;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* What a driver hands back from `read()`: the bytes, plus enough metadata for
|
|
21
|
+
* the framework to build the HTTP response. Drivers deliberately do not build
|
|
22
|
+
* `Response`s themselves, so the 200/206/416 rules live in exactly one place.
|
|
23
|
+
*/
|
|
24
|
+
export interface ReadResult {
|
|
25
|
+
/**
|
|
26
|
+
* Prefer a `Blob` (including a `BunFile`) over a `ReadableStream` whenever
|
|
27
|
+
* the driver holds a sized handle: Bun drops an explicitly set
|
|
28
|
+
* `Content-Length` and falls back to chunked encoding for any stream body,
|
|
29
|
+
* but keeps it for a sized blob.
|
|
30
|
+
*/
|
|
31
|
+
body: ReadableStream<Uint8Array> | Blob | null;
|
|
32
|
+
/** Absolute inclusive offsets of `body` within the complete object. */
|
|
33
|
+
start: number;
|
|
34
|
+
end: number;
|
|
35
|
+
/** Authoritative size of the *complete* object, not of `body`. */
|
|
36
|
+
total: number;
|
|
37
|
+
/**
|
|
38
|
+
* Whether the driver actually applied the requested range.
|
|
39
|
+
*
|
|
40
|
+
* Not derivable from the offsets: `bytes=0-` over a whole object is a 206
|
|
41
|
+
* whose offsets span the entire file, while a driver that chose to ignore the
|
|
42
|
+
* range reports the very same offsets and wants a 200.
|
|
43
|
+
*/
|
|
44
|
+
partial: boolean;
|
|
45
|
+
type: string;
|
|
46
|
+
etag?: string;
|
|
47
|
+
lastModified?: Date;
|
|
48
|
+
/** Used for `Content-Disposition`. */
|
|
49
|
+
name?: string;
|
|
10
50
|
}
|
|
11
51
|
export interface FileMetadata {
|
|
12
52
|
width: number;
|
|
@@ -15,5 +55,10 @@ export interface FileMetadata {
|
|
|
15
55
|
export interface IFileStorageDriver {
|
|
16
56
|
fetch(input: ReadFileParams | string): Promise<Response>;
|
|
17
57
|
put(params: PutFileParams | Blob): Promise<string>;
|
|
58
|
+
/**
|
|
59
|
+
* Optional: `FileStorageDriver` supplies a `fetch()`-backed default, so
|
|
60
|
+
* drivers written before this existed keep working.
|
|
61
|
+
*/
|
|
62
|
+
read?(input: ReadFileParams | string): Promise<ReadResult>;
|
|
18
63
|
}
|
|
19
64
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../services/file-storage/drivers/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../services/file-storage/drivers/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAErD,YAAY,EAAE,SAAS,EAAE,CAAC;AAE1B,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;CAC1B;AAED;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB;;;;;OAKG;IACH,IAAI,EAAE,cAAc,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;IAC/C,uEAAuE;IACvE,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,kEAAkE;IAClE,KAAK,EAAE,MAAM,CAAC;IACd;;;;;;OAMG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,IAAI,CAAC;IACpB,sCAAsC;IACtC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IACzD,GAAG,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACnD;;;OAGG;IACH,IAAI,CAAC,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;CAC5D"}
|
package/dist/services/index.d.ts
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
export { FileStorageServiceProvider } from "./file-storage/FileStorageServiceProvider";
|
|
2
2
|
export { FileSystemDriver } from "./file-storage/drivers/FileSystemDriver";
|
|
3
3
|
export { S3Driver } from "./file-storage/drivers/S3Driver";
|
|
4
|
-
export
|
|
4
|
+
export { AzureBlobDriver, type AzureBlobDriverConfig, } from "./file-storage/drivers/AzureBlobDriver";
|
|
5
|
+
export type { ByteRange, FileMetadata, PutFileParams, ReadFileParams, ReadResult, } from "./file-storage/drivers/types";
|
|
5
6
|
export { FileStorageDriver } from "./file-storage/drivers/FileStorageDriver";
|
|
7
|
+
export { resolveRange, toRangeHeaderValue, parseContentRange } from "../http/range";
|
|
8
|
+
export { FileNotFoundError, RangeNotSatisfiableError } from "../http/errors";
|
|
6
9
|
export { RateLimiterServiceProvider } from "./rate-limiter/RateLimiterServiceProvider";
|
|
7
10
|
export { InMemoryRateLimiter } from "./rate-limiter/drivers/InMemoryRateLimiterDriver";
|
|
8
11
|
export { RateLimiterDriver } from "./rate-limiter/drivers/RateLimiterDriver";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../services/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,2CAA2C,CAAC;AACvF,OAAO,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AAC3E,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAC3D,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../services/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,2CAA2C,CAAC;AACvF,OAAO,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AAC3E,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAC3D,OAAO,EACL,eAAe,EACf,KAAK,qBAAqB,GAC3B,MAAM,wCAAwC,CAAC;AAChD,YAAY,EACV,SAAS,EACT,YAAY,EACZ,aAAa,EACb,cAAc,EACd,UAAU,GACX,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAE7E,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACpF,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAG7E,OAAO,EAAE,0BAA0B,EAAE,MAAM,2CAA2C,CAAC;AACvF,OAAO,EAAE,mBAAmB,EAAE,MAAM,kDAAkD,CAAC;AACvF,OAAO,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAG7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAI9E,OAAO,EAAE,2BAA2B,EAAE,MAAM,sCAAsC,CAAC;AAGnF,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAI7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,YAAY,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAGhD,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAGlC,OAAO,EAAE,gCAAgC,EAAE,MAAM,uDAAuD,CAAC;AACzG,YAAY,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AACpF,OAAO,EAAE,uBAAuB,EAAE,MAAM,sDAAsD,CAAC;AAC/F,OAAO,EAAE,KAAK,EAAE,MAAM,0CAA0C,CAAC;AAGjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAG5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAGzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAEpE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/services/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import{Aa as
|
|
2
|
+
import{Aa as u,Ba as v,Ca as w,Da as x,Ea as y,Fa as z,Ga as A,Ha as B,Ia as C,Ja as D,Ka as E,Ma as F,la as f,ma as g,na as h,oa as i,pa as j,qa as k,ra as l,sa as m,ta as n,ua as o,va as p,wa as q,xa as r,ya as s,za as t}from"../chunk-25d4feyv.js";import"../chunk-knrx23te.js";import"../chunk-20376aj6.js";import"../chunk-ngnrytfh.js";import"../chunk-9s3te5pa.js";import"../chunk-qy3aczt9.js";import"../chunk-ytr22fm4.js";import"../chunk-kkdtznm5.js";import"../chunk-s49529x2.js";import"../chunk-5kx4hw7c.js";import"../chunk-nx8t65g3.js";import"../chunk-sdj112nj.js";import"../chunk-gv4v6qsg.js";import"../chunk-9r2k5ykk.js";import{Mb as a,Nb as b,Ob as c,Vb as d,Wb as e}from"../chunk-whj1a3vr.js";import"../chunk-sdx8r2qb.js";import"../chunk-6gtmkbh0.js";export{b as toRangeHeaderValue,a as resolveRange,c as parseContentRange,B as XOAuthProvider,s as ViewRouterServiceProvider,F as Singleton,x as Sharp,j as S3Driver,p as ResendDriver,E as RedisServiceProvider,n as RateLimiterServiceProvider,l as RateLimiterDriver,d as RangeNotSatisfiableError,u as QueueServiceProvider,z as OAuthProvider,t as LoggingServiceProvider,v as Job,m as InMemoryRateLimiter,y as ImageOptimizationServiceProvider,w as ImageOptimizationDriver,A as GoogleOAuthProvider,g as FileSystemDriver,h as FileStorageServiceProvider,f as FileStorageDriver,e as FileNotFoundError,q as EmailServiceProvider,o as EmailDriver,C as CronServiceProvider,D as CronJob,r as BroadcastingServiceProvider,k as AzureBlobDriver,i as ApiRouterServiceProvider};
|
|
3
3
|
|
|
4
|
-
//# debugId=
|
|
4
|
+
//# debugId=1E7100BBAF44775764756E2164756E21
|