onflyt-cli 1.0.1-beta.1 → 1.0.1-beta.3

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.

Potentially problematic release.


This version of onflyt-cli might be problematic. Click here for more details.

Files changed (85) hide show
  1. package/dist/App.d.ts +3 -0
  2. package/dist/App.js +8 -0
  3. package/dist/commands/credits.d.ts +3 -0
  4. package/dist/commands/credits.js +101 -0
  5. package/dist/commands/delete.d.ts +7 -0
  6. package/dist/commands/delete.js +220 -0
  7. package/dist/commands/deploy.d.ts +6 -0
  8. package/dist/commands/deploy.js +715 -0
  9. package/dist/commands/deployments.d.ts +6 -0
  10. package/dist/commands/deployments.js +225 -0
  11. package/dist/commands/help.d.ts +3 -0
  12. package/dist/commands/help.js +76 -0
  13. package/dist/commands/init.d.ts +11 -0
  14. package/dist/commands/init.js +422 -0
  15. package/dist/commands/login.d.ts +6 -0
  16. package/dist/commands/login.js +150 -0
  17. package/dist/commands/logout.d.ts +3 -0
  18. package/dist/commands/logout.js +19 -0
  19. package/dist/commands/logs.d.ts +7 -0
  20. package/dist/commands/logs.js +307 -0
  21. package/dist/commands/projects.d.ts +3 -0
  22. package/dist/commands/projects.js +203 -0
  23. package/dist/commands/rollback.d.ts +6 -0
  24. package/dist/commands/rollback.js +316 -0
  25. package/dist/commands/teams.d.ts +3 -0
  26. package/dist/commands/teams.js +81 -0
  27. package/dist/commands/whoami.d.ts +3 -0
  28. package/dist/commands/whoami.js +34 -0
  29. package/dist/components/Loading.d.ts +13 -0
  30. package/dist/components/Loading.js +42 -0
  31. package/dist/index.d.ts +1 -0
  32. package/dist/index.js +107 -442
  33. package/dist/lib/api.d.ts +27 -0
  34. package/dist/lib/api.js +109 -0
  35. package/dist/lib/config.d.ts +32 -0
  36. package/dist/lib/config.js +52 -0
  37. package/dist/lib/deploy-api.d.ts +97 -0
  38. package/dist/lib/deploy-api.js +335 -0
  39. package/dist/lib/deploy.d.ts +36 -0
  40. package/dist/lib/deploy.js +181 -0
  41. package/dist/lib/framework.d.ts +27 -0
  42. package/dist/lib/framework.js +184 -0
  43. package/dist/lib/git.d.ts +25 -0
  44. package/dist/lib/git.js +149 -0
  45. package/dist/lib/scaffold.d.ts +21 -0
  46. package/dist/lib/scaffold.js +190 -0
  47. package/dist/shared/frameworks/registry.d.ts +21 -0
  48. package/dist/shared/frameworks/registry.js +196 -0
  49. package/dist/shared/index.d.ts +4 -0
  50. package/dist/shared/index.js +4 -0
  51. package/dist/shared/limits.d.ts +16 -0
  52. package/dist/shared/limits.js +44 -0
  53. package/dist/shared/pricing.d.ts +2 -0
  54. package/dist/shared/pricing.js +7 -0
  55. package/dist/shared/templates/registry.d.ts +9 -0
  56. package/dist/shared/templates/registry.js +47 -0
  57. package/onflyt.json +10 -0
  58. package/package.json +5 -7
  59. package/src/App.tsx +13 -0
  60. package/src/commands/credits.tsx +151 -0
  61. package/src/commands/delete.tsx +315 -0
  62. package/src/commands/deploy.tsx +1039 -0
  63. package/src/commands/deployments.tsx +331 -0
  64. package/src/commands/help.tsx +79 -0
  65. package/src/commands/init.tsx +587 -0
  66. package/src/commands/login.tsx +207 -0
  67. package/src/commands/logout.tsx +31 -0
  68. package/src/commands/logs.tsx +447 -0
  69. package/src/commands/projects.tsx +287 -0
  70. package/src/commands/rollback.tsx +455 -0
  71. package/src/commands/teams.tsx +113 -0
  72. package/src/commands/whoami.tsx +48 -0
  73. package/src/components/Loading.tsx +74 -0
  74. package/src/index.tsx +130 -0
  75. package/src/lib/api.ts +152 -0
  76. package/src/lib/config.ts +90 -0
  77. package/src/lib/deploy-api.ts +511 -0
  78. package/src/lib/deploy.ts +260 -0
  79. package/src/lib/framework.ts +227 -0
  80. package/src/lib/git.ts +179 -0
  81. package/src/lib/scaffold.ts +225 -0
  82. package/src/lib/shared.ts +350 -0
  83. package/src/types.d.ts +5 -0
  84. package/tsconfig.json +17 -0
  85. package/README.md +0 -338
package/dist/index.js CHANGED
@@ -1680,15 +1680,6 @@ var require_cli_spinners = __commonJS({
1680
1680
  import { homedir } from "os";
1681
1681
  import { join } from "path";
1682
1682
  import { readFileSync as readFileSync2, writeFileSync, existsSync, mkdirSync } from "fs";
1683
- function decodeApiUrl() {
1684
- const envUrl = process.env.ONFLYT_API_URL;
1685
- if (envUrl) return envUrl;
1686
- try {
1687
- return Buffer.from(ENCODED_API_URL, "base64").toString("utf-8");
1688
- } catch {
1689
- return DEFAULT_API_URL;
1690
- }
1691
- }
1692
1683
  function getConfig() {
1693
1684
  try {
1694
1685
  if (existsSync(CONFIG_FILE)) {
@@ -1714,16 +1705,14 @@ function hasProjectConfig(cwd = process.cwd()) {
1714
1705
  const configPath = join(cwd, PROJECT_CONFIG_FILE);
1715
1706
  return existsSync(configPath);
1716
1707
  }
1717
- var CONFIG_DIR, CONFIG_FILE, PROJECT_CONFIG_FILE, DEFAULT_API_URL, ENCODED_API_URL, API_URL;
1708
+ var CONFIG_DIR, CONFIG_FILE, PROJECT_CONFIG_FILE, API_URL;
1718
1709
  var init_config = __esm({
1719
1710
  "src/lib/config.ts"() {
1720
1711
  "use strict";
1721
1712
  CONFIG_DIR = join(homedir(), ".onflyt");
1722
1713
  CONFIG_FILE = join(CONFIG_DIR, "config.json");
1723
1714
  PROJECT_CONFIG_FILE = "onflyt.json";
1724
- DEFAULT_API_URL = "https://deploy-api.miiglu.com";
1725
- ENCODED_API_URL = "aHR0cHM6Ly9kZXBsb3ktYXBpLm1paWdsdS5jb20=";
1726
- API_URL = decodeApiUrl();
1715
+ API_URL = process.env.ONFLYT_API_URL || "";
1727
1716
  }
1728
1717
  });
1729
1718
 
@@ -1844,16 +1833,30 @@ var init_api = __esm({
1844
1833
  }
1845
1834
  });
1846
1835
 
1847
- // ../../packages/shared/dist/frameworks/registry.js
1836
+ // src/lib/shared.ts
1837
+ function getLimitsBySpend(totalSpend) {
1838
+ if (totalSpend >= SPEND_THRESHOLDS.high) return TIER_LIMITS.high;
1839
+ if (totalSpend >= SPEND_THRESHOLDS.medium) return TIER_LIMITS.medium;
1840
+ if (totalSpend >= SPEND_THRESHOLDS.low) return TIER_LIMITS.low;
1841
+ return TIER_LIMITS.free;
1842
+ }
1843
+ function getTierLabel(totalSpend) {
1844
+ return getLimitsBySpend(totalSpend).tierLabel;
1845
+ }
1848
1846
  function getDefaultBuildCommand(frameworkId) {
1849
1847
  return FRAMEWORKS[frameworkId.toLowerCase()]?.defaults.buildCommand;
1850
1848
  }
1849
+ function getDefaultOutputDirectory(frameworkId) {
1850
+ return FRAMEWORKS[frameworkId.toLowerCase()]?.defaults.outputDirectory;
1851
+ }
1852
+ function getDefaultStartCommand(frameworkId) {
1853
+ return FRAMEWORKS[frameworkId.toLowerCase()]?.defaults.startCommand;
1854
+ }
1851
1855
  function getInstallCommand(frameworkId, packageManager) {
1852
1856
  const pm = packageManager.toLowerCase();
1853
1857
  const framework = FRAMEWORKS[frameworkId.toLowerCase()];
1854
1858
  if (pm === "pip" || pm === "poetry") {
1855
- if (pm === "poetry")
1856
- return "poetry install";
1859
+ if (pm === "poetry") return "poetry install";
1857
1860
  return framework?.defaults.installCommand || "pip install -r requirements.txt";
1858
1861
  }
1859
1862
  const installCommands = {
@@ -1864,20 +1867,50 @@ function getInstallCommand(frameworkId, packageManager) {
1864
1867
  };
1865
1868
  return installCommands[pm] || `${pm} install`;
1866
1869
  }
1867
- function getDefaultOutputDirectory(frameworkId) {
1868
- return FRAMEWORKS[frameworkId.toLowerCase()]?.defaults.outputDirectory;
1869
- }
1870
- function getDefaultStartCommand(frameworkId) {
1871
- return FRAMEWORKS[frameworkId.toLowerCase()]?.defaults.startCommand;
1872
- }
1873
- var FRAMEWORKS;
1874
- var init_registry = __esm({
1875
- "../../packages/shared/dist/frameworks/registry.js"() {
1870
+ var TIER_HOURLY_PRICE, SPEND_THRESHOLDS, TIER_LIMITS, FRAMEWORKS, TEMPLATES;
1871
+ var init_shared = __esm({
1872
+ "src/lib/shared.ts"() {
1876
1873
  "use strict";
1874
+ TIER_HOURLY_PRICE = {
1875
+ micro: 0,
1876
+ lite: 0.015,
1877
+ standard: 0.05,
1878
+ pro: 0.08,
1879
+ business: 0.12
1880
+ };
1881
+ SPEND_THRESHOLDS = {
1882
+ free: 0,
1883
+ low: 10,
1884
+ medium: 50,
1885
+ high: 200
1886
+ };
1887
+ TIER_LIMITS = {
1888
+ free: {
1889
+ maxProjects: 3,
1890
+ maxInstancesPerProject: 1,
1891
+ tier: "free",
1892
+ tierLabel: "Free Usage"
1893
+ },
1894
+ low: {
1895
+ maxProjects: 10,
1896
+ maxInstancesPerProject: 2,
1897
+ tier: "low",
1898
+ tierLabel: "Low Spend"
1899
+ },
1900
+ medium: {
1901
+ maxProjects: Infinity,
1902
+ maxInstancesPerProject: 4,
1903
+ tier: "medium",
1904
+ tierLabel: "Medium Spend"
1905
+ },
1906
+ high: {
1907
+ maxProjects: Infinity,
1908
+ maxInstancesPerProject: 10,
1909
+ tier: "high",
1910
+ tierLabel: "High Spend"
1911
+ }
1912
+ };
1877
1913
  FRAMEWORKS = {
1878
- // ============================================
1879
- // Node.js Frameworks
1880
- // ============================================
1881
1914
  nextjs: {
1882
1915
  label: "Next.js",
1883
1916
  family: "node",
@@ -1887,13 +1920,7 @@ var init_registry = __esm({
1887
1920
  installCommand: "bun install",
1888
1921
  outputDirectory: ".next"
1889
1922
  },
1890
- isServer: true,
1891
- emoji: "\u25B2",
1892
- color: {
1893
- text: "text-black dark:text-white",
1894
- bg: "bg-black dark:bg-white",
1895
- border: "border-black dark:border-white"
1896
- }
1923
+ isServer: true
1897
1924
  },
1898
1925
  remix: {
1899
1926
  label: "Remix",
@@ -1904,13 +1931,7 @@ var init_registry = __esm({
1904
1931
  installCommand: "bun install",
1905
1932
  outputDirectory: "build"
1906
1933
  },
1907
- isServer: true,
1908
- emoji: "\u26A1",
1909
- color: {
1910
- text: "text-indigo-500",
1911
- bg: "bg-indigo-500/10",
1912
- border: "border-indigo-500/20"
1913
- }
1934
+ isServer: true
1914
1935
  },
1915
1936
  react: {
1916
1937
  label: "React",
@@ -1921,16 +1942,10 @@ var init_registry = __esm({
1921
1942
  installCommand: "bun install",
1922
1943
  outputDirectory: "build"
1923
1944
  },
1924
- isServer: false,
1925
- emoji: "\u269B\uFE0F",
1926
- color: {
1927
- text: "text-cyan-500",
1928
- bg: "bg-cyan-500/10",
1929
- border: "border-cyan-500/20"
1930
- }
1945
+ isServer: false
1931
1946
  },
1932
- vue: {
1933
- label: "Vue.js",
1947
+ vite: {
1948
+ label: "Vite",
1934
1949
  family: "node",
1935
1950
  deploymentType: "static",
1936
1951
  defaults: {
@@ -1938,13 +1953,7 @@ var init_registry = __esm({
1938
1953
  installCommand: "bun install",
1939
1954
  outputDirectory: "dist"
1940
1955
  },
1941
- isServer: false,
1942
- emoji: "\u{1F49A}",
1943
- color: {
1944
- text: "text-emerald-500",
1945
- bg: "bg-emerald-500/10",
1946
- border: "border-emerald-500/20"
1947
- }
1956
+ isServer: false
1948
1957
  },
1949
1958
  nuxt: {
1950
1959
  label: "Nuxt",
@@ -1955,13 +1964,7 @@ var init_registry = __esm({
1955
1964
  installCommand: "bun install",
1956
1965
  outputDirectory: ".output"
1957
1966
  },
1958
- isServer: true,
1959
- emoji: "\u{1F49A}",
1960
- color: {
1961
- text: "text-emerald-600",
1962
- bg: "bg-emerald-600/10",
1963
- border: "border-emerald-600/20"
1964
- }
1967
+ isServer: true
1965
1968
  },
1966
1969
  svelte: {
1967
1970
  label: "Svelte",
@@ -1972,68 +1975,22 @@ var init_registry = __esm({
1972
1975
  installCommand: "bun install",
1973
1976
  outputDirectory: "build"
1974
1977
  },
1975
- isServer: false,
1976
- emoji: "\u{1F9E1}",
1977
- color: {
1978
- text: "text-orange-500",
1979
- bg: "bg-orange-500/10",
1980
- border: "border-orange-500/20"
1981
- }
1982
- },
1983
- angular: {
1984
- label: "Angular",
1985
- family: "node",
1986
- deploymentType: "static",
1987
- defaults: {
1988
- buildCommand: "ng build",
1989
- installCommand: "bun install",
1990
- outputDirectory: "dist"
1991
- },
1992
- isServer: false,
1993
- emoji: "\u{1F170}\uFE0F",
1994
- color: {
1995
- text: "text-red-600",
1996
- bg: "bg-red-600/10",
1997
- border: "border-red-600/20"
1998
- }
1999
- },
2000
- vite: {
2001
- label: "Vite",
2002
- family: "node",
2003
- deploymentType: "static",
2004
- defaults: {
2005
- buildCommand: "npm run build",
2006
- installCommand: "bun install",
2007
- outputDirectory: "dist"
2008
- },
2009
- isServer: false,
2010
- emoji: "\u26A1",
2011
- color: {
2012
- text: "text-purple-500",
2013
- bg: "bg-purple-500/10",
2014
- border: "border-purple-500/20"
2015
- }
1978
+ isServer: false
2016
1979
  },
2017
- nestjs: {
2018
- label: "NestJS",
1980
+ node: {
1981
+ label: "Node.js",
2019
1982
  family: "node",
2020
1983
  deploymentType: "container",
2021
1984
  defaults: {
2022
1985
  buildCommand: "npm run build",
2023
1986
  installCommand: "bun install",
2024
1987
  outputDirectory: "dist",
2025
- startCommand: "node dist/main.js"
1988
+ startCommand: "node dist/index.js"
2026
1989
  },
2027
- isServer: true,
2028
- emoji: "\u{1F985}",
2029
- color: {
2030
- text: "text-red-500",
2031
- bg: "bg-red-500/10",
2032
- border: "border-red-500/20"
2033
- }
1990
+ isServer: true
2034
1991
  },
2035
- node: {
2036
- label: "Node.js",
1992
+ express: {
1993
+ label: "Express",
2037
1994
  family: "node",
2038
1995
  deploymentType: "container",
2039
1996
  defaults: {
@@ -2042,16 +1999,10 @@ var init_registry = __esm({
2042
1999
  outputDirectory: "dist",
2043
2000
  startCommand: "node dist/index.js"
2044
2001
  },
2045
- isServer: true,
2046
- emoji: "\u{1F7E2}",
2047
- color: {
2048
- text: "text-green-500",
2049
- bg: "bg-green-500/10",
2050
- border: "border-green-500/20"
2051
- }
2002
+ isServer: true
2052
2003
  },
2053
- express: {
2054
- label: "Express",
2004
+ hono: {
2005
+ label: "Hono",
2055
2006
  family: "node",
2056
2007
  deploymentType: "container",
2057
2008
  defaults: {
@@ -2060,31 +2011,19 @@ var init_registry = __esm({
2060
2011
  outputDirectory: "dist",
2061
2012
  startCommand: "node dist/index.js"
2062
2013
  },
2063
- isServer: true,
2064
- emoji: "\u{1F682}",
2065
- color: {
2066
- text: "text-neutral-500",
2067
- bg: "bg-neutral-500/10",
2068
- border: "border-neutral-500/20"
2069
- }
2014
+ isServer: true
2070
2015
  },
2071
- hono: {
2072
- label: "Hono",
2016
+ nestjs: {
2017
+ label: "NestJS",
2073
2018
  family: "node",
2074
2019
  deploymentType: "container",
2075
2020
  defaults: {
2076
2021
  buildCommand: "npm run build",
2077
2022
  installCommand: "bun install",
2078
2023
  outputDirectory: "dist",
2079
- startCommand: "node dist/index.js"
2024
+ startCommand: "node dist/main.js"
2080
2025
  },
2081
- isServer: true,
2082
- emoji: "\u{1F525}",
2083
- color: {
2084
- text: "text-orange-500",
2085
- bg: "bg-orange-500/10",
2086
- border: "border-orange-500/20"
2087
- }
2026
+ isServer: true
2088
2027
  },
2089
2028
  astro: {
2090
2029
  label: "Astro",
@@ -2095,13 +2034,7 @@ var init_registry = __esm({
2095
2034
  installCommand: "bun install",
2096
2035
  outputDirectory: "dist"
2097
2036
  },
2098
- isServer: false,
2099
- emoji: "\u{1F680}",
2100
- color: {
2101
- text: "text-purple-600",
2102
- bg: "bg-purple-600/10",
2103
- border: "border-purple-600/20"
2104
- }
2037
+ isServer: false
2105
2038
  },
2106
2039
  static: {
2107
2040
  label: "Static Site",
@@ -2112,17 +2045,8 @@ var init_registry = __esm({
2112
2045
  installCommand: "",
2113
2046
  outputDirectory: "."
2114
2047
  },
2115
- isServer: false,
2116
- emoji: "\u{1F4C4}",
2117
- color: {
2118
- text: "text-neutral-500",
2119
- bg: "bg-neutral-500/10",
2120
- border: "border-neutral-500/20"
2121
- }
2048
+ isServer: false
2122
2049
  },
2123
- // ============================================
2124
- // Python Frameworks
2125
- // ============================================
2126
2050
  fastapi: {
2127
2051
  label: "FastAPI",
2128
2052
  family: "nixpacks",
@@ -2131,13 +2055,7 @@ var init_registry = __esm({
2131
2055
  buildCommand: "uv pip install --python 3.11 -r requirements.txt",
2132
2056
  startCommand: "uvicorn main:app --host 0.0.0.0 --port 8080"
2133
2057
  },
2134
- isServer: true,
2135
- emoji: "\u26A1",
2136
- color: {
2137
- text: "text-green-500",
2138
- bg: "bg-green-500/10",
2139
- border: "border-green-500/20"
2140
- }
2058
+ isServer: true
2141
2059
  },
2142
2060
  flask: {
2143
2061
  label: "Flask",
@@ -2147,13 +2065,7 @@ var init_registry = __esm({
2147
2065
  buildCommand: "uv pip install --python 3.11 -r requirements.txt",
2148
2066
  startCommand: "flask run --host 0.0.0.0 --port 8080"
2149
2067
  },
2150
- isServer: true,
2151
- emoji: "\u{1F336}\uFE0F",
2152
- color: {
2153
- text: "text-gray-600",
2154
- bg: "bg-gray-500/10",
2155
- border: "border-gray-500/20"
2156
- }
2068
+ isServer: true
2157
2069
  },
2158
2070
  django: {
2159
2071
  label: "Django",
@@ -2163,303 +2075,56 @@ var init_registry = __esm({
2163
2075
  buildCommand: "uv pip install --python 3.11 -r requirements.txt",
2164
2076
  startCommand: "python3 manage.py runserver 0.0.0.0:8080"
2165
2077
  },
2166
- isServer: true,
2167
- emoji: "\u{1F3B8}",
2168
- color: {
2169
- text: "text-green-700",
2170
- bg: "bg-green-700/10",
2171
- border: "border-green-700/20"
2172
- }
2173
- },
2174
- go: {
2175
- label: "Go",
2176
- family: "nixpacks",
2177
- deploymentType: "container",
2178
- defaults: {
2179
- buildCommand: "go mod download && go build -o server .",
2180
- startCommand: "./server"
2181
- },
2182
- isServer: true,
2183
- emoji: "\u{1F439}",
2184
- color: {
2185
- text: "text-cyan-600",
2186
- bg: "bg-cyan-600/10",
2187
- border: "border-cyan-600/20"
2188
- },
2189
- available: false
2190
- },
2191
- rust: {
2192
- label: "Rust",
2193
- family: "nixpacks",
2194
- deploymentType: "container",
2195
- defaults: {
2196
- buildCommand: "cargo build --release",
2197
- startCommand: "./target/release/app"
2198
- },
2199
- isServer: true,
2200
- emoji: "\u{1F980}",
2201
- color: {
2202
- text: "text-orange-600",
2203
- bg: "bg-orange-600/10",
2204
- border: "border-orange-600/20"
2205
- },
2206
- available: false
2207
- },
2208
- php: {
2209
- label: "PHP",
2210
- family: "nixpacks",
2211
- deploymentType: "container",
2212
- defaults: {
2213
- startCommand: "php -S 0.0.0.0:8080"
2214
- },
2215
- isServer: true,
2216
- emoji: "\u{1F418}",
2217
- color: {
2218
- text: "text-indigo-600",
2219
- bg: "bg-indigo-600/10",
2220
- border: "border-indigo-600/20"
2221
- },
2222
- available: false
2223
- },
2224
- docker: {
2225
- label: "Docker",
2226
- family: "nixpacks",
2227
- deploymentType: "container",
2228
- defaults: {},
2229
- isServer: true,
2230
- emoji: "\u{1F433}",
2231
- color: {
2232
- text: "text-blue-600",
2233
- bg: "bg-blue-600/10",
2234
- border: "border-blue-600/20"
2235
- },
2236
- available: false
2078
+ isServer: true
2237
2079
  }
2238
2080
  };
2239
- }
2240
- });
2241
-
2242
- // ../../packages/shared/dist/templates/registry.js
2243
- var TEMPLATES;
2244
- var init_registry2 = __esm({
2245
- "../../packages/shared/dist/templates/registry.js"() {
2246
- "use strict";
2247
2081
  TEMPLATES = [
2248
2082
  {
2249
2083
  id: "blank",
2250
2084
  name: "Blank",
2251
2085
  description: "Minimal project setup",
2252
2086
  repoUrl: "https://github.com/onflyt/blank",
2253
- framework: "static",
2254
- supportedPackageManagers: ["npm", "yarn", "pnpm"]
2087
+ framework: "static"
2255
2088
  },
2256
2089
  {
2257
2090
  id: "nextjs",
2258
2091
  name: "Next.js Starter",
2259
2092
  description: "Next.js with App Router",
2260
2093
  repoUrl: "https://github.com/onflyt/nextjs-starter",
2261
- framework: "nextjs",
2262
- supportedPackageManagers: ["npm", "yarn", "pnpm"]
2263
- },
2264
- {
2265
- id: "nextjs-tailwind",
2266
- name: "Next.js + Tailwind",
2267
- description: "Next.js with Tailwind CSS",
2268
- repoUrl: "https://github.com/onflyt/nextjs-tailwind",
2269
- framework: "nextjs",
2270
- supportedPackageManagers: ["npm", "yarn", "pnpm"]
2094
+ framework: "nextjs"
2271
2095
  },
2272
2096
  {
2273
2097
  id: "react-vite",
2274
2098
  name: "React + Vite",
2275
2099
  description: "React with Vite bundler",
2276
2100
  repoUrl: "https://github.com/onflyt/react-vite",
2277
- framework: "react",
2278
- supportedPackageManagers: ["npm", "yarn", "pnpm"]
2101
+ framework: "react"
2279
2102
  },
2280
2103
  {
2281
2104
  id: "node-api",
2282
2105
  name: "Node.js API",
2283
2106
  description: "Express/Fastify REST API",
2284
2107
  repoUrl: "https://github.com/onflyt/node-api",
2285
- framework: "node",
2286
- supportedPackageManagers: ["npm", "yarn", "pnpm"]
2108
+ framework: "node"
2287
2109
  },
2288
2110
  {
2289
2111
  id: "fastapi",
2290
2112
  name: "FastAPI",
2291
2113
  description: "Python FastAPI backend",
2292
2114
  repoUrl: "https://github.com/onflyt/fastapi-starter",
2293
- framework: "fastapi",
2294
- supportedPackageManagers: ["pip", "poetry"]
2115
+ framework: "fastapi"
2295
2116
  },
2296
2117
  {
2297
2118
  id: "ai-agent",
2298
2119
  name: "AI Agent",
2299
2120
  description: "AI Agent starter with OpenAI",
2300
2121
  repoUrl: "https://github.com/onflyt/ai-agent",
2301
- framework: "python",
2302
- supportedPackageManagers: ["pip", "poetry"]
2122
+ framework: "python"
2303
2123
  }
2304
2124
  ];
2305
2125
  }
2306
2126
  });
2307
2127
 
2308
- // ../../packages/shared/dist/pricing.js
2309
- var TIER_HOURLY_PRICE;
2310
- var init_pricing = __esm({
2311
- "../../packages/shared/dist/pricing.js"() {
2312
- "use strict";
2313
- TIER_HOURLY_PRICE = {
2314
- micro: 0,
2315
- // Free tier (10hr/day limit)
2316
- lite: 0.015,
2317
- // Paid entry level
2318
- standard: 0.05,
2319
- // Profit margin
2320
- pro: 0.08,
2321
- // Profit margin
2322
- business: 0.12
2323
- // Profit margin
2324
- };
2325
- }
2326
- });
2327
-
2328
- // ../../packages/shared/dist/logging.js
2329
- var init_logging = __esm({
2330
- "../../packages/shared/dist/logging.js"() {
2331
- "use strict";
2332
- }
2333
- });
2334
-
2335
- // ../../packages/shared/dist/limits.js
2336
- function getLimitsBySpend(totalSpend) {
2337
- if (totalSpend >= SPEND_THRESHOLDS.high)
2338
- return TIER_LIMITS.high;
2339
- if (totalSpend >= SPEND_THRESHOLDS.medium)
2340
- return TIER_LIMITS.medium;
2341
- if (totalSpend >= SPEND_THRESHOLDS.low)
2342
- return TIER_LIMITS.low;
2343
- return TIER_LIMITS.free;
2344
- }
2345
- function getTierLabel(totalSpend) {
2346
- return getLimitsBySpend(totalSpend).tierLabel;
2347
- }
2348
- var SPEND_THRESHOLDS, TIER_LIMITS;
2349
- var init_limits = __esm({
2350
- "../../packages/shared/dist/limits.js"() {
2351
- "use strict";
2352
- SPEND_THRESHOLDS = {
2353
- free: 0,
2354
- low: 10,
2355
- medium: 50,
2356
- high: 200
2357
- };
2358
- TIER_LIMITS = {
2359
- free: {
2360
- // Core
2361
- maxProjects: 3,
2362
- maxInstancesPerProject: 1,
2363
- maxBuildMinutes: 10,
2364
- logRetentionDays: 1,
2365
- tier: "free",
2366
- tierLabel: "Free Usage",
2367
- // Resources
2368
- maxEnvVars: 5,
2369
- maxTeamMembers: 1,
2370
- maxCustomDomains: 0,
2371
- // Features
2372
- enablePreviewDeployments: false,
2373
- enableAutoScaling: false,
2374
- enableLogStreaming: false,
2375
- enableMetrics: false,
2376
- // Rate
2377
- apiRateLimit: 60
2378
- },
2379
- low: {
2380
- // Core
2381
- maxProjects: 10,
2382
- maxInstancesPerProject: 2,
2383
- maxBuildMinutes: 20,
2384
- logRetentionDays: 3,
2385
- tier: "low",
2386
- tierLabel: "Low Spend",
2387
- // Resources
2388
- maxEnvVars: 15,
2389
- maxTeamMembers: 3,
2390
- maxCustomDomains: 1,
2391
- // Features
2392
- enablePreviewDeployments: true,
2393
- enableAutoScaling: false,
2394
- enableLogStreaming: true,
2395
- enableMetrics: true,
2396
- // Rate
2397
- apiRateLimit: 120
2398
- },
2399
- medium: {
2400
- // Core
2401
- maxProjects: Infinity,
2402
- maxInstancesPerProject: 4,
2403
- maxBuildMinutes: 30,
2404
- logRetentionDays: 14,
2405
- tier: "medium",
2406
- tierLabel: "Medium Spend",
2407
- // Resources
2408
- maxEnvVars: 50,
2409
- maxTeamMembers: 10,
2410
- maxCustomDomains: 5,
2411
- // Features
2412
- enablePreviewDeployments: true,
2413
- enableAutoScaling: true,
2414
- enableLogStreaming: true,
2415
- enableMetrics: true,
2416
- // Rate
2417
- apiRateLimit: 300
2418
- },
2419
- high: {
2420
- // Core
2421
- maxProjects: Infinity,
2422
- maxInstancesPerProject: 10,
2423
- maxBuildMinutes: 60,
2424
- logRetentionDays: 30,
2425
- tier: "high",
2426
- tierLabel: "High Spend",
2427
- // Resources
2428
- maxEnvVars: Infinity,
2429
- maxTeamMembers: Infinity,
2430
- maxCustomDomains: Infinity,
2431
- // Features
2432
- enablePreviewDeployments: true,
2433
- enableAutoScaling: true,
2434
- enableLogStreaming: true,
2435
- enableMetrics: true,
2436
- // Rate
2437
- apiRateLimit: 1e3
2438
- }
2439
- };
2440
- }
2441
- });
2442
-
2443
- // ../../packages/shared/dist/notification-events.js
2444
- var init_notification_events = __esm({
2445
- "../../packages/shared/dist/notification-events.js"() {
2446
- "use strict";
2447
- }
2448
- });
2449
-
2450
- // ../../packages/shared/dist/index.js
2451
- var init_dist = __esm({
2452
- "../../packages/shared/dist/index.js"() {
2453
- "use strict";
2454
- init_registry();
2455
- init_registry2();
2456
- init_pricing();
2457
- init_logging();
2458
- init_limits();
2459
- init_notification_events();
2460
- }
2461
- });
2462
-
2463
2128
  // src/lib/deploy-api.ts
2464
2129
  var deploy_api_exports = {};
2465
2130
  __export(deploy_api_exports, {
@@ -2727,9 +2392,9 @@ var init_deploy_api = __esm({
2727
2392
  "use strict";
2728
2393
  init_api();
2729
2394
  init_config();
2730
- init_dist();
2731
- init_dist();
2732
- init_dist();
2395
+ init_shared();
2396
+ init_shared();
2397
+ init_shared();
2733
2398
  INSTANCE_OPTIONS = [
2734
2399
  {
2735
2400
  id: "micro",
@@ -10229,7 +9894,7 @@ var Help = () => {
10229
9894
  \x1B[38;2;255;191;0m
10230
9895
  \u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557
10231
9896
  \u2551 \u25E1 \uFF2F\uFF2E\uFF26\uFF2C\uFF39\uFF34 \u2551
10232
- \u2551 Deploy CLI v1.0.1-beta.1 \u2551
9897
+ \u2551 Deploy CLI v1.0.1-beta.3 \u2551
10233
9898
  \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255D
10234
9899
  \x1B[0m
10235
9900
 
@@ -10303,7 +9968,7 @@ var help_default = Help;
10303
9968
  import React4 from "react";
10304
9969
  import { Text as Text3, Box as Box2 } from "ink";
10305
9970
 
10306
- // ../../node_modules/.pnpm/ink-spinner@5.0.0_ink@6.8.0_@types+react@19.2.7_react@19.2.3__react@19.2.3/node_modules/ink-spinner/build/index.js
9971
+ // ../../node_modules/.pnpm/ink-spinner@5.0.0_ink@6.8.0_@types+react@19.2.14_react@19.2.4__react@19.2.4/node_modules/ink-spinner/build/index.js
10307
9972
  var import_cli_spinners = __toESM(require_cli_spinners(), 1);
10308
9973
  import React2, { useState, useEffect as useEffect2 } from "react";
10309
9974
  import { Text } from "ink";
@@ -10958,7 +10623,7 @@ var bigText = (str) => {
10958
10623
  return c;
10959
10624
  }).join("");
10960
10625
  };
10961
- var Logo = () => /* @__PURE__ */ React3.createElement(Box, { flexDirection: "column" }, /* @__PURE__ */ React3.createElement(Box, { alignItems: "center" }, /* @__PURE__ */ React3.createElement(Box, { flexDirection: "column", marginRight: 0.5 }, /* @__PURE__ */ React3.createElement(Text2, { color: "rgb(255,191,0)" }, " \u2B21 ")), /* @__PURE__ */ React3.createElement(Text2, { bold: true, color: "rgb(255,191,0)" }, bigText("Onflyt")), /* @__PURE__ */ React3.createElement(Text2, null, " "), /* @__PURE__ */ React3.createElement(Text2, { bold: true, color: "black", backgroundColor: "rgb(255,191,0)" }, " ", "v1.0.1-beta.1", " ")), /* @__PURE__ */ React3.createElement(Box, { marginTop: 1 }, /* @__PURE__ */ React3.createElement(Text2, { dimColor: true }, "\u2500".repeat(30))));
10626
+ var Logo = () => /* @__PURE__ */ React3.createElement(Box, { flexDirection: "column" }, /* @__PURE__ */ React3.createElement(Box, { alignItems: "center" }, /* @__PURE__ */ React3.createElement(Box, { flexDirection: "column", marginRight: 0.5 }, /* @__PURE__ */ React3.createElement(Text2, { color: "rgb(255,191,0)" }, " \u2B21 ")), /* @__PURE__ */ React3.createElement(Text2, { bold: true, color: "rgb(255,191,0)" }, bigText("Onflyt")), /* @__PURE__ */ React3.createElement(Text2, null, " "), /* @__PURE__ */ React3.createElement(Text2, { bold: true, color: "black", backgroundColor: "rgb(255,191,0)" }, " ", "v1.0.1-beta.3", " ")), /* @__PURE__ */ React3.createElement(Box, { marginTop: 1 }, /* @__PURE__ */ React3.createElement(Text2, { dimColor: true }, "\u2500".repeat(30))));
10962
10627
  var ErrorDisplay = ({ message }) => /* @__PURE__ */ React3.createElement(Box, { flexDirection: "column" }, /* @__PURE__ */ React3.createElement(Logo, null), /* @__PURE__ */ React3.createElement(Box, { marginTop: 1 }, /* @__PURE__ */ React3.createElement(Text2, { bold: true, color: "red" }, "\u2716 Error")), /* @__PURE__ */ React3.createElement(Box, { marginTop: 1 }, /* @__PURE__ */ React3.createElement(Text2, { color: "red" }, message)));
10963
10628
 
10964
10629
  // src/commands/login.tsx
@@ -11092,7 +10757,7 @@ init_config();
11092
10757
  init_api();
11093
10758
  import React7, { useEffect as useEffect3, useState as useState2 } from "react";
11094
10759
  import { Text as Text6, Box as Box5, useInput } from "ink";
11095
- init_dist();
10760
+ init_shared();
11096
10761
  var ProjectsList = () => {
11097
10762
  const [step, setStep] = useState2("loading");
11098
10763
  const [teams, setTeams] = useState2([]);
@@ -11355,8 +11020,8 @@ var GitDetector = class {
11355
11020
  };
11356
11021
 
11357
11022
  // src/lib/framework.ts
11358
- init_dist();
11359
- init_dist();
11023
+ init_shared();
11024
+ init_shared();
11360
11025
  import { existsSync as existsSync2, readFileSync as readFileSync3 } from "fs";
11361
11026
  import { join as join2 } from "path";
11362
11027
  var FRAMEWORK_LIST = Object.entries(FRAMEWORKS).map(
@@ -11540,7 +11205,7 @@ function initGitRepo(cwd, remoteUrl) {
11540
11205
  }
11541
11206
 
11542
11207
  // src/commands/init.tsx
11543
- init_dist();
11208
+ init_shared();
11544
11209
  var FRAMEWORK_LIST2 = Object.entries(FRAMEWORKS).map(([id, config]) => ({
11545
11210
  id,
11546
11211
  name: config.label
@@ -12028,7 +11693,7 @@ import React11, { useEffect as useEffect6, useState as useState5, useCallback }
12028
11693
  import { Box as Box7, Text as Text8, useInput as useInput3 } from "ink";
12029
11694
  import { readFileSync as readFileSync5, existsSync as existsSync5 } from "fs";
12030
11695
  init_deploy_api();
12031
- init_dist();
11696
+ init_shared();
12032
11697
  init_api();
12033
11698
  var Deploy = ({ teamFlag }) => {
12034
11699
  const [step, setStep] = useState5("loading");
@@ -13317,14 +12982,14 @@ import { render } from "ink";
13317
12982
  import React16 from "react";
13318
12983
  import { Text as Text13, Box as Box12 } from "ink";
13319
12984
  var App = () => {
13320
- return /* @__PURE__ */ React16.createElement(Box12, { flexDirection: "column" }, /* @__PURE__ */ React16.createElement(Text13, { bold: true }, "Onflyt CLI v1.0.1-beta.1"), /* @__PURE__ */ React16.createElement(Text13, null, "Type onflyt --help for available commands"));
12985
+ return /* @__PURE__ */ React16.createElement(Box12, { flexDirection: "column" }, /* @__PURE__ */ React16.createElement(Text13, { bold: true }, "Onflyt CLI v1.0.1-beta.3"), /* @__PURE__ */ React16.createElement(Text13, null, "Type onflyt --help for available commands"));
13321
12986
  };
13322
12987
  var App_default = App;
13323
12988
 
13324
12989
  // src/index.tsx
13325
12990
  var cli = meow(
13326
12991
  `
13327
- Onflyt CLI v1.0.1-beta.1
12992
+ Onflyt CLI v1.0.1-beta.3
13328
12993
 
13329
12994
  Usage
13330
12995
  $ onflyt <command>