@hapico/cli 0.0.17 → 0.0.19
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/bin/index.js +413 -89
- package/bin/templates/base/.gen/functions.js +126 -0
- package/bin/templates/base/.gen/plugins/router.plugin.js +12 -0
- package/bin/templates/base/plugins/vite-plugin-app-router.js +108 -0
- package/bin/templates/base/src/app.js +18 -0
- package/bin/templates/base/src/db/index.js +132 -0
- package/bin/templates/base/src/server.js +17 -0
- package/bun.lock +77 -0
- package/dist/index.js +413 -89
- package/dist/templates/base/.gen/functions.js +126 -0
- package/dist/templates/base/.gen/plugins/router.plugin.js +12 -0
- package/dist/templates/base/plugins/vite-plugin-app-router.js +108 -0
- package/dist/templates/base/src/app.js +18 -0
- package/dist/templates/base/src/db/index.js +132 -0
- package/dist/templates/base/src/server.js +17 -0
- package/index.ts +609 -112
- package/package.json +4 -1
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.ALL_FUNCS = void 0;
|
|
7
|
+
const getNewsDetails_1 = __importDefault(require("../src/functions/getNewsDetails"));
|
|
8
|
+
const getNewsFavoriteStatus_1 = __importDefault(require("../src/functions/getNewsFavoriteStatus"));
|
|
9
|
+
const rejectPointRequest_1 = __importDefault(require("../src/functions/rejectPointRequest"));
|
|
10
|
+
const getPhoneNumber_1 = __importDefault(require("../src/functions/getPhoneNumber"));
|
|
11
|
+
const getZaloOaIdConfig_1 = __importDefault(require("../src/functions/getZaloOaIdConfig"));
|
|
12
|
+
const getFlashSalesWithGifts_1 = __importDefault(require("../src/functions/getFlashSalesWithGifts"));
|
|
13
|
+
const getProductDetails_1 = __importDefault(require("../src/functions/getProductDetails"));
|
|
14
|
+
const getLatestGifts_1 = __importDefault(require("../src/functions/getLatestGifts"));
|
|
15
|
+
const updateGiftRedemptionStatus_1 = __importDefault(require("../src/functions/updateGiftRedemptionStatus"));
|
|
16
|
+
const getProducts_1 = __importDefault(require("../src/functions/getProducts"));
|
|
17
|
+
const getVehicleForEdit_1 = __importDefault(require("../src/functions/getVehicleForEdit"));
|
|
18
|
+
const getHomepageBanners_1 = __importDefault(require("../src/functions/getHomepageBanners"));
|
|
19
|
+
const getMembershipRanks_1 = __importDefault(require("../src/functions/getMembershipRanks"));
|
|
20
|
+
const approvePointRequest_1 = __importDefault(require("../src/functions/approvePointRequest"));
|
|
21
|
+
const getRelatedNews_1 = __importDefault(require("../src/functions/getRelatedNews"));
|
|
22
|
+
const getNotifications_1 = __importDefault(require("../src/functions/getNotifications"));
|
|
23
|
+
const deleteVehicle_1 = __importDefault(require("../src/functions/deleteVehicle"));
|
|
24
|
+
const getVehicleModelsByBrand_1 = __importDefault(require("../src/functions/getVehicleModelsByBrand"));
|
|
25
|
+
const getVehiclesByUser_1 = __importDefault(require("../src/functions/getVehiclesByUser"));
|
|
26
|
+
const getUserRedemptions_1 = __importDefault(require("../src/functions/getUserRedemptions"));
|
|
27
|
+
const getOilChangeHistoryByVehicleId_1 = __importDefault(require("../src/functions/getOilChangeHistoryByVehicleId"));
|
|
28
|
+
const getUserRedemptionDetail_1 = __importDefault(require("../src/functions/getUserRedemptionDetail"));
|
|
29
|
+
const recordOilChange_1 = __importDefault(require("../src/functions/recordOilChange"));
|
|
30
|
+
const getGiftCategories_1 = __importDefault(require("../src/functions/getGiftCategories"));
|
|
31
|
+
const getAgencies_1 = __importDefault(require("../src/functions/getAgencies"));
|
|
32
|
+
const redeemGift_1 = __importDefault(require("../src/functions/redeemGift"));
|
|
33
|
+
const getGifts_1 = __importDefault(require("../src/functions/getGifts"));
|
|
34
|
+
const getAgencyDetail_1 = __importDefault(require("../src/functions/getAgencyDetail"));
|
|
35
|
+
const getVehicleBrandsAndModels_1 = __importDefault(require("../src/functions/getVehicleBrandsAndModels"));
|
|
36
|
+
const getNews_1 = __importDefault(require("../src/functions/getNews"));
|
|
37
|
+
const markRedemptionAsUsed_1 = __importDefault(require("../src/functions/markRedemptionAsUsed"));
|
|
38
|
+
const getNearbyAgencies_1 = __importDefault(require("../src/functions/getNearbyAgencies"));
|
|
39
|
+
const addVehicle_1 = __importDefault(require("../src/functions/addVehicle"));
|
|
40
|
+
const claimTask_1 = __importDefault(require("../src/functions/claimTask"));
|
|
41
|
+
const createVehicle_1 = __importDefault(require("../src/functions/createVehicle"));
|
|
42
|
+
const redeemGotitVoucher_1 = __importDefault(require("../src/functions/redeemGotitVoucher"));
|
|
43
|
+
const getGiftDetails_1 = __importDefault(require("../src/functions/getGiftDetails"));
|
|
44
|
+
const markNotificationAsRead_1 = __importDefault(require("../src/functions/markNotificationAsRead"));
|
|
45
|
+
const completeTask_1 = __importDefault(require("../src/functions/completeTask"));
|
|
46
|
+
const getTasks_1 = __importDefault(require("../src/functions/getTasks"));
|
|
47
|
+
const addNewVehicle_1 = __importDefault(require("../src/functions/addNewVehicle"));
|
|
48
|
+
const getQrCodeDetails_1 = __importDefault(require("../src/functions/getQrCodeDetails"));
|
|
49
|
+
const getLocation_1 = __importDefault(require("../src/functions/getLocation"));
|
|
50
|
+
const loginZalo_1 = __importDefault(require("../src/functions/loginZalo"));
|
|
51
|
+
const getOilChangeRecords_1 = __importDefault(require("../src/functions/getOilChangeRecords"));
|
|
52
|
+
const getPendingPointRequests_1 = __importDefault(require("../src/functions/getPendingPointRequests"));
|
|
53
|
+
const getUserLoyaltyInfo_1 = __importDefault(require("../src/functions/getUserLoyaltyInfo"));
|
|
54
|
+
const updateVehicle_1 = __importDefault(require("../src/functions/updateVehicle"));
|
|
55
|
+
const getPointsRedeemed_1 = __importDefault(require("../src/functions/getPointsRedeemed"));
|
|
56
|
+
const getRefreshToken_1 = __importDefault(require("../src/functions/getRefreshToken"));
|
|
57
|
+
const getVehicleBrands_1 = __importDefault(require("../src/functions/getVehicleBrands"));
|
|
58
|
+
const sendMessage_1 = __importDefault(require("../src/functions/sendMessage"));
|
|
59
|
+
const getMembershipBenefits_1 = __importDefault(require("../src/functions/getMembershipBenefits"));
|
|
60
|
+
const updateProfile_1 = __importDefault(require("../src/functions/updateProfile"));
|
|
61
|
+
const processScannedQrCode_1 = __importDefault(require("../src/functions/processScannedQrCode"));
|
|
62
|
+
const toggleNewsFavorite_1 = __importDefault(require("../src/functions/toggleNewsFavorite"));
|
|
63
|
+
const getLoyaltyHistory_1 = __importDefault(require("../src/functions/getLoyaltyHistory"));
|
|
64
|
+
const getNewsDetail_1 = __importDefault(require("../src/functions/getNewsDetail"));
|
|
65
|
+
const getVehicles_1 = __importDefault(require("../src/functions/getVehicles"));
|
|
66
|
+
exports.ALL_FUNCS = {
|
|
67
|
+
getNewsDetails: getNewsDetails_1.default,
|
|
68
|
+
getNewsFavoriteStatus: getNewsFavoriteStatus_1.default,
|
|
69
|
+
rejectPointRequest: rejectPointRequest_1.default,
|
|
70
|
+
getPhoneNumber: getPhoneNumber_1.default,
|
|
71
|
+
getZaloOaIdConfig: getZaloOaIdConfig_1.default,
|
|
72
|
+
getFlashSalesWithGifts: getFlashSalesWithGifts_1.default,
|
|
73
|
+
getProductDetails: getProductDetails_1.default,
|
|
74
|
+
getLatestGifts: getLatestGifts_1.default,
|
|
75
|
+
updateGiftRedemptionStatus: updateGiftRedemptionStatus_1.default,
|
|
76
|
+
getProducts: getProducts_1.default,
|
|
77
|
+
getVehicleForEdit: getVehicleForEdit_1.default,
|
|
78
|
+
getHomepageBanners: getHomepageBanners_1.default,
|
|
79
|
+
getMembershipRanks: getMembershipRanks_1.default,
|
|
80
|
+
approvePointRequest: approvePointRequest_1.default,
|
|
81
|
+
getRelatedNews: getRelatedNews_1.default,
|
|
82
|
+
getNotifications: getNotifications_1.default,
|
|
83
|
+
deleteVehicle: deleteVehicle_1.default,
|
|
84
|
+
getVehicleModelsByBrand: getVehicleModelsByBrand_1.default,
|
|
85
|
+
getVehiclesByUser: getVehiclesByUser_1.default,
|
|
86
|
+
getUserRedemptions: getUserRedemptions_1.default,
|
|
87
|
+
getOilChangeHistoryByVehicleId: getOilChangeHistoryByVehicleId_1.default,
|
|
88
|
+
getUserRedemptionDetail: getUserRedemptionDetail_1.default,
|
|
89
|
+
recordOilChange: recordOilChange_1.default,
|
|
90
|
+
getGiftCategories: getGiftCategories_1.default,
|
|
91
|
+
getAgencies: getAgencies_1.default,
|
|
92
|
+
redeemGift: redeemGift_1.default,
|
|
93
|
+
getGifts: getGifts_1.default,
|
|
94
|
+
getAgencyDetail: getAgencyDetail_1.default,
|
|
95
|
+
getVehicleBrandsAndModels: getVehicleBrandsAndModels_1.default,
|
|
96
|
+
getNews: getNews_1.default,
|
|
97
|
+
markRedemptionAsUsed: markRedemptionAsUsed_1.default,
|
|
98
|
+
getNearbyAgencies: getNearbyAgencies_1.default,
|
|
99
|
+
addVehicle: addVehicle_1.default,
|
|
100
|
+
claimTask: claimTask_1.default,
|
|
101
|
+
createVehicle: createVehicle_1.default,
|
|
102
|
+
redeemGotitVoucher: redeemGotitVoucher_1.default,
|
|
103
|
+
getGiftDetails: getGiftDetails_1.default,
|
|
104
|
+
markNotificationAsRead: markNotificationAsRead_1.default,
|
|
105
|
+
completeTask: completeTask_1.default,
|
|
106
|
+
getTasks: getTasks_1.default,
|
|
107
|
+
addNewVehicle: addNewVehicle_1.default,
|
|
108
|
+
getQrCodeDetails: getQrCodeDetails_1.default,
|
|
109
|
+
getLocation: getLocation_1.default,
|
|
110
|
+
loginZalo: loginZalo_1.default,
|
|
111
|
+
getOilChangeRecords: getOilChangeRecords_1.default,
|
|
112
|
+
getPendingPointRequests: getPendingPointRequests_1.default,
|
|
113
|
+
getUserLoyaltyInfo: getUserLoyaltyInfo_1.default,
|
|
114
|
+
updateVehicle: updateVehicle_1.default,
|
|
115
|
+
getPointsRedeemed: getPointsRedeemed_1.default,
|
|
116
|
+
getRefreshToken: getRefreshToken_1.default,
|
|
117
|
+
getVehicleBrands: getVehicleBrands_1.default,
|
|
118
|
+
sendMessage: sendMessage_1.default,
|
|
119
|
+
getMembershipBenefits: getMembershipBenefits_1.default,
|
|
120
|
+
updateProfile: updateProfile_1.default,
|
|
121
|
+
processScannedQrCode: processScannedQrCode_1.default,
|
|
122
|
+
toggleNewsFavorite: toggleNewsFavorite_1.default,
|
|
123
|
+
getLoyaltyHistory: getLoyaltyHistory_1.default,
|
|
124
|
+
getNewsDetail: getNewsDetail_1.default,
|
|
125
|
+
getVehicles: getVehicles_1.default,
|
|
126
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const functions_1 = require("../functions");
|
|
4
|
+
const funcs = (app) => {
|
|
5
|
+
app.post("/functions/:functionName", async ({ params, body }) => {
|
|
6
|
+
const functionName = params.functionName;
|
|
7
|
+
const response = await functions_1.ALL_FUNCS[functionName](body);
|
|
8
|
+
return response;
|
|
9
|
+
});
|
|
10
|
+
return app;
|
|
11
|
+
};
|
|
12
|
+
exports.default = funcs;
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.default = appRouterPlugin;
|
|
4
|
+
const path_1 = require("path");
|
|
5
|
+
const fs_1 = require("fs");
|
|
6
|
+
// Function to scan directory and generate routes
|
|
7
|
+
function generateRoutes(dir, basePath = "") {
|
|
8
|
+
const routes = [];
|
|
9
|
+
const entries = (0, fs_1.readdirSync)(dir);
|
|
10
|
+
for (const entry of entries) {
|
|
11
|
+
const fullPath = (0, path_1.join)(dir, entry);
|
|
12
|
+
const stat = (0, fs_1.statSync)(fullPath);
|
|
13
|
+
if (stat.isDirectory()) {
|
|
14
|
+
const subRoutes = generateRoutes(fullPath, `${basePath}/${entry}`);
|
|
15
|
+
routes.push(...subRoutes);
|
|
16
|
+
}
|
|
17
|
+
else if (stat.isFile() &&
|
|
18
|
+
(entry === "page.tsx" || entry === "page.jsx")) {
|
|
19
|
+
const routePath = basePath || "/";
|
|
20
|
+
routes.push({
|
|
21
|
+
path: routePath,
|
|
22
|
+
componentPath: fullPath,
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return routes;
|
|
27
|
+
}
|
|
28
|
+
// Vite plugin
|
|
29
|
+
function appRouterPlugin() {
|
|
30
|
+
let config;
|
|
31
|
+
return {
|
|
32
|
+
name: "vite-plugin-app-router",
|
|
33
|
+
enforce: "pre",
|
|
34
|
+
configResolved(resolvedConfig) {
|
|
35
|
+
config = resolvedConfig;
|
|
36
|
+
},
|
|
37
|
+
// Configure server to handle virtual module
|
|
38
|
+
configureServer(server) {
|
|
39
|
+
server.middlewares.use((req, res, next) => {
|
|
40
|
+
var _a;
|
|
41
|
+
if ((_a = req.url) === null || _a === void 0 ? void 0 : _a.includes("virtual:app-routes")) {
|
|
42
|
+
res.setHeader("Content-Type", "application/javascript");
|
|
43
|
+
next();
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
next();
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
},
|
|
50
|
+
// Transform virtual module ID
|
|
51
|
+
resolveId(id) {
|
|
52
|
+
if (id === "virtual:app-routes") {
|
|
53
|
+
return "\0virtual:app-routes.tsx";
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
// Load virtual module
|
|
57
|
+
load(id) {
|
|
58
|
+
if (id === "\0virtual:app-routes.tsx") {
|
|
59
|
+
const appDir = (0, path_1.resolve)(config.root, "src/app"); // Changed from 'src/app' to 'app'
|
|
60
|
+
console.log("App Directory:", appDir); // Debug log
|
|
61
|
+
const routes = generateRoutes(appDir);
|
|
62
|
+
console.log("Generated Routes:", routes); // Debug log
|
|
63
|
+
const code = `
|
|
64
|
+
import * as React from 'react';
|
|
65
|
+
import { Routes, Route } from 'react-router-dom';
|
|
66
|
+
|
|
67
|
+
${routes
|
|
68
|
+
.map((route, i) => `import Component${i} from '${route.componentPath.replace(/\\/g, "/")}';`)
|
|
69
|
+
.join("\n")}
|
|
70
|
+
|
|
71
|
+
export const AppRoutes = () => {
|
|
72
|
+
return React.createElement(
|
|
73
|
+
Routes,
|
|
74
|
+
null,
|
|
75
|
+
${routes
|
|
76
|
+
.map((route, i) => `React.createElement(Route, { path: '${route.path}', element: React.createElement(Component${i}) })`)
|
|
77
|
+
.join(",\n")}
|
|
78
|
+
);
|
|
79
|
+
};
|
|
80
|
+
`;
|
|
81
|
+
console.log("Generated Code:", code); // Debug log
|
|
82
|
+
return {
|
|
83
|
+
code,
|
|
84
|
+
map: null,
|
|
85
|
+
moduleSideEffects: "no-treeshake",
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
// Transform the virtual module to ensure JSX processing
|
|
90
|
+
transform(code, id) {
|
|
91
|
+
if (id === "\0virtual:app-routes.tsx") {
|
|
92
|
+
return {
|
|
93
|
+
code,
|
|
94
|
+
map: null,
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
},
|
|
98
|
+
// Hot reload for changes in src/app
|
|
99
|
+
handleHotUpdate({ file, server }) {
|
|
100
|
+
if (file.includes("/src/app/") &&
|
|
101
|
+
(file.endsWith("page.tsx") || file.endsWith("page.jsx"))) {
|
|
102
|
+
server.ws.send({
|
|
103
|
+
type: "full-reload",
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
},
|
|
107
|
+
};
|
|
108
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
require("zmp-ui/zaui.css");
|
|
7
|
+
require("@/css/tailwind.scss");
|
|
8
|
+
require("@/css/app.scss");
|
|
9
|
+
const react_1 = __importDefault(require("react"));
|
|
10
|
+
const client_1 = require("react-dom/client");
|
|
11
|
+
require("./app.css");
|
|
12
|
+
const app_config_json_1 = __importDefault(require("../app-config.json"));
|
|
13
|
+
const main_1 = require("./main");
|
|
14
|
+
if (!window.APP_CONFIG) {
|
|
15
|
+
window.APP_CONFIG = app_config_json_1.default;
|
|
16
|
+
}
|
|
17
|
+
const root = (0, client_1.createRoot)(document.getElementById("app"));
|
|
18
|
+
root.render(react_1.default.createElement(main_1.Main));
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.auth = exports.HttpError = exports.db = exports.client = void 0;
|
|
4
|
+
const pglite_1 = require("@electric-sql/pglite");
|
|
5
|
+
const client = new pglite_1.PGlite();
|
|
6
|
+
exports.client = client;
|
|
7
|
+
console.log("Connecting to the database...");
|
|
8
|
+
const MIGRATION = `CREATE SEQUENCE IF NOT EXISTS "public"."users_id_seq";;
|
|
9
|
+
CREATE SEQUENCE IF NOT EXISTS "public"."schools_id_seq";;
|
|
10
|
+
CREATE SEQUENCE IF NOT EXISTS "public"."regions_id_seq";;
|
|
11
|
+
CREATE SEQUENCE IF NOT EXISTS "public"."region_admins_id_seq";;
|
|
12
|
+
CREATE TABLE IF NOT EXISTS "public"."users" (
|
|
13
|
+
"id" integer NOT NULL DEFAULT nextval('users_id_seq'::regclass),
|
|
14
|
+
"username" text NOT NULL,
|
|
15
|
+
"password" text NOT NULL,
|
|
16
|
+
"email" text NOT NULL,
|
|
17
|
+
"created_at" timestamp with time zone DEFAULT CURRENT_TIMESTAMP,
|
|
18
|
+
"updated_at" timestamp with time zone DEFAULT CURRENT_TIMESTAMP,
|
|
19
|
+
"deleted_at" timestamp with time zone,
|
|
20
|
+
CONSTRAINT "users_email_key" UNIQUE ("email"),
|
|
21
|
+
CONSTRAINT "users_pkey" PRIMARY KEY ("id"),
|
|
22
|
+
CONSTRAINT "users_username_key" UNIQUE ("username")
|
|
23
|
+
);;
|
|
24
|
+
COMMENT ON COLUMN "public"."users"."username" IS '{"label": "Username", "type": "short_text", "required": true, "description": "Unique username for the user", "visible": true}';;
|
|
25
|
+
COMMENT ON COLUMN "public"."users"."password" IS '{"label": "Password", "type": "password", "required": true, "description": "User password", "visible": false}';;
|
|
26
|
+
COMMENT ON COLUMN "public"."users"."email" IS '{"label": "Email", "type": "email", "required": true, "description": "User email address", "visible": true}';;
|
|
27
|
+
COMMENT ON COLUMN "public"."users"."created_at" IS '{"label": "Created At", "type": "datetime", "required": true, "description": "Timestamp when the user was created", "visible": false}';;
|
|
28
|
+
COMMENT ON COLUMN "public"."users"."updated_at" IS '{"label": "Updated At", "type": "datetime", "required": true, "description": "Timestamp when the user was last updated", "visible": false}';;
|
|
29
|
+
COMMENT ON COLUMN "public"."users"."deleted_at" IS '{"label": "Deleted At", "type": "datetime", "required": false, "description": "Timestamp when the user was deleted", "visible": false}';;
|
|
30
|
+
CREATE TABLE IF NOT EXISTS "public"."regions" (
|
|
31
|
+
"id" integer NOT NULL DEFAULT nextval('regions_id_seq'::regclass),
|
|
32
|
+
"name" character varying NOT NULL,
|
|
33
|
+
"description" text,
|
|
34
|
+
"created_by" integer,
|
|
35
|
+
"created_at" timestamp with time zone NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
36
|
+
"updated_at" timestamp with time zone NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
37
|
+
"deleted_at" timestamp with time zone,
|
|
38
|
+
CONSTRAINT "fk_regions_created_by" FOREIGN KEY ("created_by") REFERENCES "users" ("id"),
|
|
39
|
+
CONSTRAINT "regions_pkey" PRIMARY KEY ("id")
|
|
40
|
+
);;
|
|
41
|
+
COMMENT ON COLUMN "public"."regions"."id" IS '{"label": "ID", "type": "number", "required": true, "description": "Mã định danh duy nhất của vùng", "visible": false}';;
|
|
42
|
+
COMMENT ON COLUMN "public"."regions"."name" IS '{"label": "Tên vùng", "type": "short_text", "required": true, "description": "Tên của vùng", "visible": true}';;
|
|
43
|
+
COMMENT ON COLUMN "public"."regions"."description" IS '{"label": "Mô tả", "type": "long_text", "required": false, "description": "Mô tả về vùng", "visible": true}';;
|
|
44
|
+
COMMENT ON COLUMN "public"."regions"."created_by" IS '{"label": "Người tạo", "type": "foreign_key", "required": false, "description": "Người đã tạo bản ghi này", "table": "users", "column": "id", "visible": false}';;
|
|
45
|
+
COMMENT ON COLUMN "public"."regions"."created_at" IS '{"label": "Ngày tạo", "type": "datetime", "required": true, "description": "Thời điểm tạo bản ghi", "visible": false}';;
|
|
46
|
+
COMMENT ON COLUMN "public"."regions"."updated_at" IS '{"label": "Ngày cập nhật", "type": "datetime", "required": true, "description": "Thời điểm cập nhật bản ghi cuối cùng", "visible": false}';;
|
|
47
|
+
COMMENT ON COLUMN "public"."regions"."deleted_at" IS '{"label": "Ngày xoá", "type": "datetime", "required": false, "description": "Thời điểm xoá bản ghi (soft delete)", "visible": false}';;
|
|
48
|
+
CREATE TABLE IF NOT EXISTS "public"."schools" (
|
|
49
|
+
"id" integer NOT NULL DEFAULT nextval('schools_id_seq'::regclass),
|
|
50
|
+
"name" character varying NOT NULL,
|
|
51
|
+
"address" text,
|
|
52
|
+
"latitude" numeric NOT NULL,
|
|
53
|
+
"longitude" numeric NOT NULL,
|
|
54
|
+
"created_by" integer,
|
|
55
|
+
"created_at" timestamp with time zone NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
56
|
+
"updated_at" timestamp with time zone NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
57
|
+
"deleted_at" timestamp with time zone,
|
|
58
|
+
"region_id" integer,
|
|
59
|
+
CONSTRAINT "fk_schools_created_by" FOREIGN KEY ("created_by") REFERENCES "users" ("id"),
|
|
60
|
+
CONSTRAINT "fk_schools_region_id" FOREIGN KEY ("region_id") REFERENCES "regions" ("id"),
|
|
61
|
+
CONSTRAINT "schools_pkey" PRIMARY KEY ("id")
|
|
62
|
+
);;
|
|
63
|
+
COMMENT ON COLUMN "public"."schools"."id" IS '{"label": "ID", "type": "number", "required": true, "description": "Mã định danh duy nhất của trường học", "visible": false}';;
|
|
64
|
+
COMMENT ON COLUMN "public"."schools"."name" IS '{"label": "Tên trường", "type": "short_text", "required": true, "description": "Tên của trường học", "visible": true}';;
|
|
65
|
+
COMMENT ON COLUMN "public"."schools"."address" IS '{"label": "Địa chỉ", "type": "long_text", "required": false, "description": "Địa chỉ của trường học", "visible": true}';;
|
|
66
|
+
COMMENT ON COLUMN "public"."schools"."latitude" IS '{"label": "Vĩ độ", "type": "decimal", "required": true, "description": "Vĩ độ địa lý của trường học", "visible": true}';;
|
|
67
|
+
COMMENT ON COLUMN "public"."schools"."longitude" IS '{"label": "Kinh độ", "type": "decimal", "required": true, "description": "Kinh độ địa lý của trường học", "visible": true}';;
|
|
68
|
+
COMMENT ON COLUMN "public"."schools"."created_by" IS '{"label": "Người tạo", "type": "foreign_key", "required": false, "description": "Người đã tạo bản ghi này", "table": "users", "column": "id", "visible": false}';;
|
|
69
|
+
COMMENT ON COLUMN "public"."schools"."created_at" IS '{"label": "Ngày tạo", "type": "datetime", "required": true, "description": "Thời điểm tạo bản ghi", "visible": false}';;
|
|
70
|
+
COMMENT ON COLUMN "public"."schools"."updated_at" IS '{"label": "Ngày cập nhật", "type": "datetime", "required": true, "description": "Thời điểm cập nhật bản ghi cuối cùng", "visible": false}';;
|
|
71
|
+
COMMENT ON COLUMN "public"."schools"."deleted_at" IS '{"label": "Ngày xoá", "type": "datetime", "required": false, "description": "Thời điểm xoá bản ghi (soft delete)", "visible": false}';;
|
|
72
|
+
COMMENT ON COLUMN "public"."schools"."region_id" IS '{"label": "Vùng", "type": "foreign_key", "required": false, "description": "Vùng mà trường học thuộc về", "table": "regions", "column": "id", "visible": true}';;
|
|
73
|
+
CREATE TABLE IF NOT EXISTS "public"."region_admins" (
|
|
74
|
+
"id" integer NOT NULL DEFAULT nextval('region_admins_id_seq'::regclass),
|
|
75
|
+
"region_id" integer NOT NULL,
|
|
76
|
+
"user_id" integer NOT NULL,
|
|
77
|
+
"created_by" integer,
|
|
78
|
+
"created_at" timestamp with time zone NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
79
|
+
"updated_at" timestamp with time zone NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
80
|
+
"deleted_at" timestamp with time zone,
|
|
81
|
+
CONSTRAINT "fk_region_admins_created_by" FOREIGN KEY ("created_by") REFERENCES "users" ("id"),
|
|
82
|
+
CONSTRAINT "fk_region_admins_region_id" FOREIGN KEY ("region_id") REFERENCES "regions" ("id"),
|
|
83
|
+
CONSTRAINT "fk_region_admins_user_id" FOREIGN KEY ("user_id") REFERENCES "users" ("id"),
|
|
84
|
+
CONSTRAINT "region_admins_pkey" PRIMARY KEY ("id"),
|
|
85
|
+
CONSTRAINT "uq_region_admins_region_user" UNIQUE ("region_id", "user_id")
|
|
86
|
+
);;
|
|
87
|
+
COMMENT ON COLUMN "public"."region_admins"."id" IS '{"label": "ID", "type": "number", "required": true, "description": "Mã định danh duy nhất của liên kết admin vùng", "visible": false}';;
|
|
88
|
+
COMMENT ON COLUMN "public"."region_admins"."region_id" IS '{"label": "Vùng", "type": "foreign_key", "required": true, "description": "Mã định danh của vùng", "table": "regions", "column": "id", "visible": true}';;
|
|
89
|
+
COMMENT ON COLUMN "public"."region_admins"."user_id" IS '{"label": "Người dùng (Admin)", "type": "foreign_key", "required": true, "description": "Mã định danh của người dùng là admin cho vùng này", "table": "users", "column": "id", "visible": true}';;
|
|
90
|
+
COMMENT ON COLUMN "public"."region_admins"."created_by" IS '{"label": "Người tạo", "type": "foreign_key", "required": false, "description": "Người đã tạo liên kết này", "table": "users", "column": "id", "visible": false}';;
|
|
91
|
+
COMMENT ON COLUMN "public"."region_admins"."created_at" IS '{"label": "Ngày tạo", "type": "datetime", "required": true, "description": "Thời điểm tạo bản ghi", "visible": false}';;
|
|
92
|
+
COMMENT ON COLUMN "public"."region_admins"."updated_at" IS '{"label": "Ngày cập nhật", "type": "datetime", "required": true, "description": "Thời điểm cập nhật bản ghi cuối cùng", "visible": false}';;
|
|
93
|
+
COMMENT ON COLUMN "public"."region_admins"."deleted_at" IS '{"label": "Ngày xoá", "type": "datetime", "required": false, "description": "Thời điểm xoá bản ghi (soft delete)", "visible": false}';
|
|
94
|
+
|
|
95
|
+
INSERT INTO "public"."users" ("username", "password", "email") VALUES ('admin', '$2a$12$fx1EZ0GDonLi5rv9w3d0F.HWt1j9jmibw1b76TzaYytBZlALXrH0m', 'sohutek@gmaail.com')
|
|
96
|
+
`;
|
|
97
|
+
client.exec(MIGRATION);
|
|
98
|
+
class HttpError extends Error {
|
|
99
|
+
constructor(message, status) {
|
|
100
|
+
super(message);
|
|
101
|
+
this.status = status;
|
|
102
|
+
this.name = "HttpError";
|
|
103
|
+
}
|
|
104
|
+
toJSON() {
|
|
105
|
+
return {
|
|
106
|
+
message: this.message,
|
|
107
|
+
status: this.status,
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
toString() {
|
|
111
|
+
return JSON.stringify(this.toJSON());
|
|
112
|
+
}
|
|
113
|
+
static fromError(error) {
|
|
114
|
+
return new HttpError(error.message, 500);
|
|
115
|
+
}
|
|
116
|
+
static fromStatus(status, message) {
|
|
117
|
+
return new HttpError(message, status);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
exports.HttpError = HttpError;
|
|
121
|
+
const auth = async () => {
|
|
122
|
+
// Simulate authentication logic
|
|
123
|
+
// In a real application, you would verify a token or session here
|
|
124
|
+
return {
|
|
125
|
+
id: 1, // Example user ID
|
|
126
|
+
username: "admin", // Example username
|
|
127
|
+
email: "",
|
|
128
|
+
};
|
|
129
|
+
};
|
|
130
|
+
exports.auth = auth;
|
|
131
|
+
const db = client; // Exporting client as db for compatibility
|
|
132
|
+
exports.db = db;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
var _a, _b;
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
const elysia_1 = require("elysia");
|
|
8
|
+
const cors_1 = require("@elysiajs/cors");
|
|
9
|
+
const router_plugin_1 = __importDefault(require("../.gen/plugins/router.plugin"));
|
|
10
|
+
const swagger_1 = __importDefault(require("@elysiajs/swagger"));
|
|
11
|
+
const app = new elysia_1.Elysia()
|
|
12
|
+
.use((0, cors_1.cors)())
|
|
13
|
+
.use((0, swagger_1.default)())
|
|
14
|
+
.use(router_plugin_1.default)
|
|
15
|
+
.get("/", () => "Hello Elysia")
|
|
16
|
+
.listen(3006);
|
|
17
|
+
console.log(`🦊 Elysia is running at ${(_a = app.server) === null || _a === void 0 ? void 0 : _a.hostname}:${(_b = app.server) === null || _b === void 0 ? void 0 : _b.port}`);
|
package/bun.lock
CHANGED
|
@@ -7,9 +7,11 @@
|
|
|
7
7
|
"@babel/standalone": "^7.28.2",
|
|
8
8
|
"axios": "^1.11.0",
|
|
9
9
|
"commander": "^14.0.0",
|
|
10
|
+
"inquirer": "^12.9.6",
|
|
10
11
|
"lodash": "^4.17.21",
|
|
11
12
|
"open": "^10.2.0",
|
|
12
13
|
"ora": "^8.2.0",
|
|
14
|
+
"pako": "^2.1.0",
|
|
13
15
|
"prettier": "^3.6.2",
|
|
14
16
|
"qrcode-terminal": "^0.12.0",
|
|
15
17
|
"unzipper": "^0.12.3",
|
|
@@ -21,6 +23,7 @@
|
|
|
21
23
|
"@types/commander": "^2.12.5",
|
|
22
24
|
"@types/lodash": "^4.17.20",
|
|
23
25
|
"@types/node": "^24.1.0",
|
|
26
|
+
"@types/pako": "^2.0.4",
|
|
24
27
|
"@types/qrcode-terminal": "^0.12.2",
|
|
25
28
|
"@types/unzipper": "^0.10.11",
|
|
26
29
|
"@types/ws": "^8.18.1",
|
|
@@ -39,6 +42,38 @@
|
|
|
39
42
|
|
|
40
43
|
"@babel/types": ["@babel/types@7.28.2", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.27.1" } }, "sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ=="],
|
|
41
44
|
|
|
45
|
+
"@inquirer/ansi": ["@inquirer/ansi@1.0.0", "", {}, "sha512-JWaTfCxI1eTmJ1BIv86vUfjVatOdxwD0DAVKYevY8SazeUUZtW+tNbsdejVO1GYE0GXJW1N1ahmiC3TFd+7wZA=="],
|
|
46
|
+
|
|
47
|
+
"@inquirer/checkbox": ["@inquirer/checkbox@4.2.4", "", { "dependencies": { "@inquirer/ansi": "^1.0.0", "@inquirer/core": "^10.2.2", "@inquirer/figures": "^1.0.13", "@inquirer/type": "^3.0.8", "yoctocolors-cjs": "^2.1.2" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-2n9Vgf4HSciFq8ttKXk+qy+GsyTXPV1An6QAwe/8bkbbqvG4VW1I/ZY1pNu2rf+h9bdzMLPbRSfcNxkHBy/Ydw=="],
|
|
48
|
+
|
|
49
|
+
"@inquirer/confirm": ["@inquirer/confirm@5.1.18", "", { "dependencies": { "@inquirer/core": "^10.2.2", "@inquirer/type": "^3.0.8" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-MilmWOzHa3Ks11tzvuAmFoAd/wRuaP3SwlT1IZhyMke31FKLxPiuDWcGXhU+PKveNOpAc4axzAgrgxuIJJRmLw=="],
|
|
50
|
+
|
|
51
|
+
"@inquirer/core": ["@inquirer/core@10.2.2", "", { "dependencies": { "@inquirer/ansi": "^1.0.0", "@inquirer/figures": "^1.0.13", "@inquirer/type": "^3.0.8", "cli-width": "^4.1.0", "mute-stream": "^2.0.0", "signal-exit": "^4.1.0", "wrap-ansi": "^6.2.0", "yoctocolors-cjs": "^2.1.2" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-yXq/4QUnk4sHMtmbd7irwiepjB8jXU0kkFRL4nr/aDBA2mDz13cMakEWdDwX3eSCTkk03kwcndD1zfRAIlELxA=="],
|
|
52
|
+
|
|
53
|
+
"@inquirer/editor": ["@inquirer/editor@4.2.20", "", { "dependencies": { "@inquirer/core": "^10.2.2", "@inquirer/external-editor": "^1.0.2", "@inquirer/type": "^3.0.8" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-7omh5y5bK672Q+Brk4HBbnHNowOZwrb/78IFXdrEB9PfdxL3GudQyDk8O9vQ188wj3xrEebS2M9n18BjJoI83g=="],
|
|
54
|
+
|
|
55
|
+
"@inquirer/expand": ["@inquirer/expand@4.0.20", "", { "dependencies": { "@inquirer/core": "^10.2.2", "@inquirer/type": "^3.0.8", "yoctocolors-cjs": "^2.1.2" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-Dt9S+6qUg94fEvgn54F2Syf0Z3U8xmnBI9ATq2f5h9xt09fs2IJXSCIXyyVHwvggKWFXEY/7jATRo2K6Dkn6Ow=="],
|
|
56
|
+
|
|
57
|
+
"@inquirer/external-editor": ["@inquirer/external-editor@1.0.2", "", { "dependencies": { "chardet": "^2.1.0", "iconv-lite": "^0.7.0" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-yy9cOoBnx58TlsPrIxauKIFQTiyH+0MK4e97y4sV9ERbI+zDxw7i2hxHLCIEGIE/8PPvDxGhgzIOTSOWcs6/MQ=="],
|
|
58
|
+
|
|
59
|
+
"@inquirer/figures": ["@inquirer/figures@1.0.13", "", {}, "sha512-lGPVU3yO9ZNqA7vTYz26jny41lE7yoQansmqdMLBEfqaGsmdg7V3W9mK9Pvb5IL4EVZ9GnSDGMO/cJXud5dMaw=="],
|
|
60
|
+
|
|
61
|
+
"@inquirer/input": ["@inquirer/input@4.2.4", "", { "dependencies": { "@inquirer/core": "^10.2.2", "@inquirer/type": "^3.0.8" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-cwSGpLBMwpwcZZsc6s1gThm0J+it/KIJ+1qFL2euLmSKUMGumJ5TcbMgxEjMjNHRGadouIYbiIgruKoDZk7klw=="],
|
|
62
|
+
|
|
63
|
+
"@inquirer/number": ["@inquirer/number@3.0.20", "", { "dependencies": { "@inquirer/core": "^10.2.2", "@inquirer/type": "^3.0.8" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-bbooay64VD1Z6uMfNehED2A2YOPHSJnQLs9/4WNiV/EK+vXczf/R988itL2XLDGTgmhMF2KkiWZo+iEZmc4jqg=="],
|
|
64
|
+
|
|
65
|
+
"@inquirer/password": ["@inquirer/password@4.0.20", "", { "dependencies": { "@inquirer/ansi": "^1.0.0", "@inquirer/core": "^10.2.2", "@inquirer/type": "^3.0.8" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-nxSaPV2cPvvoOmRygQR+h0B+Av73B01cqYLcr7NXcGXhbmsYfUb8fDdw2Us1bI2YsX+VvY7I7upgFYsyf8+Nug=="],
|
|
66
|
+
|
|
67
|
+
"@inquirer/prompts": ["@inquirer/prompts@7.8.6", "", { "dependencies": { "@inquirer/checkbox": "^4.2.4", "@inquirer/confirm": "^5.1.18", "@inquirer/editor": "^4.2.20", "@inquirer/expand": "^4.0.20", "@inquirer/input": "^4.2.4", "@inquirer/number": "^3.0.20", "@inquirer/password": "^4.0.20", "@inquirer/rawlist": "^4.1.8", "@inquirer/search": "^3.1.3", "@inquirer/select": "^4.3.4" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-68JhkiojicX9SBUD8FE/pSKbOKtwoyaVj1kwqLfvjlVXZvOy3iaSWX4dCLsZyYx/5Ur07Fq+yuDNOen+5ce6ig=="],
|
|
68
|
+
|
|
69
|
+
"@inquirer/rawlist": ["@inquirer/rawlist@4.1.8", "", { "dependencies": { "@inquirer/core": "^10.2.2", "@inquirer/type": "^3.0.8", "yoctocolors-cjs": "^2.1.2" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-CQ2VkIASbgI2PxdzlkeeieLRmniaUU1Aoi5ggEdm6BIyqopE9GuDXdDOj9XiwOqK5qm72oI2i6J+Gnjaa26ejg=="],
|
|
70
|
+
|
|
71
|
+
"@inquirer/search": ["@inquirer/search@3.1.3", "", { "dependencies": { "@inquirer/core": "^10.2.2", "@inquirer/figures": "^1.0.13", "@inquirer/type": "^3.0.8", "yoctocolors-cjs": "^2.1.2" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-D5T6ioybJJH0IiSUK/JXcoRrrm8sXwzrVMjibuPs+AgxmogKslaafy1oxFiorNI4s3ElSkeQZbhYQgLqiL8h6Q=="],
|
|
72
|
+
|
|
73
|
+
"@inquirer/select": ["@inquirer/select@4.3.4", "", { "dependencies": { "@inquirer/ansi": "^1.0.0", "@inquirer/core": "^10.2.2", "@inquirer/figures": "^1.0.13", "@inquirer/type": "^3.0.8", "yoctocolors-cjs": "^2.1.2" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-Qp20nySRmfbuJBBsgPU7E/cL62Hf250vMZRzYDcBHty2zdD1kKCnoDFWRr0WO2ZzaXp3R7a4esaVGJUx0E6zvA=="],
|
|
74
|
+
|
|
75
|
+
"@inquirer/type": ["@inquirer/type@3.0.8", "", { "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-lg9Whz8onIHRthWaN1Q9EGLa/0LFJjyM8mEUbL1eTi6yMGvBf8gvyDLtxSXztQsxMvhxxNpJYrwa1YHdq+w4Jw=="],
|
|
76
|
+
|
|
42
77
|
"@types/babel__core": ["@types/babel__core@7.20.5", "", { "dependencies": { "@babel/parser": "^7.20.7", "@babel/types": "^7.20.7", "@types/babel__generator": "*", "@types/babel__template": "*", "@types/babel__traverse": "*" } }, "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA=="],
|
|
43
78
|
|
|
44
79
|
"@types/babel__generator": ["@types/babel__generator@7.27.0", "", { "dependencies": { "@babel/types": "^7.0.0" } }, "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg=="],
|
|
@@ -55,6 +90,8 @@
|
|
|
55
90
|
|
|
56
91
|
"@types/node": ["@types/node@24.1.0", "", { "dependencies": { "undici-types": "~7.8.0" } }, "sha512-ut5FthK5moxFKH2T1CUOC6ctR67rQRvvHdFLCD2Ql6KXmMuCrjsSsRI9UsLCm9M18BMwClv4pn327UvB7eeO1w=="],
|
|
57
92
|
|
|
93
|
+
"@types/pako": ["@types/pako@2.0.4", "", {}, "sha512-VWDCbrLeVXJM9fihYodcLiIv0ku+AlOa/TQ1SvYOaBuyrSKgEcro95LJyIsJ4vSo6BXIxOKxiJAat04CmST9Fw=="],
|
|
94
|
+
|
|
58
95
|
"@types/qrcode-terminal": ["@types/qrcode-terminal@0.12.2", "", {}, "sha512-v+RcIEJ+Uhd6ygSQ0u5YYY7ZM+la7GgPbs0V/7l/kFs2uO4S8BcIUEMoP7za4DNIqNnUD5npf0A/7kBhrCKG5Q=="],
|
|
59
96
|
|
|
60
97
|
"@types/unzipper": ["@types/unzipper@0.10.11", "", { "dependencies": { "@types/node": "*" } }, "sha512-D25im2zjyMCcgL9ag6N46+wbtJBnXIr7SI4zHf9eJD2Dw2tEB5e+p5MYkrxKIVRscs5QV0EhtU9rgXSPx90oJg=="],
|
|
@@ -63,6 +100,8 @@
|
|
|
63
100
|
|
|
64
101
|
"ansi-regex": ["ansi-regex@6.1.0", "", {}, "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA=="],
|
|
65
102
|
|
|
103
|
+
"ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="],
|
|
104
|
+
|
|
66
105
|
"asynckit": ["asynckit@0.4.0", "", {}, "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="],
|
|
67
106
|
|
|
68
107
|
"axios": ["axios@1.11.0", "", { "dependencies": { "follow-redirects": "^1.15.6", "form-data": "^4.0.4", "proxy-from-env": "^1.1.0" } }, "sha512-1Lx3WLFQWm3ooKDYZD1eXmoGO9fxYQjrycfHFC8P0sCfQVXyROp0p9PFWBehewBOdCwHc+f/b8I0fMto5eSfwA=="],
|
|
@@ -75,10 +114,18 @@
|
|
|
75
114
|
|
|
76
115
|
"chalk": ["chalk@5.4.1", "", {}, "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w=="],
|
|
77
116
|
|
|
117
|
+
"chardet": ["chardet@2.1.0", "", {}, "sha512-bNFETTG/pM5ryzQ9Ad0lJOTa6HWD/YsScAR3EnCPZRPlQh77JocYktSHOUHelyhm8IARL+o4c4F1bP5KVOjiRA=="],
|
|
118
|
+
|
|
78
119
|
"cli-cursor": ["cli-cursor@5.0.0", "", { "dependencies": { "restore-cursor": "^5.0.0" } }, "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw=="],
|
|
79
120
|
|
|
80
121
|
"cli-spinners": ["cli-spinners@2.9.2", "", {}, "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg=="],
|
|
81
122
|
|
|
123
|
+
"cli-width": ["cli-width@4.1.0", "", {}, "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ=="],
|
|
124
|
+
|
|
125
|
+
"color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="],
|
|
126
|
+
|
|
127
|
+
"color-name": ["color-name@1.1.4", "", {}, "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="],
|
|
128
|
+
|
|
82
129
|
"combined-stream": ["combined-stream@1.0.8", "", { "dependencies": { "delayed-stream": "~1.0.0" } }, "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg=="],
|
|
83
130
|
|
|
84
131
|
"commander": ["commander@14.0.0", "", {}, "sha512-2uM9rYjPvyq39NwLRqaiLtWHyDC1FvryJDa2ATTVims5YAS4PupsEQsDvP14FqhFr0P49CYDugi59xaxJlTXRA=="],
|
|
@@ -131,10 +178,16 @@
|
|
|
131
178
|
|
|
132
179
|
"hasown": ["hasown@2.0.2", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ=="],
|
|
133
180
|
|
|
181
|
+
"iconv-lite": ["iconv-lite@0.7.0", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ=="],
|
|
182
|
+
|
|
134
183
|
"inherits": ["inherits@2.0.4", "", {}, "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="],
|
|
135
184
|
|
|
185
|
+
"inquirer": ["inquirer@12.9.6", "", { "dependencies": { "@inquirer/ansi": "^1.0.0", "@inquirer/core": "^10.2.2", "@inquirer/prompts": "^7.8.6", "@inquirer/type": "^3.0.8", "mute-stream": "^2.0.0", "run-async": "^4.0.5", "rxjs": "^7.8.2" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-603xXOgyfxhuis4nfnWaZrMaotNT0Km9XwwBNWUKbIDqeCY89jGr2F9YPEMiNhU6XjIP4VoWISMBFfcc5NgrTw=="],
|
|
186
|
+
|
|
136
187
|
"is-docker": ["is-docker@3.0.0", "", { "bin": { "is-docker": "cli.js" } }, "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ=="],
|
|
137
188
|
|
|
189
|
+
"is-fullwidth-code-point": ["is-fullwidth-code-point@3.0.0", "", {}, "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="],
|
|
190
|
+
|
|
138
191
|
"is-inside-container": ["is-inside-container@1.0.0", "", { "dependencies": { "is-docker": "^3.0.0" }, "bin": { "is-inside-container": "cli.js" } }, "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA=="],
|
|
139
192
|
|
|
140
193
|
"is-interactive": ["is-interactive@2.0.0", "", {}, "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ=="],
|
|
@@ -159,6 +212,8 @@
|
|
|
159
212
|
|
|
160
213
|
"mimic-function": ["mimic-function@5.0.1", "", {}, "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA=="],
|
|
161
214
|
|
|
215
|
+
"mute-stream": ["mute-stream@2.0.0", "", {}, "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA=="],
|
|
216
|
+
|
|
162
217
|
"node-int64": ["node-int64@0.4.0", "", {}, "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw=="],
|
|
163
218
|
|
|
164
219
|
"onetime": ["onetime@7.0.0", "", { "dependencies": { "mimic-function": "^5.0.0" } }, "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ=="],
|
|
@@ -167,6 +222,8 @@
|
|
|
167
222
|
|
|
168
223
|
"ora": ["ora@8.2.0", "", { "dependencies": { "chalk": "^5.3.0", "cli-cursor": "^5.0.0", "cli-spinners": "^2.9.2", "is-interactive": "^2.0.0", "is-unicode-supported": "^2.0.0", "log-symbols": "^6.0.0", "stdin-discarder": "^0.2.2", "string-width": "^7.2.0", "strip-ansi": "^7.1.0" } }, "sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw=="],
|
|
169
224
|
|
|
225
|
+
"pako": ["pako@2.1.0", "", {}, "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug=="],
|
|
226
|
+
|
|
170
227
|
"prettier": ["prettier@3.6.2", "", { "bin": { "prettier": "bin/prettier.cjs" } }, "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ=="],
|
|
171
228
|
|
|
172
229
|
"process-nextick-args": ["process-nextick-args@2.0.1", "", {}, "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="],
|
|
@@ -181,8 +238,14 @@
|
|
|
181
238
|
|
|
182
239
|
"run-applescript": ["run-applescript@7.0.0", "", {}, "sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A=="],
|
|
183
240
|
|
|
241
|
+
"run-async": ["run-async@4.0.6", "", {}, "sha512-IoDlSLTs3Yq593mb3ZoKWKXMNu3UpObxhgA/Xuid5p4bbfi2jdY1Hj0m1K+0/tEuQTxIGMhQDqGjKb7RuxGpAQ=="],
|
|
242
|
+
|
|
243
|
+
"rxjs": ["rxjs@7.8.2", "", { "dependencies": { "tslib": "^2.1.0" } }, "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA=="],
|
|
244
|
+
|
|
184
245
|
"safe-buffer": ["safe-buffer@5.1.2", "", {}, "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="],
|
|
185
246
|
|
|
247
|
+
"safer-buffer": ["safer-buffer@2.1.2", "", {}, "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="],
|
|
248
|
+
|
|
186
249
|
"signal-exit": ["signal-exit@4.1.0", "", {}, "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw=="],
|
|
187
250
|
|
|
188
251
|
"stdin-discarder": ["stdin-discarder@0.2.2", "", {}, "sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ=="],
|
|
@@ -193,6 +256,8 @@
|
|
|
193
256
|
|
|
194
257
|
"strip-ansi": ["strip-ansi@7.1.0", "", { "dependencies": { "ansi-regex": "^6.0.1" } }, "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ=="],
|
|
195
258
|
|
|
259
|
+
"tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="],
|
|
260
|
+
|
|
196
261
|
"typescript": ["typescript@5.8.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ=="],
|
|
197
262
|
|
|
198
263
|
"undici-types": ["undici-types@7.8.0", "", {}, "sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw=="],
|
|
@@ -205,10 +270,22 @@
|
|
|
205
270
|
|
|
206
271
|
"uuid": ["uuid@13.0.0", "", { "bin": { "uuid": "dist-node/bin/uuid" } }, "sha512-XQegIaBTVUjSHliKqcnFqYypAd4S+WCYt5NIeRs6w/UAry7z8Y9j5ZwRRL4kzq9U3sD6v+85er9FvkEaBpji2w=="],
|
|
207
272
|
|
|
273
|
+
"wrap-ansi": ["wrap-ansi@6.2.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA=="],
|
|
274
|
+
|
|
208
275
|
"ws": ["ws@8.18.3", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg=="],
|
|
209
276
|
|
|
210
277
|
"wsl-utils": ["wsl-utils@0.1.0", "", { "dependencies": { "is-wsl": "^3.1.0" } }, "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw=="],
|
|
211
278
|
|
|
279
|
+
"yoctocolors-cjs": ["yoctocolors-cjs@2.1.3", "", {}, "sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw=="],
|
|
280
|
+
|
|
212
281
|
"log-symbols/is-unicode-supported": ["is-unicode-supported@1.3.0", "", {}, "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ=="],
|
|
282
|
+
|
|
283
|
+
"wrap-ansi/string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="],
|
|
284
|
+
|
|
285
|
+
"wrap-ansi/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="],
|
|
286
|
+
|
|
287
|
+
"wrap-ansi/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="],
|
|
288
|
+
|
|
289
|
+
"wrap-ansi/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="],
|
|
213
290
|
}
|
|
214
291
|
}
|