{
  "$schema": "./node_modules/nx/schemas/nx-schema.json",
  "parallel": 5,
  "targetDefaults": {
    "build": {
      "dependsOn": ["^build"],
      "inputs": ["{projectRoot}/docker/*", "production", "^production"],
      "cache": true
    },
    "doppler-serve": {
      "executor": "nx:run-commands",
      "options": {
        "command": "doppler run -p {args.dopplerProject} -c {args.dopplerConfiguration} --preserve-env -- nx serve {projectName} --output-style=stream-without-prefixes",
        "color": true,
        "dopplerProject": "cfx-{projectName}"
      },
      "configurations": {
        "local": {
          "dopplerConfiguration": "local"
        },
        "local-production": {
          "command": "doppler run -p {args.dopplerProject} -c {args.dopplerConfiguration} --preserve-env -- nx run {projectName}:serve:production --output-style=stream-without-prefixes",
          "dopplerConfiguration": "local"
        },
        "dev": {
          "dopplerConfiguration": "dev"
        },
        "prod": {
          "dopplerConfiguration": "prod"
        }
      },
      "defaultConfiguration": "local"
    },
    "serve-lambda": {
      "executor": "nx:run-commands",
      "dependsOn": ["build"],
      "options": {
        "command": "docker run --rm -p 8080:8080 -v $PWD/dist/{projectRoot}:/var/task:ro,delegated -e AWS_LAMBDA_FUNCTION_TIMEOUT=120 -e APP_MODE=lambda public.ecr.aws/lambda/nodejs:24 lambda.handler",
        "color": true
      }
    },
    "doppler-serve-lambda": {
      "executor": "nx:run-commands",
      "dependsOn": ["build"],
      "options": {
        "command": "bash -c 'docker run --rm -p 8080:8080 -v $PWD/dist/{projectRoot}:/var/task:ro,delegated -v $PWD/node_modules:/opt/nodejs/node_modules:ro -e APP_MODE=lambda -e SKIP_SECRET_INJECTION=true -e SENTRY_ENV=local -e \"NODE_OPTIONS=--import ./instrument.mjs\" --env-file <(doppler secrets download -p {args.dopplerProject} -c {args.dopplerConfiguration} --no-file --format docker) -e AWS_LAMBDA_FUNCTION_TIMEOUT=120 public.ecr.aws/lambda/nodejs:24 lambda.handler'",
        "color": true,
        "dopplerProject": "cfx-{projectName}"
      },
      "configurations": {
        "local": {
          "dopplerConfiguration": "local"
        },
        "dev": {
          "dopplerConfiguration": "dev"
        },
        "prod": {
          "dopplerConfiguration": "prod"
        }
      },
      "defaultConfiguration": "local"
    },
    "doppler-docker-serve": {
      "executor": "nx:run-commands",
      "options": {
        "command": "bash -c 'docker run --rm --env-file <(doppler secrets download -p {args.dopplerProject} -c {args.dopplerConfiguration} --no-file --format docker) --env-file <(cat .env.local 2>/dev/null || true) cfx-{projectName}:latest'",
        "color": true,
        "dopplerProject": "cfx-{projectName}"
      },
      "configurations": {
        "local": {
          "dopplerConfiguration": "local"
        },
        "dev": {
          "dopplerConfiguration": "dev"
        },
        "prod": {
          "dopplerConfiguration": "prod"
        }
      },
      "defaultConfiguration": "local"
    },
    "doppler-build": {
      "executor": "nx:run-commands",
      "options": {
        "command": "doppler run -p {args.dopplerProject} -c {args.dopplerConfiguration} --preserve-env -- nx build {projectName} --output-style=stream-without-prefixes",
        "color": true,
        "dopplerProject": "cfx-{projectName}"
      },
      "configurations": {
        "local": {
          "dopplerConfiguration": "local"
        },
        "dev": {
          "dopplerConfiguration": "dev"
        },
        "prod": {
          "dopplerConfiguration": "prod"
        }
      },
      "defaultConfiguration": "local"
    },
    "doppler-run": {
      "executor": "nx:run-commands",
      "options": {
        "command": "doppler run -p {args.dopplerProject} -c {args.dopplerConfiguration} --preserve-env -- pnpx bun {projectRoot}/scripts/{args.script}",
        "color": true,
        "dopplerProject": "cfx-{projectName}"
      },
      "configurations": {
        "local": {
          "dopplerConfiguration": "local"
        },
        "dev": {
          "dopplerConfiguration": "dev"
        },
        "prod": {
          "dopplerConfiguration": "prod"
        }
      },
      "defaultConfiguration": "dev"
    },
    "gen-specs": {
      "cache": true,
      "executor": "nx:run-commands",
      "options": {
        "command": "TSX_TSCONFIG_PATH=tsconfig.base.json pnpm exec tsx tools/scripts/gen-spec.ts {projectName} {version}"
      },
      "inputs": [
        "default",
        "^default",
        "{workspaceRoot}/tools/scripts/gen-spec.ts"
      ],
      "outputs": ["{workspaceRoot}/dist/specs/{projectName}.json"]
    },
    "publish-specs": {
      "executor": "nx:run-commands",
      "dependsOn": ["gen-specs"],
      "options": {
        "command": "yes | pnpx rdme@10.5.0 openapi upload $PWD/dist/specs/{projectName}.json --slug={projectName}.json"
      }
    },
    "validate-specs": {
      "executor": "nx:run-commands",
      "dependsOn": ["gen-specs"],
      "options": {
        "command": "pnpx rdme@10.5.0 openapi validate $PWD/dist/specs/{projectName}.json"
      }
    },
    "image-build": {
      "executor": "nx:run-commands",
      "options": {
        "command": "docker buildx build --build-arg NX_PROJECT={projectName} --build-arg SENTRY_RELEASE={args.sha} --build-arg BASE_IMAGE_PREFIX={args.baseImagePrefix} -f {args.dockerfile} --secret id=NPM_TOKEN,env=NPM_TOKEN --secret id=SENTRY_AUTH_TOKEN,env=SENTRY_AUTH_TOKEN --secret id=APP_ENV_SH,src={args.appEnvSh} --provenance=false {args.output} -t {args.tag} {args.context}",
        "color": true,
        "dockerfile": "docker/Dockerfile.node",
        "context": ".",
        "sha": "local",
        "tag": "cfx-{projectName}",
        "output": "--load",
        "appEnvSh": "/dev/null",
        "baseImagePrefix": ""
      }
    },
    "image-build-push": {
      "executor": "nx:run-commands",
      "options": {
        "command": "docker buildx build --build-arg NX_PROJECT={projectName} --build-arg SENTRY_RELEASE={args.sha} --build-arg BASE_IMAGE_PREFIX={args.baseImagePrefix} -f {args.dockerfile} --secret id=NPM_TOKEN,env=NPM_TOKEN --secret id=SENTRY_AUTH_TOKEN,env=SENTRY_AUTH_TOKEN --secret id=APP_ENV_SH,src={args.appEnvSh} --provenance=false --cache-from=type=registry,ref={args.cacheref} --cache-to=type=registry,ref={args.cacheref},mode=max,image-manifest=true,oci-mediatypes=true --push -t {args.tag} {args.context}",
        "color": true,
        "dockerfile": "docker/Dockerfile.node",
        "context": ".",
        "sha": "local",
        "tag": "cfx-{projectName}",
        "appEnvSh": "/dev/null",
        "baseImagePrefix": ""
      }
    },
    "typecheck": {
      "cache": true,
      "executor": "nx:run-commands",
      "inputs": ["default", "^production"],
      "options": {
        "commands": [
          "f={projectRoot}/tsconfig.app.json; [ ! -f \"$f\" ] || pnpm exec tsgo --noEmit -p \"$f\"",
          "f={projectRoot}/tsconfig.lib.json; [ ! -f \"$f\" ] || pnpm exec tsgo --noEmit -p \"$f\"",
          "f={projectRoot}/tsconfig.test.json; [ ! -f \"$f\" ] || pnpm exec tsgo --noEmit -p \"$f\"",
          "split={projectRoot}/tsconfig.app.json; lib={projectRoot}/tsconfig.lib.json; test={projectRoot}/tsconfig.test.json; main={projectRoot}/tsconfig.json; if [ ! -f \"$split\" ] && [ ! -f \"$lib\" ] && [ ! -f \"$test\" ] && [ -f \"$main\" ]; then pnpm exec tsgo --noEmit -p \"$main\"; fi"
        ],
        "parallel": true,
        "color": true
      }
    },
    "build-lambda": {
      "executor": "@nx/esbuild:esbuild",
      "outputs": ["{options.outputPath}"],
      "defaultConfiguration": "production",
      "options": {
        "platform": "node",
        "outputPath": "dist/{projectRoot}",
        "format": ["esm"],
        "bundle": true,
        "main": "{projectRoot}/src/main.ts",
        "tsConfig": "{projectRoot}/tsconfig.app.json",
        "deleteOutputPath": false,
        "generatePackageJson": false,
        "thirdParty": true,
        "esbuildConfig": "esbuild/lambda.config.mjs"
      },
      "configurations": {
        "development": {
          "external": ["pino"]
        },
        "production": {
          "minify": true,
          "main": "{projectRoot}/src/lambda.ts",
          "assets": ["{projectRoot}/instrument.mjs"]
        }
      }
    },
    "export": {
      "executor": "@nx/next:export",
      "options": {
        "buildTarget": "{projectName}:build:production"
      }
    },
    "analyze-bundle": {
      "executor": "nx:run-commands",
      "options": {
        "cwd": "{projectRoot}",
        "command": "pnpm next experimental-analyze"
      }
    },
    "test": {
      "cache": true,
      "executor": "@nx/vitest:test",
      "outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
      "dependsOn": ["build", "typecheck"],
      "options": {
        "reportsDirectory": "{workspaceRoot}/coverage/{projectRoot}"
      }
    },
    "serve": {
      "executor": "@nx/js:node",
      "defaultConfiguration": "development",
      "options": {
        "buildTarget": "{projectName}:build-lambda"
      },
      "configurations": {
        "development": {
          "buildTarget": "{projectName}:build-lambda:development"
        },
        "production": {
          "buildTarget": "{projectName}:build-lambda:production",
          "runtimeArgs": ["--import", "./dist/{projectRoot}/instrument.mjs"]
        }
      }
    },
    "build-workflows": {
      "executor": "@cfxlabsinc/nx-temporal:build-workflows",
      "cache": true,
      "options": {
        "bundlePath": "dist/{projectRoot}/workflows.prod.js",
        "bundleOptions": {
          "workflowsPath": "{projectRoot}/src/workflows.ts",
          "workflowInterceptorModules": ["{projectRoot}/src/interceptors.ts"]
        },
        "tsConfigPathsPluginOptions": {
          "configFile": "{projectRoot}/tsconfig.app.json"
        }
      },
      "inputs": ["production", "^production"],
      "outputs": ["{options.bundlePath}"],
      "configurations": {}
    },
    "@nx/esbuild:esbuild": {
      "cache": true,
      "dependsOn": ["^build"],
      "inputs": ["production", "^production"]
    },
    "@nx/next:build": {
      "cache": true,
      "dependsOn": ["^build"],
      "inputs": ["production", "^production"]
    },
    "@nx/vitest:test": {
      "cache": true,
      "inputs": ["default", "^production"]
    }
  },
  "namedInputs": {
    "default": ["{projectRoot}/**/*", "sharedGlobals"],
    "production": [
      "default",
      "!{projectRoot}/**/?(*.)+(test).[jt]s?(x)?(.snap)",
      "!{projectRoot}/tsconfig.test.json",
      "!{projectRoot}/vite.config.mts",
      "!{projectRoot}/eslint.config.mjs"
    ],
    "sharedGlobals": []
  },
  "workspaceLayout": {
    "appsDir": "packages",
    "libsDir": "packages"
  },
  "useInferencePlugins": true,
  "plugins": [
    {
      "plugin": "@cfxlabsinc/nx-lambda",
      "options": {}
    },
    {
      "plugin": "@cfxlabsinc/nx-pulumi",
      "options": {}
    }
  ],
  "generators": {
    "@nx/next": {
      "application": {
        "style": "tailwind"
      }
    }
  },
  "s3": {
    "region": "us-west-2",
    "bucket": "cfx-nx-cache-bucket-prod",
    "forcePathStyle": true,
    "localMode": "read-write",
    "accessKeyId": "AKIAVNTIAZLMOVY27F5R",
    "secretAccessKey": "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"
  },
  "analytics": false
}
