chore: publish create app cli (#44)
* chore: move folder to match package name * chore: update dependencies
This commit is contained in:
parent
b76c371480
commit
0f8efecf65
@ -1,3 +1,5 @@
|
|||||||
{
|
{
|
||||||
"singleQuote": true
|
"singleQuote": true,
|
||||||
|
"trailingComma": "es5",
|
||||||
|
"plugins": ["prettier-plugin-organize-imports"]
|
||||||
}
|
}
|
||||||
|
|||||||
@ -17,23 +17,23 @@ diverse, inclusive, and healthy community.
|
|||||||
Examples of behavior that contributes to a positive environment for our
|
Examples of behavior that contributes to a positive environment for our
|
||||||
community include:
|
community include:
|
||||||
|
|
||||||
* Demonstrating empathy and kindness toward other people
|
- Demonstrating empathy and kindness toward other people
|
||||||
* Being respectful of differing opinions, viewpoints, and experiences
|
- Being respectful of differing opinions, viewpoints, and experiences
|
||||||
* Giving and gracefully accepting constructive feedback
|
- Giving and gracefully accepting constructive feedback
|
||||||
* Accepting responsibility and apologizing to those affected by our mistakes,
|
- Accepting responsibility and apologizing to those affected by our mistakes,
|
||||||
and learning from the experience
|
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
|
community
|
||||||
|
|
||||||
Examples of unacceptable behavior include:
|
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
|
any kind
|
||||||
* Trolling, insulting or derogatory comments, and personal or political attacks
|
- Trolling, insulting or derogatory comments, and personal or political attacks
|
||||||
* Public or private harassment
|
- Public or private harassment
|
||||||
* Publishing others' private information, such as a physical or email address,
|
- Publishing others' private information, such as a physical or email address,
|
||||||
without their explicit permission
|
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
|
professional setting
|
||||||
|
|
||||||
## Enforcement Responsibilities
|
## Enforcement Responsibilities
|
||||||
|
|||||||
@ -4,13 +4,13 @@
|
|||||||
"include": [],
|
"include": [],
|
||||||
"references": [
|
"references": [
|
||||||
{
|
{
|
||||||
"path": "./tsconfig.app.json"
|
"path": "./tsconfig.app.json",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "./tsconfig.spec.json"
|
"path": "./tsconfig.spec.json",
|
||||||
}
|
},
|
||||||
],
|
],
|
||||||
"compilerOptions": {
|
"compilerOptions": {
|
||||||
"esModuleInterop": true
|
"esModuleInterop": true,
|
||||||
}
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,9 +3,21 @@
|
|||||||
@tailwind utilities;
|
@tailwind utilities;
|
||||||
html {
|
html {
|
||||||
-webkit-text-size-adjust: 100%;
|
-webkit-text-size-adjust: 100%;
|
||||||
font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont,
|
font-family:
|
||||||
Segoe UI, Roboto, Helvetica Neue, Arial, Noto Sans, sans-serif,
|
ui-sans-serif,
|
||||||
Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji;
|
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;
|
line-height: 1.5;
|
||||||
tab-size: 4;
|
tab-size: 4;
|
||||||
scroll-behavior: smooth;
|
scroll-behavior: smooth;
|
||||||
@ -39,8 +51,15 @@ a {
|
|||||||
text-decoration: inherit;
|
text-decoration: inherit;
|
||||||
}
|
}
|
||||||
pre {
|
pre {
|
||||||
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,
|
font-family:
|
||||||
Liberation Mono, Courier New, monospace;
|
ui-monospace,
|
||||||
|
SFMono-Regular,
|
||||||
|
Menlo,
|
||||||
|
Monaco,
|
||||||
|
Consolas,
|
||||||
|
Liberation Mono,
|
||||||
|
Courier New,
|
||||||
|
monospace;
|
||||||
}
|
}
|
||||||
svg {
|
svg {
|
||||||
display: block;
|
display: block;
|
||||||
@ -52,14 +71,24 @@ pre {
|
|||||||
background-color: rgba(55, 65, 81, 1);
|
background-color: rgba(55, 65, 81, 1);
|
||||||
border-radius: 0.25rem;
|
border-radius: 0.25rem;
|
||||||
color: rgba(229, 231, 235, 1);
|
color: rgba(229, 231, 235, 1);
|
||||||
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,
|
font-family:
|
||||||
Liberation Mono, Courier New, monospace;
|
ui-monospace,
|
||||||
|
SFMono-Regular,
|
||||||
|
Menlo,
|
||||||
|
Monaco,
|
||||||
|
Consolas,
|
||||||
|
Liberation Mono,
|
||||||
|
Courier New,
|
||||||
|
monospace;
|
||||||
overflow: scroll;
|
overflow: scroll;
|
||||||
padding: 0.5rem 0.75rem;
|
padding: 0.5rem 0.75rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.shadow {
|
.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);
|
0 4px 6px -2px rgba(0, 0, 0, 0.05);
|
||||||
}
|
}
|
||||||
.wrapper {
|
.wrapper {
|
||||||
@ -164,8 +193,17 @@ pre {
|
|||||||
display: flex;
|
display: flex;
|
||||||
margin-top: 1rem;
|
margin-top: 1rem;
|
||||||
padding: 1rem;
|
padding: 1rem;
|
||||||
transition-property: background-color, border-color, color, fill, stroke,
|
transition-property:
|
||||||
opacity, box-shadow, transform, filter, backdrop-filter,
|
background-color,
|
||||||
|
border-color,
|
||||||
|
color,
|
||||||
|
fill,
|
||||||
|
stroke,
|
||||||
|
opacity,
|
||||||
|
box-shadow,
|
||||||
|
transform,
|
||||||
|
filter,
|
||||||
|
backdrop-filter,
|
||||||
-webkit-backdrop-filter;
|
-webkit-backdrop-filter;
|
||||||
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
||||||
transition-duration: 150ms;
|
transition-duration: 150ms;
|
||||||
@ -174,8 +212,17 @@ pre {
|
|||||||
.list-item-link svg:first-child {
|
.list-item-link svg:first-child {
|
||||||
margin-right: 1rem;
|
margin-right: 1rem;
|
||||||
height: 1.5rem;
|
height: 1.5rem;
|
||||||
transition-property: background-color, border-color, color, fill, stroke,
|
transition-property:
|
||||||
opacity, box-shadow, transform, filter, backdrop-filter,
|
background-color,
|
||||||
|
border-color,
|
||||||
|
color,
|
||||||
|
fill,
|
||||||
|
stroke,
|
||||||
|
opacity,
|
||||||
|
box-shadow,
|
||||||
|
transform,
|
||||||
|
filter,
|
||||||
|
backdrop-filter,
|
||||||
-webkit-backdrop-filter;
|
-webkit-backdrop-filter;
|
||||||
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
||||||
transition-duration: 150ms;
|
transition-duration: 150ms;
|
||||||
@ -184,8 +231,17 @@ pre {
|
|||||||
.list-item-link > span {
|
.list-item-link > span {
|
||||||
flex-grow: 1;
|
flex-grow: 1;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
transition-property: background-color, border-color, color, fill, stroke,
|
transition-property:
|
||||||
opacity, box-shadow, transform, filter, backdrop-filter,
|
background-color,
|
||||||
|
border-color,
|
||||||
|
color,
|
||||||
|
fill,
|
||||||
|
stroke,
|
||||||
|
opacity,
|
||||||
|
box-shadow,
|
||||||
|
transform,
|
||||||
|
filter,
|
||||||
|
backdrop-filter,
|
||||||
-webkit-backdrop-filter;
|
-webkit-backdrop-filter;
|
||||||
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
||||||
transition-duration: 150ms;
|
transition-duration: 150ms;
|
||||||
@ -197,8 +253,17 @@ pre {
|
|||||||
font-size: 0.75rem;
|
font-size: 0.75rem;
|
||||||
font-weight: 300;
|
font-weight: 300;
|
||||||
line-height: 1rem;
|
line-height: 1rem;
|
||||||
transition-property: background-color, border-color, color, fill, stroke,
|
transition-property:
|
||||||
opacity, box-shadow, transform, filter, backdrop-filter,
|
background-color,
|
||||||
|
border-color,
|
||||||
|
color,
|
||||||
|
fill,
|
||||||
|
stroke,
|
||||||
|
opacity,
|
||||||
|
box-shadow,
|
||||||
|
transform,
|
||||||
|
filter,
|
||||||
|
backdrop-filter,
|
||||||
-webkit-backdrop-filter;
|
-webkit-backdrop-filter;
|
||||||
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
||||||
transition-duration: 150ms;
|
transition-duration: 150ms;
|
||||||
@ -227,16 +292,34 @@ pre {
|
|||||||
.button-pill {
|
.button-pill {
|
||||||
padding: 1.5rem 2rem;
|
padding: 1.5rem 2rem;
|
||||||
transition-duration: 300ms;
|
transition-duration: 300ms;
|
||||||
transition-property: background-color, border-color, color, fill, stroke,
|
transition-property:
|
||||||
opacity, box-shadow, transform, filter, backdrop-filter,
|
background-color,
|
||||||
|
border-color,
|
||||||
|
color,
|
||||||
|
fill,
|
||||||
|
stroke,
|
||||||
|
opacity,
|
||||||
|
box-shadow,
|
||||||
|
transform,
|
||||||
|
filter,
|
||||||
|
backdrop-filter,
|
||||||
-webkit-backdrop-filter;
|
-webkit-backdrop-filter;
|
||||||
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
||||||
align-items: center;
|
align-items: center;
|
||||||
display: flex;
|
display: flex;
|
||||||
}
|
}
|
||||||
.button-pill svg {
|
.button-pill svg {
|
||||||
transition-property: background-color, border-color, color, fill, stroke,
|
transition-property:
|
||||||
opacity, box-shadow, transform, filter, backdrop-filter,
|
background-color,
|
||||||
|
border-color,
|
||||||
|
color,
|
||||||
|
fill,
|
||||||
|
stroke,
|
||||||
|
opacity,
|
||||||
|
box-shadow,
|
||||||
|
transform,
|
||||||
|
filter,
|
||||||
|
backdrop-filter,
|
||||||
-webkit-backdrop-filter;
|
-webkit-backdrop-filter;
|
||||||
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
||||||
transition-duration: 150ms;
|
transition-duration: 150ms;
|
||||||
@ -358,8 +441,17 @@ summary {
|
|||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
padding: 0.5rem;
|
padding: 0.5rem;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
transition-property: background-color, border-color, color, fill, stroke,
|
transition-property:
|
||||||
opacity, box-shadow, transform, filter, backdrop-filter,
|
background-color,
|
||||||
|
border-color,
|
||||||
|
color,
|
||||||
|
fill,
|
||||||
|
stroke,
|
||||||
|
opacity,
|
||||||
|
box-shadow,
|
||||||
|
transform,
|
||||||
|
filter,
|
||||||
|
backdrop-filter,
|
||||||
-webkit-backdrop-filter;
|
-webkit-backdrop-filter;
|
||||||
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
||||||
transition-duration: 150ms;
|
transition-duration: 150ms;
|
||||||
|
|||||||
@ -13,10 +13,10 @@
|
|||||||
"incremental": true,
|
"incremental": true,
|
||||||
"plugins": [
|
"plugins": [
|
||||||
{
|
{
|
||||||
"name": "next"
|
"name": "next",
|
||||||
}
|
},
|
||||||
],
|
],
|
||||||
"types": ["jest", "node"]
|
"types": ["jest", "node"],
|
||||||
},
|
},
|
||||||
"include": [
|
"include": [
|
||||||
"**/*.ts",
|
"**/*.ts",
|
||||||
@ -25,12 +25,12 @@
|
|||||||
"**/*.jsx",
|
"**/*.jsx",
|
||||||
"../../apps/demo-nextjs-app-router/.next/types/**/*.ts",
|
"../../apps/demo-nextjs-app-router/.next/types/**/*.ts",
|
||||||
"../../dist/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": [
|
"exclude": [
|
||||||
"node_modules",
|
"node_modules",
|
||||||
"jest.config.ts",
|
"jest.config.ts",
|
||||||
"src/**/*.spec.ts",
|
"src/**/*.spec.ts",
|
||||||
"src/**/*.test.ts"
|
"src/**/*.test.ts",
|
||||||
]
|
],
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,9 +3,21 @@
|
|||||||
@tailwind utilities;
|
@tailwind utilities;
|
||||||
html {
|
html {
|
||||||
-webkit-text-size-adjust: 100%;
|
-webkit-text-size-adjust: 100%;
|
||||||
font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont,
|
font-family:
|
||||||
Segoe UI, Roboto, Helvetica Neue, Arial, Noto Sans, sans-serif,
|
ui-sans-serif,
|
||||||
Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji;
|
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;
|
line-height: 1.5;
|
||||||
tab-size: 4;
|
tab-size: 4;
|
||||||
scroll-behavior: smooth;
|
scroll-behavior: smooth;
|
||||||
@ -39,8 +51,15 @@ a {
|
|||||||
text-decoration: inherit;
|
text-decoration: inherit;
|
||||||
}
|
}
|
||||||
pre {
|
pre {
|
||||||
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,
|
font-family:
|
||||||
Liberation Mono, Courier New, monospace;
|
ui-monospace,
|
||||||
|
SFMono-Regular,
|
||||||
|
Menlo,
|
||||||
|
Monaco,
|
||||||
|
Consolas,
|
||||||
|
Liberation Mono,
|
||||||
|
Courier New,
|
||||||
|
monospace;
|
||||||
}
|
}
|
||||||
svg {
|
svg {
|
||||||
display: block;
|
display: block;
|
||||||
@ -52,14 +71,24 @@ pre {
|
|||||||
background-color: rgba(55, 65, 81, 1);
|
background-color: rgba(55, 65, 81, 1);
|
||||||
border-radius: 0.25rem;
|
border-radius: 0.25rem;
|
||||||
color: rgba(229, 231, 235, 1);
|
color: rgba(229, 231, 235, 1);
|
||||||
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,
|
font-family:
|
||||||
Liberation Mono, Courier New, monospace;
|
ui-monospace,
|
||||||
|
SFMono-Regular,
|
||||||
|
Menlo,
|
||||||
|
Monaco,
|
||||||
|
Consolas,
|
||||||
|
Liberation Mono,
|
||||||
|
Courier New,
|
||||||
|
monospace;
|
||||||
overflow: scroll;
|
overflow: scroll;
|
||||||
padding: 0.5rem 0.75rem;
|
padding: 0.5rem 0.75rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.shadow {
|
.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);
|
0 4px 6px -2px rgba(0, 0, 0, 0.05);
|
||||||
}
|
}
|
||||||
.wrapper {
|
.wrapper {
|
||||||
@ -164,8 +193,17 @@ pre {
|
|||||||
display: flex;
|
display: flex;
|
||||||
margin-top: 1rem;
|
margin-top: 1rem;
|
||||||
padding: 1rem;
|
padding: 1rem;
|
||||||
transition-property: background-color, border-color, color, fill, stroke,
|
transition-property:
|
||||||
opacity, box-shadow, transform, filter, backdrop-filter,
|
background-color,
|
||||||
|
border-color,
|
||||||
|
color,
|
||||||
|
fill,
|
||||||
|
stroke,
|
||||||
|
opacity,
|
||||||
|
box-shadow,
|
||||||
|
transform,
|
||||||
|
filter,
|
||||||
|
backdrop-filter,
|
||||||
-webkit-backdrop-filter;
|
-webkit-backdrop-filter;
|
||||||
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
||||||
transition-duration: 150ms;
|
transition-duration: 150ms;
|
||||||
@ -174,8 +212,17 @@ pre {
|
|||||||
.list-item-link svg:first-child {
|
.list-item-link svg:first-child {
|
||||||
margin-right: 1rem;
|
margin-right: 1rem;
|
||||||
height: 1.5rem;
|
height: 1.5rem;
|
||||||
transition-property: background-color, border-color, color, fill, stroke,
|
transition-property:
|
||||||
opacity, box-shadow, transform, filter, backdrop-filter,
|
background-color,
|
||||||
|
border-color,
|
||||||
|
color,
|
||||||
|
fill,
|
||||||
|
stroke,
|
||||||
|
opacity,
|
||||||
|
box-shadow,
|
||||||
|
transform,
|
||||||
|
filter,
|
||||||
|
backdrop-filter,
|
||||||
-webkit-backdrop-filter;
|
-webkit-backdrop-filter;
|
||||||
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
||||||
transition-duration: 150ms;
|
transition-duration: 150ms;
|
||||||
@ -184,8 +231,17 @@ pre {
|
|||||||
.list-item-link > span {
|
.list-item-link > span {
|
||||||
flex-grow: 1;
|
flex-grow: 1;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
transition-property: background-color, border-color, color, fill, stroke,
|
transition-property:
|
||||||
opacity, box-shadow, transform, filter, backdrop-filter,
|
background-color,
|
||||||
|
border-color,
|
||||||
|
color,
|
||||||
|
fill,
|
||||||
|
stroke,
|
||||||
|
opacity,
|
||||||
|
box-shadow,
|
||||||
|
transform,
|
||||||
|
filter,
|
||||||
|
backdrop-filter,
|
||||||
-webkit-backdrop-filter;
|
-webkit-backdrop-filter;
|
||||||
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
||||||
transition-duration: 150ms;
|
transition-duration: 150ms;
|
||||||
@ -197,8 +253,17 @@ pre {
|
|||||||
font-size: 0.75rem;
|
font-size: 0.75rem;
|
||||||
font-weight: 300;
|
font-weight: 300;
|
||||||
line-height: 1rem;
|
line-height: 1rem;
|
||||||
transition-property: background-color, border-color, color, fill, stroke,
|
transition-property:
|
||||||
opacity, box-shadow, transform, filter, backdrop-filter,
|
background-color,
|
||||||
|
border-color,
|
||||||
|
color,
|
||||||
|
fill,
|
||||||
|
stroke,
|
||||||
|
opacity,
|
||||||
|
box-shadow,
|
||||||
|
transform,
|
||||||
|
filter,
|
||||||
|
backdrop-filter,
|
||||||
-webkit-backdrop-filter;
|
-webkit-backdrop-filter;
|
||||||
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
||||||
transition-duration: 150ms;
|
transition-duration: 150ms;
|
||||||
@ -227,16 +292,34 @@ pre {
|
|||||||
.button-pill {
|
.button-pill {
|
||||||
padding: 1.5rem 2rem;
|
padding: 1.5rem 2rem;
|
||||||
transition-duration: 300ms;
|
transition-duration: 300ms;
|
||||||
transition-property: background-color, border-color, color, fill, stroke,
|
transition-property:
|
||||||
opacity, box-shadow, transform, filter, backdrop-filter,
|
background-color,
|
||||||
|
border-color,
|
||||||
|
color,
|
||||||
|
fill,
|
||||||
|
stroke,
|
||||||
|
opacity,
|
||||||
|
box-shadow,
|
||||||
|
transform,
|
||||||
|
filter,
|
||||||
|
backdrop-filter,
|
||||||
-webkit-backdrop-filter;
|
-webkit-backdrop-filter;
|
||||||
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
||||||
align-items: center;
|
align-items: center;
|
||||||
display: flex;
|
display: flex;
|
||||||
}
|
}
|
||||||
.button-pill svg {
|
.button-pill svg {
|
||||||
transition-property: background-color, border-color, color, fill, stroke,
|
transition-property:
|
||||||
opacity, box-shadow, transform, filter, backdrop-filter,
|
background-color,
|
||||||
|
border-color,
|
||||||
|
color,
|
||||||
|
fill,
|
||||||
|
stroke,
|
||||||
|
opacity,
|
||||||
|
box-shadow,
|
||||||
|
transform,
|
||||||
|
filter,
|
||||||
|
backdrop-filter,
|
||||||
-webkit-backdrop-filter;
|
-webkit-backdrop-filter;
|
||||||
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
||||||
transition-duration: 150ms;
|
transition-duration: 150ms;
|
||||||
@ -358,8 +441,17 @@ summary {
|
|||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
padding: 0.5rem;
|
padding: 0.5rem;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
transition-property: background-color, border-color, color, fill, stroke,
|
transition-property:
|
||||||
opacity, box-shadow, transform, filter, backdrop-filter,
|
background-color,
|
||||||
|
border-color,
|
||||||
|
color,
|
||||||
|
fill,
|
||||||
|
stroke,
|
||||||
|
opacity,
|
||||||
|
box-shadow,
|
||||||
|
transform,
|
||||||
|
filter,
|
||||||
|
backdrop-filter,
|
||||||
-webkit-backdrop-filter;
|
-webkit-backdrop-filter;
|
||||||
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
||||||
transition-duration: 150ms;
|
transition-duration: 150ms;
|
||||||
|
|||||||
@ -11,8 +11,8 @@
|
|||||||
"resolveJsonModule": true,
|
"resolveJsonModule": true,
|
||||||
"isolatedModules": true,
|
"isolatedModules": true,
|
||||||
"incremental": true,
|
"incremental": true,
|
||||||
"types": ["jest", "node"]
|
"types": ["jest", "node"],
|
||||||
},
|
},
|
||||||
"include": ["**/*.ts", "**/*.tsx", "**/*.js", "**/*.jsx", "next-env.d.ts"],
|
"include": ["**/*.ts", "**/*.tsx", "**/*.js", "**/*.jsx", "next-env.d.ts"],
|
||||||
"exclude": ["node_modules", "jest.config.ts"]
|
"exclude": ["node_modules", "jest.config.ts"],
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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
|
|
||||||
```
|
|
||||||
@ -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": {}
|
|
||||||
}
|
|
||||||
@ -5,7 +5,7 @@
|
|||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/fal-ai/serverless-js.git",
|
"url": "https://github.com/fal-ai/fal-js.git",
|
||||||
"directory": "libs/client"
|
"directory": "libs/client"
|
||||||
},
|
},
|
||||||
"keywords": [
|
"keywords": [
|
||||||
|
|||||||
@ -1,14 +1,14 @@
|
|||||||
/* eslint-disable @typescript-eslint/no-explicit-any */
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
||||||
import { encode, decode } from '@msgpack/msgpack';
|
import { decode, encode } from '@msgpack/msgpack';
|
||||||
import {
|
import {
|
||||||
ContextFunction,
|
ContextFunction,
|
||||||
|
InterpretOnChangeFunction,
|
||||||
|
Service,
|
||||||
createMachine,
|
createMachine,
|
||||||
guard,
|
guard,
|
||||||
immediate,
|
immediate,
|
||||||
interpret,
|
interpret,
|
||||||
InterpretOnChangeFunction,
|
|
||||||
reduce,
|
reduce,
|
||||||
Service,
|
|
||||||
state,
|
state,
|
||||||
transition,
|
transition,
|
||||||
} from 'robot3';
|
} from 'robot3';
|
||||||
|
|||||||
@ -18,20 +18,22 @@ export type Metrics = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export type QueueStatus =
|
export type QueueStatus =
|
||||||
{
|
| {
|
||||||
status: 'IN_PROGRESS';
|
status: 'IN_PROGRESS';
|
||||||
response_url: string;
|
response_url: string;
|
||||||
logs: null | RequestLog[];
|
logs: null | RequestLog[];
|
||||||
} | {
|
}
|
||||||
status: 'COMPLETED';
|
| {
|
||||||
response_url: string;
|
status: 'COMPLETED';
|
||||||
logs: null | RequestLog[];
|
response_url: string;
|
||||||
metrics: Metrics;
|
logs: null | RequestLog[];
|
||||||
} | {
|
metrics: Metrics;
|
||||||
status: 'IN_QUEUE';
|
}
|
||||||
queue_position: number;
|
| {
|
||||||
response_url: string;
|
status: 'IN_QUEUE';
|
||||||
};
|
queue_position: number;
|
||||||
|
response_url: string;
|
||||||
|
};
|
||||||
|
|
||||||
export function isQueueStatus(obj: any): obj is QueueStatus {
|
export function isQueueStatus(obj: any): obj is QueueStatus {
|
||||||
return obj && obj.status && obj.response_url;
|
return obj && obj.status && obj.response_url;
|
||||||
@ -52,22 +54,22 @@ export type ValidationErrorInfo = {
|
|||||||
*/
|
*/
|
||||||
export type WebHookResponse<Payload = any> =
|
export type WebHookResponse<Payload = any> =
|
||||||
| {
|
| {
|
||||||
/** Indicates a successful response. */
|
/** Indicates a successful response. */
|
||||||
status: 'OK';
|
status: 'OK';
|
||||||
/** The payload of the response, structure determined by the Payload type. */
|
/** The payload of the response, structure determined by the Payload type. */
|
||||||
payload: Payload;
|
payload: Payload;
|
||||||
/** Error is never present in a successful response. */
|
/** Error is never present in a successful response. */
|
||||||
error: never;
|
error: never;
|
||||||
/** The unique identifier for the request. */
|
/** The unique identifier for the request. */
|
||||||
request_id: string;
|
request_id: string;
|
||||||
}
|
}
|
||||||
| {
|
| {
|
||||||
/** Indicates an unsuccessful response. */
|
/** Indicates an unsuccessful response. */
|
||||||
status: 'ERROR';
|
status: 'ERROR';
|
||||||
/** The payload of the response, structure determined by the Payload type. */
|
/** The payload of the response, structure determined by the Payload type. */
|
||||||
payload: Payload;
|
payload: Payload;
|
||||||
/** Description of the error that occurred. */
|
/** Description of the error that occurred. */
|
||||||
error: string;
|
error: string;
|
||||||
/** The unique identifier for the request. */
|
/** The unique identifier for the request. */
|
||||||
request_id: string;
|
request_id: string;
|
||||||
};
|
};
|
||||||
|
|||||||
@ -48,12 +48,15 @@ export function throttle<T extends (...args: any[]) => any>(
|
|||||||
clearTimeout(lastFunc);
|
clearTimeout(lastFunc);
|
||||||
}
|
}
|
||||||
|
|
||||||
lastFunc = setTimeout(() => {
|
lastFunc = setTimeout(
|
||||||
if (Date.now() - lastRan >= limit) {
|
() => {
|
||||||
func(...args);
|
if (Date.now() - lastRan >= limit) {
|
||||||
lastRan = Date.now();
|
func(...args);
|
||||||
}
|
lastRan = Date.now();
|
||||||
}, limit - (Date.now() - lastRan));
|
}
|
||||||
|
},
|
||||||
|
limit - (Date.now() - lastRan)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4,10 +4,10 @@
|
|||||||
"include": [],
|
"include": [],
|
||||||
"references": [
|
"references": [
|
||||||
{
|
{
|
||||||
"path": "./tsconfig.lib.json"
|
"path": "./tsconfig.lib.json",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "./tsconfig.spec.json"
|
"path": "./tsconfig.spec.json",
|
||||||
}
|
},
|
||||||
]
|
],
|
||||||
}
|
}
|
||||||
|
|||||||
7
libs/create-app/README.md
Normal file
7
libs/create-app/README.md
Normal 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
|
||||||
|
```
|
||||||
@ -1,11 +1,11 @@
|
|||||||
/* eslint-disable */
|
/* eslint-disable */
|
||||||
export default {
|
export default {
|
||||||
displayName: 'cli',
|
displayName: 'create-app',
|
||||||
preset: '../../jest.preset.js',
|
preset: '../../jest.preset.js',
|
||||||
testEnvironment: 'node',
|
testEnvironment: 'node',
|
||||||
transform: {
|
transform: {
|
||||||
'^.+\\.[tj]s$': ['ts-jest', { tsconfig: '<rootDir>/tsconfig.spec.json' }],
|
'^.+\\.[tj]s$': ['ts-jest', { tsconfig: '<rootDir>/tsconfig.spec.json' }],
|
||||||
},
|
},
|
||||||
moduleFileExtensions: ['ts', 'js', 'html'],
|
moduleFileExtensions: ['ts', 'js', 'html'],
|
||||||
coverageDirectory: '../../coverage/libs/cli',
|
coverageDirectory: '../../coverage/libs/create-app',
|
||||||
};
|
};
|
||||||
27
libs/create-app/package.json
Normal file
27
libs/create-app/package.json
Normal 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"
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,32 +1,32 @@
|
|||||||
{
|
{
|
||||||
"name": "cli",
|
"name": "create-app",
|
||||||
"$schema": "../../node_modules/nx/schemas/project-schema.json",
|
"$schema": "../../node_modules/nx/schemas/project-schema.json",
|
||||||
"sourceRoot": "libs/cli/src",
|
"sourceRoot": "libs/create-app/src",
|
||||||
"projectType": "library",
|
"projectType": "library",
|
||||||
"targets": {
|
"targets": {
|
||||||
"build": {
|
"build": {
|
||||||
"executor": "@nx/js:tsc",
|
"executor": "@nx/js:tsc",
|
||||||
"outputs": ["{options.outputPath}"],
|
"outputs": ["{options.outputPath}"],
|
||||||
"options": {
|
"options": {
|
||||||
"outputPath": "dist/libs/cli",
|
"outputPath": "dist/libs/create-app",
|
||||||
"tsConfig": "libs/cli/tsconfig.lib.json",
|
"tsConfig": "libs/create-app/tsconfig.lib.json",
|
||||||
"packageJson": "libs/cli/package.json",
|
"packageJson": "libs/create-app/package.json",
|
||||||
"main": "libs/cli/src/index.ts",
|
"main": "libs/create-app/src/index.ts",
|
||||||
"assets": ["LICENSE", "CODE_OF_CONDUCT.md", "libs/cli/README.md"]
|
"assets": ["LICENSE", "CODE_OF_CONDUCT.md", "libs/create-app/README.md"]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"lint": {
|
"lint": {
|
||||||
"executor": "@nx/linter:eslint",
|
"executor": "@nx/linter:eslint",
|
||||||
"outputs": ["{options.outputFile}"],
|
"outputs": ["{options.outputFile}"],
|
||||||
"options": {
|
"options": {
|
||||||
"lintFilePatterns": ["libs/cli/**/*.ts"]
|
"lintFilePatterns": ["libs/create-app/**/*.ts"]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"test": {
|
"test": {
|
||||||
"executor": "@nx/jest:jest",
|
"executor": "@nx/jest:jest",
|
||||||
"outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
|
"outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
|
||||||
"options": {
|
"options": {
|
||||||
"jestConfig": "libs/cli/jest.config.ts",
|
"jestConfig": "libs/create-app/jest.config.ts",
|
||||||
"passWithNoTests": true
|
"passWithNoTests": true
|
||||||
},
|
},
|
||||||
"configurations": {
|
"configurations": {
|
||||||
@ -1,15 +1,15 @@
|
|||||||
#!/usr/bin/env node
|
#!/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 { input } from '@inquirer/prompts';
|
||||||
|
import select from '@inquirer/select';
|
||||||
|
import chalk from 'chalk';
|
||||||
|
import childProcess from 'child_process';
|
||||||
import { Command } from 'commander';
|
import { Command } from 'commander';
|
||||||
import { execa, execaCommand } from 'execa';
|
import { execa, execaCommand } from 'execa';
|
||||||
|
import fs from 'fs';
|
||||||
import open from 'open';
|
import open from 'open';
|
||||||
|
import ora from 'ora';
|
||||||
|
import path from 'path';
|
||||||
|
|
||||||
const program = new Command();
|
const program = new Command();
|
||||||
const log = console.log;
|
const log = console.log;
|
||||||
@ -25,8 +25,8 @@ async function main() {
|
|||||||
const kebabRegez = /^([a-z]+)(-[a-z0-9]+)*$/;
|
const kebabRegez = /^([a-z]+)(-[a-z0-9]+)*$/;
|
||||||
|
|
||||||
program
|
program
|
||||||
.name('Fal.ai App Generator')
|
.name('The fal.ai App Generator')
|
||||||
.description('Generate full stack AI apps integrated with Fal.ai.');
|
.description('Generate full stack AI apps integrated with fal.ai');
|
||||||
|
|
||||||
program.parse(process.argv);
|
program.parse(process.argv);
|
||||||
|
|
||||||
@ -47,7 +47,7 @@ async function main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const hasFalEnv = await select({
|
const hasFalEnv = await select({
|
||||||
message: 'Do you have a Fal.ai API key?',
|
message: 'Do you have a fal.ai API key?',
|
||||||
choices: [
|
choices: [
|
||||||
{
|
{
|
||||||
name: 'Yes',
|
name: 'Yes',
|
||||||
@ -66,10 +66,10 @@ async function main() {
|
|||||||
|
|
||||||
const fal_api_key = await input({ message: 'Fal AI API Key' });
|
const fal_api_key = await input({ message: 'Fal AI API Key' });
|
||||||
|
|
||||||
let envs = `
|
const envs = `
|
||||||
# environment, either PRODUCTION or DEVELOPMENT
|
# environment, either PRODUCTION or DEVELOPMENT
|
||||||
ENVIRONMENT="PRODUCTION"
|
ENVIRONMENT="PRODUCTION"
|
||||||
|
|
||||||
# FAL AI API Key
|
# FAL AI API Key
|
||||||
FAL_KEY="${fal_api_key}"
|
FAL_KEY="${fal_api_key}"
|
||||||
`;
|
`;
|
||||||
@ -4,10 +4,10 @@
|
|||||||
"include": [],
|
"include": [],
|
||||||
"references": [
|
"references": [
|
||||||
{
|
{
|
||||||
"path": "./tsconfig.lib.json"
|
"path": "./tsconfig.lib.json",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "./tsconfig.spec.json"
|
"path": "./tsconfig.spec.json",
|
||||||
}
|
},
|
||||||
]
|
],
|
||||||
}
|
}
|
||||||
@ -11,10 +11,7 @@
|
|||||||
"outDir": "dist",
|
"outDir": "dist",
|
||||||
"baseUrl": ".",
|
"baseUrl": ".",
|
||||||
"paths": {
|
"paths": {
|
||||||
"*": [
|
"*": ["node_modules/*", "src/types/*"]
|
||||||
"node_modules/*",
|
|
||||||
"src/types/*"
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"exclude": ["jest.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts"],
|
"exclude": ["jest.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts"],
|
||||||
@ -4,7 +4,7 @@
|
|||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/fal-ai/serverless-js.git",
|
"url": "https://github.com/fal-ai/fal-js.git",
|
||||||
"directory": "libs/proxy"
|
"directory": "libs/proxy"
|
||||||
},
|
},
|
||||||
"keywords": [
|
"keywords": [
|
||||||
|
|||||||
@ -4,10 +4,10 @@
|
|||||||
"include": [],
|
"include": [],
|
||||||
"references": [
|
"references": [
|
||||||
{
|
{
|
||||||
"path": "./tsconfig.lib.json"
|
"path": "./tsconfig.lib.json",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "./tsconfig.spec.json"
|
"path": "./tsconfig.spec.json",
|
||||||
}
|
},
|
||||||
]
|
],
|
||||||
}
|
}
|
||||||
|
|||||||
3
nx.json
3
nx.json
@ -1,5 +1,6 @@
|
|||||||
{
|
{
|
||||||
"$schema": "./node_modules/nx/schemas/nx-schema.json",
|
"$schema": "./node_modules/nx/schemas/nx-schema.json",
|
||||||
|
"extends": "nx/presets/npm.json",
|
||||||
"tasksRunnerOptions": {
|
"tasksRunnerOptions": {
|
||||||
"default": {
|
"default": {
|
||||||
"runner": "nx-cloud",
|
"runner": "nx-cloud",
|
||||||
@ -50,5 +51,5 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"defaultProject": "demo-nextjs-page-router"
|
"defaultProject": "demo-nextjs-app-router"
|
||||||
}
|
}
|
||||||
|
|||||||
1933
package-lock.json
generated
1933
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"name": "@fal-ai/serverless",
|
"name": "@fal-ai/fal-js",
|
||||||
"version": "0.0.0",
|
"version": "0.0.0",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
@ -46,6 +46,8 @@
|
|||||||
"http-proxy-middleware": "^2.0.6",
|
"http-proxy-middleware": "^2.0.6",
|
||||||
"js-base64": "^3.7.5",
|
"js-base64": "^3.7.5",
|
||||||
"next": "^14.0.3",
|
"next": "^14.0.3",
|
||||||
|
"open": "^10.0.3",
|
||||||
|
"ora": "^8.0.1",
|
||||||
"react": "^18.2.0",
|
"react": "^18.2.0",
|
||||||
"react-dom": "^18.2.0",
|
"react-dom": "^18.2.0",
|
||||||
"regenerator-runtime": "0.13.7",
|
"regenerator-runtime": "0.13.7",
|
||||||
@ -108,7 +110,8 @@
|
|||||||
"nx-cloud": "16.4.0",
|
"nx-cloud": "16.4.0",
|
||||||
"organize-imports-cli": "^0.10.0",
|
"organize-imports-cli": "^0.10.0",
|
||||||
"postcss": "8.4.21",
|
"postcss": "8.4.21",
|
||||||
"prettier": "^2.6.2",
|
"prettier": "^3.2.4",
|
||||||
|
"prettier-plugin-organize-imports": "^3.2.4",
|
||||||
"secretlint": "^7.0.7",
|
"secretlint": "^7.0.7",
|
||||||
"tailwindcss": "3.2.7",
|
"tailwindcss": "3.2.7",
|
||||||
"ts-jest": "29.1.1",
|
"ts-jest": "29.1.1",
|
||||||
|
|||||||
@ -15,7 +15,7 @@
|
|||||||
"skipDefaultLibCheck": true,
|
"skipDefaultLibCheck": true,
|
||||||
"baseUrl": ".",
|
"baseUrl": ".",
|
||||||
"paths": {
|
"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-client": ["libs/client/src/index.ts"],
|
||||||
"@fal-ai/serverless-proxy": ["libs/proxy/src/index.ts"],
|
"@fal-ai/serverless-proxy": ["libs/proxy/src/index.ts"],
|
||||||
"@fal-ai/serverless-proxy/express": ["libs/proxy/src/express.ts"],
|
"@fal-ai/serverless-proxy/express": ["libs/proxy/src/express.ts"],
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user