@seip/blue-bird 0.4.4 → 0.4.6
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/.env_example +26 -25
- package/AGENTS.md +199 -199
- package/LICENSE +21 -0
- package/README.md +79 -79
- package/backend/index.js +13 -13
- package/backend/routes/api.js +31 -31
- package/backend/routes/frontend.js +41 -41
- package/backend/routes/seo.js +39 -39
- package/core/app.js +328 -325
- package/core/auth.js +114 -83
- package/core/cache.js +44 -44
- package/core/cli/component.js +42 -42
- package/core/cli/init.js +119 -118
- package/core/cli/react.js +435 -435
- package/core/cli/route.js +42 -42
- package/core/cli/scaffolding-auth.js +1037 -0
- package/core/config.js +48 -47
- package/core/debug.js +248 -248
- package/core/logger.js +100 -100
- package/core/middleware.js +27 -27
- package/core/router.js +333 -333
- package/core/seo.js +95 -100
- package/core/swagger.js +40 -25
- package/core/template.js +472 -462
- package/core/upload.js +76 -76
- package/core/validate.js +380 -380
- package/frontend/index.html +26 -26
- package/frontend/landing.html +69 -69
- package/frontend/resources/css/tailwind.css +17 -17
- package/frontend/resources/js/App.jsx +70 -70
- package/frontend/resources/js/Main.jsx +18 -18
- package/frontend/resources/js/blue-bird/components/Button.jsx +67 -67
- package/frontend/resources/js/blue-bird/components/Card.jsx +18 -18
- package/frontend/resources/js/blue-bird/components/DataTable.jsx +126 -126
- package/frontend/resources/js/blue-bird/components/Input.jsx +21 -21
- package/frontend/resources/js/blue-bird/components/Label.jsx +12 -12
- package/frontend/resources/js/blue-bird/components/LanguageButton.jsx +23 -23
- package/frontend/resources/js/blue-bird/components/Link.jsx +15 -15
- package/frontend/resources/js/blue-bird/components/Modal.jsx +27 -27
- package/frontend/resources/js/blue-bird/components/Skeleton.jsx +44 -44
- package/frontend/resources/js/blue-bird/components/Translate.jsx +12 -12
- package/frontend/resources/js/blue-bird/components/Typography.jsx +69 -69
- package/frontend/resources/js/blue-bird/contexts/LanguageContext.jsx +41 -41
- package/frontend/resources/js/blue-bird/contexts/SPAContext.jsx +239 -237
- package/frontend/resources/js/blue-bird/contexts/SnackbarContext.jsx +38 -38
- package/frontend/resources/js/blue-bird/contexts/ThemeContext.jsx +49 -49
- package/frontend/resources/js/blue-bird/locales/en.json +47 -47
- package/frontend/resources/js/blue-bird/locales/es.json +47 -47
- package/frontend/resources/js/components/Header.jsx +55 -55
- package/frontend/resources/js/pages/About.jsx +31 -31
- package/frontend/resources/js/pages/Home.jsx +82 -82
- package/package.json +57 -57
- package/vite.config.js +22 -22
package/backend/routes/api.js
CHANGED
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
import Router from "@seip/blue-bird/core/router.js";
|
|
2
|
-
import Validator from "@seip/blue-bird/core/validate.js";
|
|
3
|
-
|
|
4
|
-
const routerApiExample = new Router("/api");
|
|
5
|
-
|
|
6
|
-
routerApiExample.get("/users", (req, res) => {
|
|
7
|
-
const users = [
|
|
8
|
-
{
|
|
9
|
-
name: "John Doe",
|
|
10
|
-
email: "john.doe@example.com",
|
|
11
|
-
},
|
|
12
|
-
{
|
|
13
|
-
name: "Jane Doe2",
|
|
14
|
-
email: "jane.doe2@example.com",
|
|
15
|
-
},
|
|
16
|
-
];
|
|
17
|
-
res.json(users);
|
|
18
|
-
});
|
|
19
|
-
|
|
20
|
-
const loginSchema = {
|
|
21
|
-
email: { required: true, email: true },
|
|
22
|
-
password: { required: true, min: 6 },
|
|
23
|
-
};
|
|
24
|
-
|
|
25
|
-
const loginValidator = new Validator(loginSchema);
|
|
26
|
-
|
|
27
|
-
routerApiExample.post("/login", loginValidator.middleware(), (req, res) => {
|
|
28
|
-
res.json({ message: "Login successful", body: req.body });
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
export default routerApiExample;
|
|
1
|
+
import Router from "@seip/blue-bird/core/router.js";
|
|
2
|
+
import Validator from "@seip/blue-bird/core/validate.js";
|
|
3
|
+
|
|
4
|
+
const routerApiExample = new Router("/api");
|
|
5
|
+
|
|
6
|
+
routerApiExample.get("/users", (req, res) => {
|
|
7
|
+
const users = [
|
|
8
|
+
{
|
|
9
|
+
name: "John Doe",
|
|
10
|
+
email: "john.doe@example.com",
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
name: "Jane Doe2",
|
|
14
|
+
email: "jane.doe2@example.com",
|
|
15
|
+
},
|
|
16
|
+
];
|
|
17
|
+
res.json(users);
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
const loginSchema = {
|
|
21
|
+
email: { required: true, email: true },
|
|
22
|
+
password: { required: true, min: 6 },
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
const loginValidator = new Validator(loginSchema);
|
|
26
|
+
|
|
27
|
+
routerApiExample.post("/login", loginValidator.middleware(), (req, res) => {
|
|
28
|
+
res.json({ message: "Login successful", body: req.body });
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
export default routerApiExample;
|
|
@@ -1,41 +1,41 @@
|
|
|
1
|
-
import Router from "@seip/blue-bird/core/router.js";
|
|
2
|
-
import Template from "@seip/blue-bird/core/template.js";
|
|
3
|
-
import App from "@seip/blue-bird/core/app.js";
|
|
4
|
-
import seoData from "./seo.js";
|
|
5
|
-
|
|
6
|
-
const routerFrontendExample = new Router();
|
|
7
|
-
routerFrontendExample.use(App.helmet()); // Helmet for frontend router
|
|
8
|
-
|
|
9
|
-
routerFrontendExample.get("/landing", (req, res) => {
|
|
10
|
-
return Template.renderHtml(res, "landing", {
|
|
11
|
-
metaTags:{
|
|
12
|
-
titleMeta:"Landing Example",
|
|
13
|
-
descriptionMeta: "Description meta",
|
|
14
|
-
keywordsMeta: "keywordsMeta"
|
|
15
|
-
}
|
|
16
|
-
});
|
|
17
|
-
});
|
|
18
|
-
|
|
19
|
-
routerFrontendExample.seo(
|
|
20
|
-
[
|
|
21
|
-
{
|
|
22
|
-
path: "/",
|
|
23
|
-
component: "Home",
|
|
24
|
-
seoKey: "home",
|
|
25
|
-
props: { id: 1, name: "Name" },
|
|
26
|
-
},
|
|
27
|
-
{
|
|
28
|
-
path: "/about",
|
|
29
|
-
component: "About",
|
|
30
|
-
seoKey: "about",
|
|
31
|
-
props: { id: 2, name: "Name 2" },
|
|
32
|
-
},
|
|
33
|
-
],
|
|
34
|
-
{ languages: ["en", "es"], defaultLanguage: "en", seoData },
|
|
35
|
-
);
|
|
36
|
-
|
|
37
|
-
routerFrontendExample.get("*", (req, res) => {
|
|
38
|
-
return Template.renderReact(res, "App");
|
|
39
|
-
});
|
|
40
|
-
|
|
41
|
-
export default routerFrontendExample;
|
|
1
|
+
import Router from "@seip/blue-bird/core/router.js";
|
|
2
|
+
import Template from "@seip/blue-bird/core/template.js";
|
|
3
|
+
import App from "@seip/blue-bird/core/app.js";
|
|
4
|
+
import seoData from "./seo.js";
|
|
5
|
+
|
|
6
|
+
const routerFrontendExample = new Router();
|
|
7
|
+
routerFrontendExample.use(App.helmet()); // Helmet for frontend router
|
|
8
|
+
|
|
9
|
+
routerFrontendExample.get("/landing", (req, res) => {
|
|
10
|
+
return Template.renderHtml(res, "landing", {
|
|
11
|
+
metaTags:{
|
|
12
|
+
titleMeta:"Landing Example",
|
|
13
|
+
descriptionMeta: "Description meta",
|
|
14
|
+
keywordsMeta: "keywordsMeta"
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
routerFrontendExample.seo(
|
|
20
|
+
[
|
|
21
|
+
{
|
|
22
|
+
path: "/",
|
|
23
|
+
component: "Home",
|
|
24
|
+
seoKey: "home",
|
|
25
|
+
props: { id: 1, name: "Name" },
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
path: "/about",
|
|
29
|
+
component: "About",
|
|
30
|
+
seoKey: "about",
|
|
31
|
+
props: { id: 2, name: "Name 2" },
|
|
32
|
+
},
|
|
33
|
+
],
|
|
34
|
+
{ languages: ["en", "es"], defaultLanguage: "en", seoData },
|
|
35
|
+
);
|
|
36
|
+
|
|
37
|
+
routerFrontendExample.get("*", (req, res) => {
|
|
38
|
+
return Template.renderReact(res, "App");
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
export default routerFrontendExample;
|
package/backend/routes/seo.js
CHANGED
|
@@ -1,39 +1,39 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* SEO Data File
|
|
3
|
-
* Define multilingual SEO metadata for each route.
|
|
4
|
-
* Used with router.seo() via the seoData option.
|
|
5
|
-
*
|
|
6
|
-
* Structure: { seoKey: { lang: { titleMeta, descriptionMeta, keywordsMeta } } }
|
|
7
|
-
*
|
|
8
|
-
* @example
|
|
9
|
-
* import seoData from "./seo.js";
|
|
10
|
-
* router.seo([
|
|
11
|
-
* { path: "/", component: "Home", seoKey: "home" }
|
|
12
|
-
* ], { languages: ["en", "es"], defaultLanguage: "en", seoData });
|
|
13
|
-
*/
|
|
14
|
-
export default {
|
|
15
|
-
home: {
|
|
16
|
-
en: {
|
|
17
|
-
titleMeta: "Home - Blue Bird",
|
|
18
|
-
descriptionMeta: "Welcome to Blue Bird Framework",
|
|
19
|
-
keywordsMeta: "blue bird, framework, express, react",
|
|
20
|
-
},
|
|
21
|
-
es: {
|
|
22
|
-
titleMeta: "Inicio - Blue Bird",
|
|
23
|
-
descriptionMeta: "Bienvenido al Framework Blue Bird",
|
|
24
|
-
keywordsMeta: "blue bird, framework, express, react",
|
|
25
|
-
},
|
|
26
|
-
},
|
|
27
|
-
about: {
|
|
28
|
-
en: {
|
|
29
|
-
titleMeta: "About - Blue Bird",
|
|
30
|
-
descriptionMeta: "About Blue Bird Framework",
|
|
31
|
-
keywordsMeta: "about, blue bird, framework",
|
|
32
|
-
},
|
|
33
|
-
es: {
|
|
34
|
-
titleMeta: "Acerca - Blue Bird",
|
|
35
|
-
descriptionMeta: "Acerca del Framework Blue Bird",
|
|
36
|
-
keywordsMeta: "acerca, blue bird, framework",
|
|
37
|
-
},
|
|
38
|
-
},
|
|
39
|
-
};
|
|
1
|
+
/**
|
|
2
|
+
* SEO Data File
|
|
3
|
+
* Define multilingual SEO metadata for each route.
|
|
4
|
+
* Used with router.seo() via the seoData option.
|
|
5
|
+
*
|
|
6
|
+
* Structure: { seoKey: { lang: { titleMeta, descriptionMeta, keywordsMeta } } }
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* import seoData from "./seo.js";
|
|
10
|
+
* router.seo([
|
|
11
|
+
* { path: "/", component: "Home", seoKey: "home" }
|
|
12
|
+
* ], { languages: ["en", "es"], defaultLanguage: "en", seoData });
|
|
13
|
+
*/
|
|
14
|
+
export default {
|
|
15
|
+
home: {
|
|
16
|
+
en: {
|
|
17
|
+
titleMeta: "Home - Blue Bird",
|
|
18
|
+
descriptionMeta: "Welcome to Blue Bird Framework",
|
|
19
|
+
keywordsMeta: "blue bird, framework, express, react",
|
|
20
|
+
},
|
|
21
|
+
es: {
|
|
22
|
+
titleMeta: "Inicio - Blue Bird",
|
|
23
|
+
descriptionMeta: "Bienvenido al Framework Blue Bird",
|
|
24
|
+
keywordsMeta: "blue bird, framework, express, react",
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
about: {
|
|
28
|
+
en: {
|
|
29
|
+
titleMeta: "About - Blue Bird",
|
|
30
|
+
descriptionMeta: "About Blue Bird Framework",
|
|
31
|
+
keywordsMeta: "about, blue bird, framework",
|
|
32
|
+
},
|
|
33
|
+
es: {
|
|
34
|
+
titleMeta: "Acerca - Blue Bird",
|
|
35
|
+
descriptionMeta: "Acerca del Framework Blue Bird",
|
|
36
|
+
keywordsMeta: "acerca, blue bird, framework",
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
};
|