create-domis 1.0.27 → 1.0.29
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.
- package/README.md +1 -1
- package/dist/index.js +62 -34
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|

|
|
10
10
|

|
|
11
11
|

|
|
12
|
-
[](https://github.com/Domisnnet/DomisPacks-Technical/blob/main/LICENSE)
|
|
13
13
|

|
|
14
14
|
|
|
15
15
|
Bem-vindo ao **CLI Oficial Domis**. O `npm create domis@latest` é um acelerador de projetos que elimina 3 horas de configuração de `firebase.json`, `firestore.rules` e `GitHub Actions` com 1 comando. Resolvemos o bug de Hosting que quebra 90% dos deploys Next.js 15 no Firebase.
|
package/dist/index.js
CHANGED
|
@@ -7,8 +7,21 @@ import ora from "ora";
|
|
|
7
7
|
import { execSync } from "child_process";
|
|
8
8
|
import fs from "fs";
|
|
9
9
|
import path from "path";
|
|
10
|
+
import os from "os";
|
|
10
11
|
var API_VERIFY = "https://verifyprokey-rk2ogbbeja-uc.a.run.app";
|
|
11
|
-
console.log(chalk.green.bold("\n\u{1F525} DomisPacks Technical v1.0.
|
|
12
|
+
console.log(chalk.green.bold("\n\u{1F525} DomisPacks Technical v1.0.29\n"));
|
|
13
|
+
function copyRecursive(src, dest) {
|
|
14
|
+
const stat = fs.lstatSync(src);
|
|
15
|
+
if (stat.isDirectory()) {
|
|
16
|
+
fs.mkdirSync(dest, { recursive: true });
|
|
17
|
+
for (const file of fs.readdirSync(src)) {
|
|
18
|
+
if (file === "node_modules" || file === ".next" || file === ".git") continue;
|
|
19
|
+
copyRecursive(path.join(src, file), path.join(dest, file));
|
|
20
|
+
}
|
|
21
|
+
} else {
|
|
22
|
+
fs.copyFileSync(src, dest);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
12
25
|
async function main() {
|
|
13
26
|
const answers = await inquirer.prompt([
|
|
14
27
|
{
|
|
@@ -18,7 +31,7 @@ async function main() {
|
|
|
18
31
|
choices: [
|
|
19
32
|
{ name: "\u{1F525} DomisDocs Free - firebase.json + firebaserc + package.json + README.md", value: "demo" },
|
|
20
33
|
{ name: "\u{1F525} DomisDocs Lite \u2014 Next.js 15 + Tailwind v4 + Firebase Killer", value: "lite" },
|
|
21
|
-
{ name: "\u{1F525} DomisDocs
|
|
34
|
+
{ name: "\u{1F525} DomisDocs PRO \u2014 Next.js 15 + Stripe + Rules + SSR + CI/CD", value: "pro" }
|
|
22
35
|
]
|
|
23
36
|
},
|
|
24
37
|
{
|
|
@@ -43,36 +56,25 @@ async function main() {
|
|
|
43
56
|
try {
|
|
44
57
|
if (fs.existsSync(target)) throw new Error(`Pasta "${target}" J\xC1 EXISTE!`);
|
|
45
58
|
fs.mkdirSync(target, { recursive: true });
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
}, null, 2));
|
|
59
|
+
const legacyDemoPath = path.join(process.cwd(), "..", "DomisDoc-Legacy-Thecnical", "templates", "domisdocs-free");
|
|
60
|
+
const localDemoPath = "C:[STRIPPED 79 bytes]";
|
|
61
|
+
const finalDemoPath = fs.existsSync(localDemoPath) ? localDemoPath : fs.existsSync(legacyDemoPath) ? legacyDemoPath : "";
|
|
62
|
+
if (finalDemoPath) {
|
|
63
|
+
copyRecursive(finalDemoPath, target);
|
|
64
|
+
spinner2.text = "Copiado do template local";
|
|
65
|
+
} else {
|
|
66
|
+
fs.writeFileSync(path.join(target, "firebase.json"), JSON.stringify({ hosting: { public: "dist", ignore: ["firebase.json", "**/.*", "**/node_modules/**"], rewrites: [{ source: "**", destination: "/index.html" }] } }, null, 2));
|
|
67
|
+
fs.writeFileSync(path.join(target, ".firebaserc"), JSON.stringify({ projects: { default: "free" } }, null, 2));
|
|
68
|
+
fs.writeFileSync(path.join(target, "package.json"), JSON.stringify({ name: target, version: "1.0.0", private: true, scripts: { dev: "vite", build: "vite build" } }, null, 2));
|
|
69
|
+
fs.writeFileSync(path.join(target, "README.md"), `DomisDocs Free`);
|
|
54
70
|
}
|
|
55
|
-
fs.writeFileSync(path.join(target, ".firebaserc"), JSON.stringify({
|
|
56
|
-
projects: { default: "free" }
|
|
57
|
-
}, null, 2));
|
|
58
|
-
fs.writeFileSync(path.join(target, "package.json"), JSON.stringify({
|
|
59
|
-
name: target,
|
|
60
|
-
version: "1.0.0",
|
|
61
|
-
private: true,
|
|
62
|
-
scripts: { dev: "vite", build: "vite build" }
|
|
63
|
-
}, null, 2));
|
|
64
|
-
fs.writeFileSync(path.join(target, "README.md"), `DomisDocs Free`);
|
|
65
71
|
spinner2.succeed(chalk.green.bold(`
|
|
66
72
|
\u2705 ${target} DomisDocs Free criada!`));
|
|
67
73
|
console.log(chalk.cyan(`
|
|
68
|
-
|
|
69
|
-
console.log(chalk.gray("Esse pack \xE9 gr\xE1tis e p\xFAblico, sem necessidade de PRO_KEY."));
|
|
70
|
-
console.log(chalk.cyan(`
|
|
71
|
-
\u{1F449} cd ${target}
|
|
72
|
-
\u{1F449} ls -> firebase.json + .firebaserc + package.json + README.md`));
|
|
74
|
+
\u{1F449} cd ${target}`));
|
|
73
75
|
} catch (e) {
|
|
74
76
|
const msg = e instanceof Error ? e.message : String(e);
|
|
75
|
-
|
|
77
|
+
ora().fail(chalk.red(`\u274C Erro DEMO: ${msg}`));
|
|
76
78
|
process.exit(1);
|
|
77
79
|
}
|
|
78
80
|
return;
|
|
@@ -82,21 +84,47 @@ DomisDocs: https://domisdocs-6a896.web.app`));
|
|
|
82
84
|
const url = `${API_VERIFY}?key=${encodeURIComponent(answers.proKey)}&pack=${answers.pack}`;
|
|
83
85
|
const res = await fetch(url);
|
|
84
86
|
const data = await res.json();
|
|
85
|
-
if (!data.valid
|
|
86
|
-
|
|
87
|
-
|
|
87
|
+
if (!data.valid) {
|
|
88
|
+
const reasonMsg = data.reason === "upgrade_required" ? "Plano LITE n\xE3o pode baixar PRO. Fa\xE7a upgrade." : data.reason === "not_found" ? "PRO_KEY n\xE3o encontrada" : data.error || "PRO_KEY inv\xE1lida";
|
|
89
|
+
spinner.fail(chalk.red(`\u274C ${reasonMsg}`));
|
|
90
|
+
console.log(chalk.yellow(`Verifique em https://domispacks.web.app/validar.html`));
|
|
91
|
+
process.exit(1);
|
|
92
|
+
}
|
|
93
|
+
if (!data.downloadUrl) {
|
|
94
|
+
spinner.fail(chalk.red(`\u274C API sem downloadUrl - atualize a Function`));
|
|
88
95
|
process.exit(1);
|
|
89
96
|
}
|
|
90
|
-
spinner.text = `Baixando ${answers.pack.toUpperCase()} do cofre...`;
|
|
97
|
+
spinner.text = `Baixando ${answers.pack.toUpperCase()} do cofre (${data.repo})...`;
|
|
91
98
|
if (fs.existsSync(target)) throw new Error(`Pasta "${target}" J\xC1 EXISTE!`);
|
|
92
|
-
const
|
|
93
|
-
|
|
99
|
+
const localLegacyPath = `C:[STRIPPED 75 bytes]${answers.pack}`;
|
|
100
|
+
if (fs.existsSync(localLegacyPath)) {
|
|
101
|
+
fs.mkdirSync(target, { recursive: true });
|
|
102
|
+
copyRecursive(localLegacyPath, target);
|
|
103
|
+
spinner.succeed(chalk.green.bold(`
|
|
104
|
+
\u2705 ${target} criado com SUCESSO! (local)`));
|
|
105
|
+
console.log(chalk.gray(`Origem: templates/domisdocs-${answers.pack}`));
|
|
106
|
+
console.log(chalk.cyan(`
|
|
107
|
+
\u{1F449} cd ${target}
|
|
108
|
+
npm install
|
|
109
|
+
npm run dev`));
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
const zipTmp = path.join(os.tmpdir(), `domis-${Date.now()}.zip`);
|
|
113
|
+
const githubToken = process.env.GITHUB_TOKEN || "";
|
|
114
|
+
const curlCmd = githubToken ? `curl -L -H "Authorization: token ${githubToken}" -o "${zipTmp}" "${data.downloadUrl}"` : `curl -L -o "${zipTmp}" "${data.downloadUrl}"`;
|
|
115
|
+
execSync(curlCmd, { stdio: "inherit" });
|
|
94
116
|
fs.mkdirSync(target, { recursive: true });
|
|
95
|
-
|
|
117
|
+
const extractTmp = path.join(os.tmpdir(), `domis-extract-${Date.now()}`);
|
|
118
|
+
fs.mkdirSync(extractTmp, { recursive: true });
|
|
119
|
+
execSync(`powershell -Command "Expand-Archive -Path '${zipTmp}' -DestinationPath '${extractTmp}' -Force"`, { stdio: "inherit" });
|
|
120
|
+
const subfolders = fs.readdirSync(extractTmp).filter((f) => fs.lstatSync(path.join(extractTmp, f)).isDirectory());
|
|
121
|
+
const sourceRoot = subfolders.length === 1 ? path.join(extractTmp, subfolders[0]) : extractTmp;
|
|
122
|
+
copyRecursive(sourceRoot, target);
|
|
96
123
|
fs.rmSync(zipTmp, { force: true });
|
|
124
|
+
fs.rmSync(extractTmp, { recursive: true, force: true });
|
|
97
125
|
spinner.succeed(chalk.green.bold(`
|
|
98
126
|
\u2705 ${target} criado com SUCESSO!`));
|
|
99
|
-
console.log(chalk.gray(`Origem:
|
|
127
|
+
console.log(chalk.gray(`Origem: ${data.repo}`));
|
|
100
128
|
console.log(chalk.cyan(`
|
|
101
129
|
\u{1F449} cd ${target}
|
|
102
130
|
npm install
|