@panorama-industries/effect-vercel-blob 0.2.0 → 0.3.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/README.md CHANGED
@@ -12,3 +12,24 @@ pnpm add @panorama-industries/effect-vercel-blob effect
12
12
 
13
13
  - `effect` `^4.0.6` (peer dependency)
14
14
  - ESM only
15
+
16
+ ## Usage
17
+
18
+ ```ts
19
+ import { BlobStore, blobLayer, BlobLive } from "@panorama-industries/effect-vercel-blob";
20
+ import { Effect, Layer } from "effect";
21
+ import { FetchHttpClient } from "effect/http";
22
+
23
+ // From the environment: BLOB_READ_WRITE_TOKEN, or Vercel OIDC with BLOB_STORE_ID.
24
+ const Blob = BlobLive.pipe(Layer.provide(FetchHttpClient.layer));
25
+
26
+ // Or with explicit values, which take precedence over the environment.
27
+ const BlobWithToken = blobLayer({ token: "vercel_blob_rw_…" }).pipe(
28
+ Layer.provide(FetchHttpClient.layer),
29
+ );
30
+
31
+ const program = Effect.gen(function* () {
32
+ const blob = yield* BlobStore;
33
+ return yield* blob.list();
34
+ }).pipe(Effect.provide(Blob));
35
+ ```
@@ -1,16 +1,26 @@
1
- import type { Config } from "effect";
2
1
  import type { HttpClient } from "effect/http";
3
- import { Layer } from "effect";
2
+ import { Config, Layer } from "effect";
4
3
  import type { BlobSignedUrls } from "../contracts/blob-signed-urls.ts";
5
4
  import type { BlobStore } from "../contracts/blob-store.ts";
6
5
  import type { BlobUploads } from "../contracts/blob-uploads.ts";
6
+ import type { BlobConfigOptions } from "./blob-config-live.ts";
7
7
  /**
8
- * Store, signed URLs and upload routes configured from the Vercel environment
9
- * (`BLOB_READ_WRITE_TOKEN`, or the function's OIDC token with `BLOB_STORE_ID`). Provide an
10
- * `HttpClient`, e.g. `FetchHttpClient.layer`.
8
+ * Store, signed URLs and upload routes, with the given values taking precedence over the Vercel
9
+ * environment (see `blobConfigLayer`). Provides Vercel OIDC and the system environment itself, so
10
+ * only an `HttpClient` is left to provide, e.g. `FetchHttpClient.layer`.
11
11
  *
12
- * Compose the individual layers instead to override configuration (`blobConfigLayer`) or to
13
- * refresh OIDC tokens in local development (`VercelOidcRefreshingLive`).
12
+ * Compose the individual layers instead to refresh OIDC tokens in local development
13
+ * (`VercelOidcRefreshingLive`).
14
+ */
15
+ export declare const blobLayer: (options?: BlobConfigOptions) => Layer.Layer<BlobStore | BlobSignedUrls | BlobUploads, Config.ConfigError, HttpClient.HttpClient>;
16
+ /**
17
+ * {@link blobLayer} with its options read from `Config`, either one `Config` of the options or a
18
+ * record of a `Config` per option, e.g. `blobLayerConfig({ token: Config.Redacted("MY_TOKEN") })`.
19
+ */
20
+ export declare const blobLayerConfig: (options: Config.Wrap<BlobConfigOptions>) => Layer.Layer<BlobStore | BlobSignedUrls | BlobUploads, Config.ConfigError, HttpClient.HttpClient>;
21
+ /**
22
+ * {@link blobLayer} configured from the Vercel environment alone (`BLOB_READ_WRITE_TOKEN`, or the
23
+ * function's OIDC token with `BLOB_STORE_ID`).
14
24
  */
15
25
  export declare const BlobLive: Layer.Layer<BlobStore | BlobSignedUrls | BlobUploads, Config.ConfigError, HttpClient.HttpClient>;
16
26
  //# sourceMappingURL=blob-live.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"blob-live.d.ts","sourceRoot":"","sources":["../../src/implementation/blob-live.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAG9C,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAE/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAOhE;;;;;;;GAOG;AACH,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,KAAK,CAChC,SAAS,GAAG,cAAc,GAAG,WAAW,EACxC,MAAM,CAAC,WAAW,EAClB,UAAU,CAAC,UAAU,CAGtB,CAAC"}
1
+ {"version":3,"file":"blob-live.d.ts","sourceRoot":"","sources":["../../src/implementation/blob-live.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAG9C,OAAO,EAAE,MAAM,EAAU,KAAK,EAAE,MAAM,QAAQ,CAAC;AAE/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAO/D;;;;;;;GAOG;AACH,eAAO,MAAM,SAAS,aACX,iBAAiB,KACzB,KAAK,CAAC,KAAK,CACZ,SAAS,GAAG,cAAc,GAAG,WAAW,EACxC,MAAM,CAAC,WAAW,EAClB,UAAU,CAAC,UAAU,CAIpB,CAAC;AAEJ;;;GAGG;AACH,eAAO,MAAM,eAAe,YACjB,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,KACtC,KAAK,CAAC,KAAK,CACZ,SAAS,GAAG,cAAc,GAAG,WAAW,EACxC,MAAM,CAAC,WAAW,EAClB,UAAU,CAAC,UAAU,CACyC,CAAC;AAEjE;;;GAGG;AACH,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,KAAK,CAChC,SAAS,GAAG,cAAc,GAAG,WAAW,EACxC,MAAM,CAAC,WAAW,EAClB,UAAU,CAAC,UAAU,CACR,CAAC"}
@@ -1,16 +1,26 @@
1
1
  import { VercelOidcLive, VercelSystemEnvLive } from "@panorama-industries/effect-vercel-core";
2
- import { Layer } from "effect";
3
- import { BlobConfigLive } from "./blob-config-live.js";
2
+ import { Config, Effect, Layer } from "effect";
3
+ import { blobConfigLayer } from "./blob-config-live.js";
4
4
  import { BlobSignedUrlsLive } from "./blob-signed-urls-live.js";
5
5
  import { BlobStoreLive } from "./blob-store-live.js";
6
6
  import { BlobUploadsLive } from "./blob-uploads-live.js";
7
7
  /**
8
- * Store, signed URLs and upload routes configured from the Vercel environment
9
- * (`BLOB_READ_WRITE_TOKEN`, or the function's OIDC token with `BLOB_STORE_ID`). Provide an
10
- * `HttpClient`, e.g. `FetchHttpClient.layer`.
8
+ * Store, signed URLs and upload routes, with the given values taking precedence over the Vercel
9
+ * environment (see `blobConfigLayer`). Provides Vercel OIDC and the system environment itself, so
10
+ * only an `HttpClient` is left to provide, e.g. `FetchHttpClient.layer`.
11
11
  *
12
- * Compose the individual layers instead to override configuration (`blobConfigLayer`) or to
13
- * refresh OIDC tokens in local development (`VercelOidcRefreshingLive`).
12
+ * Compose the individual layers instead to refresh OIDC tokens in local development
13
+ * (`VercelOidcRefreshingLive`).
14
14
  */
15
- export const BlobLive = Layer.mergeAll(BlobStoreLive, BlobSignedUrlsLive, BlobUploadsLive).pipe(Layer.provide(Layer.mergeAll(BlobConfigLive, VercelOidcLive, VercelSystemEnvLive)));
15
+ export const blobLayer = (options = {}) => Layer.mergeAll(BlobStoreLive, BlobSignedUrlsLive, BlobUploadsLive).pipe(Layer.provide(Layer.mergeAll(blobConfigLayer(options), VercelOidcLive, VercelSystemEnvLive)));
16
+ /**
17
+ * {@link blobLayer} with its options read from `Config`, either one `Config` of the options or a
18
+ * record of a `Config` per option, e.g. `blobLayerConfig({ token: Config.Redacted("MY_TOKEN") })`.
19
+ */
20
+ export const blobLayerConfig = (options) => Layer.unwrap(Effect.map(Config.unwrap(options), blobLayer));
21
+ /**
22
+ * {@link blobLayer} configured from the Vercel environment alone (`BLOB_READ_WRITE_TOKEN`, or the
23
+ * function's OIDC token with `BLOB_STORE_ID`).
24
+ */
25
+ export const BlobLive = blobLayer();
16
26
  //# sourceMappingURL=blob-live.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"blob-live.js","sourceRoot":"","sources":["../../src/implementation/blob-live.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAC;AAC9F,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAM/B,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,QAAQ,GAIjB,KAAK,CAAC,QAAQ,CAAC,aAAa,EAAE,kBAAkB,EAAE,eAAe,CAAC,CAAC,IAAI,CACzE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,cAAc,EAAE,cAAc,EAAE,mBAAmB,CAAC,CAAC,CACnF,CAAC"}
1
+ {"version":3,"file":"blob-live.js","sourceRoot":"","sources":["../../src/implementation/blob-live.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAC;AAC9F,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAO/C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CACvB,OAAO,GAAsB,EAAE,EAK/B,EAAE,CACF,KAAK,CAAC,QAAQ,CAAC,aAAa,EAAE,kBAAkB,EAAE,eAAe,CAAC,CAAC,IAAI,CACrE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,cAAc,EAAE,mBAAmB,CAAC,CAAC,CAC7F,CAAC;AAEJ;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,OAAuC,EAKvC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;AAEjE;;;GAGG;AACH,MAAM,CAAC,MAAM,QAAQ,GAIjB,SAAS,EAAE,CAAC"}
package/dist/index.d.ts CHANGED
@@ -11,5 +11,5 @@ export { BlobStoreLive } from "./implementation/blob-store-live.ts";
11
11
  export { BlobSignedUrlsLive } from "./implementation/blob-signed-urls-live.ts";
12
12
  export { BlobUploadsLive } from "./implementation/blob-uploads-live.ts";
13
13
  export { ClientTokenPayload, getPayloadFromClientToken } from "./internal/client-token.ts";
14
- export { BlobLive } from "./implementation/blob-live.ts";
14
+ export { BlobLive, blobLayer, blobLayerConfig } from "./implementation/blob-live.ts";
15
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iCAAiC,CAAC;AAChD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EACL,KAAK,iBAAiB,EACtB,cAAc,EACd,eAAe,GAChB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AAC3F,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iCAAiC,CAAC;AAChD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EACL,KAAK,iBAAiB,EACtB,cAAc,EACd,eAAe,GAChB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AAC3F,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC"}
package/dist/index.js CHANGED
@@ -11,5 +11,5 @@ export { BlobStoreLive } from "./implementation/blob-store-live.js";
11
11
  export { BlobSignedUrlsLive } from "./implementation/blob-signed-urls-live.js";
12
12
  export { BlobUploadsLive } from "./implementation/blob-uploads-live.js";
13
13
  export { ClientTokenPayload, getPayloadFromClientToken } from "./internal/client-token.js";
14
- export { BlobLive } from "./implementation/blob-live.js";
14
+ export { BlobLive, blobLayer, blobLayerConfig } from "./implementation/blob-live.js";
15
15
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iCAAiC,CAAC;AAChD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EAEL,cAAc,EACd,eAAe,GAChB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AAC3F,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iCAAiC,CAAC;AAChD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EAEL,cAAc,EACd,eAAe,GAChB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AAC3F,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "../../.vscode/schemas/package.schema.json",
3
3
  "name": "@panorama-industries/effect-vercel-blob",
4
- "version": "0.2.0",
4
+ "version": "0.3.0",
5
5
  "description": "Effect-native client for Vercel Blob: uploads, downloads, listing, multipart, signed URLs and browser uploads.",
6
6
  "keywords": [
7
7
  "blob",
@@ -56,7 +56,7 @@
56
56
  "provenance": true
57
57
  },
58
58
  "dependencies": {
59
- "@panorama-industries/effect-vercel-core": "^0.2.0"
59
+ "@panorama-industries/effect-vercel-core": "^0.3.0"
60
60
  },
61
61
  "devDependencies": {
62
62
  "@vercel/blob": "2.8.2",
@@ -1,30 +1,55 @@
1
- import type { Config } from "effect";
2
1
  import type { HttpClient } from "effect/http";
3
2
 
4
3
  import { VercelOidcLive, VercelSystemEnvLive } from "@panorama-industries/effect-vercel-core";
5
- import { Layer } from "effect";
4
+ import { Config, Effect, Layer } from "effect";
6
5
 
7
6
  import type { BlobSignedUrls } from "../contracts/blob-signed-urls.ts";
8
7
  import type { BlobStore } from "../contracts/blob-store.ts";
9
8
  import type { BlobUploads } from "../contracts/blob-uploads.ts";
9
+ import type { BlobConfigOptions } from "./blob-config-live.ts";
10
10
 
11
- import { BlobConfigLive } from "./blob-config-live.ts";
11
+ import { blobConfigLayer } from "./blob-config-live.ts";
12
12
  import { BlobSignedUrlsLive } from "./blob-signed-urls-live.ts";
13
13
  import { BlobStoreLive } from "./blob-store-live.ts";
14
14
  import { BlobUploadsLive } from "./blob-uploads-live.ts";
15
15
 
16
16
  /**
17
- * Store, signed URLs and upload routes configured from the Vercel environment
18
- * (`BLOB_READ_WRITE_TOKEN`, or the function's OIDC token with `BLOB_STORE_ID`). Provide an
19
- * `HttpClient`, e.g. `FetchHttpClient.layer`.
17
+ * Store, signed URLs and upload routes, with the given values taking precedence over the Vercel
18
+ * environment (see `blobConfigLayer`). Provides Vercel OIDC and the system environment itself, so
19
+ * only an `HttpClient` is left to provide, e.g. `FetchHttpClient.layer`.
20
20
  *
21
- * Compose the individual layers instead to override configuration (`blobConfigLayer`) or to
22
- * refresh OIDC tokens in local development (`VercelOidcRefreshingLive`).
21
+ * Compose the individual layers instead to refresh OIDC tokens in local development
22
+ * (`VercelOidcRefreshingLive`).
23
+ */
24
+ export const blobLayer = (
25
+ options: BlobConfigOptions = {},
26
+ ): Layer.Layer<
27
+ BlobStore | BlobSignedUrls | BlobUploads,
28
+ Config.ConfigError,
29
+ HttpClient.HttpClient
30
+ > =>
31
+ Layer.mergeAll(BlobStoreLive, BlobSignedUrlsLive, BlobUploadsLive).pipe(
32
+ Layer.provide(Layer.mergeAll(blobConfigLayer(options), VercelOidcLive, VercelSystemEnvLive)),
33
+ );
34
+
35
+ /**
36
+ * {@link blobLayer} with its options read from `Config`, either one `Config` of the options or a
37
+ * record of a `Config` per option, e.g. `blobLayerConfig({ token: Config.Redacted("MY_TOKEN") })`.
38
+ */
39
+ export const blobLayerConfig = (
40
+ options: Config.Wrap<BlobConfigOptions>,
41
+ ): Layer.Layer<
42
+ BlobStore | BlobSignedUrls | BlobUploads,
43
+ Config.ConfigError,
44
+ HttpClient.HttpClient
45
+ > => Layer.unwrap(Effect.map(Config.unwrap(options), blobLayer));
46
+
47
+ /**
48
+ * {@link blobLayer} configured from the Vercel environment alone (`BLOB_READ_WRITE_TOKEN`, or the
49
+ * function's OIDC token with `BLOB_STORE_ID`).
23
50
  */
24
51
  export const BlobLive: Layer.Layer<
25
52
  BlobStore | BlobSignedUrls | BlobUploads,
26
53
  Config.ConfigError,
27
54
  HttpClient.HttpClient
28
- > = Layer.mergeAll(BlobStoreLive, BlobSignedUrlsLive, BlobUploadsLive).pipe(
29
- Layer.provide(Layer.mergeAll(BlobConfigLive, VercelOidcLive, VercelSystemEnvLive)),
30
- );
55
+ > = blobLayer();
package/src/index.ts CHANGED
@@ -15,4 +15,4 @@ export { BlobStoreLive } from "./implementation/blob-store-live.ts";
15
15
  export { BlobSignedUrlsLive } from "./implementation/blob-signed-urls-live.ts";
16
16
  export { BlobUploadsLive } from "./implementation/blob-uploads-live.ts";
17
17
  export { ClientTokenPayload, getPayloadFromClientToken } from "./internal/client-token.ts";
18
- export { BlobLive } from "./implementation/blob-live.ts";
18
+ export { BlobLive, blobLayer, blobLayerConfig } from "./implementation/blob-live.ts";