@tailor-platform/sdk 2.0.0 → 2.1.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 (36) hide show
  1. package/CHANGELOG.md +51 -0
  2. package/README.md +2 -2
  3. package/dist/application-Af1zIqSI.mjs +3 -0
  4. package/dist/{application-CM6hKnSK.mjs → application-D77KJFKD.mjs} +121 -23
  5. package/dist/application-D77KJFKD.mjs.map +1 -0
  6. package/dist/cli/lib.mjs +2 -2
  7. package/dist/cli/main.mjs +33 -20
  8. package/dist/cli/main.mjs.map +1 -1
  9. package/dist/completion/zsh-worker.zsh +1 -1
  10. package/dist/configure/config/types.d.mts +12 -1
  11. package/dist/configure/index.d.mts +1 -1
  12. package/dist/configure/services/index.d.mts +1 -1
  13. package/dist/configure/services/resolver/index.d.mts +1 -1
  14. package/dist/configure/services/resolver/resolver.d.mts +1 -1
  15. package/dist/{globals-TfAVItuK.mjs → globals-B2nlxBrz.mjs} +2 -10
  16. package/dist/globals-B2nlxBrz.mjs.map +1 -0
  17. package/dist/{register-ts-hook-LYV7zH-e.mjs → register-ts-hook-BU18uU44.mjs} +3 -3
  18. package/dist/{register-ts-hook-LYV7zH-e.mjs.map → register-ts-hook-BU18uU44.mjs.map} +1 -1
  19. package/dist/runtime/globals.d.mts +0 -7
  20. package/dist/runtime/workflow.d.mts +2 -7
  21. package/dist/utils/test/index.d.mts +3 -0
  22. package/dist/utils/test/index.mjs +24 -12
  23. package/dist/utils/test/index.mjs.map +1 -1
  24. package/dist/vitest/environment.mjs +1 -1
  25. package/dist/vitest/mocks/file.d.mts +1 -1
  26. package/dist/vitest/setup.mjs +1 -1
  27. package/dist/workflow-Bamae_Yc.mjs.map +1 -1
  28. package/docs/configuration.md +3 -0
  29. package/docs/migration/v2.md +6 -3
  30. package/docs/quickstart.md +5 -5
  31. package/docs/services/resolver.md +32 -0
  32. package/docs/testing.md +1 -1
  33. package/package.json +5 -5
  34. package/dist/application-CM6hKnSK.mjs.map +0 -1
  35. package/dist/application-CXNaUNhv.mjs +0 -3
  36. package/dist/globals-TfAVItuK.mjs.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,56 @@
1
1
  # @tailor-platform/sdk
2
2
 
3
+ ## 2.1.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#1976](https://github.com/tailor-platform/sdk/pull/1976) [`aef43a7`](https://github.com/tailor-platform/sdk/commit/aef43a765d2ab26c2eee9bbbe5463e28c845f8dc) Thanks [@toiroakr](https://github.com/toiroakr)! - Add `defaultPermission` to resolver namespaces in `defineConfig`, applying an access requirement to every resolver in the namespace that declares no `permission` of its own — securing a namespace no longer means editing every resolver. It takes the same values as a resolver's `permission`, including `"allowAnonymous"` for a namespace that is public by design, and a resolver's own `permission` replaces it rather than merging with it. `generate` and `deploy` now warn when a namespace declares neither a `defaultPermission` nor a `permission` on each of its resolvers.
8
+
9
+ ### Patch Changes
10
+
11
+ - [#1982](https://github.com/tailor-platform/sdk/pull/1982) [`287c551`](https://github.com/tailor-platform/sdk/commit/287c55173c75ae6533732fb1128a16e4366961e0) Thanks [@renovate](https://github.com/apps/renovate)! - fix(deps): update dependency get-tsconfig to v4.14.1
12
+
13
+ - [#1995](https://github.com/tailor-platform/sdk/pull/1995) [`b6ed05d`](https://github.com/tailor-platform/sdk/commit/b6ed05db825886dba844664210f32855572e3f88) Thanks [@renovate](https://github.com/apps/renovate)! - chore(deps): update dependency tsx to v4.23.5
14
+
15
+ - [#1976](https://github.com/tailor-platform/sdk/pull/1976) [`5d0f513`](https://github.com/tailor-platform/sdk/commit/5d0f5135fb1dc6dc9a467f48a7b5aa3d8ac57e5e) Thanks [@toiroakr](https://github.com/toiroakr)! - Fix a resolver `permission` denial returning `ReferenceError: TailorErrorMessage is not defined` to the caller instead of `access denied`. The generated guard now raises `TailorErrors`, which is the only error class the platform turns back into a message the caller can read.
16
+
17
+ `TailorErrorMessage` no longer exists in the platform runtime, so its ambient global declaration and its Vitest mock are removed as well — together they let code that always failed in production pass both type checking and tests. Code that throws `TailorErrorMessage` now fails to compile; replace it with `TailorErrors`:
18
+
19
+ ```ts
20
+ throw new TailorErrors([{ message: "not found", path: [] }]);
21
+ ```
22
+
23
+ - [#1978](https://github.com/tailor-platform/sdk/pull/1978) [`49aa0d3`](https://github.com/tailor-platform/sdk/commit/49aa0d38fc60224d701d7663483f2137b280841f) Thanks [@toiroakr](https://github.com/toiroakr)! - `createTailorDBHook` now takes each field from the data's own properties. A type declaring a field named after a member of `Object` — `toString`, say — used to get that member as the field's value on every record that omitted the field, so validation rejected otherwise valid rows:
24
+
25
+ ```
26
+ ✗ Found 1 error(s) in ./seed/data/Customer.jsonl
27
+ Expected a string: received function toString() { [native code] }
28
+ ```
29
+
30
+ A field named `__proto__` is recorded as a data property rather than assigned, so its value is kept instead of being swallowed by the inherited setter.
31
+
32
+ A field the data does not carry still lands as an `undefined` key, which is what keeps a column inferred from these records nullable.
33
+
34
+ - [#1967](https://github.com/tailor-platform/sdk/pull/1967) [`47e4f2b`](https://github.com/tailor-platform/sdk/commit/47e4f2bc37a735de091f83f3c4d453a004daec62) Thanks [@toiroakr](https://github.com/toiroakr)! - Drop internal RPC vocabulary from the JSDoc on the `tailor.workflow` runtime API. The module doc and `execJobFunction`'s own doc described the wire-format history behind the current names, which reached editor tooltips without telling users anything they could act on. The behaviour the text was explaining is kept: `execJobFunction` blocks until the job finishes and returns its result, while `startWorkflow` returns only an execution ID.
35
+
36
+ ## 2.0.1
37
+
38
+ ### Patch Changes
39
+
40
+ - [#1957](https://github.com/tailor-platform/sdk/pull/1957) [`a465547`](https://github.com/tailor-platform/sdk/commit/a465547df712ca8c607c1e42cf12c15fe3e830d1) Thanks [@toiroakr](https://github.com/toiroakr)! - Invoke the CLI as `npx @tailor-platform/sdk <command>` wherever an invocation is written for you. `npx` resolves a command it cannot find locally as a package name, so `npx tailor` fell through to an unrelated `tailor` package on npm whenever the SDK was not installed in the project — including in CI, where npm installs without prompting. Omitting the version specifier keeps using the project's installed SDK when there is one.
41
+
42
+ - Setup examples in the README, the quickstart, and the scaffolded project READMEs now use the package-runner form. Bun examples use `bun tailor <command>`, which resolves the local binary without fetching from the registry.
43
+ - Workflows generated by `tailor setup` use `npx @tailor-platform/sdk` for npm projects and `bun run tailor` for Bun projects. `tailor setup check` reports the template as outdated so existing projects regenerate; re-run `tailor setup` to pick it up.
44
+ - The `v2/seed-exec-to-cli-plugin` and `v2/sdk-skills-shim` codemods write the package-runner form when the invocation they produce goes through a runner that installs from the registry (`npx`, `bunx`, `pnpm`/`yarn dlx`, `npm exec`). A runner that resolves project binaries, such as `pnpm exec`, still gets the bare `tailor` binary.
45
+
46
+ - [#1948](https://github.com/tailor-platform/sdk/pull/1948) [`8af9031`](https://github.com/tailor-platform/sdk/commit/8af9031aee675da1d570d29ed18e76287ea0c184) Thanks [@renovate](https://github.com/apps/renovate)! - chore(deps): lock file maintenance
47
+
48
+ - [#1953](https://github.com/tailor-platform/sdk/pull/1953) [`0871279`](https://github.com/tailor-platform/sdk/commit/0871279e943f1f5dfa1fbe6ad838b6485cb3c0a0) Thanks [@renovate](https://github.com/apps/renovate)! - fix(deps): update dependency amaro to v1.1.11
49
+
50
+ - [#1954](https://github.com/tailor-platform/sdk/pull/1954) [`e78df40`](https://github.com/tailor-platform/sdk/commit/e78df401bc46cfe6aeada19f0551a97f454cc1db) Thanks [@renovate](https://github.com/apps/renovate)! - fix(deps): update dependency execa to v10.0.1
51
+
52
+ - [#1964](https://github.com/tailor-platform/sdk/pull/1964) [`0f73487`](https://github.com/tailor-platform/sdk/commit/0f734878c4c2115ec5f59eb5870e98862b6541ba) Thanks [@renovate](https://github.com/apps/renovate)! - fix(deps): update dependency @toiroakr/lines-db to v0.11.0
53
+
3
54
  ## 2.0.0
4
55
 
5
56
  ### Major Changes
package/README.md CHANGED
@@ -53,10 +53,10 @@ For more details, see the [Quickstart Guide](./docs/quickstart.md).
53
53
  Install the `tailor` skill from the locally installed SDK package:
54
54
 
55
55
  ```bash
56
- npx tailor skills add
56
+ npx @tailor-platform/sdk skills add
57
57
 
58
58
  # Or refresh all skills owned by this CLI
59
- npx tailor skills sync
59
+ npx @tailor-platform/sdk skills sync
60
60
  ```
61
61
 
62
62
  This sources the skill from `node_modules/@tailor-platform/sdk/agent-skills`
@@ -0,0 +1,3 @@
1
+ import { n as generatePluginFilesIfNeeded, r as loadApplication, t as defineApplication } from "./application-D77KJFKD.mjs";
2
+
3
+ export { defineApplication, generatePluginFilesIfNeeded };
@@ -3996,7 +3996,8 @@ function policyEntryExpr(policy) {
3996
3996
  /**
3997
3997
  * Build the permission guard statement injected at resolver entry.
3998
3998
  *
3999
- * Rejects the call with `TailorErrorMessage` when the caller doesn't match
3999
+ * Rejects the call with `TailorErrors` the only error class the platform
4000
+ * turns back into a message the caller can read — when the caller doesn't match
4000
4001
  * `permission`, evaluated against `context.caller` — the original caller,
4001
4002
  * unaffected by `authInvoker`. `permission` is deny-by-default: a caller is
4002
4003
  * granted only by a matching `permit: true` policy, and a matching
@@ -4025,7 +4026,8 @@ function buildResolverPermissionGuardExpr(permission) {
4025
4026
  const $reasons = ($matchedDeny.length > 0 ? $matchedDeny : $allowPolicies)
4026
4027
  .map((p) => p.description)
4027
4028
  .filter(Boolean);
4028
- throw new TailorErrorMessage($reasons.length > 0 ? "access denied: " + $reasons.join("; ") : "access denied");
4029
+ const $message = $reasons.length > 0 ? "access denied: " + $reasons.join("; ") : "access denied";
4030
+ throw new TailorErrors([{ message: $message, path: [] }]);
4029
4031
  }
4030
4032
  }`;
4031
4033
  }
@@ -4035,16 +4037,18 @@ function buildResolverPermissionGuardExpr(permission) {
4035
4037
  *
4036
4038
  * Kept as a single generator so a resolver-wrapping behavior (like the
4037
4039
  * permission guard) can't be added to one entry-point template and forgotten
4038
- * in the other. References `context.caller`, `context.input`, `invoker`, and
4039
- * `_internalResolver` — the caller's wrapper must bind a `context` object
4040
+ * in the other the namespace-default precedence below is resolved here for
4041
+ * the same reason. References `context.caller`, `context.input`, `invoker`,
4042
+ * and `_internalResolver` — the caller's wrapper must bind a `context` object
4040
4043
  * with `user`/`input` properties and an `invoker` binding (from
4041
4044
  * `INVOKER_EXPR`) before inlining this expression.
4042
- * @param permission - The resolver's `permission` config
4045
+ * @param params - The resolver's and its namespace's permission config
4043
4046
  * @returns A JS statement block to inline before calling `_internalResolver.body(...)`
4044
4047
  */
4045
- function buildResolverPermissionAndInputCheckExpr(permission) {
4048
+ function buildResolverPermissionAndInputCheckExpr(params) {
4049
+ const { permission, defaultPermission } = params;
4046
4050
  return `
4047
- ${buildResolverPermissionGuardExpr(permission) ?? ""}
4051
+ ${buildResolverPermissionGuardExpr(permission ?? defaultPermission) ?? ""}
4048
4052
  if (_internalResolver.input) {
4049
4053
  const result = t.object(_internalResolver.input).parse({
4050
4054
  value: context.input,
@@ -4544,17 +4548,11 @@ async function loadResolver(resolverFilePath) {
4544
4548
  * 1. Uses a transform plugin to add validation wrapper during bundling
4545
4549
  * 2. Creates an in-memory entry module
4546
4550
  * 3. Bundles in a single step with tree-shaking
4547
- * @param namespace - Resolver namespace name
4548
- * @param config - Resolver file loading configuration
4549
- * @param baseDir - Directory the config's file patterns are resolved against
4550
- * @param startContext - Start context for workflow/job transformations
4551
- * @param cache - Optional bundle cache for skipping unchanged builds
4552
- * @param inlineSourcemap - Whether to enable inline sourcemaps
4553
- * @param bundleLogLevel - Controls which console calls are kept in bundled code
4554
- * @param tsconfigCache - Optional tsconfig lookup cache shared across bundles in this CLI run
4551
+ * @param options - Bundle options
4555
4552
  * @returns Map of resolver name to bundled code
4556
4553
  */
4557
- async function bundleResolvers(namespace, config, baseDir, startContext, cache, inlineSourcemap, bundleLogLevel = "DEBUG", tsconfigCache) {
4554
+ async function bundleResolvers(options) {
4555
+ const { namespace, config, baseDir, defaultPermission, startContext, cache, inlineSourcemap, bundleLogLevel = "DEBUG", tsconfigCache } = options;
4558
4556
  const bundledCode = /* @__PURE__ */ new Map();
4559
4557
  const files = loadFilesWithIgnores(config, baseDir);
4560
4558
  if (files.length === 0) {
@@ -4577,16 +4575,27 @@ async function bundleResolvers(namespace, config, baseDir, startContext, cache,
4577
4575
  });
4578
4576
  }
4579
4577
  const tsconfig = await resolveTSConfigWithFallback(baseDir);
4580
- const results = await withBundleConcurrency(resolvers, (resolver) => bundleSingleResolver(namespace, resolver, tsconfig, startContext, cache, inlineSourcemap, bundleLogLevel, tsconfigCache));
4578
+ const results = await withBundleConcurrency(resolvers, (resolver) => bundleSingleResolver({
4579
+ namespace,
4580
+ resolver,
4581
+ tsconfig,
4582
+ defaultPermission,
4583
+ startContext,
4584
+ cache,
4585
+ inlineSourcemap,
4586
+ bundleLogLevel,
4587
+ tsconfigCache
4588
+ }));
4581
4589
  for (const [name, code] of results) bundledCode.set(name, code);
4582
4590
  logger.log(`${styles.success("Bundled")} ${styles.info(`"${namespace}"`)}`);
4583
4591
  return bundledCode;
4584
4592
  }
4585
- async function bundleSingleResolver(namespace, resolver, tsconfig, startContext, cache, inlineSourcemap, bundleLogLevel = "DEBUG", tsconfigCache) {
4593
+ async function bundleSingleResolver(options) {
4594
+ const { namespace, resolver, tsconfig, defaultPermission, startContext, cache, inlineSourcemap, bundleLogLevel = "DEBUG", tsconfigCache } = options;
4586
4595
  const serializedStartContext = serializeStartContext(startContext);
4587
4596
  const contextHash = computeBundlerContextHash({
4588
4597
  sourceFile: resolver.sourceFile,
4589
- extraContext: serializedStartContext,
4598
+ extraContext: JSON.stringify([serializedStartContext, defaultPermission ?? null]),
4590
4599
  tsconfig,
4591
4600
  inlineSourcemap,
4592
4601
  bundleLogLevel
@@ -4606,7 +4615,10 @@ async function bundleSingleResolver(namespace, resolver, tsconfig, startContext,
4606
4615
 
4607
4616
  const $tailor_resolver_body = async (context) => {
4608
4617
  const invoker = ${INVOKER_EXPR};
4609
- ${buildResolverPermissionAndInputCheckExpr(resolver.permission)}
4618
+ ${buildResolverPermissionAndInputCheckExpr({
4619
+ permission: resolver.permission,
4620
+ defaultPermission
4621
+ })}
4610
4622
  return _internalResolver.body({ ...context, invoker });
4611
4623
  };
4612
4624
 
@@ -4642,6 +4654,53 @@ async function bundleSingleResolver(namespace, resolver, tsconfig, startContext,
4642
4654
  return [resolver.name, code];
4643
4655
  }
4644
4656
 
4657
+ //#endregion
4658
+ //#region src/cli/services/resolver/default-permission.ts
4659
+ /**
4660
+ * Validate a resolver namespace's `defaultPermission` with the same schema as
4661
+ * a resolver's own `permission`, so an invalid policy fails the build instead
4662
+ * of compiling into a guard that lets everyone through.
4663
+ * @param params - The namespace name and its resolver service config
4664
+ * @returns The validated default, or `undefined` when the namespace declares none
4665
+ */
4666
+ function parseResolverDefaultPermission(params) {
4667
+ const { namespace, config } = params;
4668
+ if (config.defaultPermission === void 0) return;
4669
+ const result = ResolverPermissionSchema.safeParse(config.defaultPermission);
4670
+ if (!result.success) throw new Error(`Invalid \`defaultPermission\` for resolver namespace "${namespace}": ` + result.error.issues.map((issue) => issue.message).join("; "));
4671
+ return result.data;
4672
+ }
4673
+ /**
4674
+ * Find the `defaultPermission` of the resolver namespace a file belongs to.
4675
+ *
4676
+ * `function test-run` receives a single file rather than a namespace, so the
4677
+ * namespace is recovered by matching the file against each namespace's own
4678
+ * patterns — otherwise a test run would skip a guard the deployed resolver has.
4679
+ *
4680
+ * Nothing stops two namespaces' patterns from claiming the same file, and
4681
+ * `deploy` then bundles that resolver once per namespace, each with its own
4682
+ * default. Picking one here would make the test run agree with only one of
4683
+ * the deployed copies, so an ambiguous file is rejected instead.
4684
+ * @param params - The config's resolver section, the resolver file, and the config's own directory
4685
+ * @returns The owning namespace's validated default, or `undefined` when no namespace claims the file
4686
+ */
4687
+ function resolveResolverDefaultPermissionForFile(params) {
4688
+ const { config, filePath, baseDir } = params;
4689
+ if (!config) return;
4690
+ const targetFile = path.resolve(filePath);
4691
+ const owners = [];
4692
+ for (const [namespace, serviceConfig] of Object.entries(config)) {
4693
+ if ("external" in serviceConfig) continue;
4694
+ if (loadFilesWithIgnores(serviceConfig, baseDir).some((file) => path.resolve(file) === targetFile)) owners.push({
4695
+ namespace,
4696
+ config: serviceConfig
4697
+ });
4698
+ }
4699
+ if (owners.length > 1) throw new Error(`Resolver ${path.relative(process.cwd(), targetFile)} matches more than one resolver namespace: ${owners.map((owner) => `"${owner.namespace}"`).join(", ")}. Each namespace applies its own \`defaultPermission\`, so narrow the \`files\`/\`ignores\` patterns until exactly one namespace claims this file.`);
4700
+ const [owner] = owners;
4701
+ return owner ? parseResolverDefaultPermission(owner) : void 0;
4702
+ }
4703
+
4645
4704
  //#endregion
4646
4705
  //#region src/cli/services/resolver/service.ts
4647
4706
  /**
@@ -4653,6 +4712,10 @@ async function bundleSingleResolver(namespace, resolver, tsconfig, startContext,
4653
4712
  */
4654
4713
  function createResolverService(namespace, config, baseDir) {
4655
4714
  const resolvers = {};
4715
+ const defaultPermission = parseResolverDefaultPermission({
4716
+ namespace,
4717
+ config
4718
+ });
4656
4719
  const loadResolverForFile = async (resolverFile) => {
4657
4720
  try {
4658
4721
  const resolverModule = await import(pathToFileURL(resolverFile).href);
@@ -4674,6 +4737,7 @@ function createResolverService(namespace, config, baseDir) {
4674
4737
  return {
4675
4738
  namespace,
4676
4739
  config,
4740
+ defaultPermission,
4677
4741
  get resolvers() {
4678
4742
  return resolvers;
4679
4743
  },
@@ -4684,10 +4748,34 @@ function createResolverService(namespace, config, baseDir) {
4684
4748
  logger.log(`Found ${styles.highlight(resolverFiles.length.toString())} resolver files for service ${styles.highlight(`"${namespace}"`)}`);
4685
4749
  await Promise.all(resolverFiles.map((resolverFile) => loadResolverForFile(resolverFile)));
4686
4750
  assertUniqueResolverNames(resolvers, namespace);
4751
+ warnUndeclaredPermissions({
4752
+ namespace,
4753
+ defaultPermission,
4754
+ resolvers
4755
+ });
4687
4756
  }
4688
4757
  };
4689
4758
  }
4690
4759
  /**
4760
+ * Warn about resolvers that declare no access requirement at all.
4761
+ *
4762
+ * A namespace-level `defaultPermission` covers every resolver in the
4763
+ * namespace, so the warning only fires when the namespace declares none and
4764
+ * at least one of its resolvers declares none either — those resolvers are
4765
+ * reachable by anonymous callers.
4766
+ * @param params - The namespace, its default permission, and its loaded resolvers
4767
+ */
4768
+ function warnUndeclaredPermissions(params) {
4769
+ const { namespace, defaultPermission, resolvers } = params;
4770
+ if (defaultPermission !== void 0) return;
4771
+ const loaded = Object.values(resolvers);
4772
+ const undeclared = loaded.filter((resolver) => resolver.permission === void 0);
4773
+ if (undeclared.length === 0) return;
4774
+ logger.warn(`Resolver namespace ${styles.highlight(`"${namespace}"`)}: ${undeclared.length} of ${loaded.length} resolvers declare no \`permission\`, so anonymous callers can reach them. Set \`defaultPermission\` on the namespace, or declare \`permission\` on each resolver ("allowAnonymous" if public access is intended).`);
4775
+ const names = undeclared.map((resolver) => resolver.name).toSorted();
4776
+ logger.debug(` Resolvers without \`permission\`: ${names.join(", ")}`);
4777
+ }
4778
+ /**
4691
4779
  * Assert that every loaded resolver in a namespace has a unique name.
4692
4780
  * Resolvers are stored by source file, so two files declaring the same
4693
4781
  * `name` would otherwise silently share a single bundle cache entry.
@@ -5751,7 +5839,17 @@ async function loadApplication(params) {
5751
5839
  authHooks: /* @__PURE__ */ new Map()
5752
5840
  };
5753
5841
  for (const pipeline of resolverResult.resolverServices) {
5754
- const resolverBundles = await bundleResolvers(pipeline.namespace, pipeline.config, baseDir, startContext, bundleCache, inlineSourcemap, bundleLogLevel, tsconfigCache);
5842
+ const resolverBundles = await bundleResolvers({
5843
+ namespace: pipeline.namespace,
5844
+ config: pipeline.config,
5845
+ baseDir,
5846
+ defaultPermission: pipeline.defaultPermission,
5847
+ startContext,
5848
+ cache: bundleCache,
5849
+ inlineSourcemap,
5850
+ bundleLogLevel,
5851
+ tsconfigCache
5852
+ });
5755
5853
  for (const [name, code] of resolverBundles) bundledScripts.resolvers.set(resolverBundleKey(pipeline.namespace, name), code);
5756
5854
  }
5757
5855
  if (executorService) bundledScripts.executors = await bundleExecutors({
@@ -5823,5 +5921,5 @@ async function loadApplication(params) {
5823
5921
  }
5824
5922
 
5825
5923
  //#endregion
5826
- export { LOG_LEVELS as $, hashContent as A, getConsoleBaseUrl as B, createLogLevelTreeshakeOptions as C, hasGenerationHooks as D, getPluginGenerationDependencies as E, fetchAllTolerant as F, initOperatorClient as G, getOrNull as H, fetchMachineUserToken as I, normalizeBaseUrl as J, isDefaultPlatform as K, fetchPaged as L, closeConnectionPool as M, defaultPlatformBaseUrl as N, createBundleCache as O, fetchAll as P, createApplyLimiter as Q, fetchPlatformMachineUserToken as R, composeFunctionTreeshakeOptions as S, createBundleLog as T, getPlatformBaseUrl as U, getOAuth2ClientId as V, initOAuth2Client as W, resolveStaticWebsiteUrls as X, rememberPlatformConfigForToken as Y, byName as Z, stringifyFunction as _, resolveInlineSourcemap as a, resolveTSConfigWithFallback as b, WorkflowJobSchema as c, INVOKER_EXPR as d, buildExecutorArgsExpr as f, assertUniqueTailorDBTypeNamesWithExternal as g, assertUniqueLocalTailorDBTypeNames as h, resolverBundleKey as i, hashFile as j, getDistDir as k, ResolverSchema as l, buildResolverPermissionAndInputCheckExpr as m, generatePluginFilesIfNeeded as n, getApplicationAuthNamespace as o, buildResolverOperationHookExpr as p, isNotFoundError as q, loadApplication as r, WorkflowJobFunctionExecutionPolicySchema as s, defineApplication as t, HTTP_METHODS as u, createGeneratedEntryResolverPlugin as v, resolveBundleLogLevel as w, platformBundleDefinePlugin as x, createTsconfigPathsPlugin as y, fetchUserInfo as z };
5827
- //# sourceMappingURL=application-CM6hKnSK.mjs.map
5924
+ export { createApplyLimiter as $, getDistDir as A, fetchUserInfo as B, composeFunctionTreeshakeOptions as C, getPluginGenerationDependencies as D, createBundleLog as E, fetchAll as F, initOAuth2Client as G, getOAuth2ClientId as H, fetchAllTolerant as I, isNotFoundError as J, initOperatorClient as K, fetchMachineUserToken as L, hashFile as M, closeConnectionPool as N, hasGenerationHooks as O, defaultPlatformBaseUrl as P, byName as Q, fetchPaged as R, platformBundleDefinePlugin as S, resolveBundleLogLevel as T, getOrNull as U, getConsoleBaseUrl as V, getPlatformBaseUrl as W, rememberPlatformConfigForToken as X, normalizeBaseUrl as Y, resolveStaticWebsiteUrls as Z, assertUniqueTailorDBTypeNamesWithExternal as _, resolveInlineSourcemap as a, createTsconfigPathsPlugin as b, WorkflowJobSchema as c, HTTP_METHODS as d, LOG_LEVELS as et, INVOKER_EXPR as f, assertUniqueLocalTailorDBTypeNames as g, buildResolverPermissionAndInputCheckExpr as h, resolverBundleKey as i, hashContent as j, createBundleCache as k, resolveResolverDefaultPermissionForFile as l, buildResolverOperationHookExpr as m, generatePluginFilesIfNeeded as n, getApplicationAuthNamespace as o, buildExecutorArgsExpr as p, isDefaultPlatform as q, loadApplication as r, WorkflowJobFunctionExecutionPolicySchema as s, defineApplication as t, ResolverSchema as u, stringifyFunction as v, createLogLevelTreeshakeOptions as w, resolveTSConfigWithFallback as x, createGeneratedEntryResolverPlugin as y, fetchPlatformMachineUserToken as z };
5925
+ //# sourceMappingURL=application-D77KJFKD.mjs.map