@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.
Files changed (55) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/dist/application-B1_7Wm37.mjs +3 -0
  3. package/dist/{application-C1d52JP9.mjs → application-DDe0er6L.mjs} +149 -20
  4. package/dist/{application-C1d52JP9.mjs.map → application-DDe0er6L.mjs.map} +1 -1
  5. package/dist/cli/index.mjs +13 -28
  6. package/dist/cli/index.mjs.map +1 -1
  7. package/dist/cli/lib.mjs +2 -2
  8. package/dist/completion/zsh-worker.zsh +1 -1
  9. package/dist/configure/index.d.mts +3 -2
  10. package/dist/configure/index.mjs +9 -0
  11. package/dist/configure/index.mjs.map +1 -1
  12. package/dist/configure/services/idp/index.d.mts +1 -1
  13. package/dist/configure/services/idp/permission.d.mts +1 -16
  14. package/dist/configure/services/idp/types.d.mts +5 -1
  15. package/dist/configure/services/index.d.mts +3 -2
  16. package/dist/configure/services/resolver/index.d.mts +2 -1
  17. package/dist/configure/services/resolver/permission.d.mts +64 -0
  18. package/dist/configure/services/resolver/resolver.d.mts +14 -2
  19. package/dist/configure/services/tailordb/permission.d.mts +1 -16
  20. package/dist/configure/types/permission-operand.types.d.mts +20 -0
  21. package/dist/{globals-B-n_3uYu.mjs → globals-DUqEetIh.mjs} +18 -2
  22. package/dist/{globals-B-n_3uYu.mjs.map → globals-DUqEetIh.mjs.map} +1 -1
  23. package/dist/logger-B-fqZe2W.mjs +50 -0
  24. package/dist/logger-B-fqZe2W.mjs.map +1 -0
  25. package/dist/{register-typescript-runtime-Bd4bcLbW.mjs → register-typescript-runtime-QAWucsg0.mjs} +40 -9
  26. package/dist/register-typescript-runtime-QAWucsg0.mjs.map +1 -0
  27. package/dist/runtime/globals.d.mts +7 -0
  28. package/dist/runtime/index.d.mts +3 -1
  29. package/dist/runtime/index.mjs +2 -1
  30. package/dist/runtime/logger.d.mts +98 -0
  31. package/dist/runtime/logger.mjs +3 -0
  32. package/dist/{service_pb-BoLM0X4K.mjs → service_pb-BwZRiNug.mjs} +2 -2
  33. package/dist/{service_pb-BoLM0X4K.mjs.map → service_pb-BwZRiNug.mjs.map} +1 -1
  34. package/dist/{service_pb-r1T7kpJc.mjs → service_pb-wRkxUta6.mjs} +1 -1
  35. package/dist/types/auth.generated.d.mts +14 -2
  36. package/dist/types/executor.generated.d.mts +19 -0
  37. package/dist/types/http-adapter.generated.d.mts +5 -0
  38. package/dist/types/idp.generated.d.mts +30 -0
  39. package/dist/types/resolver.generated.d.mts +28 -2
  40. package/dist/types/tailordb.generated.d.mts +15 -1
  41. package/dist/vitest/environment.mjs +1 -1
  42. package/dist/vitest/index.d.mts +4 -2
  43. package/dist/vitest/index.mjs +83 -2
  44. package/dist/vitest/index.mjs.map +1 -1
  45. package/dist/vitest/mock.d.mts +2 -1
  46. package/dist/vitest/mocks/logger.d.mts +45 -0
  47. package/dist/vitest/setup.mjs +1 -1
  48. package/dist/{workspace_resource_pb-Db3fv68L.mjs → workspace_resource_pb-UGK1SSn_.mjs} +7 -2
  49. package/dist/{workspace_resource_pb-Db3fv68L.mjs.map → workspace_resource_pb-UGK1SSn_.mjs.map} +1 -1
  50. package/docs/runtime.md +4 -0
  51. package/docs/services/resolver.md +54 -0
  52. package/docs/testing.md +33 -6
  53. package/package.json +12 -7
  54. package/dist/application-Nlh9BHQf.mjs +0 -3
  55. 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
@@ -0,0 +1,3 @@
1
+ import { n as generatePluginFilesIfNeeded, r as loadApplication, t as defineApplication } from "./application-DDe0er6L.mjs";
2
+
3
+ export { defineApplication, generatePluginFilesIfNeeded };
@@ -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-r1T7kpJc.mjs")]);
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
- if (_internalResolver.input) {
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 { fetchAll as A, initOAuth2Client as B, hasGenerationHooks as C, hashFile as D, hashContent as E, fetchUserInfo as F, resolveStaticWebsiteUrls as G, isDefaultPlatform as H, getConsoleBaseUrl as I, LOG_LEVELS as J, byName as K, getOAuth2ClientId as L, fetchMachineUserToken as M, fetchPaged as N, closeConnectionPool as O, fetchPlatformMachineUserToken as P, getOrNull as R, getPluginGenerationDependencies as S, getDistDir as T, normalizeBaseUrl as U, initOperatorClient as V, rememberPlatformConfigForToken as W, resolveTSConfigWithFallback as _, resolveInlineSourcemap as a, createLogLevelTreeshakeOptions as b, ResolverSchema as c, buildExecutorArgsExpr as d, buildResolverOperationHookExpr as f, stringifyFunction as g, TailorDBTypeSchema as h, resolverBundleKey as i, fetchAllTolerant as j, defaultPlatformBaseUrl as k, HTTP_METHODS as l, assertUniqueTailorDBTypeNamesWithExternal as m, generatePluginFilesIfNeeded as n, WorkflowJobFunctionExecutionPolicySchema as o, assertUniqueLocalTailorDBTypeNames as p, createApplyLimiter as q, loadApplication as r, WorkflowJobSchema as s, defineApplication as t, INVOKER_EXPR as u, platformBundleDefinePlugin as v, createBundleCache as w, resolveBundleLogLevel as x, composeFunctionTreeshakeOptions as y, getPlatformBaseUrl as z };
5615
- //# sourceMappingURL=application-C1d52JP9.mjs.map
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