chore: publish create app cli (#44)

* chore: move folder to match package name

* chore: update dependencies
This commit is contained in:
Daniel Rochetti 2024-01-18 11:06:28 -08:00 committed by GitHub
parent b76c371480
commit 0f8efecf65
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
29 changed files with 1846 additions and 647 deletions

View File

@ -1,3 +1,5 @@
{
"singleQuote": true
"singleQuote": true,
"trailingComma": "es5",
"plugins": ["prettier-plugin-organize-imports"]
}

View File

@ -17,23 +17,23 @@ diverse, inclusive, and healthy community.
Examples of behavior that contributes to a positive environment for our
community include:
* Demonstrating empathy and kindness toward other people
* Being respectful of differing opinions, viewpoints, and experiences
* Giving and gracefully accepting constructive feedback
* Accepting responsibility and apologizing to those affected by our mistakes,
- Demonstrating empathy and kindness toward other people
- Being respectful of differing opinions, viewpoints, and experiences
- Giving and gracefully accepting constructive feedback
- Accepting responsibility and apologizing to those affected by our mistakes,
and learning from the experience
* Focusing on what is best not just for us as individuals, but for the overall
- Focusing on what is best not just for us as individuals, but for the overall
community
Examples of unacceptable behavior include:
* The use of sexualized language or imagery, and sexual attention or advances of
- The use of sexualized language or imagery, and sexual attention or advances of
any kind
* Trolling, insulting or derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or email address,
- Trolling, insulting or derogatory comments, and personal or political attacks
- Public or private harassment
- Publishing others' private information, such as a physical or email address,
without their explicit permission
* Other conduct which could reasonably be considered inappropriate in a
- Other conduct which could reasonably be considered inappropriate in a
professional setting
## Enforcement Responsibilities

View File

@ -4,13 +4,13 @@
"include": [],
"references": [
{
"path": "./tsconfig.app.json"
"path": "./tsconfig.app.json",
},
{
"path": "./tsconfig.spec.json"
}
"path": "./tsconfig.spec.json",
},
],
"compilerOptions": {
"esModuleInterop": true
}
"esModuleInterop": true,
},
}

View File

@ -3,9 +3,21 @@
@tailwind utilities;
html {
-webkit-text-size-adjust: 100%;
font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont,
Segoe UI, Roboto, Helvetica Neue, Arial, Noto Sans, sans-serif,
Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji;
font-family:
ui-sans-serif,
system-ui,
-apple-system,
BlinkMacSystemFont,
Segoe UI,
Roboto,
Helvetica Neue,
Arial,
Noto Sans,
sans-serif,
Apple Color Emoji,
Segoe UI Emoji,
Segoe UI Symbol,
Noto Color Emoji;
line-height: 1.5;
tab-size: 4;
scroll-behavior: smooth;
@ -39,8 +51,15 @@ a {
text-decoration: inherit;
}
pre {
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,
Liberation Mono, Courier New, monospace;
font-family:
ui-monospace,
SFMono-Regular,
Menlo,
Monaco,
Consolas,
Liberation Mono,
Courier New,
monospace;
}
svg {
display: block;
@ -52,14 +71,24 @@ pre {
background-color: rgba(55, 65, 81, 1);
border-radius: 0.25rem;
color: rgba(229, 231, 235, 1);
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,
Liberation Mono, Courier New, monospace;
font-family:
ui-monospace,
SFMono-Regular,
Menlo,
Monaco,
Consolas,
Liberation Mono,
Courier New,
monospace;
overflow: scroll;
padding: 0.5rem 0.75rem;
}
.shadow {
box-shadow: 0 0 #0000, 0 0 #0000, 0 10px 15px -3px rgba(0, 0, 0, 0.1),
box-shadow:
0 0 #0000,
0 0 #0000,
0 10px 15px -3px rgba(0, 0, 0, 0.1),
0 4px 6px -2px rgba(0, 0, 0, 0.05);
}
.wrapper {
@ -164,8 +193,17 @@ pre {
display: flex;
margin-top: 1rem;
padding: 1rem;
transition-property: background-color, border-color, color, fill, stroke,
opacity, box-shadow, transform, filter, backdrop-filter,
transition-property:
background-color,
border-color,
color,
fill,
stroke,
opacity,
box-shadow,
transform,
filter,
backdrop-filter,
-webkit-backdrop-filter;
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
transition-duration: 150ms;
@ -174,8 +212,17 @@ pre {
.list-item-link svg:first-child {
margin-right: 1rem;
height: 1.5rem;
transition-property: background-color, border-color, color, fill, stroke,
opacity, box-shadow, transform, filter, backdrop-filter,
transition-property:
background-color,
border-color,
color,
fill,
stroke,
opacity,
box-shadow,
transform,
filter,
backdrop-filter,
-webkit-backdrop-filter;
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
transition-duration: 150ms;
@ -184,8 +231,17 @@ pre {
.list-item-link > span {
flex-grow: 1;
font-weight: 400;
transition-property: background-color, border-color, color, fill, stroke,
opacity, box-shadow, transform, filter, backdrop-filter,
transition-property:
background-color,
border-color,
color,
fill,
stroke,
opacity,
box-shadow,
transform,
filter,
backdrop-filter,
-webkit-backdrop-filter;
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
transition-duration: 150ms;
@ -197,8 +253,17 @@ pre {
font-size: 0.75rem;
font-weight: 300;
line-height: 1rem;
transition-property: background-color, border-color, color, fill, stroke,
opacity, box-shadow, transform, filter, backdrop-filter,
transition-property:
background-color,
border-color,
color,
fill,
stroke,
opacity,
box-shadow,
transform,
filter,
backdrop-filter,
-webkit-backdrop-filter;
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
transition-duration: 150ms;
@ -227,16 +292,34 @@ pre {
.button-pill {
padding: 1.5rem 2rem;
transition-duration: 300ms;
transition-property: background-color, border-color, color, fill, stroke,
opacity, box-shadow, transform, filter, backdrop-filter,
transition-property:
background-color,
border-color,
color,
fill,
stroke,
opacity,
box-shadow,
transform,
filter,
backdrop-filter,
-webkit-backdrop-filter;
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
align-items: center;
display: flex;
}
.button-pill svg {
transition-property: background-color, border-color, color, fill, stroke,
opacity, box-shadow, transform, filter, backdrop-filter,
transition-property:
background-color,
border-color,
color,
fill,
stroke,
opacity,
box-shadow,
transform,
filter,
backdrop-filter,
-webkit-backdrop-filter;
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
transition-duration: 150ms;
@ -358,8 +441,17 @@ summary {
font-weight: 400;
padding: 0.5rem;
cursor: pointer;
transition-property: background-color, border-color, color, fill, stroke,
opacity, box-shadow, transform, filter, backdrop-filter,
transition-property:
background-color,
border-color,
color,
fill,
stroke,
opacity,
box-shadow,
transform,
filter,
backdrop-filter,
-webkit-backdrop-filter;
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
transition-duration: 150ms;

View File

@ -13,10 +13,10 @@
"incremental": true,
"plugins": [
{
"name": "next"
}
"name": "next",
},
],
"types": ["jest", "node"]
"types": ["jest", "node"],
},
"include": [
"**/*.ts",
@ -25,12 +25,12 @@
"**/*.jsx",
"../../apps/demo-nextjs-app-router/.next/types/**/*.ts",
"../../dist/apps/demo-nextjs-app-router/.next/types/**/*.ts",
"next-env.d.ts"
"next-env.d.ts",
],
"exclude": [
"node_modules",
"jest.config.ts",
"src/**/*.spec.ts",
"src/**/*.test.ts"
]
"src/**/*.test.ts",
],
}

View File

@ -3,9 +3,21 @@
@tailwind utilities;
html {
-webkit-text-size-adjust: 100%;
font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont,
Segoe UI, Roboto, Helvetica Neue, Arial, Noto Sans, sans-serif,
Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji;
font-family:
ui-sans-serif,
system-ui,
-apple-system,
BlinkMacSystemFont,
Segoe UI,
Roboto,
Helvetica Neue,
Arial,
Noto Sans,
sans-serif,
Apple Color Emoji,
Segoe UI Emoji,
Segoe UI Symbol,
Noto Color Emoji;
line-height: 1.5;
tab-size: 4;
scroll-behavior: smooth;
@ -39,8 +51,15 @@ a {
text-decoration: inherit;
}
pre {
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,
Liberation Mono, Courier New, monospace;
font-family:
ui-monospace,
SFMono-Regular,
Menlo,
Monaco,
Consolas,
Liberation Mono,
Courier New,
monospace;
}
svg {
display: block;
@ -52,14 +71,24 @@ pre {
background-color: rgba(55, 65, 81, 1);
border-radius: 0.25rem;
color: rgba(229, 231, 235, 1);
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,
Liberation Mono, Courier New, monospace;
font-family:
ui-monospace,
SFMono-Regular,
Menlo,
Monaco,
Consolas,
Liberation Mono,
Courier New,
monospace;
overflow: scroll;
padding: 0.5rem 0.75rem;
}
.shadow {
box-shadow: 0 0 #0000, 0 0 #0000, 0 10px 15px -3px rgba(0, 0, 0, 0.1),
box-shadow:
0 0 #0000,
0 0 #0000,
0 10px 15px -3px rgba(0, 0, 0, 0.1),
0 4px 6px -2px rgba(0, 0, 0, 0.05);
}
.wrapper {
@ -164,8 +193,17 @@ pre {
display: flex;
margin-top: 1rem;
padding: 1rem;
transition-property: background-color, border-color, color, fill, stroke,
opacity, box-shadow, transform, filter, backdrop-filter,
transition-property:
background-color,
border-color,
color,
fill,
stroke,
opacity,
box-shadow,
transform,
filter,
backdrop-filter,
-webkit-backdrop-filter;
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
transition-duration: 150ms;
@ -174,8 +212,17 @@ pre {
.list-item-link svg:first-child {
margin-right: 1rem;
height: 1.5rem;
transition-property: background-color, border-color, color, fill, stroke,
opacity, box-shadow, transform, filter, backdrop-filter,
transition-property:
background-color,
border-color,
color,
fill,
stroke,
opacity,
box-shadow,
transform,
filter,
backdrop-filter,
-webkit-backdrop-filter;
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
transition-duration: 150ms;
@ -184,8 +231,17 @@ pre {
.list-item-link > span {
flex-grow: 1;
font-weight: 400;
transition-property: background-color, border-color, color, fill, stroke,
opacity, box-shadow, transform, filter, backdrop-filter,
transition-property:
background-color,
border-color,
color,
fill,
stroke,
opacity,
box-shadow,
transform,
filter,
backdrop-filter,
-webkit-backdrop-filter;
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
transition-duration: 150ms;
@ -197,8 +253,17 @@ pre {
font-size: 0.75rem;
font-weight: 300;
line-height: 1rem;
transition-property: background-color, border-color, color, fill, stroke,
opacity, box-shadow, transform, filter, backdrop-filter,
transition-property:
background-color,
border-color,
color,
fill,
stroke,
opacity,
box-shadow,
transform,
filter,
backdrop-filter,
-webkit-backdrop-filter;
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
transition-duration: 150ms;
@ -227,16 +292,34 @@ pre {
.button-pill {
padding: 1.5rem 2rem;
transition-duration: 300ms;
transition-property: background-color, border-color, color, fill, stroke,
opacity, box-shadow, transform, filter, backdrop-filter,
transition-property:
background-color,
border-color,
color,
fill,
stroke,
opacity,
box-shadow,
transform,
filter,
backdrop-filter,
-webkit-backdrop-filter;
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
align-items: center;
display: flex;
}
.button-pill svg {
transition-property: background-color, border-color, color, fill, stroke,
opacity, box-shadow, transform, filter, backdrop-filter,
transition-property:
background-color,
border-color,
color,
fill,
stroke,
opacity,
box-shadow,
transform,
filter,
backdrop-filter,
-webkit-backdrop-filter;
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
transition-duration: 150ms;
@ -358,8 +441,17 @@ summary {
font-weight: 400;
padding: 0.5rem;
cursor: pointer;
transition-property: background-color, border-color, color, fill, stroke,
opacity, box-shadow, transform, filter, backdrop-filter,
transition-property:
background-color,
border-color,
color,
fill,
stroke,
opacity,
box-shadow,
transform,
filter,
backdrop-filter,
-webkit-backdrop-filter;
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
transition-duration: 150ms;

View File

@ -11,8 +11,8 @@
"resolveJsonModule": true,
"isolatedModules": true,
"incremental": true,
"types": ["jest", "node"]
"types": ["jest", "node"],
},
"include": ["**/*.ts", "**/*.tsx", "**/*.js", "**/*.jsx", "next-env.d.ts"],
"exclude": ["node_modules", "jest.config.ts"]
"exclude": ["node_modules", "jest.config.ts"],
}

View File

@ -1,7 +0,0 @@
## Fal.ai App Generator
Generate a new full stack app configured with Fal.ai proxy and models.
```sh
npx @fal-ai/create
```

View File

@ -1,21 +0,0 @@
{
"name": "@fal-ai/create",
"version": "0.0.1",
"description": "The fal serverless app generator.",
"main": "index.js",
"keywords": [
"fal",
"next",
"nextjs",
"express"
],
"repository": {
"type": "git",
"url": "https://github.com/fal-ai/serverless-js.git",
"directory": "libs/cli"
},
"type": "module",
"author": "",
"license": "MIT",
"dependencies": {}
}

View File

@ -5,7 +5,7 @@
"license": "MIT",
"repository": {
"type": "git",
"url": "https://github.com/fal-ai/serverless-js.git",
"url": "https://github.com/fal-ai/fal-js.git",
"directory": "libs/client"
},
"keywords": [

View File

@ -1,14 +1,14 @@
/* eslint-disable @typescript-eslint/no-explicit-any */
import { encode, decode } from '@msgpack/msgpack';
import { decode, encode } from '@msgpack/msgpack';
import {
ContextFunction,
InterpretOnChangeFunction,
Service,
createMachine,
guard,
immediate,
interpret,
InterpretOnChangeFunction,
reduce,
Service,
state,
transition,
} from 'robot3';

View File

@ -18,20 +18,22 @@ export type Metrics = {
};
export type QueueStatus =
{
status: 'IN_PROGRESS';
response_url: string;
logs: null | RequestLog[];
} | {
status: 'COMPLETED';
response_url: string;
logs: null | RequestLog[];
metrics: Metrics;
} | {
status: 'IN_QUEUE';
queue_position: number;
response_url: string;
};
| {
status: 'IN_PROGRESS';
response_url: string;
logs: null | RequestLog[];
}
| {
status: 'COMPLETED';
response_url: string;
logs: null | RequestLog[];
metrics: Metrics;
}
| {
status: 'IN_QUEUE';
queue_position: number;
response_url: string;
};
export function isQueueStatus(obj: any): obj is QueueStatus {
return obj && obj.status && obj.response_url;
@ -52,22 +54,22 @@ export type ValidationErrorInfo = {
*/
export type WebHookResponse<Payload = any> =
| {
/** Indicates a successful response. */
status: 'OK';
/** The payload of the response, structure determined by the Payload type. */
payload: Payload;
/** Error is never present in a successful response. */
error: never;
/** The unique identifier for the request. */
request_id: string;
}
/** Indicates a successful response. */
status: 'OK';
/** The payload of the response, structure determined by the Payload type. */
payload: Payload;
/** Error is never present in a successful response. */
error: never;
/** The unique identifier for the request. */
request_id: string;
}
| {
/** Indicates an unsuccessful response. */
status: 'ERROR';
/** The payload of the response, structure determined by the Payload type. */
payload: Payload;
/** Description of the error that occurred. */
error: string;
/** The unique identifier for the request. */
request_id: string;
};
/** Indicates an unsuccessful response. */
status: 'ERROR';
/** The payload of the response, structure determined by the Payload type. */
payload: Payload;
/** Description of the error that occurred. */
error: string;
/** The unique identifier for the request. */
request_id: string;
};

View File

@ -48,12 +48,15 @@ export function throttle<T extends (...args: any[]) => any>(
clearTimeout(lastFunc);
}
lastFunc = setTimeout(() => {
if (Date.now() - lastRan >= limit) {
func(...args);
lastRan = Date.now();
}
}, limit - (Date.now() - lastRan));
lastFunc = setTimeout(
() => {
if (Date.now() - lastRan >= limit) {
func(...args);
lastRan = Date.now();
}
},
limit - (Date.now() - lastRan)
);
}
};
}

View File

@ -4,10 +4,10 @@
"include": [],
"references": [
{
"path": "./tsconfig.lib.json"
"path": "./tsconfig.lib.json",
},
{
"path": "./tsconfig.spec.json"
}
]
"path": "./tsconfig.spec.json",
},
],
}

View File

@ -0,0 +1,7 @@
## The fal.ai App Generator
Generate a new full stack app configured with [fal.ai](https://fal.ai) proxy and models.
```sh
npx @fal-ai/create-app
```

View File

@ -1,11 +1,11 @@
/* eslint-disable */
export default {
displayName: 'cli',
displayName: 'create-app',
preset: '../../jest.preset.js',
testEnvironment: 'node',
transform: {
'^.+\\.[tj]s$': ['ts-jest', { tsconfig: '<rootDir>/tsconfig.spec.json' }],
},
moduleFileExtensions: ['ts', 'js', 'html'],
coverageDirectory: '../../coverage/libs/cli',
coverageDirectory: '../../coverage/libs/create-app',
};

View File

@ -0,0 +1,27 @@
{
"name": "@fal-ai/create-app",
"version": "0.1.0",
"description": "The fal app generator.",
"type": "module",
"license": "MIT",
"main": "src/index.js",
"keywords": [
"fal",
"next",
"nextjs",
"express"
],
"repository": {
"type": "git",
"url": "https://github.com/fal-ai/fal-js.git",
"directory": "libs/create-app"
},
"dependencies": {
"@inquirer/prompts": "^3.3.0",
"@inquirer/select": "^1.3.1",
"chalk": "^5.3.0",
"execa": "^8.0.1",
"open": "^10.0.3",
"ora": "^8.0.1"
}
}

View File

@ -1,32 +1,32 @@
{
"name": "cli",
"name": "create-app",
"$schema": "../../node_modules/nx/schemas/project-schema.json",
"sourceRoot": "libs/cli/src",
"sourceRoot": "libs/create-app/src",
"projectType": "library",
"targets": {
"build": {
"executor": "@nx/js:tsc",
"outputs": ["{options.outputPath}"],
"options": {
"outputPath": "dist/libs/cli",
"tsConfig": "libs/cli/tsconfig.lib.json",
"packageJson": "libs/cli/package.json",
"main": "libs/cli/src/index.ts",
"assets": ["LICENSE", "CODE_OF_CONDUCT.md", "libs/cli/README.md"]
"outputPath": "dist/libs/create-app",
"tsConfig": "libs/create-app/tsconfig.lib.json",
"packageJson": "libs/create-app/package.json",
"main": "libs/create-app/src/index.ts",
"assets": ["LICENSE", "CODE_OF_CONDUCT.md", "libs/create-app/README.md"]
}
},
"lint": {
"executor": "@nx/linter:eslint",
"outputs": ["{options.outputFile}"],
"options": {
"lintFilePatterns": ["libs/cli/**/*.ts"]
"lintFilePatterns": ["libs/create-app/**/*.ts"]
}
},
"test": {
"executor": "@nx/jest:jest",
"outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
"options": {
"jestConfig": "libs/cli/jest.config.ts",
"jestConfig": "libs/create-app/jest.config.ts",
"passWithNoTests": true
},
"configurations": {

View File

@ -1,15 +1,15 @@
#!/usr/bin/env node
import chalk from 'chalk';
import path from 'path';
import fs from 'fs';
import childProcess from 'child_process';
import ora from 'ora';
import select from '@inquirer/select';
import { input } from '@inquirer/prompts';
import select from '@inquirer/select';
import chalk from 'chalk';
import childProcess from 'child_process';
import { Command } from 'commander';
import { execa, execaCommand } from 'execa';
import fs from 'fs';
import open from 'open';
import ora from 'ora';
import path from 'path';
const program = new Command();
const log = console.log;
@ -25,8 +25,8 @@ async function main() {
const kebabRegez = /^([a-z]+)(-[a-z0-9]+)*$/;
program
.name('Fal.ai App Generator')
.description('Generate full stack AI apps integrated with Fal.ai.');
.name('The fal.ai App Generator')
.description('Generate full stack AI apps integrated with fal.ai');
program.parse(process.argv);
@ -47,7 +47,7 @@ async function main() {
}
const hasFalEnv = await select({
message: 'Do you have a Fal.ai API key?',
message: 'Do you have a fal.ai API key?',
choices: [
{
name: 'Yes',
@ -66,10 +66,10 @@ async function main() {
const fal_api_key = await input({ message: 'Fal AI API Key' });
let envs = `
const envs = `
# environment, either PRODUCTION or DEVELOPMENT
ENVIRONMENT="PRODUCTION"
# FAL AI API Key
FAL_KEY="${fal_api_key}"
`;

View File

@ -4,10 +4,10 @@
"include": [],
"references": [
{
"path": "./tsconfig.lib.json"
"path": "./tsconfig.lib.json",
},
{
"path": "./tsconfig.spec.json"
}
]
"path": "./tsconfig.spec.json",
},
],
}

View File

@ -11,10 +11,7 @@
"outDir": "dist",
"baseUrl": ".",
"paths": {
"*": [
"node_modules/*",
"src/types/*"
]
"*": ["node_modules/*", "src/types/*"]
}
},
"exclude": ["jest.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts"],

View File

@ -4,7 +4,7 @@
"license": "MIT",
"repository": {
"type": "git",
"url": "https://github.com/fal-ai/serverless-js.git",
"url": "https://github.com/fal-ai/fal-js.git",
"directory": "libs/proxy"
},
"keywords": [

View File

@ -4,10 +4,10 @@
"include": [],
"references": [
{
"path": "./tsconfig.lib.json"
"path": "./tsconfig.lib.json",
},
{
"path": "./tsconfig.spec.json"
}
]
"path": "./tsconfig.spec.json",
},
],
}

View File

@ -1,5 +1,6 @@
{
"$schema": "./node_modules/nx/schemas/nx-schema.json",
"extends": "nx/presets/npm.json",
"tasksRunnerOptions": {
"default": {
"runner": "nx-cloud",
@ -50,5 +51,5 @@
}
}
},
"defaultProject": "demo-nextjs-page-router"
"defaultProject": "demo-nextjs-app-router"
}

1933
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
{
"name": "@fal-ai/serverless",
"name": "@fal-ai/fal-js",
"version": "0.0.0",
"license": "MIT",
"scripts": {
@ -46,6 +46,8 @@
"http-proxy-middleware": "^2.0.6",
"js-base64": "^3.7.5",
"next": "^14.0.3",
"open": "^10.0.3",
"ora": "^8.0.1",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"regenerator-runtime": "0.13.7",
@ -108,7 +110,8 @@
"nx-cloud": "16.4.0",
"organize-imports-cli": "^0.10.0",
"postcss": "8.4.21",
"prettier": "^2.6.2",
"prettier": "^3.2.4",
"prettier-plugin-organize-imports": "^3.2.4",
"secretlint": "^7.0.7",
"tailwindcss": "3.2.7",
"ts-jest": "29.1.1",

View File

@ -15,7 +15,7 @@
"skipDefaultLibCheck": true,
"baseUrl": ".",
"paths": {
"@fal-ai/cli": ["libs/cli/src/index.ts"],
"@fal-ai/create-app": ["libs/create-app/src/index.ts"],
"@fal-ai/serverless-client": ["libs/client/src/index.ts"],
"@fal-ai/serverless-proxy": ["libs/proxy/src/index.ts"],
"@fal-ai/serverless-proxy/express": ["libs/proxy/src/express.ts"],