vibingbase 0.12.41 → 0.12.43
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.
|
@@ -397,9 +397,9 @@ dependencies = [
|
|
|
397
397
|
|
|
398
398
|
[[package]]
|
|
399
399
|
name = "cc"
|
|
400
|
-
version = "1.2.
|
|
400
|
+
version = "1.2.51"
|
|
401
401
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
402
|
-
checksum = "
|
|
402
|
+
checksum = "7a0aeaff4ff1a90589618835a598e545176939b97874f7abc7851caa0618f203"
|
|
403
403
|
dependencies = [
|
|
404
404
|
"find-msvc-tools",
|
|
405
405
|
"shlex",
|
|
@@ -807,9 +807,9 @@ dependencies = [
|
|
|
807
807
|
|
|
808
808
|
[[package]]
|
|
809
809
|
name = "dtoa"
|
|
810
|
-
version = "1.0.
|
|
810
|
+
version = "1.0.11"
|
|
811
811
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
812
|
-
checksum = "
|
|
812
|
+
checksum = "4c3cf4824e2d5f025c7b531afcb2325364084a16806f6d47fbc1f5fbd9960590"
|
|
813
813
|
|
|
814
814
|
[[package]]
|
|
815
815
|
name = "dtoa-short"
|
|
@@ -966,9 +966,9 @@ dependencies = [
|
|
|
966
966
|
|
|
967
967
|
[[package]]
|
|
968
968
|
name = "find-msvc-tools"
|
|
969
|
-
version = "0.1.
|
|
969
|
+
version = "0.1.6"
|
|
970
970
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
971
|
-
checksum = "
|
|
971
|
+
checksum = "645cbb3a84e60b7531617d5ae4e57f7e27308f6445f5abf653209ea76dec8dff"
|
|
972
972
|
|
|
973
973
|
[[package]]
|
|
974
974
|
name = "fix-path-env"
|
|
@@ -1806,9 +1806,9 @@ dependencies = [
|
|
|
1806
1806
|
|
|
1807
1807
|
[[package]]
|
|
1808
1808
|
name = "itoa"
|
|
1809
|
-
version = "1.0.
|
|
1809
|
+
version = "1.0.17"
|
|
1810
1810
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1811
|
-
checksum = "
|
|
1811
|
+
checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2"
|
|
1812
1812
|
|
|
1813
1813
|
[[package]]
|
|
1814
1814
|
name = "javascriptcore-rs"
|
|
@@ -1958,13 +1958,13 @@ dependencies = [
|
|
|
1958
1958
|
|
|
1959
1959
|
[[package]]
|
|
1960
1960
|
name = "libredox"
|
|
1961
|
-
version = "0.1.
|
|
1961
|
+
version = "0.1.12"
|
|
1962
1962
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1963
|
-
checksum = "
|
|
1963
|
+
checksum = "3d0b95e02c851351f877147b7deea7b1afb1df71b63aa5f8270716e0c5720616"
|
|
1964
1964
|
dependencies = [
|
|
1965
1965
|
"bitflags 2.10.0",
|
|
1966
1966
|
"libc",
|
|
1967
|
-
"redox_syscall 0.
|
|
1967
|
+
"redox_syscall 0.7.0",
|
|
1968
1968
|
]
|
|
1969
1969
|
|
|
1970
1970
|
[[package]]
|
|
@@ -2840,9 +2840,9 @@ checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068"
|
|
|
2840
2840
|
|
|
2841
2841
|
[[package]]
|
|
2842
2842
|
name = "proc-macro2"
|
|
2843
|
-
version = "1.0.
|
|
2843
|
+
version = "1.0.104"
|
|
2844
2844
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2845
|
-
checksum = "
|
|
2845
|
+
checksum = "9695f8df41bb4f3d222c95a67532365f569318332d03d5f3f67f37b20e6ebdf0"
|
|
2846
2846
|
dependencies = [
|
|
2847
2847
|
"unicode-ident",
|
|
2848
2848
|
]
|
|
@@ -3053,9 +3053,9 @@ dependencies = [
|
|
|
3053
3053
|
|
|
3054
3054
|
[[package]]
|
|
3055
3055
|
name = "redox_syscall"
|
|
3056
|
-
version = "0.
|
|
3056
|
+
version = "0.7.0"
|
|
3057
3057
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
3058
|
-
checksum = "
|
|
3058
|
+
checksum = "49f3fe0889e69e2ae9e41f4d6c4c0181701d00e4697b356fb1f74173a5e0ee27"
|
|
3059
3059
|
dependencies = [
|
|
3060
3060
|
"bitflags 2.10.0",
|
|
3061
3061
|
]
|
|
@@ -3256,9 +3256,9 @@ checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d"
|
|
|
3256
3256
|
|
|
3257
3257
|
[[package]]
|
|
3258
3258
|
name = "ryu"
|
|
3259
|
-
version = "1.0.
|
|
3259
|
+
version = "1.0.22"
|
|
3260
3260
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
3261
|
-
checksum = "
|
|
3261
|
+
checksum = "a50f4cf475b65d88e057964e0e9bb1f0aa9bbb2036dc65c64596b42932536984"
|
|
3262
3262
|
|
|
3263
3263
|
[[package]]
|
|
3264
3264
|
name = "same-file"
|
|
@@ -3298,9 +3298,9 @@ dependencies = [
|
|
|
3298
3298
|
|
|
3299
3299
|
[[package]]
|
|
3300
3300
|
name = "schemars"
|
|
3301
|
-
version = "1.
|
|
3301
|
+
version = "1.2.0"
|
|
3302
3302
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
3303
|
-
checksum = "
|
|
3303
|
+
checksum = "54e910108742c57a770f492731f99be216a52fadd361b06c8fb59d74ccc267d2"
|
|
3304
3304
|
dependencies = [
|
|
3305
3305
|
"dyn-clone",
|
|
3306
3306
|
"ref-cast",
|
|
@@ -3409,9 +3409,9 @@ dependencies = [
|
|
|
3409
3409
|
|
|
3410
3410
|
[[package]]
|
|
3411
3411
|
name = "serde_json"
|
|
3412
|
-
version = "1.0.
|
|
3412
|
+
version = "1.0.148"
|
|
3413
3413
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
3414
|
-
checksum = "
|
|
3414
|
+
checksum = "3084b546a1dd6289475996f182a22aba973866ea8e8b02c51d9f46b1336a22da"
|
|
3415
3415
|
dependencies = [
|
|
3416
3416
|
"itoa",
|
|
3417
3417
|
"memchr",
|
|
@@ -3473,7 +3473,7 @@ dependencies = [
|
|
|
3473
3473
|
"indexmap 1.9.3",
|
|
3474
3474
|
"indexmap 2.12.1",
|
|
3475
3475
|
"schemars 0.9.0",
|
|
3476
|
-
"schemars 1.
|
|
3476
|
+
"schemars 1.2.0",
|
|
3477
3477
|
"serde_core",
|
|
3478
3478
|
"serde_json",
|
|
3479
3479
|
"serde_with_macros",
|
|
@@ -3543,10 +3543,11 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
|
|
|
3543
3543
|
|
|
3544
3544
|
[[package]]
|
|
3545
3545
|
name = "signal-hook-registry"
|
|
3546
|
-
version = "1.4.
|
|
3546
|
+
version = "1.4.8"
|
|
3547
3547
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
3548
|
-
checksum = "
|
|
3548
|
+
checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b"
|
|
3549
3549
|
dependencies = [
|
|
3550
|
+
"errno",
|
|
3550
3551
|
"libc",
|
|
3551
3552
|
]
|
|
3552
3553
|
|
|
@@ -5675,9 +5676,9 @@ dependencies = [
|
|
|
5675
5676
|
|
|
5676
5677
|
[[package]]
|
|
5677
5678
|
name = "zmij"
|
|
5678
|
-
version = "0.
|
|
5679
|
+
version = "1.0.0"
|
|
5679
5680
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
5680
|
-
checksum = "
|
|
5681
|
+
checksum = "e6d6085d62852e35540689d1f97ad663e3971fc19cf5eceab364d62c646ea167"
|
|
5681
5682
|
|
|
5682
5683
|
[[package]]
|
|
5683
5684
|
name = "zvariant"
|
|
@@ -397,9 +397,9 @@ dependencies = [
|
|
|
397
397
|
|
|
398
398
|
[[package]]
|
|
399
399
|
name = "cc"
|
|
400
|
-
version = "1.2.
|
|
400
|
+
version = "1.2.51"
|
|
401
401
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
402
|
-
checksum = "
|
|
402
|
+
checksum = "7a0aeaff4ff1a90589618835a598e545176939b97874f7abc7851caa0618f203"
|
|
403
403
|
dependencies = [
|
|
404
404
|
"find-msvc-tools",
|
|
405
405
|
"shlex",
|
|
@@ -807,9 +807,9 @@ dependencies = [
|
|
|
807
807
|
|
|
808
808
|
[[package]]
|
|
809
809
|
name = "dtoa"
|
|
810
|
-
version = "1.0.
|
|
810
|
+
version = "1.0.11"
|
|
811
811
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
812
|
-
checksum = "
|
|
812
|
+
checksum = "4c3cf4824e2d5f025c7b531afcb2325364084a16806f6d47fbc1f5fbd9960590"
|
|
813
813
|
|
|
814
814
|
[[package]]
|
|
815
815
|
name = "dtoa-short"
|
|
@@ -966,9 +966,9 @@ dependencies = [
|
|
|
966
966
|
|
|
967
967
|
[[package]]
|
|
968
968
|
name = "find-msvc-tools"
|
|
969
|
-
version = "0.1.
|
|
969
|
+
version = "0.1.6"
|
|
970
970
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
971
|
-
checksum = "
|
|
971
|
+
checksum = "645cbb3a84e60b7531617d5ae4e57f7e27308f6445f5abf653209ea76dec8dff"
|
|
972
972
|
|
|
973
973
|
[[package]]
|
|
974
974
|
name = "fix-path-env"
|
|
@@ -1806,9 +1806,9 @@ dependencies = [
|
|
|
1806
1806
|
|
|
1807
1807
|
[[package]]
|
|
1808
1808
|
name = "itoa"
|
|
1809
|
-
version = "1.0.
|
|
1809
|
+
version = "1.0.17"
|
|
1810
1810
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1811
|
-
checksum = "
|
|
1811
|
+
checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2"
|
|
1812
1812
|
|
|
1813
1813
|
[[package]]
|
|
1814
1814
|
name = "javascriptcore-rs"
|
|
@@ -1958,13 +1958,13 @@ dependencies = [
|
|
|
1958
1958
|
|
|
1959
1959
|
[[package]]
|
|
1960
1960
|
name = "libredox"
|
|
1961
|
-
version = "0.1.
|
|
1961
|
+
version = "0.1.12"
|
|
1962
1962
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1963
|
-
checksum = "
|
|
1963
|
+
checksum = "3d0b95e02c851351f877147b7deea7b1afb1df71b63aa5f8270716e0c5720616"
|
|
1964
1964
|
dependencies = [
|
|
1965
1965
|
"bitflags 2.10.0",
|
|
1966
1966
|
"libc",
|
|
1967
|
-
"redox_syscall 0.
|
|
1967
|
+
"redox_syscall 0.7.0",
|
|
1968
1968
|
]
|
|
1969
1969
|
|
|
1970
1970
|
[[package]]
|
|
@@ -2840,9 +2840,9 @@ checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068"
|
|
|
2840
2840
|
|
|
2841
2841
|
[[package]]
|
|
2842
2842
|
name = "proc-macro2"
|
|
2843
|
-
version = "1.0.
|
|
2843
|
+
version = "1.0.104"
|
|
2844
2844
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2845
|
-
checksum = "
|
|
2845
|
+
checksum = "9695f8df41bb4f3d222c95a67532365f569318332d03d5f3f67f37b20e6ebdf0"
|
|
2846
2846
|
dependencies = [
|
|
2847
2847
|
"unicode-ident",
|
|
2848
2848
|
]
|
|
@@ -3053,9 +3053,9 @@ dependencies = [
|
|
|
3053
3053
|
|
|
3054
3054
|
[[package]]
|
|
3055
3055
|
name = "redox_syscall"
|
|
3056
|
-
version = "0.
|
|
3056
|
+
version = "0.7.0"
|
|
3057
3057
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
3058
|
-
checksum = "
|
|
3058
|
+
checksum = "49f3fe0889e69e2ae9e41f4d6c4c0181701d00e4697b356fb1f74173a5e0ee27"
|
|
3059
3059
|
dependencies = [
|
|
3060
3060
|
"bitflags 2.10.0",
|
|
3061
3061
|
]
|
|
@@ -3256,9 +3256,9 @@ checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d"
|
|
|
3256
3256
|
|
|
3257
3257
|
[[package]]
|
|
3258
3258
|
name = "ryu"
|
|
3259
|
-
version = "1.0.
|
|
3259
|
+
version = "1.0.22"
|
|
3260
3260
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
3261
|
-
checksum = "
|
|
3261
|
+
checksum = "a50f4cf475b65d88e057964e0e9bb1f0aa9bbb2036dc65c64596b42932536984"
|
|
3262
3262
|
|
|
3263
3263
|
[[package]]
|
|
3264
3264
|
name = "same-file"
|
|
@@ -3298,9 +3298,9 @@ dependencies = [
|
|
|
3298
3298
|
|
|
3299
3299
|
[[package]]
|
|
3300
3300
|
name = "schemars"
|
|
3301
|
-
version = "1.
|
|
3301
|
+
version = "1.2.0"
|
|
3302
3302
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
3303
|
-
checksum = "
|
|
3303
|
+
checksum = "54e910108742c57a770f492731f99be216a52fadd361b06c8fb59d74ccc267d2"
|
|
3304
3304
|
dependencies = [
|
|
3305
3305
|
"dyn-clone",
|
|
3306
3306
|
"ref-cast",
|
|
@@ -3409,9 +3409,9 @@ dependencies = [
|
|
|
3409
3409
|
|
|
3410
3410
|
[[package]]
|
|
3411
3411
|
name = "serde_json"
|
|
3412
|
-
version = "1.0.
|
|
3412
|
+
version = "1.0.148"
|
|
3413
3413
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
3414
|
-
checksum = "
|
|
3414
|
+
checksum = "3084b546a1dd6289475996f182a22aba973866ea8e8b02c51d9f46b1336a22da"
|
|
3415
3415
|
dependencies = [
|
|
3416
3416
|
"itoa",
|
|
3417
3417
|
"memchr",
|
|
@@ -3473,7 +3473,7 @@ dependencies = [
|
|
|
3473
3473
|
"indexmap 1.9.3",
|
|
3474
3474
|
"indexmap 2.12.1",
|
|
3475
3475
|
"schemars 0.9.0",
|
|
3476
|
-
"schemars 1.
|
|
3476
|
+
"schemars 1.2.0",
|
|
3477
3477
|
"serde_core",
|
|
3478
3478
|
"serde_json",
|
|
3479
3479
|
"serde_with_macros",
|
|
@@ -3543,10 +3543,11 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
|
|
|
3543
3543
|
|
|
3544
3544
|
[[package]]
|
|
3545
3545
|
name = "signal-hook-registry"
|
|
3546
|
-
version = "1.4.
|
|
3546
|
+
version = "1.4.8"
|
|
3547
3547
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
3548
|
-
checksum = "
|
|
3548
|
+
checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b"
|
|
3549
3549
|
dependencies = [
|
|
3550
|
+
"errno",
|
|
3550
3551
|
"libc",
|
|
3551
3552
|
]
|
|
3552
3553
|
|
|
@@ -5675,9 +5676,9 @@ dependencies = [
|
|
|
5675
5676
|
|
|
5676
5677
|
[[package]]
|
|
5677
5678
|
name = "zmij"
|
|
5678
|
-
version = "0.
|
|
5679
|
+
version = "1.0.0"
|
|
5679
5680
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
5680
|
-
checksum = "
|
|
5681
|
+
checksum = "e6d6085d62852e35540689d1f97ad663e3971fc19cf5eceab364d62c646ea167"
|
|
5681
5682
|
|
|
5682
5683
|
[[package]]
|
|
5683
5684
|
name = "zvariant"
|
package/dist/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import{Command as
|
|
1
|
+
import{Command as wr}from"commander";import*as h from"@clack/prompts";import fo from"picocolors";var P="https://app.vibingbase.com";import{createAuthClient as io}from"better-auth/client";import{adminClient as no,organizationClient as ao}from"better-auth/client/plugins";var B="https://api.vibingbase.com";import{readFile as oo}from"node:fs/promises";import to from"node:path";import{homedir as Kt}from"node:os";import Qt from"node:path";var D=Qt.join(Kt(),".vibingbase");var z=to.join(D,"auth.json");import{z as ct}from"zod";var dt=ct.object({token:ct.string().nullish(),activeOrganizationId:ct.string().nullish()});async function k(){try{let t=await oo(z,"utf8");return dt.parse(JSON.parse(t))}catch{return{}}}async function F(){return((await k()).activeOrganizationId??"")||void 0}async function gt(){return((await k()).token??"")||void 0}import{mkdir as ro,writeFile as eo}from"node:fs/promises";async function _(t){await ro(D,{recursive:!0}),await eo(z,JSON.stringify(t))}async function q(t){let o=await k();await _({...o,token:(t??"")||void 0})}var d=io({baseURL:B,basePath:"/v1/auth",plugins:[no(),ao()],fetchOptions:{throw:!0,auth:{type:"Bearer",token:gt},onRequest:async t=>{let o=await F();return o&&t.headers.set("x-active-organization-id",o),t},onSuccess:async({response:t})=>{let o=t.headers.get("set-auth-token");o&&await q(o)}}});import*as T from"@clack/prompts";import*as wt from"@clack/prompts";var m="Thanks for using Vibingbase!";function c(){wt.outro(m),process.exit(0)}import*as vt from"@clack/prompts";import{createServer as so}from"node:http";import po from"open";import*as ht from"@clack/prompts";function G(t){ht.note(`
|
|
2
2
|
Email: ${t.user.email}
|
|
3
3
|
Name: ${t.user.name}
|
|
4
|
-
`.trim(),"Account
|
|
5
|
-
${Ct(
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
`.trim(),
|
|
4
|
+
`.trim(),"Account")}async function mo(t,o){let i=new URL(t.url??"","http://localhost").searchParams.get("token");i&&await q(i);let e=new URL(`${P}/continue`);e.searchParams.set("event","authorized-cli");let a=await d.getSession();return a||e.searchParams.set("error","Failed to get auth session"),o.writeHead(302,{location:e.toString()}),o.end(),a}async function co(t){let o=t.address();if(typeof o!="object"||!o)throw new Error("Failed to get auth address");let r=new URL(`${P}/authorize-cli`);r.searchParams.set("port",o.port.toString());let i=r.toString();return await po(i),i}async function Y(t){return t.start("Opening browser for authentication..."),new Promise((o,r)=>{let i=so((e,a)=>{e.method==="GET"?mo(e,a).then(n=>{n&&(o(n),i.close(),t.stop("Signed in!"),G(n))}).catch(n=>{r(n),i.close()}):(a.writeHead(405),a.end())});i.listen(0,"localhost",()=>{co(i).then(e=>{t.stop("Opened browser for authentication!"),vt.note(`URL: ${e}`,"Authentication"),t.start("Waiting for authentication...")}).catch(e=>{r(e),i.close()})})})}async function y(t,o){let r=await d.getSession();if(r)return[r,!0];if(!o)return[void 0,!1];T.log.warn("You're currently not signed in!");let i=await T.confirm({message:"Sign in to continue?",initialValue:!0});return(T.isCancel(i)||!i)&&c(),[await Y(t),!1]}var H="Change your current Vibingbase workspace";async function ft(t){let o=await k();await _({...o,activeOrganizationId:(t??"")||void 0})}var bt="Current";async function kt(){h.intro(fo.bold(H));let t=h.spinner();await y(t,!0),t.start("Loading workspaces...");let[o,r]=await Promise.all([d.organization.list(),F()]);t.stop(`Go to ${P} to create and manage your workspaces!`),o.length===0&&(r&&await ft(null),h.log.error("Personal workspace is your only workspace!"),c());let i=[{value:void 0,label:"Personal workspace",hint:r?void 0:bt},...o.map(a=>({value:a.id,label:a.name,hint:a.id===r?bt:void 0}))],e=await h.select({message:"Select a workspace:",initialValue:r,options:i});h.isCancel(e)&&c(),await ft(e),h.outro(m)}import*as p from"@clack/prompts";import{capitalCase as So}from"change-case";import{existsSync as Io}from"node:fs";import{rm as $o}from"node:fs/promises";import U from"node:path";import Po from"picocolors";var X="Create a new Vibingbase app";function yt(){let t=process.env.npm_config_user_agent??"";return t.startsWith("pnpm")?"pnpm":t.startsWith("yarn")?"yarn":t.startsWith("bun")?"bun":"npm"}import{exec as uo}from"node:child_process";import{promisify as lo}from"node:util";var O=lo(uo);import{customAlphabet as go}from"nanoid";var wo="0123456789abcdefghijklmnopqrstuvwxyz",xt=go(wo);function ho(t){switch(t){case"install":case"start":return!1;default:return!0}}function Ct(t,o){let r=t==="npm"&&ho(o)?`run ${o}`:o;return`${t} ${r}`}function St(t){switch(t){case"npm":return"npx";case"pnpm":return"pnpm exec";case"yarn":return"yarn";case"bun":return"bunx"}}import vo from"ejs";import{copyFile as bo,mkdir as ko,readdir as yo,readFile as xo,writeFile as Co}from"node:fs/promises";import It from"node:path";var $t=".template";async function ut(t,o,r){await ko(o,{recursive:!0});let i=await yo(t,{withFileTypes:!0});await Promise.all(i.map(async e=>{let a=e.name.endsWith($t),n=It.join(t,e.name),s=It.join(o,a?e.name.slice(0,-$t.length):e.name);if(e.isDirectory())await ut(n,s,r);else if(a){let f=await xo(n,"utf8");await Co(s,vo.render(f,r))}else await bo(n,s)}))}function Pt(t){if(!t)return"App name is required";if(t.includes(" "))return"No double spaces allowed"}function jt(t){if(!t)return"Directory name is required"}var Z="https://www.vibingbase.com";async function Vt(t){p.intro(Po.bold(X));let o="my-app",r=await p.text({message:"Directory name:",placeholder:o,defaultValue:o,initialValue:o,validate:jt});p.isCancel(r)&&c();let i=r.trim(),e=U.isAbsolute(i)?i:U.join(t.cwd,i);if(Io(e)){let S=await p.confirm({message:"Overwrite existing directory?",initialValue:!1});(p.isCancel(S)||!S)&&c(),await $o(e,{recursive:!0,force:!0})}let a=So(U.basename(i)),n=await p.text({message:"App name:",placeholder:a,defaultValue:a,initialValue:a,validate:Pt});p.isCancel(n)&&c();let s=n.trim(),f=await p.confirm({message:"Use Tailwind CSS?",initialValue:!0});p.isCancel(f)&&c();let u=await p.select({message:"Package manager:",initialValue:yt(),options:[{value:"npm",label:"npm"},{value:"pnpm",label:"pnpm"},{value:"yarn",label:"yarn"},{value:"bun",label:"bun"}]});p.isCancel(u)&&c();let l=p.spinner();l.start("Generating project files..."),await ut(U.join(import.meta.dirname,"..","assets",f?"tailwind":"default"),e,{websiteURL:Z,name:s,id:xt(),version:"1.0.0",exec:St(u)}),l.stop("Generated project files!"),l.start(`Installing ${u} dependencies...`),await O(`${u} install`,{cwd:e}),l.stop(`Installed ${u} dependencies!`),l.start("Installing cargo dependencies..."),await O("cargo fetch",{cwd:U.join(e,"src-tauri")}),l.stop("Installed cargo dependencies!"),l.start("Initializing Git..."),await O("git init",{cwd:e}),await O("git add .",{cwd:e}),await O('git commit -m "Initialize repository with Vibingbase CLI"',{cwd:e}),l.stop("Initialized Git!"),p.note(`cd ${i}
|
|
5
|
+
${Ct(u,"dev")}`,"Next steps"),p.outro(m)}import*as v from"@clack/prompts";import Vo from"picocolors";import{rm as jo}from"node:fs/promises";async function K(){await jo(z,{force:!0})}var Q="Sign in to your Vibingbase account";async function zt(){v.intro(Vo.bold(Q));let t=await d.getSession();if(t){v.log.warn(`You're already signed in as ${t.user.email}!`);let r=await v.confirm({message:"Sign in with a different account?",initialValue:!1});(v.isCancel(r)||!r)&&c(),await d.signOut(),await K()}let o=v.spinner();await Y(o),v.outro(m)}import*as g from"@clack/prompts";import zo from"picocolors";var tt="Sign out of your Vibingbase account";async function Ft(){g.intro(zo.bold(tt));let t=g.spinner(),[o]=await y(t,!1);if(!o){g.log.info("You're already signed out!"),g.outro(m);return}let r=await g.confirm({message:`Sign out of ${o.user.email}?`,initialValue:!1});(g.isCancel(r)||!r)&&c(),t.start("Signing out..."),await d.signOut(),await K(),t.stop("Signed out!"),g.outro(m)}import*as R from"@clack/prompts";import _o from"archiver";import{globby as qo}from"globby";import{createWriteStream as Go}from"node:fs";import{lstat as Yo,readlink as Ho,stat as Xo}from"node:fs/promises";import lt from"node:path";import Zo from"picocolors";import{readFile as Fo}from"node:fs/promises";async function Tt(t,o){let r=JSON.parse(await Fo(t,"utf8"));return r.identifier=r.identifier.replace(/-dev$/,""),r.bundle={...r.bundle,active:!0,createUpdaterArtifacts:!0,targets:["app","dmg","nsis"],windows:{signCommand:"trusted-signing-cli -e https://eus.codesigning.azure.net -a phuctm97 -c phuctm97 %1"}},r.plugins??={},r.plugins["deep-link"]={desktop:{schemes:[`app-${o}`]}},r.plugins.updater={pubkey:"dW50cnVzdGVkIGNvbW1lbnQ6IG1pbmlzaWduIHB1YmxpYyBrZXk6IDkzMEJBRTRGMkZBREIxMTIKUldRU3NhMHZUNjRMazdXcFd4RUxUNXFDK1NBUEJSYjFhZlVXaHI4YVZBOW1QYXRobEt4eTI5QXkK",endpoints:[`${Z}/v1/updater/app-${o}`]},JSON.stringify(r,void 0,2)}var ot="Create a publishable ZIP file";import et from"node:path";import{existsSync as Ao}from"node:fs";import{readFile as Ro}from"node:fs/promises";import{parse as Lo}from"smol-toml";import{z as rt}from"zod";import To from"semver";import{z as Oo}from"zod";var I=Oo.string().refine(t=>!!To.valid(t),"Expected: valid semver");var Ot=rt.object({package:rt.array(rt.object({name:rt.string(),version:I}))});async function At(t){if(!Ao(t))throw new Error("Failed to find src-tauri/Cargo.lock");return Ot.parse(Lo(await Ro(t,"utf8")))}import{existsSync as Mo}from"node:fs";import{readFile as Uo}from"node:fs/promises";import{parse as Eo}from"smol-toml";import{z as E}from"zod";var Rt=E.object({package:E.object({name:E.string().regex(/^app_(.+)_package$/,"Expected: app_<id>_package"),version:I}),lib:E.object({name:E.string().regex(/^app_(.+)_lib$/,"Expected: app_<id>_lib")})});async function Lt(t){if(!Mo(t))throw new Error("Failed to find src-tauri/Cargo.toml");return Rt.parse(Eo(await Uo(t,"utf8")))}import{existsSync as Wo}from"node:fs";import{readFile as Jo}from"node:fs/promises";import{z as No}from"zod";var Mt=No.object({version:I});async function Ut(t){if(!Wo(t))throw new Error("Failed to find package.json");return Mt.parse(JSON.parse(await Jo(t,"utf8")))}import{existsSync as Bo}from"node:fs";import{readFile as Do}from"node:fs/promises";import{z as Et}from"zod";var Nt=Et.object({identifier:Et.string().regex(/^com\.vibingbase\.app-[a-z0-9]+-dev$/,"Expected: com.vibingbase.app-<id>-dev"),version:I});async function Wt(t){if(!Bo(t))throw new Error("Failed to find src-tauri/tauri.conf.json");return Nt.parse(JSON.parse(await Do(t,"utf8")))}async function A(t){let{cwd:o,versionsMustMatch:r}=t,[i,e,a,n]=await Promise.all([Ut(et.join(o,"package.json")),Lt(et.join(o,"src-tauri","Cargo.toml")),At(et.join(o,"src-tauri","Cargo.lock")),Wt(et.join(o,"src-tauri","tauri.conf.json"))]),s=a.package.find(f=>f.name===e.package.name);if(!s)throw new Error(`Failed to find ${e.package.name} in src-tauri/Cargo.lock`);if(r){let f=[i.version,e.package.version,s.version,n.version];if(new Set(f).size!==1)throw new Error(`Version mismatch: package.json (${i.version}), Cargo.toml (${e.package.version}), Cargo.lock (${s.version}), tauri.conf.json (${n.version})`)}return{packageJson:i,cargoToml:e,cargoLock:a,tauriConfig:n,appId:e.package.name.replace(/^app_(.+)_package$/,"$1")}}async function Jt(t){R.intro(Zo.bold(ot));let o=lt.resolve(t.cwd),r=R.spinner(),{appId:i}=await A({cwd:o,versionsMustMatch:!0}),e=lt.join(o,`${i}.zip`);r.start(`Creating ${i}.zip...`);let a=Go(e),n=_o("zip",{zlib:{level:9}}),s=new Promise((C,j)=>{a.on("close",C),n.on("error",j)});n.pipe(a);let f=await qo("**/*",{cwd:o,ignore:["**/.git"],gitignore:!0,dot:!0,onlyFiles:!1,followSymbolicLinks:!1});for(let C of f){let j=lt.join(o,C),V=await Yo(j);if(V.isSymbolicLink()){let J=await Ho(j);n.symlink(C,J,V.mode)}else if(V.isFile()){let J={name:C,stats:V,date:V.mtime,mode:V.mode};if(C==="src-tauri/tauri.conf.json"){let Zt=await Tt(j,i);n.append(Zt,J)}else n.file(j,J)}}await n.finalize(),await s;let l=(await Xo(e)).size/1024/1024,S=l.toFixed(2);if(l>100)throw new Error(`Package exceeds 100 MB limit: ${S} MB`);r.stop(`Created ${i}.zip (${S} MB)`),R.outro(m)}import*as w from"@clack/prompts";import N from"node:path";import ar from"picocolors";import nt from"semver";var it="Bump current app version";import{readFile as Ko,writeFile as Qo}from"node:fs/promises";async function Bt(t,o,r){let i=await Ko(t,"utf8");await Qo(t,i.replace(new RegExp(String.raw`(\[\[package\]\]\s*\nname\s*=\s*"${o}"\s*\nversion\s*=\s*)"[^"]*"`,"m"),`$1"${r}"`))}import{readFile as tr,writeFile as or}from"node:fs/promises";async function Dt(t,o){let r=await tr(t,"utf8");await or(t,r.replace(/^(version\s*=\s*)"[^"]*"/m,`$1"${o}"`))}import{readFile as rr,writeFile as er}from"node:fs/promises";async function _t(t,o){let r=await rr(t,"utf8");await er(t,r.replace(/"version"\s*:\s*"[^"]*"/,`"version": "${o}"`))}import{readFile as ir,writeFile as nr}from"node:fs/promises";async function qt(t,o){let r=await ir(t,"utf8");await nr(t,r.replace(/"version"\s*:\s*"[^"]*"/,`"version": "${o}"`))}async function Gt(t){w.intro(ar.bold(it));let o=N.resolve(t.cwd),{packageJson:r,cargoToml:i}=await A({cwd:o}),e=r.version,a=nt.inc(e,"patch"),n=nt.inc(e,"minor"),s=nt.inc(e,"major"),f=await w.select({message:`Current version: ${e}. Select new version:`,options:[{value:a,label:`Patch (${a})`},{value:n,label:`Minor (${n})`},{value:s,label:`Major (${s})`},{value:"custom",label:"Custom"}]});w.isCancel(f)&&c();let u;if(f==="custom"){let S=await w.text({message:"Enter custom version:",validate:C=>{if(!C)return"Custom version is required";if(!nt.valid(C))return"Custom version must be a valid semver"}});w.isCancel(S)&&c(),u=S}else f?u=f:c();let l=w.spinner();l.start(`Updating version to ${u}...`),await Promise.all([_t(N.join(o,"package.json"),u),Dt(N.join(o,"src-tauri","Cargo.toml"),u),Bt(N.join(o,"src-tauri","Cargo.lock"),i.package.name,u),qt(N.join(o,"src-tauri","tauri.conf.json"),u)]),l.stop(`Updated version to ${u}`),w.outro(m)}import*as $ from"@clack/prompts";import{isTRPCClientError as cr}from"@trpc/client";import fr from"node:path";import ur from"picocolors";import{createTRPCClient as sr,httpBatchLink as pr}from"@trpc/client";import{SuperJSON as mr}from"superjson";var W=sr({links:[pr({url:`${B}/v1/trpc`,transformer:mr,headers:async()=>{let t={},{token:o,activeOrganizationId:r}=await k();return o&&(t.authorization=`Bearer ${o}`),r&&(t["x-active-organization-id"]=r),t}})]});var at="View current app details";async function Yt(t){$.intro(ur.bold(at));let o=fr.resolve(t.cwd),{packageJson:r,appId:i}=await A({cwd:o,versionsMustMatch:!0}),e=$.spinner();await y(e,!0);let a=[`ID: ${i}`,`Current version: ${r.version}`];try{let[n,s]=await Promise.all([W.app.shared.getBasicInfo.query(i),W.app.shared.getPublishInfo.query(i)]);a.push(`Name: ${n.name}`,`Status: ${s.isPublishing?"Publishing":s.publishedAt?"Published":"Unpublished"}`),s.publishedVersion&&a.push(`Published version: ${s.publishedVersion}`)}catch(n){if(!cr(n)||n.data?.code!=="NOT_FOUND")throw n}$.note(a.join(`
|
|
6
|
+
`),"App"),$.outro(m)}import*as x from"@clack/prompts";import lr from"picocolors";var st="View your current Vibingbase workspace";async function Ht(){x.intro(lr.bold(st));let t=x.spinner();await y(t,!0);let[{aggregatedCredits:o,usedCredits:r},i]=await Promise.all([W.workspace.sync.query(),F()]),e="Personal workspace";if(i){let s=(await d.organization.list()).find(f=>f.id===i);s&&(e=s.name)}let a=o-r;x.note(`
|
|
7
|
+
Your workspace has ${a.toLocaleString("en-US")} remaining credits / ${o.toLocaleString("en-US")} total credits (this month)
|
|
8
|
+
`.trim(),e),x.log.info(`Go to ${P} to view and manage your workspace!`),x.outro(m)}import*as L from"@clack/prompts";import dr from"picocolors";var pt="Show your current Vibingbase account";async function Xt(){L.intro(dr.bold(pt));let t=L.spinner(),[o,r]=await y(t,!0);r&&G(o),L.outro(m)}var mt={name:"vibingbase",version:"0.12.43",description:"CLI for creating Vibingbase apps",keywords:["vibingbase","vibe-coding","ai-coding","low-code","no-code"],homepage:"https://www.vibingbase.com",bugs:{url:"https://github.com/vibingbase/apps/issues",email:"team@vibingbase.com"},license:"MIT",author:{name:"Vibingbase",email:"team@vibingbase.com"},type:"module",imports:{"#./*":"./*"},exports:{".":{development:"./lib/index.ts",import:"./dist/index.js"}},bin:"./bin/index.js",dependencies:{"@clack/prompts":"^0.11.0","@trpc/client":"^11.8.1",archiver:"^7.0.1","better-auth":"^1.4.9","change-case":"^5.4.4",commander:"^14.0.2",ejs:"^3.1.10",globby:"^16.1.0",nanoid:"^5.1.6",open:"^11.0.0",picocolors:"^1.1.1",semver:"^7.7.3","smol-toml":"^1.6.0",superjson:"^2.2.6",zod:"^4.2.1"},devDependencies:{"@types/archiver":"^7.0.0","@types/ejs":"^3.1.5","@types/semver":"^7.7.1","eslint-config-base":"workspace:^","vibingbase-api":"workspace:^"}};var b=new wr;b.name(mt.name).version(mt.version).description(mt.description);b.command("create",{isDefault:!0}).description(X).option("--cwd <path>","Working directory",process.cwd()).action(Vt);b.command("view").description(at).option("--cwd <path>","Working directory",process.cwd()).action(Yt);b.command("version").description(it).option("--cwd <path>","Working directory",process.cwd()).action(Gt);b.command("pack").description(ot).option("--cwd <path>","Working directory",process.cwd()).action(Jt);b.command("login").description(Q).action(zt);b.command("logout").description(tt).action(Ft);b.command("whoami").description(pt).action(Xt);b.command("view-workspace").description(st).action(Ht);b.command("change-workspace").description(H).action(kt);await b.parseAsync();
|