@palbase/backend 8.0.0 → 8.2.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/{chunk-SWT2QR5F.js → chunk-RGQUB66H.js} +1 -1
- package/dist/chunk-RGQUB66H.js.map +1 -0
- package/dist/db/index.d.cts +2 -2
- package/dist/db/index.d.ts +2 -2
- package/dist/{endpoint-cDQyI6jH.d.cts → endpoint-fW9yWla0.d.cts} +1 -23
- package/dist/{endpoint-cDQyI6jH.d.ts → endpoint-fW9yWla0.d.ts} +1 -23
- package/dist/{index-B-FNCK84.d.cts → index-BZdDJJIy.d.cts} +1 -1
- package/dist/{index-BfnIO5G-.d.ts → index-CArW1VMq.d.ts} +1 -1
- package/dist/index.cjs +48 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +98 -6
- package/dist/index.d.ts +98 -6
- package/dist/index.js +46 -1
- package/dist/index.js.map +1 -1
- package/dist/test/index.cjs +1 -6
- package/dist/test/index.cjs.map +1 -1
- package/dist/test/index.d.cts +1 -1
- package/dist/test/index.d.ts +1 -1
- package/dist/test/index.js +2 -7
- package/dist/test/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/chunk-SWT2QR5F.js.map +0 -1
package/dist/index.d.cts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { C as CacheClient, b as PalbaseDocsClient, c as PalbaseFlagsClient, L as Logger, d as PalbaseNotificationsClient, Q as QueueClient, e as PalbaseRealtimeClient, D as DBClient, f as PalbaseStorageClient, A as AuthSpec, R as RateLimitConfig, H as HttpError, U as User$1 } from './endpoint-
|
|
2
|
-
export { g as AuthConfig, B as BadRequest, h as ClientInfo, i as Conflict, j as DBOps, E as ErrorDef, k as ErrorMap, l as ErrorThrowers, F as FileContext, m as Forbidden, n as HttpMethod, M as Middleware, o as MiddlewareContext, p as MiddlewareHandler, N as NotFound, P as PBRequest, q as PalError, r as PalbaseAnalyticsClient, s as PalbaseAnalyticsManagementNamespace, t as PalbaseAnalyticsProperties, u as PalbaseAnalyticsQueryNamespace, v as PalbaseAttestAndroidParams, w as PalbaseAttestAndroidResult, x as PalbaseAttestiOSParams, y as PalbaseAttestiOSResult, z as PalbaseAuthClient, G as PalbaseBatchOverrideOperation, I as PalbaseBatchSetOverridesResult, J as PalbaseBindDeviceParams, K as PalbaseBucketClient, O as PalbaseClearAllOverridesResult, S as PalbaseClearOverrideResult, T as
|
|
1
|
+
import { C as CacheClient, b as PalbaseDocsClient, c as PalbaseFlagsClient, L as Logger, d as PalbaseNotificationsClient, Q as QueueClient, e as PalbaseRealtimeClient, D as DBClient, f as PalbaseStorageClient, A as AuthSpec, R as RateLimitConfig, H as HttpError, U as User$1 } from './endpoint-fW9yWla0.cjs';
|
|
2
|
+
export { g as AuthConfig, B as BadRequest, h as ClientInfo, i as Conflict, j as DBOps, E as ErrorDef, k as ErrorMap, l as ErrorThrowers, F as FileContext, m as Forbidden, n as HttpMethod, M as Middleware, o as MiddlewareContext, p as MiddlewareHandler, N as NotFound, P as PBRequest, q as PalError, r as PalbaseAnalyticsClient, s as PalbaseAnalyticsManagementNamespace, t as PalbaseAnalyticsProperties, u as PalbaseAnalyticsQueryNamespace, v as PalbaseAttestAndroidParams, w as PalbaseAttestAndroidResult, x as PalbaseAttestiOSParams, y as PalbaseAttestiOSResult, z as PalbaseAuthClient, G as PalbaseBatchOverrideOperation, I as PalbaseBatchSetOverridesResult, J as PalbaseBindDeviceParams, K as PalbaseBucketClient, O as PalbaseClearAllOverridesResult, S as PalbaseClearOverrideResult, T as PalbaseCohortQueryInput, V as PalbaseCohortResult, W as PalbaseCollectionRef, X as PalbaseCountQueryInput, Y as PalbaseCountResult, Z as PalbaseCreateLinkParams, _ as PalbaseDeviceInfo, $ as PalbaseDeviceTokenView, a0 as PalbaseDocumentRef, a1 as PalbaseDocumentSnapshot, a2 as PalbaseEmailClient, a3 as PalbaseEmailSendParams, a4 as PalbaseEmailSendResponse, a5 as PalbaseEventNamesResult, a6 as PalbaseEventsQueryInput, a7 as PalbaseEventsResult, a8 as PalbaseFileObject, a9 as PalbaseFlag, aa as PalbaseFlagContext, ab as PalbaseFlagSource, ac as PalbaseFlagValue, ad as PalbaseFlagVariant, ae as PalbaseFlagsServiceClient, af as PalbaseFunctionsClient, ag as PalbaseFunnelQueryInput, ah as PalbaseFunnelResult, ai as PalbaseIdentifyTraits, aj as PalbaseInboxClient, ak as PalbaseInboxListOptions, al as PalbaseInboxListResult, am as PalbaseInboxMessage, an as PalbaseInboxSendParams, ao as PalbaseInboxSendResponse, ap as PalbaseInitialLink, aq as PalbaseInvokeOptions, ar as PalbaseLink, as as PalbaseLinkAnalytics, at as PalbaseLinkDetails, au as PalbaseLinksClient, av as PalbaseListLinksOptions, aw as PalbaseListLinksResult, ax as PalbaseListOptions, ay as PalbaseMatchParams, az as PalbaseMultiChannelResponse, aA as PalbaseOverviewResult, aB as PalbasePreferences, aC as PalbasePreferencesClient, aD as PalbasePublicUrlResponse, aE as PalbasePushClient, aF as PalbasePushSendParams, aG as PalbasePushSendResponse, aH as PalbaseQrCodeOptions, aI as PalbaseQuerySnapshot, aJ as PalbaseRegisterDeviceParams, aK as PalbaseResult, aL as PalbaseRetentionQueryInput, aM as PalbaseRetentionResult, aN as PalbaseSession, aO as PalbaseSetOverrideResult, aP as PalbaseSetOverridesResult, aQ as PalbaseSignedUrlResponse, aR as PalbaseSmsClient, aS as PalbaseSmsSendParams, aT as PalbaseSmsSendResponse, aU as PalbaseTransformOptions, aV as PalbaseUpdateLinkParams, aW as PalbaseUploadOptions, aX as PalbaseUser, aY as PalbaseUserDetailResult, aZ as PalbaseUsersQueryInput, a_ as PalbaseUsersResult, a$ as PalbaseVerifyRequestSignatureParams, b0 as PalbaseWhereOperator, b1 as TooManyRequests, b2 as TxClient, b3 as Unauthorized, b4 as defineMiddleware } from './endpoint-fW9yWla0.cjs';
|
|
3
3
|
import { AsyncLocalStorage } from 'node:async_hooks';
|
|
4
|
-
import { E as EnvTypedDatabase, S as SchemaDef } from './index-
|
|
5
|
-
export { C as ColumnBuilder, a as ColumnDef, b as ColumnMap, c as ColumnType, d as EXTENSION_DEPENDENCIES, e as EnvServiceDatabase, f as EnvTables, g as EnvTypedTable, h as EnvTypedTx, I as InsertShape, O as OnDeleteAction, P as PALBASE_EXTENSIONS, i as PalbaseExtension, j as PolicyBuilder, k as PolicyCommand, l as PolicyDef, m as PolicyMode, R as RowShape, n as SchemaInput, T as TableDef, o as TableInput, p as TypedDB, q as TypedTable, r as TypedTx, s as boolean, t as defineSchema, u as enumType, v as integer, w as isPalbaseExtension, x as jsonb, y as makeTypedDB, z as policy, A as text, B as timestamp, D as uuid } from './index-
|
|
4
|
+
import { E as EnvTypedDatabase, S as SchemaDef } from './index-BZdDJJIy.cjs';
|
|
5
|
+
export { C as ColumnBuilder, a as ColumnDef, b as ColumnMap, c as ColumnType, d as EXTENSION_DEPENDENCIES, e as EnvServiceDatabase, f as EnvTables, g as EnvTypedTable, h as EnvTypedTx, I as InsertShape, O as OnDeleteAction, P as PALBASE_EXTENSIONS, i as PalbaseExtension, j as PolicyBuilder, k as PolicyCommand, l as PolicyDef, m as PolicyMode, R as RowShape, n as SchemaInput, T as TableDef, o as TableInput, p as TypedDB, q as TypedTable, r as TypedTx, s as boolean, t as defineSchema, u as enumType, v as integer, w as isPalbaseExtension, x as jsonb, y as makeTypedDB, z as policy, A as text, B as timestamp, D as uuid } from './index-BZdDJJIy.cjs';
|
|
6
6
|
export { TableTypes, Tables } from './db/env.cjs';
|
|
7
7
|
import { ZodTypeAny, z } from 'zod';
|
|
8
8
|
export { z } from 'zod';
|
|
@@ -53,7 +53,7 @@ export { z } from 'zod';
|
|
|
53
53
|
* Realtime is BROADCAST-ONLY here (a stateless handler can push an event but
|
|
54
54
|
* cannot hold a subscription socket — `subscribe()` lives on the client SDK).
|
|
55
55
|
*
|
|
56
|
-
* EXCLUDED on purpose: Functions,
|
|
56
|
+
* EXCLUDED on purpose: Functions, Links, Analytics, Auth. They are not
|
|
57
57
|
* exposed as backend handler singletons (auth lives on the client SDK; the rest
|
|
58
58
|
* are out of scope for backend endpoints). */
|
|
59
59
|
interface RuntimeServices {
|
|
@@ -702,6 +702,92 @@ interface ControllerOptions {
|
|
|
702
702
|
*/
|
|
703
703
|
declare function Controller(basePath: string, options?: ControllerOptions): <T extends abstract new (...args: never[]) => object>(ctor: T) => T;
|
|
704
704
|
|
|
705
|
+
/** A legacy method decorator (`experimentalDecorators`): `(prototype, name,
|
|
706
|
+
* descriptor)`. */
|
|
707
|
+
type MethodDecorator$1 = (target: object, propertyKey: string | symbol, descriptor: PropertyDescriptor) => void;
|
|
708
|
+
/** A legacy parameter decorator: `(prototype, name, paramIndex)`. */
|
|
709
|
+
type ParameterDecorator$1 = (target: object, propertyKey: string | symbol, parameterIndex: number) => void;
|
|
710
|
+
/**
|
|
711
|
+
* Direct-storage upload settings for an `@Upload` route. The br-pod validates an
|
|
712
|
+
* authorize request against these (size/type), then mints a signed upload URL
|
|
713
|
+
* that PINS the limits so storage itself rejects an over-limit / wrong-type PUT
|
|
714
|
+
* — the client cannot exceed what it declared.
|
|
715
|
+
*/
|
|
716
|
+
interface UploadConfig {
|
|
717
|
+
/**
|
|
718
|
+
* Target bucket NAME. MUST exist in `config/storage.ts` `defineStorage(...)`.
|
|
719
|
+
*
|
|
720
|
+
* The bucket is the SINGLE SOURCE OF TRUTH for the size limit + MIME allowlist:
|
|
721
|
+
* `bucket({ fileSizeLimit, allowedMimeTypes })`. Storage enforces those at the
|
|
722
|
+
* actual PUT (the only guard a client cannot skip), so `@Upload` deliberately
|
|
723
|
+
* does NOT take its own `maxSize`/`allowedTypes` — duplicating them here would
|
|
724
|
+
* let a route declare a tighter limit than its bucket that storage would not
|
|
725
|
+
* enforce (a real bypass: declare 10 bytes at authorize, then PUT up to the
|
|
726
|
+
* bucket ceiling straight at the signed URL). One bucket, one limit, enforced.
|
|
727
|
+
*/
|
|
728
|
+
bucket: string;
|
|
729
|
+
/**
|
|
730
|
+
* SERVER-side object key template. The client NEVER chooses the path. Tokens:
|
|
731
|
+
* `{userId}` (authenticated user id), `{uploadId}` (server-minted), and
|
|
732
|
+
* `{filename}` (the client-declared filename, sanitized). e.g.
|
|
733
|
+
* `"{userId}/{uploadId}-{filename}"`.
|
|
734
|
+
*/
|
|
735
|
+
pathTemplate: string;
|
|
736
|
+
}
|
|
737
|
+
/**
|
|
738
|
+
* `@Upload(subpath, config)` — declare a direct-storage upload route. The method
|
|
739
|
+
* body is the completion handler; `config.uploadConfig` drives the authorize
|
|
740
|
+
* guard + signed-URL pinning.
|
|
741
|
+
*
|
|
742
|
+
* @example
|
|
743
|
+
* @Upload("/", { bucket: "docs", pathTemplate: "{userId}/{uploadId}-{filename}" })
|
|
744
|
+
* async upload(@UploadedObject() obj: UploadedObject, @User() user): Promise<DocResult> { ... }
|
|
745
|
+
* // The size limit + MIME allowlist come from the "docs" bucket in
|
|
746
|
+
* // config/storage.ts — storage enforces them at the PUT.
|
|
747
|
+
*/
|
|
748
|
+
declare function Upload(subpath: string, config: UploadConfig & Pick<RouteOptions, "auth" | "rateLimit">): MethodDecorator$1;
|
|
749
|
+
/**
|
|
750
|
+
* The uploaded object, injected into an `@Upload` method body by
|
|
751
|
+
* `@UploadedObject()` once storage confirms the upload. Bytes are NOT present
|
|
752
|
+
* (they went straight to storage) — this is the metadata the completion handler
|
|
753
|
+
* persists.
|
|
754
|
+
*/
|
|
755
|
+
interface UploadedObject {
|
|
756
|
+
/** Server-minted id correlating authorize ↔ completion (idempotency key). */
|
|
757
|
+
uploadId: string;
|
|
758
|
+
/** Final object key in the bucket (rendered from `pathTemplate`). */
|
|
759
|
+
path: string;
|
|
760
|
+
/** Bucket the object landed in. */
|
|
761
|
+
bucket: string;
|
|
762
|
+
/** Object size in bytes, as reported by storage. */
|
|
763
|
+
size: number;
|
|
764
|
+
/** Object MIME type, as reported by storage. */
|
|
765
|
+
contentType: string;
|
|
766
|
+
}
|
|
767
|
+
/**
|
|
768
|
+
* `@UploadedObject()` — inject the uploaded object (`: UploadedObject`) into an
|
|
769
|
+
* `@Upload` method body (the completion input). Only valid on an `@Upload`
|
|
770
|
+
* route; the bytes are NOT present (they went directly to storage), this is the
|
|
771
|
+
* confirmed object's metadata.
|
|
772
|
+
*
|
|
773
|
+
* Co-located with the {@link UploadedObject} TYPE so a single exported name
|
|
774
|
+
* `UploadedObject` carries BOTH the decorator value and the type annotation.
|
|
775
|
+
*/
|
|
776
|
+
declare function UploadedObject(): ParameterDecorator$1;
|
|
777
|
+
/**
|
|
778
|
+
* Cross-check one `@Upload` route's uploadConfig against the project's
|
|
779
|
+
* {@link StorageConfig}: the named bucket MUST exist in `defineStorage(...)`.
|
|
780
|
+
* Throws a precise error so a typo fails at deploy, not at the first user upload.
|
|
781
|
+
*
|
|
782
|
+
* That is the ONLY cross-check: the size limit + MIME allowlist live on the
|
|
783
|
+
* bucket (`bucket({ fileSizeLimit, allowedMimeTypes })`) and are enforced by
|
|
784
|
+
* storage at the PUT. `@Upload` carries no `maxSize`/`allowedTypes` of its own,
|
|
785
|
+
* so there is nothing to compare — one bucket, one limit, no drift.
|
|
786
|
+
*
|
|
787
|
+
* `routeLabel` is used only for error messages (e.g. `docs.upload`).
|
|
788
|
+
*/
|
|
789
|
+
declare function validateUploadAgainstStorage(uploadConfig: UploadConfig, storage: StorageConfig, routeLabel: string): void;
|
|
790
|
+
|
|
705
791
|
/** The HTTP verbs a route may declare, upper-cased (the runtime router +
|
|
706
792
|
* OpenAPI lower-case on their own). */
|
|
707
793
|
type HttpMethodUpper = "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
|
|
@@ -711,6 +797,12 @@ interface RouteOptions {
|
|
|
711
797
|
auth?: AuthSpec;
|
|
712
798
|
/** Per-route rate limit. */
|
|
713
799
|
rateLimit?: RateLimitConfig;
|
|
800
|
+
/** Direct-storage upload config — present ONLY on `@Upload` routes (the
|
|
801
|
+
* `@Get`/`@Post`/… decorators never set it). Its presence is what MARKS a
|
|
802
|
+
* route as an upload route through the whole pipeline (registry → flatten →
|
|
803
|
+
* openapi → codegen). The bytes go client→storage directly; the method body
|
|
804
|
+
* runs as the completion handler. See {@link UploadConfig} (decorators/upload.ts). */
|
|
805
|
+
uploadConfig?: UploadConfig;
|
|
714
806
|
}
|
|
715
807
|
/** One inferred throw site: the error CLASS name (e.g. "TodoLocked") and its
|
|
716
808
|
* wire code (e.g. "todo_locked"). `status`, `hasData`, and the data JSON schema
|
|
@@ -1260,4 +1352,4 @@ declare const documents: {
|
|
|
1260
1352
|
onDocumentDeleted(handler: HookHandler<DocumentDeletedEvent>): ResolvedHook<DocumentDeletedEvent>;
|
|
1261
1353
|
};
|
|
1262
1354
|
|
|
1263
|
-
export { type AcsOptions, type ApnsOptions, type BackoffStrategy, Body, type BucketDef, type BucketOptions, Cache, CacheClient, Client, Controller, type ControllerOptions, type CustomWebhookConfig, DBClient, Database, type DefinedError, type DefinedErrorWithData, Delete, type DocumentCreatedEvent, type DocumentDeletedEvent, type DocumentUpdatedEvent, Documents, type EnvSecretRef, EnvTypedDatabase, FLAGS_CONFIG_KIND, type FcmOptions, type FileDeletedEvent, type FileUploadedEvent, type FlagDef, type FlagOptions, type FlagType, type FlagValue, Flags, type FlagsConfig, type FlagsInput, Get, Headers, type HookHandler, type HookMeta, HttpError, type HttpMethodUpper, type JobConfig, type JobMeta, Log, Logger, NOTIFICATIONS_CONFIG_KIND, Notifications, type NotificationsConfig, type NotificationsInput, OptionalUser, PROVIDER_CATALOG, PalbaseDocsClient, PalbaseFlagsClient, PalbaseNotificationsClient, PalbaseRealtimeClient, PalbaseStorageClient, Param, type PasswordResetEvent, Patch, Post, type ProviderCatalogEntry, type ProviderDef, type ProviderEventMap, type ProviderName, type ProviderOptions, type ProviderWebhookConfig, Put, Query, Queue, QueueClient, RESERVED_SECRET_PREFIX, RateLimitConfig, Realtime, type RegisteredError, Req, RequestId, type ResolvedCustomWebhook, type ResolvedHook, type ResolvedJobConfig, type ResolvedProviderWebhook, type ResolvedWebhookConfig, type ResolvedWorkerConfig, Resource, type ResourceEnv, type RouteOptions, type RuntimeServices, STORAGE_CONFIG_KIND, SchemaDef, type SendgridOptions, type SesOptions, type SignInEvent, type SignOutEvent, type SmtpOptions, Storage, type StorageConfig, type StorageInput, type ThrowDescriptor, TraceId, type TwilioOptions, User, type UserCreatedEvent, User$1 as UserT, type WebhookEventHandler, type WebhookMeta, type WebhookProvider, type WebhookRequest, type WorkerConfig, type WorkerMeta, __getRuntime, __registerResource, __requestALS, __runResourceBoot, __runWithRuntime, __setRuntime, __shutdownResources, auth, bucket, buildProvider, defineError, defineFlags, defineJob, defineNotifications, defineStorage, defineWebhook, defineWorker, documents, flag, getErrorRegistry, makeEnvDts, parseFileSizeLimit, recordThrows, reservedSecretKey, storage };
|
|
1355
|
+
export { type AcsOptions, type ApnsOptions, type BackoffStrategy, Body, type BucketDef, type BucketOptions, Cache, CacheClient, Client, Controller, type ControllerOptions, type CustomWebhookConfig, DBClient, Database, type DefinedError, type DefinedErrorWithData, Delete, type DocumentCreatedEvent, type DocumentDeletedEvent, type DocumentUpdatedEvent, Documents, type EnvSecretRef, EnvTypedDatabase, FLAGS_CONFIG_KIND, type FcmOptions, type FileDeletedEvent, type FileUploadedEvent, type FlagDef, type FlagOptions, type FlagType, type FlagValue, Flags, type FlagsConfig, type FlagsInput, Get, Headers, type HookHandler, type HookMeta, HttpError, type HttpMethodUpper, type JobConfig, type JobMeta, Log, Logger, NOTIFICATIONS_CONFIG_KIND, Notifications, type NotificationsConfig, type NotificationsInput, OptionalUser, PROVIDER_CATALOG, PalbaseDocsClient, PalbaseFlagsClient, PalbaseNotificationsClient, PalbaseRealtimeClient, PalbaseStorageClient, Param, type PasswordResetEvent, Patch, Post, type ProviderCatalogEntry, type ProviderDef, type ProviderEventMap, type ProviderName, type ProviderOptions, type ProviderWebhookConfig, Put, Query, Queue, QueueClient, RESERVED_SECRET_PREFIX, RateLimitConfig, Realtime, type RegisteredError, Req, RequestId, type ResolvedCustomWebhook, type ResolvedHook, type ResolvedJobConfig, type ResolvedProviderWebhook, type ResolvedWebhookConfig, type ResolvedWorkerConfig, Resource, type ResourceEnv, type RouteOptions, type RuntimeServices, STORAGE_CONFIG_KIND, SchemaDef, type SendgridOptions, type SesOptions, type SignInEvent, type SignOutEvent, type SmtpOptions, Storage, type StorageConfig, type StorageInput, type ThrowDescriptor, TraceId, type TwilioOptions, Upload, type UploadConfig, UploadedObject, User, type UserCreatedEvent, User$1 as UserT, type WebhookEventHandler, type WebhookMeta, type WebhookProvider, type WebhookRequest, type WorkerConfig, type WorkerMeta, __getRuntime, __registerResource, __requestALS, __runResourceBoot, __runWithRuntime, __setRuntime, __shutdownResources, auth, bucket, buildProvider, defineError, defineFlags, defineJob, defineNotifications, defineStorage, defineWebhook, defineWorker, documents, flag, getErrorRegistry, makeEnvDts, parseFileSizeLimit, recordThrows, reservedSecretKey, storage, validateUploadAgainstStorage };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { C as CacheClient, b as PalbaseDocsClient, c as PalbaseFlagsClient, L as Logger, d as PalbaseNotificationsClient, Q as QueueClient, e as PalbaseRealtimeClient, D as DBClient, f as PalbaseStorageClient, A as AuthSpec, R as RateLimitConfig, H as HttpError, U as User$1 } from './endpoint-
|
|
2
|
-
export { g as AuthConfig, B as BadRequest, h as ClientInfo, i as Conflict, j as DBOps, E as ErrorDef, k as ErrorMap, l as ErrorThrowers, F as FileContext, m as Forbidden, n as HttpMethod, M as Middleware, o as MiddlewareContext, p as MiddlewareHandler, N as NotFound, P as PBRequest, q as PalError, r as PalbaseAnalyticsClient, s as PalbaseAnalyticsManagementNamespace, t as PalbaseAnalyticsProperties, u as PalbaseAnalyticsQueryNamespace, v as PalbaseAttestAndroidParams, w as PalbaseAttestAndroidResult, x as PalbaseAttestiOSParams, y as PalbaseAttestiOSResult, z as PalbaseAuthClient, G as PalbaseBatchOverrideOperation, I as PalbaseBatchSetOverridesResult, J as PalbaseBindDeviceParams, K as PalbaseBucketClient, O as PalbaseClearAllOverridesResult, S as PalbaseClearOverrideResult, T as
|
|
1
|
+
import { C as CacheClient, b as PalbaseDocsClient, c as PalbaseFlagsClient, L as Logger, d as PalbaseNotificationsClient, Q as QueueClient, e as PalbaseRealtimeClient, D as DBClient, f as PalbaseStorageClient, A as AuthSpec, R as RateLimitConfig, H as HttpError, U as User$1 } from './endpoint-fW9yWla0.js';
|
|
2
|
+
export { g as AuthConfig, B as BadRequest, h as ClientInfo, i as Conflict, j as DBOps, E as ErrorDef, k as ErrorMap, l as ErrorThrowers, F as FileContext, m as Forbidden, n as HttpMethod, M as Middleware, o as MiddlewareContext, p as MiddlewareHandler, N as NotFound, P as PBRequest, q as PalError, r as PalbaseAnalyticsClient, s as PalbaseAnalyticsManagementNamespace, t as PalbaseAnalyticsProperties, u as PalbaseAnalyticsQueryNamespace, v as PalbaseAttestAndroidParams, w as PalbaseAttestAndroidResult, x as PalbaseAttestiOSParams, y as PalbaseAttestiOSResult, z as PalbaseAuthClient, G as PalbaseBatchOverrideOperation, I as PalbaseBatchSetOverridesResult, J as PalbaseBindDeviceParams, K as PalbaseBucketClient, O as PalbaseClearAllOverridesResult, S as PalbaseClearOverrideResult, T as PalbaseCohortQueryInput, V as PalbaseCohortResult, W as PalbaseCollectionRef, X as PalbaseCountQueryInput, Y as PalbaseCountResult, Z as PalbaseCreateLinkParams, _ as PalbaseDeviceInfo, $ as PalbaseDeviceTokenView, a0 as PalbaseDocumentRef, a1 as PalbaseDocumentSnapshot, a2 as PalbaseEmailClient, a3 as PalbaseEmailSendParams, a4 as PalbaseEmailSendResponse, a5 as PalbaseEventNamesResult, a6 as PalbaseEventsQueryInput, a7 as PalbaseEventsResult, a8 as PalbaseFileObject, a9 as PalbaseFlag, aa as PalbaseFlagContext, ab as PalbaseFlagSource, ac as PalbaseFlagValue, ad as PalbaseFlagVariant, ae as PalbaseFlagsServiceClient, af as PalbaseFunctionsClient, ag as PalbaseFunnelQueryInput, ah as PalbaseFunnelResult, ai as PalbaseIdentifyTraits, aj as PalbaseInboxClient, ak as PalbaseInboxListOptions, al as PalbaseInboxListResult, am as PalbaseInboxMessage, an as PalbaseInboxSendParams, ao as PalbaseInboxSendResponse, ap as PalbaseInitialLink, aq as PalbaseInvokeOptions, ar as PalbaseLink, as as PalbaseLinkAnalytics, at as PalbaseLinkDetails, au as PalbaseLinksClient, av as PalbaseListLinksOptions, aw as PalbaseListLinksResult, ax as PalbaseListOptions, ay as PalbaseMatchParams, az as PalbaseMultiChannelResponse, aA as PalbaseOverviewResult, aB as PalbasePreferences, aC as PalbasePreferencesClient, aD as PalbasePublicUrlResponse, aE as PalbasePushClient, aF as PalbasePushSendParams, aG as PalbasePushSendResponse, aH as PalbaseQrCodeOptions, aI as PalbaseQuerySnapshot, aJ as PalbaseRegisterDeviceParams, aK as PalbaseResult, aL as PalbaseRetentionQueryInput, aM as PalbaseRetentionResult, aN as PalbaseSession, aO as PalbaseSetOverrideResult, aP as PalbaseSetOverridesResult, aQ as PalbaseSignedUrlResponse, aR as PalbaseSmsClient, aS as PalbaseSmsSendParams, aT as PalbaseSmsSendResponse, aU as PalbaseTransformOptions, aV as PalbaseUpdateLinkParams, aW as PalbaseUploadOptions, aX as PalbaseUser, aY as PalbaseUserDetailResult, aZ as PalbaseUsersQueryInput, a_ as PalbaseUsersResult, a$ as PalbaseVerifyRequestSignatureParams, b0 as PalbaseWhereOperator, b1 as TooManyRequests, b2 as TxClient, b3 as Unauthorized, b4 as defineMiddleware } from './endpoint-fW9yWla0.js';
|
|
3
3
|
import { AsyncLocalStorage } from 'node:async_hooks';
|
|
4
|
-
import { E as EnvTypedDatabase, S as SchemaDef } from './index-
|
|
5
|
-
export { C as ColumnBuilder, a as ColumnDef, b as ColumnMap, c as ColumnType, d as EXTENSION_DEPENDENCIES, e as EnvServiceDatabase, f as EnvTables, g as EnvTypedTable, h as EnvTypedTx, I as InsertShape, O as OnDeleteAction, P as PALBASE_EXTENSIONS, i as PalbaseExtension, j as PolicyBuilder, k as PolicyCommand, l as PolicyDef, m as PolicyMode, R as RowShape, n as SchemaInput, T as TableDef, o as TableInput, p as TypedDB, q as TypedTable, r as TypedTx, s as boolean, t as defineSchema, u as enumType, v as integer, w as isPalbaseExtension, x as jsonb, y as makeTypedDB, z as policy, A as text, B as timestamp, D as uuid } from './index-
|
|
4
|
+
import { E as EnvTypedDatabase, S as SchemaDef } from './index-CArW1VMq.js';
|
|
5
|
+
export { C as ColumnBuilder, a as ColumnDef, b as ColumnMap, c as ColumnType, d as EXTENSION_DEPENDENCIES, e as EnvServiceDatabase, f as EnvTables, g as EnvTypedTable, h as EnvTypedTx, I as InsertShape, O as OnDeleteAction, P as PALBASE_EXTENSIONS, i as PalbaseExtension, j as PolicyBuilder, k as PolicyCommand, l as PolicyDef, m as PolicyMode, R as RowShape, n as SchemaInput, T as TableDef, o as TableInput, p as TypedDB, q as TypedTable, r as TypedTx, s as boolean, t as defineSchema, u as enumType, v as integer, w as isPalbaseExtension, x as jsonb, y as makeTypedDB, z as policy, A as text, B as timestamp, D as uuid } from './index-CArW1VMq.js';
|
|
6
6
|
export { TableTypes, Tables } from './db/env.js';
|
|
7
7
|
import { ZodTypeAny, z } from 'zod';
|
|
8
8
|
export { z } from 'zod';
|
|
@@ -53,7 +53,7 @@ export { z } from 'zod';
|
|
|
53
53
|
* Realtime is BROADCAST-ONLY here (a stateless handler can push an event but
|
|
54
54
|
* cannot hold a subscription socket — `subscribe()` lives on the client SDK).
|
|
55
55
|
*
|
|
56
|
-
* EXCLUDED on purpose: Functions,
|
|
56
|
+
* EXCLUDED on purpose: Functions, Links, Analytics, Auth. They are not
|
|
57
57
|
* exposed as backend handler singletons (auth lives on the client SDK; the rest
|
|
58
58
|
* are out of scope for backend endpoints). */
|
|
59
59
|
interface RuntimeServices {
|
|
@@ -702,6 +702,92 @@ interface ControllerOptions {
|
|
|
702
702
|
*/
|
|
703
703
|
declare function Controller(basePath: string, options?: ControllerOptions): <T extends abstract new (...args: never[]) => object>(ctor: T) => T;
|
|
704
704
|
|
|
705
|
+
/** A legacy method decorator (`experimentalDecorators`): `(prototype, name,
|
|
706
|
+
* descriptor)`. */
|
|
707
|
+
type MethodDecorator$1 = (target: object, propertyKey: string | symbol, descriptor: PropertyDescriptor) => void;
|
|
708
|
+
/** A legacy parameter decorator: `(prototype, name, paramIndex)`. */
|
|
709
|
+
type ParameterDecorator$1 = (target: object, propertyKey: string | symbol, parameterIndex: number) => void;
|
|
710
|
+
/**
|
|
711
|
+
* Direct-storage upload settings for an `@Upload` route. The br-pod validates an
|
|
712
|
+
* authorize request against these (size/type), then mints a signed upload URL
|
|
713
|
+
* that PINS the limits so storage itself rejects an over-limit / wrong-type PUT
|
|
714
|
+
* — the client cannot exceed what it declared.
|
|
715
|
+
*/
|
|
716
|
+
interface UploadConfig {
|
|
717
|
+
/**
|
|
718
|
+
* Target bucket NAME. MUST exist in `config/storage.ts` `defineStorage(...)`.
|
|
719
|
+
*
|
|
720
|
+
* The bucket is the SINGLE SOURCE OF TRUTH for the size limit + MIME allowlist:
|
|
721
|
+
* `bucket({ fileSizeLimit, allowedMimeTypes })`. Storage enforces those at the
|
|
722
|
+
* actual PUT (the only guard a client cannot skip), so `@Upload` deliberately
|
|
723
|
+
* does NOT take its own `maxSize`/`allowedTypes` — duplicating them here would
|
|
724
|
+
* let a route declare a tighter limit than its bucket that storage would not
|
|
725
|
+
* enforce (a real bypass: declare 10 bytes at authorize, then PUT up to the
|
|
726
|
+
* bucket ceiling straight at the signed URL). One bucket, one limit, enforced.
|
|
727
|
+
*/
|
|
728
|
+
bucket: string;
|
|
729
|
+
/**
|
|
730
|
+
* SERVER-side object key template. The client NEVER chooses the path. Tokens:
|
|
731
|
+
* `{userId}` (authenticated user id), `{uploadId}` (server-minted), and
|
|
732
|
+
* `{filename}` (the client-declared filename, sanitized). e.g.
|
|
733
|
+
* `"{userId}/{uploadId}-{filename}"`.
|
|
734
|
+
*/
|
|
735
|
+
pathTemplate: string;
|
|
736
|
+
}
|
|
737
|
+
/**
|
|
738
|
+
* `@Upload(subpath, config)` — declare a direct-storage upload route. The method
|
|
739
|
+
* body is the completion handler; `config.uploadConfig` drives the authorize
|
|
740
|
+
* guard + signed-URL pinning.
|
|
741
|
+
*
|
|
742
|
+
* @example
|
|
743
|
+
* @Upload("/", { bucket: "docs", pathTemplate: "{userId}/{uploadId}-{filename}" })
|
|
744
|
+
* async upload(@UploadedObject() obj: UploadedObject, @User() user): Promise<DocResult> { ... }
|
|
745
|
+
* // The size limit + MIME allowlist come from the "docs" bucket in
|
|
746
|
+
* // config/storage.ts — storage enforces them at the PUT.
|
|
747
|
+
*/
|
|
748
|
+
declare function Upload(subpath: string, config: UploadConfig & Pick<RouteOptions, "auth" | "rateLimit">): MethodDecorator$1;
|
|
749
|
+
/**
|
|
750
|
+
* The uploaded object, injected into an `@Upload` method body by
|
|
751
|
+
* `@UploadedObject()` once storage confirms the upload. Bytes are NOT present
|
|
752
|
+
* (they went straight to storage) — this is the metadata the completion handler
|
|
753
|
+
* persists.
|
|
754
|
+
*/
|
|
755
|
+
interface UploadedObject {
|
|
756
|
+
/** Server-minted id correlating authorize ↔ completion (idempotency key). */
|
|
757
|
+
uploadId: string;
|
|
758
|
+
/** Final object key in the bucket (rendered from `pathTemplate`). */
|
|
759
|
+
path: string;
|
|
760
|
+
/** Bucket the object landed in. */
|
|
761
|
+
bucket: string;
|
|
762
|
+
/** Object size in bytes, as reported by storage. */
|
|
763
|
+
size: number;
|
|
764
|
+
/** Object MIME type, as reported by storage. */
|
|
765
|
+
contentType: string;
|
|
766
|
+
}
|
|
767
|
+
/**
|
|
768
|
+
* `@UploadedObject()` — inject the uploaded object (`: UploadedObject`) into an
|
|
769
|
+
* `@Upload` method body (the completion input). Only valid on an `@Upload`
|
|
770
|
+
* route; the bytes are NOT present (they went directly to storage), this is the
|
|
771
|
+
* confirmed object's metadata.
|
|
772
|
+
*
|
|
773
|
+
* Co-located with the {@link UploadedObject} TYPE so a single exported name
|
|
774
|
+
* `UploadedObject` carries BOTH the decorator value and the type annotation.
|
|
775
|
+
*/
|
|
776
|
+
declare function UploadedObject(): ParameterDecorator$1;
|
|
777
|
+
/**
|
|
778
|
+
* Cross-check one `@Upload` route's uploadConfig against the project's
|
|
779
|
+
* {@link StorageConfig}: the named bucket MUST exist in `defineStorage(...)`.
|
|
780
|
+
* Throws a precise error so a typo fails at deploy, not at the first user upload.
|
|
781
|
+
*
|
|
782
|
+
* That is the ONLY cross-check: the size limit + MIME allowlist live on the
|
|
783
|
+
* bucket (`bucket({ fileSizeLimit, allowedMimeTypes })`) and are enforced by
|
|
784
|
+
* storage at the PUT. `@Upload` carries no `maxSize`/`allowedTypes` of its own,
|
|
785
|
+
* so there is nothing to compare — one bucket, one limit, no drift.
|
|
786
|
+
*
|
|
787
|
+
* `routeLabel` is used only for error messages (e.g. `docs.upload`).
|
|
788
|
+
*/
|
|
789
|
+
declare function validateUploadAgainstStorage(uploadConfig: UploadConfig, storage: StorageConfig, routeLabel: string): void;
|
|
790
|
+
|
|
705
791
|
/** The HTTP verbs a route may declare, upper-cased (the runtime router +
|
|
706
792
|
* OpenAPI lower-case on their own). */
|
|
707
793
|
type HttpMethodUpper = "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
|
|
@@ -711,6 +797,12 @@ interface RouteOptions {
|
|
|
711
797
|
auth?: AuthSpec;
|
|
712
798
|
/** Per-route rate limit. */
|
|
713
799
|
rateLimit?: RateLimitConfig;
|
|
800
|
+
/** Direct-storage upload config — present ONLY on `@Upload` routes (the
|
|
801
|
+
* `@Get`/`@Post`/… decorators never set it). Its presence is what MARKS a
|
|
802
|
+
* route as an upload route through the whole pipeline (registry → flatten →
|
|
803
|
+
* openapi → codegen). The bytes go client→storage directly; the method body
|
|
804
|
+
* runs as the completion handler. See {@link UploadConfig} (decorators/upload.ts). */
|
|
805
|
+
uploadConfig?: UploadConfig;
|
|
714
806
|
}
|
|
715
807
|
/** One inferred throw site: the error CLASS name (e.g. "TodoLocked") and its
|
|
716
808
|
* wire code (e.g. "todo_locked"). `status`, `hasData`, and the data JSON schema
|
|
@@ -1260,4 +1352,4 @@ declare const documents: {
|
|
|
1260
1352
|
onDocumentDeleted(handler: HookHandler<DocumentDeletedEvent>): ResolvedHook<DocumentDeletedEvent>;
|
|
1261
1353
|
};
|
|
1262
1354
|
|
|
1263
|
-
export { type AcsOptions, type ApnsOptions, type BackoffStrategy, Body, type BucketDef, type BucketOptions, Cache, CacheClient, Client, Controller, type ControllerOptions, type CustomWebhookConfig, DBClient, Database, type DefinedError, type DefinedErrorWithData, Delete, type DocumentCreatedEvent, type DocumentDeletedEvent, type DocumentUpdatedEvent, Documents, type EnvSecretRef, EnvTypedDatabase, FLAGS_CONFIG_KIND, type FcmOptions, type FileDeletedEvent, type FileUploadedEvent, type FlagDef, type FlagOptions, type FlagType, type FlagValue, Flags, type FlagsConfig, type FlagsInput, Get, Headers, type HookHandler, type HookMeta, HttpError, type HttpMethodUpper, type JobConfig, type JobMeta, Log, Logger, NOTIFICATIONS_CONFIG_KIND, Notifications, type NotificationsConfig, type NotificationsInput, OptionalUser, PROVIDER_CATALOG, PalbaseDocsClient, PalbaseFlagsClient, PalbaseNotificationsClient, PalbaseRealtimeClient, PalbaseStorageClient, Param, type PasswordResetEvent, Patch, Post, type ProviderCatalogEntry, type ProviderDef, type ProviderEventMap, type ProviderName, type ProviderOptions, type ProviderWebhookConfig, Put, Query, Queue, QueueClient, RESERVED_SECRET_PREFIX, RateLimitConfig, Realtime, type RegisteredError, Req, RequestId, type ResolvedCustomWebhook, type ResolvedHook, type ResolvedJobConfig, type ResolvedProviderWebhook, type ResolvedWebhookConfig, type ResolvedWorkerConfig, Resource, type ResourceEnv, type RouteOptions, type RuntimeServices, STORAGE_CONFIG_KIND, SchemaDef, type SendgridOptions, type SesOptions, type SignInEvent, type SignOutEvent, type SmtpOptions, Storage, type StorageConfig, type StorageInput, type ThrowDescriptor, TraceId, type TwilioOptions, User, type UserCreatedEvent, User$1 as UserT, type WebhookEventHandler, type WebhookMeta, type WebhookProvider, type WebhookRequest, type WorkerConfig, type WorkerMeta, __getRuntime, __registerResource, __requestALS, __runResourceBoot, __runWithRuntime, __setRuntime, __shutdownResources, auth, bucket, buildProvider, defineError, defineFlags, defineJob, defineNotifications, defineStorage, defineWebhook, defineWorker, documents, flag, getErrorRegistry, makeEnvDts, parseFileSizeLimit, recordThrows, reservedSecretKey, storage };
|
|
1355
|
+
export { type AcsOptions, type ApnsOptions, type BackoffStrategy, Body, type BucketDef, type BucketOptions, Cache, CacheClient, Client, Controller, type ControllerOptions, type CustomWebhookConfig, DBClient, Database, type DefinedError, type DefinedErrorWithData, Delete, type DocumentCreatedEvent, type DocumentDeletedEvent, type DocumentUpdatedEvent, Documents, type EnvSecretRef, EnvTypedDatabase, FLAGS_CONFIG_KIND, type FcmOptions, type FileDeletedEvent, type FileUploadedEvent, type FlagDef, type FlagOptions, type FlagType, type FlagValue, Flags, type FlagsConfig, type FlagsInput, Get, Headers, type HookHandler, type HookMeta, HttpError, type HttpMethodUpper, type JobConfig, type JobMeta, Log, Logger, NOTIFICATIONS_CONFIG_KIND, Notifications, type NotificationsConfig, type NotificationsInput, OptionalUser, PROVIDER_CATALOG, PalbaseDocsClient, PalbaseFlagsClient, PalbaseNotificationsClient, PalbaseRealtimeClient, PalbaseStorageClient, Param, type PasswordResetEvent, Patch, Post, type ProviderCatalogEntry, type ProviderDef, type ProviderEventMap, type ProviderName, type ProviderOptions, type ProviderWebhookConfig, Put, Query, Queue, QueueClient, RESERVED_SECRET_PREFIX, RateLimitConfig, Realtime, type RegisteredError, Req, RequestId, type ResolvedCustomWebhook, type ResolvedHook, type ResolvedJobConfig, type ResolvedProviderWebhook, type ResolvedWebhookConfig, type ResolvedWorkerConfig, Resource, type ResourceEnv, type RouteOptions, type RuntimeServices, STORAGE_CONFIG_KIND, SchemaDef, type SendgridOptions, type SesOptions, type SignInEvent, type SignOutEvent, type SmtpOptions, Storage, type StorageConfig, type StorageInput, type ThrowDescriptor, TraceId, type TwilioOptions, Upload, type UploadConfig, UploadedObject, User, type UserCreatedEvent, User$1 as UserT, type WebhookEventHandler, type WebhookMeta, type WebhookProvider, type WebhookRequest, type WorkerConfig, type WorkerMeta, __getRuntime, __registerResource, __requestALS, __runResourceBoot, __runWithRuntime, __setRuntime, __shutdownResources, auth, bucket, buildProvider, defineError, defineFlags, defineJob, defineNotifications, defineStorage, defineWebhook, defineWorker, documents, flag, getErrorRegistry, makeEnvDts, parseFileSizeLimit, recordThrows, reservedSecretKey, storage, validateUploadAgainstStorage };
|
package/dist/index.js
CHANGED
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
__requestALS,
|
|
13
13
|
__runWithRuntime,
|
|
14
14
|
__setRuntime
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-RGQUB66H.js";
|
|
16
16
|
import {
|
|
17
17
|
EXTENSION_DEPENDENCIES,
|
|
18
18
|
PALBASE_EXTENSIONS,
|
|
@@ -475,6 +475,48 @@ var Put = makeMethodDecorator("PUT");
|
|
|
475
475
|
var Patch = makeMethodDecorator("PATCH");
|
|
476
476
|
var Delete = makeMethodDecorator("DELETE");
|
|
477
477
|
|
|
478
|
+
// src/decorators/upload.ts
|
|
479
|
+
function Upload(subpath, config) {
|
|
480
|
+
const { auth: auth2, rateLimit, ...uploadConfig } = config;
|
|
481
|
+
validateUploadConfigShape(uploadConfig);
|
|
482
|
+
const options = {
|
|
483
|
+
uploadConfig,
|
|
484
|
+
...auth2 !== void 0 ? { auth: auth2 } : {},
|
|
485
|
+
...rateLimit !== void 0 ? { rateLimit } : {}
|
|
486
|
+
};
|
|
487
|
+
return function(target, propertyKey) {
|
|
488
|
+
recordRoute(target, String(propertyKey), "POST", subpath, options);
|
|
489
|
+
};
|
|
490
|
+
}
|
|
491
|
+
function UploadedObject() {
|
|
492
|
+
return function(target, propertyKey, parameterIndex) {
|
|
493
|
+
recordParam(target, String(propertyKey), {
|
|
494
|
+
index: parameterIndex,
|
|
495
|
+
kind: "uploadedObject"
|
|
496
|
+
});
|
|
497
|
+
};
|
|
498
|
+
}
|
|
499
|
+
function validateUploadConfigShape(c) {
|
|
500
|
+
if (c === null || typeof c !== "object") {
|
|
501
|
+
throw new Error("@Upload config must be an object { bucket, pathTemplate, ... }");
|
|
502
|
+
}
|
|
503
|
+
if (typeof c.bucket !== "string" || c.bucket.length === 0) {
|
|
504
|
+
throw new Error("@Upload config.bucket must be a non-empty bucket name");
|
|
505
|
+
}
|
|
506
|
+
if (typeof c.pathTemplate !== "string" || c.pathTemplate.length === 0) {
|
|
507
|
+
throw new Error("@Upload config.pathTemplate must be a non-empty key template");
|
|
508
|
+
}
|
|
509
|
+
}
|
|
510
|
+
function validateUploadAgainstStorage(uploadConfig, storage2, routeLabel) {
|
|
511
|
+
const def = storage2.buckets[uploadConfig.bucket];
|
|
512
|
+
if (def === void 0) {
|
|
513
|
+
const known = Object.keys(storage2.buckets);
|
|
514
|
+
throw new Error(
|
|
515
|
+
`@Upload route ${routeLabel} targets bucket "${uploadConfig.bucket}" which is not declared in defineStorage(...). ` + (known.length ? `Known buckets: ${known.join(", ")}.` : "No buckets are declared.")
|
|
516
|
+
);
|
|
517
|
+
}
|
|
518
|
+
}
|
|
519
|
+
|
|
478
520
|
// src/decorators/params.ts
|
|
479
521
|
function makeParamDecorator(kind, extra) {
|
|
480
522
|
return function(target, propertyKey, parameterIndex) {
|
|
@@ -1055,6 +1097,8 @@ export {
|
|
|
1055
1097
|
TooManyRequests,
|
|
1056
1098
|
TraceId,
|
|
1057
1099
|
Unauthorized,
|
|
1100
|
+
Upload,
|
|
1101
|
+
UploadedObject,
|
|
1058
1102
|
User,
|
|
1059
1103
|
__getRuntime,
|
|
1060
1104
|
__registerResource,
|
|
@@ -1093,6 +1137,7 @@ export {
|
|
|
1093
1137
|
text,
|
|
1094
1138
|
timestamp,
|
|
1095
1139
|
uuid,
|
|
1140
|
+
validateUploadAgainstStorage,
|
|
1096
1141
|
z2 as z
|
|
1097
1142
|
};
|
|
1098
1143
|
//# sourceMappingURL=index.js.map
|