@dereekb/firebase-server 13.11.18 → 13.12.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/index.cjs.js +218 -31
- package/index.esm.js +217 -34
- package/mailgun/package.json +9 -9
- package/mcp/index.cjs.default.js +1 -0
- package/mcp/index.cjs.js +3646 -0
- package/mcp/index.cjs.mjs +2 -0
- package/mcp/index.d.ts +1 -0
- package/mcp/index.esm.js +3609 -0
- package/mcp/package.json +33 -0
- package/mcp/src/index.d.ts +1 -0
- package/mcp/src/lib/controller/index.d.ts +2 -0
- package/mcp/src/lib/controller/mcp.controller.d.ts +19 -0
- package/mcp/src/lib/controller/mcp.wellknown.controller.d.ts +25 -0
- package/mcp/src/lib/index.d.ts +5 -0
- package/mcp/src/lib/mcp.config.d.ts +100 -0
- package/mcp/src/lib/mcp.module.d.ts +49 -0
- package/mcp/src/lib/service/index.d.ts +8 -0
- package/mcp/src/lib/service/mcp.manifest.d.ts +150 -0
- package/mcp/src/lib/service/mcp.response-formatter.d.ts +36 -0
- package/mcp/src/lib/service/mcp.server.factory.d.ts +124 -0
- package/mcp/src/lib/service/mcp.tool-generator.d.ts +235 -0
- package/mcp/src/lib/service/mcp.visibility.d.ts +99 -0
- package/mcp/src/lib/service/tools/mcp.tool.model-decode.d.ts +87 -0
- package/mcp/src/lib/service/tools/mcp.tool.model-get.d.ts +81 -0
- package/mcp/src/lib/service/tools/mcp.tool.model-info.d.ts +84 -0
- package/mcp/src/lib/service/tools/mcp.tool.whoami.d.ts +72 -0
- package/mcp/src/lib/transport/index.d.ts +1 -0
- package/mcp/src/lib/transport/streamable-http.transport.d.ts +21 -0
- package/model/index.cjs.js +639 -266
- package/model/index.esm.js +640 -270
- package/model/package.json +9 -9
- package/model/src/lib/storagefile/extension/compress.pdf.d.ts +29 -1
- package/model/src/lib/storagefile/index.d.ts +1 -0
- package/model/src/lib/storagefile/storagefile.action.server.d.ts +29 -2
- package/model/src/lib/storagefile/storagefile.mcp.d.ts +32 -0
- package/model/src/lib/storagefile/storagefile.module.d.ts +20 -3
- package/oidc/index.cjs.js +322 -147
- package/oidc/index.esm.js +321 -148
- package/oidc/package.json +10 -10
- package/oidc/src/lib/controller/oidc.wellknown.controller.d.ts +6 -15
- package/oidc/src/lib/middleware/oauth-auth.middleware.d.ts +22 -2
- package/oidc/src/lib/middleware/oauth-auth.module.d.ts +57 -0
- package/oidc/src/lib/oidc.config.d.ts +73 -0
- package/oidc/src/lib/oidc.module.d.ts +44 -2
- package/package.json +16 -10
- package/src/lib/auth/auth.service.d.ts +16 -1
- package/src/lib/auth/auth.service.error.util.d.ts +24 -5
- package/src/lib/env/env.config.d.ts +16 -0
- package/src/lib/env/env.service.d.ts +9 -0
- package/src/lib/nest/controller/model/model.api.get.service.d.ts +35 -1
- package/src/lib/nest/env/env.service.d.ts +1 -0
- package/src/lib/nest/model/api.details.d.ts +116 -5
- package/src/lib/nest/model/crud.assert.function.d.ts +1 -1
- package/src/lib/nest/model/index.d.ts +1 -0
- package/src/lib/nest/model/invoke.model.function.d.ts +89 -0
- package/test/package.json +11 -11
- package/twilio/LICENSE +21 -0
- package/twilio/index.cjs.default.js +1 -0
- package/twilio/index.cjs.js +404 -0
- package/twilio/index.cjs.mjs +2 -0
- package/twilio/index.d.ts +1 -0
- package/twilio/index.esm.js +398 -0
- package/twilio/package.json +25 -0
- package/twilio/src/index.d.ts +1 -0
- package/twilio/src/lib/index.d.ts +1 -0
- package/twilio/src/lib/notification.send.service.twilio.d.ts +148 -0
- package/zoho/package.json +9 -9
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { type Maybe } from '@dereekb/util';
|
|
1
|
+
import { type AuthRole, type Maybe } from '@dereekb/util';
|
|
2
2
|
import { type OnCallFunctionType, type OnCallTypedModelParams, type FirestoreModelType, type ModelFirebaseCrudFunctionSpecifier } from '@dereekb/firebase';
|
|
3
|
+
import { type FirebaseServerAuthData } from '../controller/auth.context.server';
|
|
3
4
|
import { type OnCallModelFunctionAnalyticsDetails } from './analytics.details';
|
|
4
5
|
/**
|
|
5
6
|
* Reference to a type that can produce a JSON Schema representation.
|
|
@@ -39,6 +40,97 @@ export interface McpToolResponseContentBlock {
|
|
|
39
40
|
readonly mimeType?: string;
|
|
40
41
|
readonly data?: string;
|
|
41
42
|
}
|
|
43
|
+
/**
|
|
44
|
+
* Minimal dispatch coordinates surfaced to a dynamic visibility predicate so a
|
|
45
|
+
* shared function can branch by tool identity.
|
|
46
|
+
*
|
|
47
|
+
* Structurally satisfied by the MCP tool generator's `McpToolDispatchTarget`.
|
|
48
|
+
*/
|
|
49
|
+
export interface McpToolVisibilityDispatchTarget {
|
|
50
|
+
readonly call: string;
|
|
51
|
+
readonly modelType: string;
|
|
52
|
+
readonly specifier?: string;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Declarative visibility rule. Evaluated per-request without invoking user code.
|
|
56
|
+
*/
|
|
57
|
+
export interface McpVisibilityRule {
|
|
58
|
+
/**
|
|
59
|
+
* Caller must hold every role listed (AND-semantics). Empty array is vacuously true.
|
|
60
|
+
*/
|
|
61
|
+
readonly requiredRoles?: ReadonlyArray<AuthRole>;
|
|
62
|
+
/**
|
|
63
|
+
* When true, the caller must be authenticated (`ctx.auth != null`).
|
|
64
|
+
*/
|
|
65
|
+
readonly requireAuthenticated?: boolean;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Context passed to the dynamic visibility function form.
|
|
69
|
+
*/
|
|
70
|
+
export interface McpVisibilityContext {
|
|
71
|
+
/**
|
|
72
|
+
* The authenticated caller, when present. `undefined` for anonymous callers.
|
|
73
|
+
*/
|
|
74
|
+
readonly auth?: FirebaseServerAuthData;
|
|
75
|
+
/**
|
|
76
|
+
* The caller's OIDC scopes, when the request was authenticated with a `scope`-bearing token.
|
|
77
|
+
* `undefined` for non-OIDC callers — treated the same as `oidcCallModelScopePreAssert` bypass.
|
|
78
|
+
*/
|
|
79
|
+
readonly scopes?: ReadonlySet<string>;
|
|
80
|
+
/**
|
|
81
|
+
* Dispatch identity of the tool being evaluated. Lets a shared predicate branch by tool.
|
|
82
|
+
*/
|
|
83
|
+
readonly tool: McpToolVisibilityDispatchTarget;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Per-handler MCP visibility, evaluated cheap-to-expensive at request time.
|
|
87
|
+
*
|
|
88
|
+
* - `boolean`: `true` means "always visible (subject to scope)"; `false` means "never visible".
|
|
89
|
+
* - {@link McpVisibilityRule}: declarative check (role / auth gate), no user code invoked.
|
|
90
|
+
* - Function: synchronous predicate invoked per request. MUST be synchronous — async checks
|
|
91
|
+
* introduce unbounded `tools/list` latency. If the function throws, the framework treats the
|
|
92
|
+
* result as `false` (fail-closed) and logs a warning.
|
|
93
|
+
*
|
|
94
|
+
* `visibility: true` does NOT bypass the OIDC scope filter — scope is the absolute first gate
|
|
95
|
+
* and `visibility` only narrows further.
|
|
96
|
+
*/
|
|
97
|
+
export type McpToolVisibility = boolean | McpVisibilityRule | ((context: McpVisibilityContext) => boolean);
|
|
98
|
+
/**
|
|
99
|
+
* Input passed to a {@link McpToolDetailsBuilder}.
|
|
100
|
+
*
|
|
101
|
+
* `defaultDescription` and `defaultInputSchema` reflect the framework's boot-time resolved
|
|
102
|
+
* values (manifest entry if present, otherwise the auto-generated defaults). Builders can
|
|
103
|
+
* return them verbatim, mutate a copy, or replace them entirely.
|
|
104
|
+
*
|
|
105
|
+
* `auth` and `scopes` come from the same per-request context the MCP visibility predicate
|
|
106
|
+
* sees. `undefined` for anonymous / non-OIDC callers.
|
|
107
|
+
*/
|
|
108
|
+
export interface McpToolDetailsBuilderInput {
|
|
109
|
+
readonly dispatch: McpToolVisibilityDispatchTarget;
|
|
110
|
+
readonly defaultDescription: string;
|
|
111
|
+
readonly defaultInputSchema?: object;
|
|
112
|
+
readonly auth?: FirebaseServerAuthData;
|
|
113
|
+
readonly scopes?: ReadonlySet<string>;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Builder output. Either field can be omitted to keep the framework default;
|
|
117
|
+
* returning an empty object is a no-op.
|
|
118
|
+
*/
|
|
119
|
+
export interface McpToolDetailsBuilderResult {
|
|
120
|
+
readonly description?: string;
|
|
121
|
+
readonly inputSchema?: object;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Synchronous builder invoked once per `tools/list` request, after the visibility filter
|
|
125
|
+
* has accepted the tool.
|
|
126
|
+
*
|
|
127
|
+
* MUST be synchronous — async work would introduce unbounded `tools/list` latency, matching
|
|
128
|
+
* the visibility-predicate constraint.
|
|
129
|
+
*
|
|
130
|
+
* If the builder throws, the framework falls back to the defaults and logs a warning
|
|
131
|
+
* (fail-soft).
|
|
132
|
+
*/
|
|
133
|
+
export type McpToolDetailsBuilder = (input: McpToolDetailsBuilderInput) => McpToolDetailsBuilderResult;
|
|
42
134
|
/**
|
|
43
135
|
* MCP-specific customization for a model function.
|
|
44
136
|
*
|
|
@@ -52,10 +144,6 @@ export interface McpToolResponseContentBlock {
|
|
|
52
144
|
* Resolution order: formatResponse > summarizeResponse > auto-generated default.
|
|
53
145
|
*/
|
|
54
146
|
export interface OnCallModelFunctionMcpDetails {
|
|
55
|
-
/**
|
|
56
|
-
* Custom tool description for the MCP tool.
|
|
57
|
-
*/
|
|
58
|
-
readonly description?: string;
|
|
59
147
|
/**
|
|
60
148
|
* Custom tool name override.
|
|
61
149
|
*/
|
|
@@ -81,6 +169,29 @@ export interface OnCallModelFunctionMcpDetails {
|
|
|
81
169
|
* @returns The full MCP tool response content.
|
|
82
170
|
*/
|
|
83
171
|
readonly formatResponse?: (result: unknown, params: OnCallTypedModelParams) => McpToolResponseContent;
|
|
172
|
+
/**
|
|
173
|
+
* Controls whether this handler's tool is advertised on `tools/list` for a given request.
|
|
174
|
+
*
|
|
175
|
+
* See {@link McpToolVisibility} for the three accepted forms. Always applied after the
|
|
176
|
+
* OIDC scope filter and the module-level `readOnly` check.
|
|
177
|
+
*/
|
|
178
|
+
readonly visibility?: McpToolVisibility;
|
|
179
|
+
/**
|
|
180
|
+
* Explicit override for the effective read-only classification of this handler.
|
|
181
|
+
*
|
|
182
|
+
* When unset, the framework infers from the call type: `read` and `query` → true,
|
|
183
|
+
* `create`/`update`/`delete` → false, anything else → undefined (treated as a write
|
|
184
|
+
* for fail-safe filtering when `McpModuleConfig.readOnly` is on).
|
|
185
|
+
*/
|
|
186
|
+
readonly readOnly?: boolean;
|
|
187
|
+
/**
|
|
188
|
+
* Optional per-request builder that produces enriched tool description / inputSchema
|
|
189
|
+
* for `tools/list`. See {@link McpToolDetailsBuilder}.
|
|
190
|
+
*
|
|
191
|
+
* Tools without a builder reuse a precomputed wire entry, so this opt-in only adds
|
|
192
|
+
* overhead to the handlers that need it.
|
|
193
|
+
*/
|
|
194
|
+
readonly toolDetails?: McpToolDetailsBuilder;
|
|
84
195
|
}
|
|
85
196
|
/**
|
|
86
197
|
* API details metadata for a single model call handler function.
|
|
@@ -7,7 +7,7 @@ import { type OnCallFunctionType, type FirestoreModelType } from '@dereekb/fireb
|
|
|
7
7
|
* Used by {@link AssertModelCrudRequestFunction} to let assertions branch on operation type,
|
|
8
8
|
* enabling cross-cutting rules like "block all deletes for archived models."
|
|
9
9
|
*/
|
|
10
|
-
export type AssertModelCrudRequestFunctionContextCrudType = 'call' | 'create' | 'read' | 'update' | 'delete' | 'query';
|
|
10
|
+
export type AssertModelCrudRequestFunctionContextCrudType = 'call' | 'create' | 'read' | 'update' | 'delete' | 'query' | 'invoke';
|
|
11
11
|
/**
|
|
12
12
|
* Context passed to a {@link AssertModelCrudRequestFunction} before a CRUD handler executes.
|
|
13
13
|
*
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { type PromiseOrValue } from '@dereekb/util';
|
|
2
|
+
import { type FirestoreModelType, type FirestoreModelIdentity, type FirestoreModelTypes, type OnCallInvokeModelParams, type ModelFirebaseCrudFunctionSpecifierRef } from '@dereekb/firebase';
|
|
3
|
+
import { type OnCallWithAuthAwareNestRequireAuthRef, type OnCallWithNestContext } from '../function/call';
|
|
4
|
+
import { type NestContextCallableRequestWithAuth, type NestContextCallableRequestWithOptionalAuth } from '../function/nest';
|
|
5
|
+
import { type AssertModelCrudRequestFunction } from './crud.assert.function';
|
|
6
|
+
/**
|
|
7
|
+
* Request type for model invoke handlers that require authentication.
|
|
8
|
+
*
|
|
9
|
+
* Invoke is the sixth call type (alongside CRUDQ) for side-effecting RPC-style operations
|
|
10
|
+
* that don't map cleanly onto any CRUD verb — e.g. regenerate-thumbnails, resync-with-external,
|
|
11
|
+
* recompute-index. Each handler is bound to a model type; permission checks use `useModel()`
|
|
12
|
+
* exactly like an update handler.
|
|
13
|
+
*
|
|
14
|
+
* @typeParam N - The NestJS context type.
|
|
15
|
+
* @typeParam I - The input data type for the invoke operation.
|
|
16
|
+
*/
|
|
17
|
+
export type OnCallInvokeModelRequest<N, I = unknown> = NestContextCallableRequestWithAuth<N, I> & ModelFirebaseCrudFunctionSpecifierRef;
|
|
18
|
+
/**
|
|
19
|
+
* A model invoke handler function that requires an authenticated caller.
|
|
20
|
+
*/
|
|
21
|
+
export type OnCallInvokeModelFunctionWithAuth<N, I = unknown, O = unknown> = ((request: OnCallInvokeModelRequest<N, I>) => PromiseOrValue<O>) & {
|
|
22
|
+
readonly _requiresAuth?: true;
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Request type for model invoke handlers that allow unauthenticated callers.
|
|
26
|
+
*/
|
|
27
|
+
export type OnCallInvokeModelRequestWithOptionalAuth<N, I = unknown> = NestContextCallableRequestWithOptionalAuth<N, I> & ModelFirebaseCrudFunctionSpecifierRef;
|
|
28
|
+
/**
|
|
29
|
+
* A model invoke handler function that does not require authentication.
|
|
30
|
+
*/
|
|
31
|
+
export type OnCallInvokeModelFunctionWithOptionalAuth<N, I = unknown, O = unknown> = ((request: OnCallInvokeModelRequestWithOptionalAuth<N, I>) => PromiseOrValue<O>) & {
|
|
32
|
+
readonly _requireAuth: false;
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* Standard model invoke handler requiring auth (the common case).
|
|
36
|
+
*/
|
|
37
|
+
export type OnCallInvokeModelFunction<N, I = unknown, O = unknown> = OnCallInvokeModelFunctionWithAuth<N, I, O> & OnCallWithAuthAwareNestRequireAuthRef;
|
|
38
|
+
/**
|
|
39
|
+
* Union of auth-required and optional-auth invoke handlers.
|
|
40
|
+
*/
|
|
41
|
+
export type OnCallInvokeModelFunctionAuthAware<N, I = unknown, O = unknown> = OnCallInvokeModelFunction<N, I, O> | OnCallInvokeModelFunctionWithOptionalAuth<N, I, O>;
|
|
42
|
+
/**
|
|
43
|
+
* Maps Firestore model type strings to their invoke handler functions.
|
|
44
|
+
*
|
|
45
|
+
* Pass this map to {@link onCallInvokeModel} to register all model types
|
|
46
|
+
* that support invoke RPCs through the call model system.
|
|
47
|
+
*
|
|
48
|
+
* @typeParam N - The NestJS context type.
|
|
49
|
+
* @typeParam T - The Firestore model identity constraining valid model type keys.
|
|
50
|
+
*/
|
|
51
|
+
export type OnCallInvokeModelMap<N, T extends FirestoreModelIdentity = FirestoreModelIdentity> = {
|
|
52
|
+
readonly [K in FirestoreModelTypes<T>]?: OnCallInvokeModelFunctionAuthAware<N, any, any>;
|
|
53
|
+
};
|
|
54
|
+
/**
|
|
55
|
+
* Configuration for {@link onCallInvokeModel}.
|
|
56
|
+
*/
|
|
57
|
+
export interface OnCallInvokeModelConfig<N> {
|
|
58
|
+
/**
|
|
59
|
+
* Optional assertion run before the invoke handler; throw to reject.
|
|
60
|
+
*/
|
|
61
|
+
readonly preAssert?: AssertModelCrudRequestFunction<N, OnCallInvokeModelParams>;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Factory that creates a callable function handling model invokes for multiple model types.
|
|
65
|
+
*
|
|
66
|
+
* Dispatches to the correct handler based on the `modelType` field in the request,
|
|
67
|
+
* enforces auth requirements per handler, and aggregates API details for MCP introspection.
|
|
68
|
+
*
|
|
69
|
+
* @param map - Maps model type strings to their invoke handler functions.
|
|
70
|
+
* @param config - Optional configuration including a pre-assertion hook.
|
|
71
|
+
* @returns A callable function for the 'invoke' call operation.
|
|
72
|
+
*
|
|
73
|
+
* @example
|
|
74
|
+
* ```typescript
|
|
75
|
+
* const invokeHandler = onCallInvokeModel<DemoNestContext>({
|
|
76
|
+
* guestbookEntry: onCallSpecifierHandler({
|
|
77
|
+
* recomputeLikes: guestbookEntryRecomputeLikes
|
|
78
|
+
* })
|
|
79
|
+
* });
|
|
80
|
+
* ```
|
|
81
|
+
*/
|
|
82
|
+
export declare function onCallInvokeModel<N>(map: OnCallInvokeModelMap<N>, config?: OnCallInvokeModelConfig<N>): OnCallWithNestContext<N, OnCallInvokeModelParams, unknown>;
|
|
83
|
+
/**
|
|
84
|
+
* Creates a bad-request error indicating the requested model type is not valid for invoking.
|
|
85
|
+
*
|
|
86
|
+
* @param modelType - The unrecognized model type string.
|
|
87
|
+
* @returns A bad-request error with {@link UNKNOWN_MODEL_TYPE_ERROR_CODE} code.
|
|
88
|
+
*/
|
|
89
|
+
export declare function invokeModelUnknownModelTypeError(modelType: FirestoreModelType): import("firebase-functions/https").HttpsError;
|
package/test/package.json
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dereekb/firebase-server/test",
|
|
3
|
-
"version": "13.
|
|
3
|
+
"version": "13.12.0",
|
|
4
4
|
"peerDependencies": {
|
|
5
|
-
"@dereekb/analytics": "13.
|
|
6
|
-
"@dereekb/date": "13.
|
|
7
|
-
"@dereekb/firebase": "13.
|
|
8
|
-
"@dereekb/firebase-server": "13.
|
|
9
|
-
"@dereekb/firebase-server/oidc": "13.
|
|
10
|
-
"@dereekb/model": "13.
|
|
11
|
-
"@dereekb/nestjs": "13.
|
|
12
|
-
"@dereekb/rxjs": "13.
|
|
13
|
-
"@dereekb/util": "13.
|
|
5
|
+
"@dereekb/analytics": "13.12.0",
|
|
6
|
+
"@dereekb/date": "13.12.0",
|
|
7
|
+
"@dereekb/firebase": "13.12.0",
|
|
8
|
+
"@dereekb/firebase-server": "13.12.0",
|
|
9
|
+
"@dereekb/firebase-server/oidc": "13.12.0",
|
|
10
|
+
"@dereekb/model": "13.12.0",
|
|
11
|
+
"@dereekb/nestjs": "13.12.0",
|
|
12
|
+
"@dereekb/rxjs": "13.12.0",
|
|
13
|
+
"@dereekb/util": "13.12.0",
|
|
14
14
|
"@google-cloud/firestore": "^7.11.6",
|
|
15
15
|
"@google-cloud/storage": "^7.19.0",
|
|
16
16
|
"@nestjs/common": "^11.1.19",
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"supertest": "^7.2.2"
|
|
24
24
|
},
|
|
25
25
|
"devDependencies": {
|
|
26
|
-
"@dereekb/nestjs": "13.
|
|
26
|
+
"@dereekb/nestjs": "13.12.0"
|
|
27
27
|
},
|
|
28
28
|
"exports": {
|
|
29
29
|
"./package.json": "./package.json",
|
package/twilio/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Hapier Creative LLC.
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
exports._default = require('./index.cjs.js').default;
|