@tailor-platform/sdk 1.80.0 → 1.81.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/CHANGELOG.md +28 -0
- package/dist/application-B1_7Wm37.mjs +3 -0
- package/dist/{application-C1d52JP9.mjs → application-DDe0er6L.mjs} +149 -20
- package/dist/{application-C1d52JP9.mjs.map → application-DDe0er6L.mjs.map} +1 -1
- package/dist/cli/index.mjs +13 -28
- package/dist/cli/index.mjs.map +1 -1
- package/dist/cli/lib.mjs +2 -2
- package/dist/completion/zsh-worker.zsh +1 -1
- package/dist/configure/index.d.mts +3 -2
- package/dist/configure/index.mjs +9 -0
- package/dist/configure/index.mjs.map +1 -1
- package/dist/configure/services/idp/index.d.mts +1 -1
- package/dist/configure/services/idp/permission.d.mts +1 -16
- package/dist/configure/services/idp/types.d.mts +5 -1
- package/dist/configure/services/index.d.mts +3 -2
- package/dist/configure/services/resolver/index.d.mts +2 -1
- package/dist/configure/services/resolver/permission.d.mts +64 -0
- package/dist/configure/services/resolver/resolver.d.mts +14 -2
- package/dist/configure/services/tailordb/permission.d.mts +1 -16
- package/dist/configure/types/permission-operand.types.d.mts +20 -0
- package/dist/{globals-B-n_3uYu.mjs → globals-DUqEetIh.mjs} +18 -2
- package/dist/{globals-B-n_3uYu.mjs.map → globals-DUqEetIh.mjs.map} +1 -1
- package/dist/logger-B-fqZe2W.mjs +50 -0
- package/dist/logger-B-fqZe2W.mjs.map +1 -0
- package/dist/{register-typescript-runtime-Bd4bcLbW.mjs → register-typescript-runtime-QAWucsg0.mjs} +40 -9
- package/dist/register-typescript-runtime-QAWucsg0.mjs.map +1 -0
- package/dist/runtime/globals.d.mts +7 -0
- package/dist/runtime/index.d.mts +3 -1
- package/dist/runtime/index.mjs +2 -1
- package/dist/runtime/logger.d.mts +98 -0
- package/dist/runtime/logger.mjs +3 -0
- package/dist/{service_pb-BoLM0X4K.mjs → service_pb-BwZRiNug.mjs} +2 -2
- package/dist/{service_pb-BoLM0X4K.mjs.map → service_pb-BwZRiNug.mjs.map} +1 -1
- package/dist/{service_pb-r1T7kpJc.mjs → service_pb-wRkxUta6.mjs} +1 -1
- package/dist/types/auth.generated.d.mts +14 -2
- package/dist/types/executor.generated.d.mts +19 -0
- package/dist/types/http-adapter.generated.d.mts +5 -0
- package/dist/types/idp.generated.d.mts +30 -0
- package/dist/types/resolver.generated.d.mts +28 -2
- package/dist/types/tailordb.generated.d.mts +15 -1
- package/dist/vitest/environment.mjs +1 -1
- package/dist/vitest/index.d.mts +4 -2
- package/dist/vitest/index.mjs +83 -2
- package/dist/vitest/index.mjs.map +1 -1
- package/dist/vitest/mock.d.mts +2 -1
- package/dist/vitest/mocks/logger.d.mts +45 -0
- package/dist/vitest/setup.mjs +1 -1
- package/dist/{workspace_resource_pb-Db3fv68L.mjs → workspace_resource_pb-UGK1SSn_.mjs} +7 -2
- package/dist/{workspace_resource_pb-Db3fv68L.mjs.map → workspace_resource_pb-UGK1SSn_.mjs.map} +1 -1
- package/docs/runtime.md +4 -0
- package/docs/services/resolver.md +54 -0
- package/docs/testing.md +33 -6
- package/package.json +12 -7
- package/dist/application-Nlh9BHQf.mjs +0 -3
- package/dist/register-typescript-runtime-Bd4bcLbW.mjs.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,33 @@
|
|
|
1
1
|
# @tailor-platform/sdk
|
|
2
2
|
|
|
3
|
+
## 1.81.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#1824](https://github.com/tailor-platform/sdk/pull/1824) [`617a263`](https://github.com/tailor-platform/sdk/commit/617a2632ae50f9b4db8e436d1da4c4888c907a58) Thanks [@haru0017](https://github.com/haru0017)! - Add a `logger` API for structured logging from Tailor Platform functions, exposing `debug`, `info`, `warn`, `error`, and `setAttributes`. The message is written to standard output, and the full entry with its attributes is exported over OpenTelemetry, where the attributes are queryable. Attribute values are typed to what OpenTelemetry can carry (`string`, `number`, `boolean`, and homogeneous arrays of those).
|
|
8
|
+
|
|
9
|
+
- [#1718](https://github.com/tailor-platform/sdk/pull/1718) [`d688c30`](https://github.com/tailor-platform/sdk/commit/d688c303be1b6693a36b50a03d52c670c05d035a) Thanks [@toiroakr](https://github.com/toiroakr)! - Add `permission` field to `createResolver` for declaring a resolver's access requirement, using the same `conditions`/`permit` policy notation as TailorDB's `.permission()` (restricted to `user` operands, e.g. `permission: [{ conditions: [[{ user: "_loggedIn" }, "=", true]], permit: true }]`). Rejects non-matching callers before `body` runs. At least one `permit: true` policy is required (deny by default, granted only by a match); a matching `permit: false` policy always overrides that grant, for carving out an explicit exception. `permission: "allowAnonymous"` explicitly documents that anonymous callers are allowed. Omitting `permission` keeps prior behavior unchanged. `tailor-sdk function test-run` enforces the same guard.
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- [#1797](https://github.com/tailor-platform/sdk/pull/1797) [`93c1659`](https://github.com/tailor-platform/sdk/commit/93c16590eb21537ded9272ec12ecc683b61de04e) Thanks [@toiroakr](https://github.com/toiroakr)! - Fix deploy reporting spurious updates on every run: TailorDB types no longer drift when the platform proto gains new fields, IdP services without an explicit userAuthPolicy no longer drift against the platform's default password policy, and deploys with pending migrations no longer silently skip type changes in namespaces that have no migrations
|
|
14
|
+
|
|
15
|
+
- [#1842](https://github.com/tailor-platform/sdk/pull/1842) [`b19c22b`](https://github.com/tailor-platform/sdk/commit/b19c22bd8a22c8ec79a5f02545222706101926c6) Thanks [@toiroakr](https://github.com/toiroakr)! - fix(deps): update transitive dependency fast-uri to 3.1.4 [security]
|
|
16
|
+
|
|
17
|
+
- [#1822](https://github.com/tailor-platform/sdk/pull/1822) [`bcfc9ea`](https://github.com/tailor-platform/sdk/commit/bcfc9ea550744c9481fb29d8ed1629851fc0b1f0) Thanks [@renovate](https://github.com/apps/renovate)! - fix(deps): update dependency execa to v10
|
|
18
|
+
|
|
19
|
+
- [#1826](https://github.com/tailor-platform/sdk/pull/1826) [`bc85e4a`](https://github.com/tailor-platform/sdk/commit/bc85e4a72e25a9d0e0dadd7e2fae3a7be4d1ce59) Thanks [@renovate](https://github.com/apps/renovate)! - fix(deps): update oxc
|
|
20
|
+
|
|
21
|
+
## 1.80.1
|
|
22
|
+
|
|
23
|
+
### Patch Changes
|
|
24
|
+
|
|
25
|
+
- [#1831](https://github.com/tailor-platform/sdk/pull/1831) [`e24b3da`](https://github.com/tailor-platform/sdk/commit/e24b3da17656317a3729626d1cb34d90b8116356) Thanks [@toiroakr](https://github.com/toiroakr)! - Fix `IdPConfig`'s `permission` type so `defineIdp` calls with valid permission definitions using project-specific attribute keys are no longer rejected by `tsc`
|
|
26
|
+
|
|
27
|
+
- [#1828](https://github.com/tailor-platform/sdk/pull/1828) [`46f2d49`](https://github.com/tailor-platform/sdk/commit/46f2d496407ec8c248ed60a3f519ef526e0896e4) Thanks [@renovate](https://github.com/apps/renovate)! - fix(deps): update rolldown
|
|
28
|
+
|
|
29
|
+
- [#1818](https://github.com/tailor-platform/sdk/pull/1818) [`56608cc`](https://github.com/tailor-platform/sdk/commit/56608ccc445c1aeb683ddfd72965446b1062cfbd) Thanks [@toiroakr](https://github.com/toiroakr)! - Adopt Vitest 4.1 `aroundEach`/`aroundAll` hooks across the test suites, and update the TailorDB client mock example in the testing docs to the same style
|
|
30
|
+
|
|
3
31
|
## 1.80.0
|
|
4
32
|
|
|
5
33
|
### Minor Changes
|
|
@@ -180,7 +180,7 @@ function initOAuth2Client(config) {
|
|
|
180
180
|
*/
|
|
181
181
|
async function initOperatorClient(accessToken, config) {
|
|
182
182
|
const platformConfig = config ?? getPlatformConfigForToken(accessToken);
|
|
183
|
-
const [{ createTracingInterceptor }, { OperatorService }] = await Promise.all([import("./interceptor-D-q1rvRl.mjs"), import("./service_pb-
|
|
183
|
+
const [{ createTracingInterceptor }, { OperatorService }] = await Promise.all([import("./interceptor-D-q1rvRl.mjs"), import("./service_pb-wRkxUta6.mjs")]);
|
|
184
184
|
const interceptors = [
|
|
185
185
|
await userAgentInterceptor(),
|
|
186
186
|
await bearerTokenInterceptor(accessToken),
|
|
@@ -3918,6 +3918,111 @@ function buildExecutorArgsExpr(triggerKind, env) {
|
|
|
3918
3918
|
function buildResolverOperationHookExpr(env) {
|
|
3919
3919
|
return `({ ...context.pipeline, input: context.args, user: ${tailorUserMap}, env: ${JSON.stringify(env)} });`;
|
|
3920
3920
|
}
|
|
3921
|
+
function isSingleResolverCondition(conditions) {
|
|
3922
|
+
return conditions.length === 3 && typeof conditions[1] === "string";
|
|
3923
|
+
}
|
|
3924
|
+
function resolverPermissionOperandExpr(operand) {
|
|
3925
|
+
if (typeof operand === "object") {
|
|
3926
|
+
if (operand.user === "_loggedIn") return `(context.user.type !== "")`;
|
|
3927
|
+
if (operand.user === "id") return `context.user.id`;
|
|
3928
|
+
return `context.user.attributes?.[${JSON.stringify(operand.user)}]`;
|
|
3929
|
+
}
|
|
3930
|
+
return JSON.stringify(operand);
|
|
3931
|
+
}
|
|
3932
|
+
function isArbitraryAttributeOperand(operand) {
|
|
3933
|
+
return typeof operand === "object" && operand.user !== "_loggedIn" && operand.user !== "id";
|
|
3934
|
+
}
|
|
3935
|
+
function resolverPermissionConditionExpr(condition) {
|
|
3936
|
+
const [left, operator, right] = condition;
|
|
3937
|
+
const leftExpr = resolverPermissionOperandExpr(left);
|
|
3938
|
+
const rightExpr = resolverPermissionOperandExpr(right);
|
|
3939
|
+
if (operator === "!=") {
|
|
3940
|
+
const userOperandExpr = isArbitraryAttributeOperand(left) ? leftExpr : isArbitraryAttributeOperand(right) ? rightExpr : void 0;
|
|
3941
|
+
if (userOperandExpr) return `(${userOperandExpr} !== undefined && ${leftExpr} !== ${rightExpr})`;
|
|
3942
|
+
}
|
|
3943
|
+
return `(${leftExpr} ${operator === "=" ? "===" : "!=="} ${rightExpr})`;
|
|
3944
|
+
}
|
|
3945
|
+
function resolverPermissionPolicyExpr(policy) {
|
|
3946
|
+
const conditions = isSingleResolverCondition(policy.conditions) ? [policy.conditions] : policy.conditions;
|
|
3947
|
+
if (conditions.length === 0) throw new Error("Resolver permission policy must have at least one condition, got an empty array.");
|
|
3948
|
+
return conditions.map(resolverPermissionConditionExpr).join(" && ");
|
|
3949
|
+
}
|
|
3950
|
+
/**
|
|
3951
|
+
* Build a JS object literal capturing whether `policy` matched and its
|
|
3952
|
+
* (possibly empty) description, for runtime denial-reason attribution.
|
|
3953
|
+
* @param policy - The policy to compile
|
|
3954
|
+
* @returns A JS object literal expression: `{ matched, description }`
|
|
3955
|
+
*/
|
|
3956
|
+
function policyEntryExpr(policy) {
|
|
3957
|
+
return `{ matched: ${resolverPermissionPolicyExpr(policy)}, description: ${JSON.stringify(policy.description ?? "")} }`;
|
|
3958
|
+
}
|
|
3959
|
+
/**
|
|
3960
|
+
* Build the permission guard statement injected at resolver entry.
|
|
3961
|
+
*
|
|
3962
|
+
* Rejects the call with `TailorErrorMessage` when the caller doesn't match
|
|
3963
|
+
* `permission`, evaluated against `context.user` — the original caller,
|
|
3964
|
+
* unaffected by `authInvoker`. `permission` is deny-by-default: a caller is
|
|
3965
|
+
* granted only by a matching `permit: true` policy, and a matching
|
|
3966
|
+
* `permit: false` policy always overrides that grant. The thrown message only
|
|
3967
|
+
* includes the description(s) of the policy/policies that actually caused the
|
|
3968
|
+
* denial.
|
|
3969
|
+
*
|
|
3970
|
+
* The schema requires at least one `permit: true` policy (an array of only
|
|
3971
|
+
* `permit: false` policies is rejected at build time), so `allowPolicies` is
|
|
3972
|
+
* never empty here for schema-valid input; this function still handles that
|
|
3973
|
+
* case defensively since it also runs against test-authored raw shapes.
|
|
3974
|
+
* @param permission - The resolver's `permission` config
|
|
3975
|
+
* @returns A JS statement, or `undefined` when `permission` is omitted or `"allowAnonymous"`
|
|
3976
|
+
*/
|
|
3977
|
+
function buildResolverPermissionGuardExpr(permission) {
|
|
3978
|
+
if (!permission || permission === "allowAnonymous") return;
|
|
3979
|
+
if (permission.length === 0) throw new Error("Resolver permission must have at least one policy, got an empty array.");
|
|
3980
|
+
const denyPolicies = permission.filter((policy) => policy.permit === false);
|
|
3981
|
+
const allowPolicies = permission.filter((policy) => policy.permit !== false);
|
|
3982
|
+
return `{
|
|
3983
|
+
const $denyPolicies = ${`[${denyPolicies.map(policyEntryExpr).join(", ")}]`};
|
|
3984
|
+
const $allowPolicies = ${`[${allowPolicies.map(policyEntryExpr).join(", ")}]`};
|
|
3985
|
+
const $matchedDeny = $denyPolicies.filter((p) => p.matched);
|
|
3986
|
+
const $anyAllowMatched = $allowPolicies.some((p) => p.matched);
|
|
3987
|
+
if ($matchedDeny.length > 0 || ($allowPolicies.length > 0 && !$anyAllowMatched)) {
|
|
3988
|
+
const $reasons = ($matchedDeny.length > 0 ? $matchedDeny : $allowPolicies)
|
|
3989
|
+
.map((p) => p.description)
|
|
3990
|
+
.filter(Boolean);
|
|
3991
|
+
throw new TailorErrorMessage($reasons.length > 0 ? "access denied: " + $reasons.join("; ") : "access denied");
|
|
3992
|
+
}
|
|
3993
|
+
}`;
|
|
3994
|
+
}
|
|
3995
|
+
/**
|
|
3996
|
+
* Build the permission guard and input-validation statements shared by every
|
|
3997
|
+
* resolver entry wrapper (production bundling and `function test-run`).
|
|
3998
|
+
*
|
|
3999
|
+
* Kept as a single generator so a resolver-wrapping behavior (like the
|
|
4000
|
+
* permission guard) can't be added to one entry-point template and forgotten
|
|
4001
|
+
* in the other. References `context.user`, `context.input`, and
|
|
4002
|
+
* `_internalResolver` — the caller's wrapper must bind a `context` object
|
|
4003
|
+
* with `user`/`input` properties before inlining this expression.
|
|
4004
|
+
* @param permission - The resolver's `permission` config
|
|
4005
|
+
* @returns A JS statement block to inline before calling `_internalResolver.body(...)`
|
|
4006
|
+
*/
|
|
4007
|
+
function buildResolverPermissionAndInputCheckExpr(permission) {
|
|
4008
|
+
return `
|
|
4009
|
+
${buildResolverPermissionGuardExpr(permission) ?? ""}
|
|
4010
|
+
if (_internalResolver.input) {
|
|
4011
|
+
const result = t.object(_internalResolver.input).parse({
|
|
4012
|
+
value: context.input,
|
|
4013
|
+
data: context.input,
|
|
4014
|
+
user: context.user,
|
|
4015
|
+
});
|
|
4016
|
+
|
|
4017
|
+
if (result.issues) {
|
|
4018
|
+
throw new TailorErrors(result.issues.map(issue => ({
|
|
4019
|
+
message: issue.message,
|
|
4020
|
+
path: issue.path ?? [],
|
|
4021
|
+
})));
|
|
4022
|
+
}
|
|
4023
|
+
}
|
|
4024
|
+
`;
|
|
4025
|
+
}
|
|
3921
4026
|
|
|
3922
4027
|
//#endregion
|
|
3923
4028
|
//#region src/cli/services/executor/loader.ts
|
|
@@ -4338,6 +4443,42 @@ function isAsyncFunction(fn) {
|
|
|
4338
4443
|
//#endregion
|
|
4339
4444
|
//#region src/parser/service/resolver/schema.ts
|
|
4340
4445
|
const QueryTypeSchema = z.union([z.literal("query"), z.literal("mutation")]).describe("GraphQL operation type");
|
|
4446
|
+
const ResolverPermissionOperandSchema = z.union([
|
|
4447
|
+
z.object({ user: z.string() }).strict(),
|
|
4448
|
+
z.string(),
|
|
4449
|
+
z.boolean()
|
|
4450
|
+
]);
|
|
4451
|
+
const ResolverPermissionOperatorSchema = z.union([z.literal("="), z.literal("!=")]);
|
|
4452
|
+
const isUserOperand = (operand) => typeof operand === "object";
|
|
4453
|
+
const KNOWN_USER_OPERAND_TYPES = {
|
|
4454
|
+
_loggedIn: "boolean",
|
|
4455
|
+
id: "string"
|
|
4456
|
+
};
|
|
4457
|
+
const operandTypeMismatch = (userOperand, otherOperand) => {
|
|
4458
|
+
if (typeof userOperand !== "object") return;
|
|
4459
|
+
const expected = KNOWN_USER_OPERAND_TYPES[userOperand.user];
|
|
4460
|
+
if (expected === void 0 || typeof otherOperand === "object" || typeof otherOperand === expected) return;
|
|
4461
|
+
return {
|
|
4462
|
+
key: userOperand.user,
|
|
4463
|
+
expected
|
|
4464
|
+
};
|
|
4465
|
+
};
|
|
4466
|
+
const ResolverPermissionConditionSchema = z.tuple([
|
|
4467
|
+
ResolverPermissionOperandSchema,
|
|
4468
|
+
ResolverPermissionOperatorSchema,
|
|
4469
|
+
ResolverPermissionOperandSchema
|
|
4470
|
+
]).refine(([left, , right]) => isUserOperand(left) !== isUserOperand(right), "Resolver permission condition must reference a `user` operand on exactly one side (comparing two `user` operands to each other can match on `undefined === undefined`)").superRefine(([left, , right], ctx) => {
|
|
4471
|
+
for (const mismatch of [operandTypeMismatch(left, right), operandTypeMismatch(right, left)]) if (mismatch) ctx.addIssue({
|
|
4472
|
+
code: "custom",
|
|
4473
|
+
message: `\`${mismatch.key}\` must compare to a ${mismatch.expected}`
|
|
4474
|
+
});
|
|
4475
|
+
}).readonly();
|
|
4476
|
+
const ResolverPermissionPolicySchema = z.object({
|
|
4477
|
+
conditions: z.union([ResolverPermissionConditionSchema, z.array(ResolverPermissionConditionSchema).min(1, "Resolver permission policy must have at least one condition").readonly()]),
|
|
4478
|
+
permit: z.boolean(),
|
|
4479
|
+
description: z.string().optional().describe("Reason recorded for this policy, used in the access-denied error message")
|
|
4480
|
+
});
|
|
4481
|
+
const ResolverPermissionSchema = z.union([z.array(ResolverPermissionPolicySchema).min(1, "Resolver permission must have at least one policy").refine((policies) => policies.some((policy) => policy.permit === true), "Resolver permission must include at least one `permit: true` policy — a policy array with only `permit: false` policies still lets any caller through by simply not authenticating, since none of the deny conditions apply to a caller with no user attributes at all").readonly(), z.literal("allowAnonymous")]).describe("Access requirement for this resolver, evaluated against the original caller (unaffected by `authInvoker`) before `body` runs. \"allowAnonymous\" documents that anonymous callers are allowed. Omitted (default): unchanged, anonymous callers can reach the resolver");
|
|
4341
4482
|
const ResolverSchema = z.object({
|
|
4342
4483
|
operation: QueryTypeSchema.describe("GraphQL operation type (query or mutation)"),
|
|
4343
4484
|
name: z.string().describe("Resolver name"),
|
|
@@ -4346,7 +4487,8 @@ const ResolverSchema = z.object({
|
|
|
4346
4487
|
body: functionSchema.describe("Resolver implementation function"),
|
|
4347
4488
|
output: TailorFieldSchema.describe("Output field definition"),
|
|
4348
4489
|
publishEvents: z.boolean().optional().describe("Enable publishing events from this resolver"),
|
|
4349
|
-
authInvoker: AuthInvokerSchema.optional().describe("Machine user to execute this resolver as")
|
|
4490
|
+
authInvoker: AuthInvokerSchema.optional().describe("Machine user to execute this resolver as"),
|
|
4491
|
+
permission: ResolverPermissionSchema.optional()
|
|
4350
4492
|
});
|
|
4351
4493
|
|
|
4352
4494
|
//#endregion
|
|
@@ -4399,7 +4541,8 @@ async function bundleResolvers(namespace, config, baseDir, triggerContext, cache
|
|
|
4399
4541
|
}
|
|
4400
4542
|
resolvers.push({
|
|
4401
4543
|
name: resolver.name,
|
|
4402
|
-
sourceFile: file
|
|
4544
|
+
sourceFile: file,
|
|
4545
|
+
permission: resolver.permission
|
|
4403
4546
|
});
|
|
4404
4547
|
}
|
|
4405
4548
|
const tsconfig = await resolveTSConfigWithFallback(baseDir);
|
|
@@ -4431,21 +4574,7 @@ async function bundleSingleResolver(namespace, resolver, tsconfig, triggerContex
|
|
|
4431
4574
|
|
|
4432
4575
|
const $tailor_resolver_body = async (context) => {
|
|
4433
4576
|
const invoker = ${INVOKER_EXPR};
|
|
4434
|
-
|
|
4435
|
-
const result = t.object(_internalResolver.input).parse({
|
|
4436
|
-
value: context.input,
|
|
4437
|
-
data: context.input,
|
|
4438
|
-
user: context.user,
|
|
4439
|
-
});
|
|
4440
|
-
|
|
4441
|
-
if (result.issues) {
|
|
4442
|
-
throw new TailorErrors(result.issues.map(issue => ({
|
|
4443
|
-
message: issue.message,
|
|
4444
|
-
path: issue.path ?? [],
|
|
4445
|
-
})));
|
|
4446
|
-
}
|
|
4447
|
-
}
|
|
4448
|
-
|
|
4577
|
+
${buildResolverPermissionAndInputCheckExpr(resolver.permission)}
|
|
4449
4578
|
return _internalResolver.body({ ...context, invoker });
|
|
4450
4579
|
};
|
|
4451
4580
|
|
|
@@ -5611,5 +5740,5 @@ async function loadApplication(params) {
|
|
|
5611
5740
|
}
|
|
5612
5741
|
|
|
5613
5742
|
//#endregion
|
|
5614
|
-
export {
|
|
5615
|
-
//# sourceMappingURL=application-
|
|
5743
|
+
export { defaultPlatformBaseUrl as A, getPlatformBaseUrl as B, getPluginGenerationDependencies as C, hashContent as D, getDistDir as E, fetchPlatformMachineUserToken as F, rememberPlatformConfigForToken as G, initOperatorClient as H, fetchUserInfo as I, createApplyLimiter as J, resolveStaticWebsiteUrls as K, getConsoleBaseUrl as L, fetchAllTolerant as M, fetchMachineUserToken as N, hashFile as O, fetchPaged as P, getOAuth2ClientId as R, resolveBundleLogLevel as S, createBundleCache as T, isDefaultPlatform as U, initOAuth2Client as V, normalizeBaseUrl as W, LOG_LEVELS as Y, stringifyFunction as _, resolveInlineSourcemap as a, composeFunctionTreeshakeOptions as b, ResolverSchema as c, buildExecutorArgsExpr as d, buildResolverOperationHookExpr as f, TailorDBTypeSchema as g, assertUniqueTailorDBTypeNamesWithExternal as h, resolverBundleKey as i, fetchAll as j, closeConnectionPool as k, HTTP_METHODS as l, assertUniqueLocalTailorDBTypeNames as m, generatePluginFilesIfNeeded as n, WorkflowJobFunctionExecutionPolicySchema as o, buildResolverPermissionAndInputCheckExpr as p, byName as q, loadApplication as r, WorkflowJobSchema as s, defineApplication as t, INVOKER_EXPR as u, resolveTSConfigWithFallback as v, hasGenerationHooks as w, createLogLevelTreeshakeOptions as x, platformBundleDefinePlugin as y, getOrNull as z };
|
|
5744
|
+
//# sourceMappingURL=application-DDe0er6L.mjs.map
|