Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/tailor-platform/sdk/llms.txt

Use this file to discover all available pages before exploring further.

Function Signature

function defineConfig<
  const Config extends AppConfig &
    Record<Exclude<keyof Config, keyof AppConfig>, never>,
>(config: Config): Config
Defines a Tailor SDK application configuration with shallow type exactness to prevent extraneous properties.

Parameters

config
AppConfig
required
Application configuration object
name
string
required
Application name (required)
env
Record<string, string | number | boolean>
Environment variables accessible via context.env in resolvers and via the second argument { env } in workflow job bodies
cors
string[]
Allowed CORS origins. Must be an array of strings, e.g. ["https://example.com"]
allowedIpAddresses
string[]
IP addresses allowed to access the application
disableIntrospection
boolean
Disable GraphQL introspection in production
db
TailorDBServiceInput
TailorDB service configuration with type definition files
[namespace]
object
TailorDB namespace configuration (e.g., tailordb, analyticsdb)
files
string[]
required
Array of file glob patterns for type definitions
erdSite
string
Name of the static website for ERD visualization
migration
object
Migration configuration
directory
string
Directory containing migration files
resolver
ResolverServiceInput
Resolver service configuration with resolver files
[namespace]
object
Resolver namespace configuration
files
string[]
required
Array of file glob patterns for resolver files
idp
IdPConfig[]
Identity Provider configurations. Must be an array, e.g. [myIdp]
auth
AuthConfig
Auth configuration (single object, not an array)
executor
ExecutorServiceInput
Executor service configuration with executor files
files
string[]
required
Array of file glob patterns for executor files
workflow
WorkflowServiceInput
Workflow service configuration with workflow files
files
string[]
required
Array of file glob patterns for workflow files
staticWebsites
StaticWebsiteConfig[]
Static website configurations. Must be an array, e.g. [website]
inlineSourcemap
boolean
default:"true"
Enable inline sourcemaps in bundled functions for better error stack traces. Set to false to disable (e.g., if bundle size exceeds limits)

Returns

config
Config
The same configuration object passed as input, with type safety enforced

Example

import {
  defineAuth,
  defineConfig,
  defineIdp,
  defineStaticWebSite,
} from "@tailor-platform/sdk";

const website = defineStaticWebSite("my-frontend", {
  description: "my frontend application",
});

const erdSite = defineStaticWebSite("my-erd-site", {
  description: "ERD site for TailorDB",
});

const idp = defineIdp("my-idp", {
  authorization: "loggedIn",
  clients: ["default-idp-client"],
  userAuthPolicy: {
    useNonEmailIdentifier: false,
    allowSelfPasswordReset: true,
    passwordRequireUppercase: true,
    passwordRequireLowercase: true,
    passwordRequireNonAlphanumeric: true,
    passwordRequireNumeric: true,
    passwordMinLength: 8,
    passwordMaxLength: 128,
  },
});

const auth = defineAuth("my-auth", {
  userProfile: {
    type: user,
    usernameField: "email",
    attributes: {
      role: true,
    },
  },
  machineUsers: {
    "manager-machine-user": {
      attributes: {
        role: "MANAGER",
      },
    },
  },
  oauth2Clients: {
    sample: {
      redirectURIs: ["https://example.com/callback", `${website.url}/callback`],
      description: "Sample OAuth2 client",
      grantTypes: ["authorization_code", "refresh_token"],
    },
  },
  idProvider: idp.provider("sample", "default-idp-client"),
});

export default defineConfig({
  name: "my-app",
  inlineSourcemap: false,
  env: {
    foo: 1,
    bar: "hello",
    baz: true,
  },
  cors: [
    website.url, // Replaced with actual Static Website URL at deployment
  ],
  db: {
    tailordb: {
      files: ["./tailordb/*.ts"],
      erdSite: erdSite.name,
      migration: {
        directory: "./migrations",
      },
    },
    analyticsdb: { files: ["./analyticsdb/*.ts"] },
  },
  resolver: {
    "my-resolver": { files: ["./resolvers/*.ts"] },
  },
  idp: [idp],
  auth,
  executor: { files: ["./executors/*.ts"] },
  workflow: {
    files: ["./workflows/**/*.ts"],
  },
  staticWebsites: [website, erdSite],
});

Notes

  • The function enforces shallow exactness, preventing extra properties at the top level of the config object
  • This is the main entry point for configuring your Tailor Platform application
  • Export the result as the default export in your tailor.config.ts file
  • The cors field accepts static website URLs via the .url property, which are resolved at deployment time
  • The auth field is a single object, not an array, while idp and staticWebsites are arrays

Build docs developers (and LLMs) love