@wecode-team/cms-supabase-api 0.1.46 → 0.1.48
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/dist/config/feishu-alert.d.ts +4 -0
- package/dist/index.d.ts +4 -2
- package/dist/index.esm.js +203 -288
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +205 -290
- package/dist/index.js.map +1 -1
- package/dist/types/index.d.ts +2 -1
- package/dist/utils/feishu-alert.d.ts +13 -0
- package/dist/utils/route-helpers.d.ts +0 -1
- package/package.json +1 -1
- package/dist/handlers/analytics.d.ts +0 -11
- package/dist/handlers/configs.d.ts +0 -23
package/dist/index.esm.js
CHANGED
|
@@ -673,6 +673,10 @@ function getSupabaseSetupSQL() {
|
|
|
673
673
|
return "-- Supabase Setup SQL for we0-cms-supabase-hono-api\n-- \u8BF7\u5728 Supabase SQL \u7F16\u8F91\u5668\u4E2D\u6267\u884C\u4EE5\u4E0B\u5B8C\u6574\u811A\u672C\n\n-- Function to execute SQL queries\nCREATE OR REPLACE FUNCTION execute_sql(sql_query text)\nRETURNS json\nLANGUAGE plpgsql\nSECURITY DEFINER\nAS $$\nDECLARE\n result json;\n row_count integer;\nBEGIN\n EXECUTE sql_query;\n GET DIAGNOSTICS row_count = ROW_COUNT;\n RETURN json_build_object('success', true, 'rows_affected', row_count);\nEXCEPTION\n WHEN OTHERS THEN\n RETURN json_build_object('success', false, 'error', SQLERRM);\nEND;\n$$;\n\n-- Function to execute SQL with parameters (simplified version)\nCREATE OR REPLACE FUNCTION execute_sql_with_params(sql_query text, params json)\nRETURNS json\nLANGUAGE plpgsql\nSECURITY DEFINER\nAS $$\nDECLARE\n result json;\n row_count integer;\nBEGIN\n -- Note: This is a simplified version for basic use cases\n -- In production, you might want more sophisticated parameter binding\n EXECUTE sql_query;\n GET DIAGNOSTICS row_count = ROW_COUNT;\n RETURN json_build_object('success', true, 'rows_affected', row_count);\nEXCEPTION\n WHEN OTHERS THEN\n RETURN json_build_object('success', false, 'error', SQLERRM);\nEND;\n$$;\n\n-- Function to check if table exists\nCREATE OR REPLACE FUNCTION check_table_exists(input_table_name text)\nRETURNS boolean\nLANGUAGE plpgsql\nSECURITY DEFINER\nAS $$\nBEGIN\n RETURN EXISTS (\n SELECT 1 FROM information_schema.tables\n WHERE table_schema = 'public' \n AND table_name = input_table_name\n );\nEND;\n$$;\n\n-- Function to get table structure\nCREATE OR REPLACE FUNCTION get_table_structure(table_name text)\nRETURNS json\nLANGUAGE plpgsql\nSECURITY DEFINER\nAS $$\nDECLARE\n result json;\nBEGIN\n SELECT json_agg(\n json_build_object(\n 'column_name', column_name,\n 'data_type', data_type,\n 'is_nullable', is_nullable,\n 'column_default', column_default,\n 'character_maximum_length', character_maximum_length\n )\n ) INTO result\n FROM information_schema.columns\n WHERE table_schema = 'public' AND table_name = $1\n ORDER BY ordinal_position;\n \n RETURN COALESCE(result, '[]'::json);\nEND;\n$$;\n\n-- Function to create CMS models table if not exists\nCREATE OR REPLACE FUNCTION create_cms_models_table_if_not_exists()\nRETURNS json\nLANGUAGE plpgsql\nSECURITY DEFINER\nAS $$\nBEGIN\n -- Create the CMS models table\n CREATE TABLE IF NOT EXISTS \"_cms_models\" (\n id SERIAL PRIMARY KEY,\n name VARCHAR(100) NOT NULL,\n table_name VARCHAR(100) NOT NULL UNIQUE,\n json_schema JSONB NOT NULL,\n created_at TIMESTAMPTZ DEFAULT NOW(),\n updated_at TIMESTAMPTZ DEFAULT NOW()\n );\n \n -- Create or replace the trigger function for updating timestamps\n CREATE OR REPLACE FUNCTION update_updated_at_column()\n RETURNS TRIGGER AS $trigger$\n BEGIN\n NEW.updated_at = NOW();\n RETURN NEW;\n END;\n $trigger$ language 'plpgsql';\n \n -- Drop existing trigger if it exists and create new one\n DROP TRIGGER IF EXISTS update_cms_models_updated_at ON \"_cms_models\";\n CREATE TRIGGER update_cms_models_updated_at\n BEFORE UPDATE ON \"_cms_models\"\n FOR EACH ROW\n EXECUTE FUNCTION update_updated_at_column();\n \n RETURN json_build_object('success', true, 'message', 'CMS models table created successfully');\nEXCEPTION\n WHEN OTHERS THEN\n RETURN json_build_object('success', false, 'error', SQLERRM);\nEND;\n$$;\n\n-- Initialize the CMS models table\nSELECT create_cms_models_table_if_not_exists();\n\n-- Grant necessary permissions (adjust as needed for your security requirements)\n-- Note: Be careful with these permissions in production\nGRANT USAGE ON SCHEMA public TO anon, authenticated;\nGRANT ALL ON ALL TABLES IN SCHEMA public TO anon, authenticated;\nGRANT ALL ON ALL SEQUENCES IN SCHEMA public TO anon, authenticated;\nGRANT ALL ON ALL FUNCTIONS IN SCHEMA public TO anon, authenticated;\n\n-- Create RLS policies for the CMS models table (optional, adjust as needed)\nALTER TABLE \"_cms_models\" ENABLE ROW LEVEL SECURITY;\n\n-- Allow all operations for all users (development environment)\nCREATE POLICY \"Allow all operations\" ON \"_cms_models\"\n FOR ALL USING (true);\n\nCOMMENT ON TABLE \"_cms_models\" IS 'CMS models configuration table for we0-cms-supabase-hono-api';\nCOMMENT ON FUNCTION execute_sql(text) IS 'Execute SQL queries for dynamic table management';\nCOMMENT ON FUNCTION check_table_exists(text) IS 'Check if a table exists in the public schema';\nCOMMENT ON FUNCTION get_table_structure(text) IS 'Get the structure of a table';";
|
|
674
674
|
}
|
|
675
675
|
|
|
676
|
+
var feishuAlertConfig = {
|
|
677
|
+
crudErrorWebhookUrls: ["https://open.feishu.cn/open-apis/bot/v2/hook/784e9470-c1fd-4e38-97a2-b9a1856c00b1"]
|
|
678
|
+
};
|
|
679
|
+
|
|
676
680
|
function _classCallCheck(a, n) {
|
|
677
681
|
if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function");
|
|
678
682
|
}
|
|
@@ -1007,8 +1011,8 @@ function _defineProperty(e, r, t) {
|
|
|
1007
1011
|
}) : e[r] = t, e;
|
|
1008
1012
|
}
|
|
1009
1013
|
|
|
1010
|
-
function ownKeys$
|
|
1011
|
-
function _objectSpread$
|
|
1014
|
+
function ownKeys$4(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
1015
|
+
function _objectSpread$4(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$4(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$4(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
1012
1016
|
function _createForOfIteratorHelper$2(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$3(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
1013
1017
|
function _unsupportedIterableToArray$3(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$3(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$3(r, a) : void 0; } }
|
|
1014
1018
|
function _arrayLikeToArray$3(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
@@ -1016,6 +1020,7 @@ function _arrayLikeToArray$3(r, a) { (null == a || a > r.length) && (a = r.lengt
|
|
|
1016
1020
|
var fieldTypeMapping = {
|
|
1017
1021
|
string: "text",
|
|
1018
1022
|
text: "text",
|
|
1023
|
+
richText: "text",
|
|
1019
1024
|
integer: "int4",
|
|
1020
1025
|
"float": "float8",
|
|
1021
1026
|
"boolean": "bool",
|
|
@@ -2063,7 +2068,7 @@ var DynamicTableService = /*#__PURE__*/function () {
|
|
|
2063
2068
|
throw error;
|
|
2064
2069
|
case 2:
|
|
2065
2070
|
return _context14.abrupt("return", (data || []).map(function (item) {
|
|
2066
|
-
return _objectSpread$
|
|
2071
|
+
return _objectSpread$4({
|
|
2067
2072
|
id: item.id,
|
|
2068
2073
|
label: item[displayField] || "ID: ".concat(item.id)
|
|
2069
2074
|
}, item);
|
|
@@ -2176,8 +2181,8 @@ function getDynamicTableService() {
|
|
|
2176
2181
|
return defaultService$1;
|
|
2177
2182
|
}
|
|
2178
2183
|
|
|
2179
|
-
function ownKeys$
|
|
2180
|
-
function _objectSpread$
|
|
2184
|
+
function ownKeys$3(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
2185
|
+
function _objectSpread$3(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$3(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$3(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
2181
2186
|
var AuthService = /*#__PURE__*/function () {
|
|
2182
2187
|
function AuthService() {
|
|
2183
2188
|
_classCallCheck(this, AuthService);
|
|
@@ -2354,7 +2359,7 @@ var AuthService = /*#__PURE__*/function () {
|
|
|
2354
2359
|
return _regeneratorRuntime.wrap(function (_context4) {
|
|
2355
2360
|
while (1) switch (_context4.prev = _context4.next) {
|
|
2356
2361
|
case 0:
|
|
2357
|
-
finalUserData = _objectSpread$
|
|
2362
|
+
finalUserData = _objectSpread$3({
|
|
2358
2363
|
tableName: this.defaultTableName
|
|
2359
2364
|
}, userData);
|
|
2360
2365
|
_context4.prev = 1;
|
|
@@ -2412,7 +2417,7 @@ var AuthService = /*#__PURE__*/function () {
|
|
|
2412
2417
|
case 0:
|
|
2413
2418
|
updateData = _args5.length > 1 && _args5[1] !== undefined ? _args5[1] : {};
|
|
2414
2419
|
// 设置默认值
|
|
2415
|
-
finalUpdateData = _objectSpread$
|
|
2420
|
+
finalUpdateData = _objectSpread$3({
|
|
2416
2421
|
tableName: this.defaultTableName
|
|
2417
2422
|
}, updateData);
|
|
2418
2423
|
_context5.prev = 1;
|
|
@@ -2820,8 +2825,8 @@ function _toConsumableArray(r) {
|
|
|
2820
2825
|
return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray$2(r) || _nonIterableSpread();
|
|
2821
2826
|
}
|
|
2822
2827
|
|
|
2823
|
-
function ownKeys$
|
|
2824
|
-
function _objectSpread$
|
|
2828
|
+
function ownKeys$2(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
2829
|
+
function _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$2(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$2(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
2825
2830
|
function _callSuper$1(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct$1() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
|
|
2826
2831
|
function _isNativeReflectConstruct$1() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct$1 = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
2827
2832
|
// src/error.ts
|
|
@@ -3349,7 +3354,7 @@ var DEFAULT_LIMITS = {
|
|
|
3349
3354
|
other: 10 * 1024 * 1024
|
|
3350
3355
|
};
|
|
3351
3356
|
function getSizeLimit(fileName, limits) {
|
|
3352
|
-
var merged = _objectSpread$
|
|
3357
|
+
var merged = _objectSpread$2(_objectSpread$2({}, DEFAULT_LIMITS), limits);
|
|
3353
3358
|
if (isImage(fileName)) return merged.image;
|
|
3354
3359
|
if (isVideo(fileName)) return merged.video;
|
|
3355
3360
|
return merged.other;
|
|
@@ -3377,7 +3382,7 @@ function _compressImageBlob() {
|
|
|
3377
3382
|
return _regeneratorRuntime.wrap(function (_context10) {
|
|
3378
3383
|
while (1) switch (_context10.prev = _context10.next) {
|
|
3379
3384
|
case 0:
|
|
3380
|
-
opts = _objectSpread$
|
|
3385
|
+
opts = _objectSpread$2(_objectSpread$2({}, DEFAULT_COMPRESS), options);
|
|
3381
3386
|
if (!(typeof createImageBitmap === "undefined" || typeof OffscreenCanvas === "undefined")) {
|
|
3382
3387
|
_context10.next = 1;
|
|
3383
3388
|
break;
|
|
@@ -3443,7 +3448,7 @@ function _processFile() {
|
|
|
3443
3448
|
return _regeneratorRuntime.wrap(function (_context11) {
|
|
3444
3449
|
while (1) switch (_context11.prev = _context11.next) {
|
|
3445
3450
|
case 0:
|
|
3446
|
-
opts = _objectSpread$
|
|
3451
|
+
opts = _objectSpread$2(_objectSpread$2({}, DEFAULT_COMPRESS), compress);
|
|
3447
3452
|
if (!(opts.enabled && isImage(fileName))) {
|
|
3448
3453
|
_context11.next = 2;
|
|
3449
3454
|
break;
|
|
@@ -3507,7 +3512,7 @@ function createOssClient() {
|
|
|
3507
3512
|
var allowedExtensions = options.allowedExtensions;
|
|
3508
3513
|
function mergeRetry(override) {
|
|
3509
3514
|
if (!defaultRetry && !override) return void 0;
|
|
3510
|
-
return _objectSpread$
|
|
3515
|
+
return _objectSpread$2(_objectSpread$2({}, defaultRetry), override);
|
|
3511
3516
|
}
|
|
3512
3517
|
function resolveCompress(override) {
|
|
3513
3518
|
if (override === false) return {
|
|
@@ -3517,7 +3522,7 @@ function createOssClient() {
|
|
|
3517
3522
|
enabled: false
|
|
3518
3523
|
};
|
|
3519
3524
|
var base = _typeof$1(defaultCompress) === "object" ? defaultCompress : {};
|
|
3520
|
-
return override ? _objectSpread$
|
|
3525
|
+
return override ? _objectSpread$2(_objectSpread$2({}, base), override) : Object.keys(base).length ? base : void 0;
|
|
3521
3526
|
}
|
|
3522
3527
|
function uploadOne(_x25, _x26, _x27, _x28) {
|
|
3523
3528
|
return _uploadOne.apply(this, arguments);
|
|
@@ -3603,7 +3608,7 @@ function createOssClient() {
|
|
|
3603
3608
|
var i = index++;
|
|
3604
3609
|
var item = files[i];
|
|
3605
3610
|
running++;
|
|
3606
|
-
var fileOpts = _objectSpread$
|
|
3611
|
+
var fileOpts = _objectSpread$2({
|
|
3607
3612
|
retry: opts === null || opts === void 0 ? void 0 : opts.retry,
|
|
3608
3613
|
compress: opts === null || opts === void 0 ? void 0 : opts.compress
|
|
3609
3614
|
}, item.options);
|
|
@@ -4048,6 +4053,141 @@ function _isUserSessionAdmin() {
|
|
|
4048
4053
|
return _isUserSessionAdmin.apply(this, arguments);
|
|
4049
4054
|
}
|
|
4050
4055
|
|
|
4056
|
+
var ACTION_LABELS = {
|
|
4057
|
+
create: "创建",
|
|
4058
|
+
read: "查询",
|
|
4059
|
+
update: "更新",
|
|
4060
|
+
"delete": "删除"
|
|
4061
|
+
};
|
|
4062
|
+
var TARGET_LABELS = {
|
|
4063
|
+
data: "数据",
|
|
4064
|
+
model: "模型"
|
|
4065
|
+
};
|
|
4066
|
+
function getWebhookUrls() {
|
|
4067
|
+
return feishuAlertConfig.crudErrorWebhookUrls.map(function (item) {
|
|
4068
|
+
return item.trim();
|
|
4069
|
+
}).filter(Boolean);
|
|
4070
|
+
}
|
|
4071
|
+
function getErrorMessage(error) {
|
|
4072
|
+
if (error instanceof Error) {
|
|
4073
|
+
return error.message;
|
|
4074
|
+
}
|
|
4075
|
+
return String(error);
|
|
4076
|
+
}
|
|
4077
|
+
function getErrorStack(error) {
|
|
4078
|
+
if (error instanceof Error) {
|
|
4079
|
+
return error.stack || "";
|
|
4080
|
+
}
|
|
4081
|
+
return "";
|
|
4082
|
+
}
|
|
4083
|
+
function buildRequestSummary(c) {
|
|
4084
|
+
var url = new URL(c.req.url);
|
|
4085
|
+
return ["method: ".concat(c.req.method), "path: ".concat(url.pathname), "query: ".concat(url.search || "-"), "userAgent: ".concat(c.req.header("user-agent") || "-")].join("\n");
|
|
4086
|
+
}
|
|
4087
|
+
function getSessionId(c) {
|
|
4088
|
+
return c.req.header("X-Session-Id") || c.req.header("x-session-id") || "-";
|
|
4089
|
+
}
|
|
4090
|
+
function buildAlertText(c, options) {
|
|
4091
|
+
var _options$modelId, _options$recordId;
|
|
4092
|
+
var actionLabel = ACTION_LABELS[options.action];
|
|
4093
|
+
var targetLabel = TARGET_LABELS[options.target];
|
|
4094
|
+
var lines = ["\u5305\u540D: @wecode-team/cms-supabase-api", "\u5BBF\u4E3B\u9879\u76EE\u6807\u8BC6(sessionId): ".concat(getSessionId(c)), "\u64CD\u4F5C\u5BF9\u8C61: ".concat(targetLabel), "\u64CD\u4F5C\u7C7B\u578B: ".concat(actionLabel), "\u6570\u636E\u8868\u540D: ".concat(options.tableName || "-"), "\u6A21\u578B ID: ".concat((_options$modelId = options.modelId) !== null && _options$modelId !== void 0 ? _options$modelId : "-"), "\u8BB0\u5F55 ID: ".concat((_options$recordId = options.recordId) !== null && _options$recordId !== void 0 ? _options$recordId : "-"), "\u65F6\u95F4: ".concat(new Date().toISOString()), "\u9519\u8BEF\u4FE1\u606F: ".concat(getErrorMessage(options.error)), "\u8BF7\u6C42\u4FE1\u606F:\n".concat(buildRequestSummary(c))];
|
|
4095
|
+
var stack = getErrorStack(options.error);
|
|
4096
|
+
if (stack) {
|
|
4097
|
+
lines.push("\u9519\u8BEF\u5806\u6808:\n".concat(stack));
|
|
4098
|
+
}
|
|
4099
|
+
return lines.join("\n\n");
|
|
4100
|
+
}
|
|
4101
|
+
function postWebhook(_x, _x2) {
|
|
4102
|
+
return _postWebhook.apply(this, arguments);
|
|
4103
|
+
}
|
|
4104
|
+
function _postWebhook() {
|
|
4105
|
+
_postWebhook = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(webhook, body) {
|
|
4106
|
+
var response;
|
|
4107
|
+
return _regeneratorRuntime.wrap(function (_context) {
|
|
4108
|
+
while (1) switch (_context.prev = _context.next) {
|
|
4109
|
+
case 0:
|
|
4110
|
+
_context.next = 1;
|
|
4111
|
+
return fetch(webhook, {
|
|
4112
|
+
method: "POST",
|
|
4113
|
+
headers: {
|
|
4114
|
+
"Content-Type": "application/json"
|
|
4115
|
+
},
|
|
4116
|
+
body: JSON.stringify(body)
|
|
4117
|
+
});
|
|
4118
|
+
case 1:
|
|
4119
|
+
response = _context.sent;
|
|
4120
|
+
if (response.ok) {
|
|
4121
|
+
_context.next = 2;
|
|
4122
|
+
break;
|
|
4123
|
+
}
|
|
4124
|
+
throw new Error("\u98DE\u4E66\u62A5\u8B66\u53D1\u9001\u5931\u8D25: ".concat(response.status, " ").concat(response.statusText));
|
|
4125
|
+
case 2:
|
|
4126
|
+
case "end":
|
|
4127
|
+
return _context.stop();
|
|
4128
|
+
}
|
|
4129
|
+
}, _callee);
|
|
4130
|
+
}));
|
|
4131
|
+
return _postWebhook.apply(this, arguments);
|
|
4132
|
+
}
|
|
4133
|
+
function notifyCmsCrudErrorToFeishu(_x3, _x4) {
|
|
4134
|
+
return _notifyCmsCrudErrorToFeishu.apply(this, arguments);
|
|
4135
|
+
}
|
|
4136
|
+
function _notifyCmsCrudErrorToFeishu() {
|
|
4137
|
+
_notifyCmsCrudErrorToFeishu = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(c, options) {
|
|
4138
|
+
var webhookUrls, body, results, failed;
|
|
4139
|
+
return _regeneratorRuntime.wrap(function (_context2) {
|
|
4140
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
4141
|
+
case 0:
|
|
4142
|
+
webhookUrls = getWebhookUrls();
|
|
4143
|
+
if (!(webhookUrls.length === 0)) {
|
|
4144
|
+
_context2.next = 1;
|
|
4145
|
+
break;
|
|
4146
|
+
}
|
|
4147
|
+
return _context2.abrupt("return");
|
|
4148
|
+
case 1:
|
|
4149
|
+
body = {
|
|
4150
|
+
msg_type: "post",
|
|
4151
|
+
content: {
|
|
4152
|
+
post: {
|
|
4153
|
+
zh_cn: {
|
|
4154
|
+
title: "[cms-supabase-api] ".concat(TARGET_LABELS[options.target]).concat(ACTION_LABELS[options.action], "\u5F02\u5E38"),
|
|
4155
|
+
content: [[{
|
|
4156
|
+
tag: "text",
|
|
4157
|
+
text: buildAlertText(c, options)
|
|
4158
|
+
}]]
|
|
4159
|
+
}
|
|
4160
|
+
}
|
|
4161
|
+
}
|
|
4162
|
+
};
|
|
4163
|
+
_context2.next = 2;
|
|
4164
|
+
return Promise.allSettled(webhookUrls.map(function (url) {
|
|
4165
|
+
return postWebhook(url, body);
|
|
4166
|
+
}));
|
|
4167
|
+
case 2:
|
|
4168
|
+
results = _context2.sent;
|
|
4169
|
+
failed = results.find(function (result) {
|
|
4170
|
+
return result.status === "rejected";
|
|
4171
|
+
});
|
|
4172
|
+
if (!((failed === null || failed === void 0 ? void 0 : failed.status) === "rejected")) {
|
|
4173
|
+
_context2.next = 3;
|
|
4174
|
+
break;
|
|
4175
|
+
}
|
|
4176
|
+
throw failed.reason;
|
|
4177
|
+
case 3:
|
|
4178
|
+
case "end":
|
|
4179
|
+
return _context2.stop();
|
|
4180
|
+
}
|
|
4181
|
+
}, _callee2);
|
|
4182
|
+
}));
|
|
4183
|
+
return _notifyCmsCrudErrorToFeishu.apply(this, arguments);
|
|
4184
|
+
}
|
|
4185
|
+
function reportCmsCrudErrorToFeishu(c, options) {
|
|
4186
|
+
void notifyCmsCrudErrorToFeishu(c, options)["catch"](function (feishuError) {
|
|
4187
|
+
console.error("飞书报警发送失败:", feishuError);
|
|
4188
|
+
});
|
|
4189
|
+
}
|
|
4190
|
+
|
|
4051
4191
|
function _createForOfIteratorHelper$1(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$1(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
4052
4192
|
function _unsupportedIterableToArray$1(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$1(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$1(r, a) : void 0; } }
|
|
4053
4193
|
function _arrayLikeToArray$1(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
@@ -4349,6 +4489,11 @@ function _createModel() {
|
|
|
4349
4489
|
_context3.prev = 15;
|
|
4350
4490
|
_t3 = _context3["catch"](0);
|
|
4351
4491
|
console.error("创建模型失败:", _t3);
|
|
4492
|
+
reportCmsCrudErrorToFeishu(c, {
|
|
4493
|
+
action: "create",
|
|
4494
|
+
target: "model",
|
|
4495
|
+
error: _t3
|
|
4496
|
+
});
|
|
4352
4497
|
_response9 = {
|
|
4353
4498
|
success: false,
|
|
4354
4499
|
message: "创建模型失败",
|
|
@@ -4440,6 +4585,11 @@ function _updateModel() {
|
|
|
4440
4585
|
_context4.prev = 8;
|
|
4441
4586
|
_t4 = _context4["catch"](0);
|
|
4442
4587
|
console.error("更新模型失败:", _t4);
|
|
4588
|
+
reportCmsCrudErrorToFeishu(c, {
|
|
4589
|
+
action: "update",
|
|
4590
|
+
target: "model",
|
|
4591
|
+
error: _t4
|
|
4592
|
+
});
|
|
4443
4593
|
_response11 = {
|
|
4444
4594
|
success: false,
|
|
4445
4595
|
message: "更新模型失败",
|
|
@@ -4521,6 +4671,11 @@ function _deleteModel() {
|
|
|
4521
4671
|
_context5.prev = 8;
|
|
4522
4672
|
_t5 = _context5["catch"](0);
|
|
4523
4673
|
console.error("删除模型失败:", _t5);
|
|
4674
|
+
reportCmsCrudErrorToFeishu(c, {
|
|
4675
|
+
action: "delete",
|
|
4676
|
+
target: "model",
|
|
4677
|
+
error: _t5
|
|
4678
|
+
});
|
|
4524
4679
|
_response15 = {
|
|
4525
4680
|
success: false,
|
|
4526
4681
|
message: "删除模型失败",
|
|
@@ -4582,8 +4737,8 @@ var _excluded = ["id", "created_at", "updated_at"],
|
|
|
4582
4737
|
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n2 = 0, F = function F() {}; return { s: F, n: function n() { return _n2 >= r.length ? { done: !0 } : { done: !1, value: r[_n2++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
4583
4738
|
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
4584
4739
|
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
4585
|
-
function ownKeys$
|
|
4586
|
-
function _objectSpread$
|
|
4740
|
+
function ownKeys$1(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
4741
|
+
function _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
4587
4742
|
function normalizeJsonLikeFields(schemaFields, payload) {
|
|
4588
4743
|
if (!schemaFields || schemaFields.length === 0) return payload;
|
|
4589
4744
|
var jsonLikeFieldNames = new Set(schemaFields.filter(function (f) {
|
|
@@ -4592,7 +4747,7 @@ function normalizeJsonLikeFields(schemaFields, payload) {
|
|
|
4592
4747
|
return f.name;
|
|
4593
4748
|
}));
|
|
4594
4749
|
if (jsonLikeFieldNames.size === 0) return payload;
|
|
4595
|
-
var normalized = _objectSpread$
|
|
4750
|
+
var normalized = _objectSpread$1({}, payload);
|
|
4596
4751
|
for (var _i = 0, _Object$entries = Object.entries(payload); _i < _Object$entries.length; _i++) {
|
|
4597
4752
|
var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2),
|
|
4598
4753
|
key = _Object$entries$_i[0],
|
|
@@ -4887,7 +5042,7 @@ function _getTableData() {
|
|
|
4887
5042
|
}
|
|
4888
5043
|
// 找到所有文本类型的字段
|
|
4889
5044
|
searchableFields = schemaFields.filter(function (field) {
|
|
4890
|
-
return field.type === 'string' || field.type === 'text';
|
|
5045
|
+
return field.type === 'string' || field.type === 'text' || field.type === 'richText';
|
|
4891
5046
|
}).map(function (field) {
|
|
4892
5047
|
return field.name;
|
|
4893
5048
|
});
|
|
@@ -4932,6 +5087,12 @@ function _getTableData() {
|
|
|
4932
5087
|
_context.prev = 16;
|
|
4933
5088
|
_t2 = _context["catch"](0);
|
|
4934
5089
|
console.error("获取表数据失败:", _t2);
|
|
5090
|
+
reportCmsCrudErrorToFeishu(c, {
|
|
5091
|
+
action: "read",
|
|
5092
|
+
target: "data",
|
|
5093
|
+
tableName: tableName,
|
|
5094
|
+
error: _t2
|
|
5095
|
+
});
|
|
4935
5096
|
_response3 = {
|
|
4936
5097
|
success: false,
|
|
4937
5098
|
message: "获取表数据失败",
|
|
@@ -5018,6 +5179,12 @@ function _createTableData() {
|
|
|
5018
5179
|
_context2.prev = 8;
|
|
5019
5180
|
_t4 = _context2["catch"](0);
|
|
5020
5181
|
console.error("创建数据失败:", _t4);
|
|
5182
|
+
reportCmsCrudErrorToFeishu(c, {
|
|
5183
|
+
action: "create",
|
|
5184
|
+
target: "data",
|
|
5185
|
+
tableName: tableName,
|
|
5186
|
+
error: _t4
|
|
5187
|
+
});
|
|
5021
5188
|
_response5 = {
|
|
5022
5189
|
success: false,
|
|
5023
5190
|
message: "创建数据失败",
|
|
@@ -5149,6 +5316,12 @@ function _updateTableData() {
|
|
|
5149
5316
|
_context3.prev = 13;
|
|
5150
5317
|
_t6 = _context3["catch"](0);
|
|
5151
5318
|
console.error("更新数据失败:", _t6);
|
|
5319
|
+
reportCmsCrudErrorToFeishu(c, {
|
|
5320
|
+
action: "update",
|
|
5321
|
+
target: "data",
|
|
5322
|
+
tableName: tableName,
|
|
5323
|
+
error: _t6
|
|
5324
|
+
});
|
|
5152
5325
|
_response1 = {
|
|
5153
5326
|
success: false,
|
|
5154
5327
|
message: "更新数据失败",
|
|
@@ -5232,6 +5405,12 @@ function _deleteTableData() {
|
|
|
5232
5405
|
_context4.prev = 7;
|
|
5233
5406
|
_t7 = _context4["catch"](0);
|
|
5234
5407
|
console.error("删除数据失败:", _t7);
|
|
5408
|
+
reportCmsCrudErrorToFeishu(c, {
|
|
5409
|
+
action: "delete",
|
|
5410
|
+
target: "data",
|
|
5411
|
+
tableName: tableName,
|
|
5412
|
+
error: _t7
|
|
5413
|
+
});
|
|
5235
5414
|
_response13 = {
|
|
5236
5415
|
success: false,
|
|
5237
5416
|
message: "删除数据失败",
|
|
@@ -5688,8 +5867,8 @@ var AuthUtils = /*#__PURE__*/function () {
|
|
|
5688
5867
|
}]);
|
|
5689
5868
|
}();
|
|
5690
5869
|
|
|
5691
|
-
function ownKeys
|
|
5692
|
-
function _objectSpread
|
|
5870
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
5871
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
5693
5872
|
function getRoleFromSupabaseUser$2(user) {
|
|
5694
5873
|
var _user$app_metadata, _user$user_metadata;
|
|
5695
5874
|
var appRole = user === null || user === void 0 || (_user$app_metadata = user.app_metadata) === null || _user$app_metadata === void 0 ? void 0 : _user$app_metadata.role;
|
|
@@ -5715,7 +5894,7 @@ function toSupabaseEmail(account, sessionId) {
|
|
|
5715
5894
|
return "".concat(sid, "_").concat(localPart, "@").concat(domain);
|
|
5716
5895
|
}
|
|
5717
5896
|
function buildAdminMetadata(existingMetadata, sessionId, account) {
|
|
5718
|
-
return _objectSpread
|
|
5897
|
+
return _objectSpread(_objectSpread({}, existingMetadata || {}), {}, {
|
|
5719
5898
|
role: "admin",
|
|
5720
5899
|
session_id: normalizeSessionId(sessionId),
|
|
5721
5900
|
original_username: account
|
|
@@ -6518,7 +6697,7 @@ function _resolveUploadMaxSize() {
|
|
|
6518
6697
|
return _resolveUploadMaxSize.apply(this, arguments);
|
|
6519
6698
|
}
|
|
6520
6699
|
function readSessionId(c) {
|
|
6521
|
-
return c.req.header("X-Session-Id") || c.req.header("x-session-id") || '';
|
|
6700
|
+
return normalizeSessionId(c.req.header("X-Session-Id") || c.req.header("x-session-id")) || '';
|
|
6522
6701
|
}
|
|
6523
6702
|
function uploadToOss(_x3) {
|
|
6524
6703
|
return _uploadToOss.apply(this, arguments);
|
|
@@ -6597,262 +6776,6 @@ function _uploadToOss() {
|
|
|
6597
6776
|
return _uploadToOss.apply(this, arguments);
|
|
6598
6777
|
}
|
|
6599
6778
|
|
|
6600
|
-
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
6601
|
-
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
6602
|
-
var CONFIG_NAMESPACE_RE = /^[a-zA-Z][a-zA-Z0-9_-]{0,63}$/;
|
|
6603
|
-
var CONFIG_SESSION_RE = /^[a-zA-Z0-9_]{1,128}$/;
|
|
6604
|
-
function getConfigSessionId(c) {
|
|
6605
|
-
return normalizeSessionId(c.req.header("X-Session-Id") || c.req.header("x-session-id"));
|
|
6606
|
-
}
|
|
6607
|
-
function validateConfigSessionId(sessionId) {
|
|
6608
|
-
if (!sessionId) return "缺少 X-Session-Id,无法访问配置中心";
|
|
6609
|
-
if (!CONFIG_SESSION_RE.test(sessionId)) {
|
|
6610
|
-
return "X-Session-Id 格式不合法";
|
|
6611
|
-
}
|
|
6612
|
-
return null;
|
|
6613
|
-
}
|
|
6614
|
-
function getConfigsTableName(sessionId) {
|
|
6615
|
-
return "".concat(sessionId, "__config__");
|
|
6616
|
-
}
|
|
6617
|
-
function normalizeValues(values) {
|
|
6618
|
-
if (!values || _typeof$1(values) !== "object" || Array.isArray(values)) {
|
|
6619
|
-
return {};
|
|
6620
|
-
}
|
|
6621
|
-
return values;
|
|
6622
|
-
}
|
|
6623
|
-
function buildFieldStatus(values) {
|
|
6624
|
-
return Object.fromEntries(Object.entries(values).map(function (_ref) {
|
|
6625
|
-
var _ref2 = _slicedToArray(_ref, 2),
|
|
6626
|
-
key = _ref2[0],
|
|
6627
|
-
value = _ref2[1];
|
|
6628
|
-
return [key, {
|
|
6629
|
-
configured: value !== null && value !== undefined && String(value).trim() !== ""
|
|
6630
|
-
}];
|
|
6631
|
-
}));
|
|
6632
|
-
}
|
|
6633
|
-
function ensureConfigsTable(_x) {
|
|
6634
|
-
return _ensureConfigsTable.apply(this, arguments);
|
|
6635
|
-
}
|
|
6636
|
-
function _ensureConfigsTable() {
|
|
6637
|
-
_ensureConfigsTable = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(tableName) {
|
|
6638
|
-
var supabase, createTableSQL, _yield$supabase$rpc, error;
|
|
6639
|
-
return _regeneratorRuntime.wrap(function (_context) {
|
|
6640
|
-
while (1) switch (_context.prev = _context.next) {
|
|
6641
|
-
case 0:
|
|
6642
|
-
supabase = getSupabase();
|
|
6643
|
-
createTableSQL = "\n CREATE TABLE IF NOT EXISTS \"".concat(tableName, "\" (\n id SERIAL PRIMARY KEY,\n namespace TEXT NOT NULL UNIQUE,\n values JSONB NOT NULL DEFAULT '{}'::jsonb,\n created_at TIMESTAMPTZ DEFAULT NOW(),\n updated_at TIMESTAMPTZ DEFAULT NOW()\n );\n ");
|
|
6644
|
-
_context.next = 1;
|
|
6645
|
-
return supabase.rpc("execute_sql", {
|
|
6646
|
-
sql_query: createTableSQL
|
|
6647
|
-
});
|
|
6648
|
-
case 1:
|
|
6649
|
-
_yield$supabase$rpc = _context.sent;
|
|
6650
|
-
error = _yield$supabase$rpc.error;
|
|
6651
|
-
if (!error) {
|
|
6652
|
-
_context.next = 2;
|
|
6653
|
-
break;
|
|
6654
|
-
}
|
|
6655
|
-
throw error;
|
|
6656
|
-
case 2:
|
|
6657
|
-
case "end":
|
|
6658
|
-
return _context.stop();
|
|
6659
|
-
}
|
|
6660
|
-
}, _callee);
|
|
6661
|
-
}));
|
|
6662
|
-
return _ensureConfigsTable.apply(this, arguments);
|
|
6663
|
-
}
|
|
6664
|
-
function validateNamespace(namespace) {
|
|
6665
|
-
if (!namespace) return "缺少 namespace";
|
|
6666
|
-
if (!CONFIG_NAMESPACE_RE.test(namespace)) {
|
|
6667
|
-
return "namespace 只能包含字母、数字、下划线和连字符,且必须以字母开头";
|
|
6668
|
-
}
|
|
6669
|
-
return null;
|
|
6670
|
-
}
|
|
6671
|
-
function toConfigResponse(row, fallbackNamespace) {
|
|
6672
|
-
var values = normalizeValues(row === null || row === void 0 ? void 0 : row.values);
|
|
6673
|
-
return {
|
|
6674
|
-
id: row === null || row === void 0 ? void 0 : row.id,
|
|
6675
|
-
namespace: (row === null || row === void 0 ? void 0 : row.namespace) || fallbackNamespace,
|
|
6676
|
-
values: values,
|
|
6677
|
-
fields: buildFieldStatus(values),
|
|
6678
|
-
created_at: row === null || row === void 0 ? void 0 : row.created_at,
|
|
6679
|
-
updated_at: row === null || row === void 0 ? void 0 : row.updated_at
|
|
6680
|
-
};
|
|
6681
|
-
}
|
|
6682
|
-
function getConfig(_x2) {
|
|
6683
|
-
return _getConfig.apply(this, arguments);
|
|
6684
|
-
}
|
|
6685
|
-
function _getConfig() {
|
|
6686
|
-
_getConfig = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(c) {
|
|
6687
|
-
var namespace, namespaceError, _response, sessionId, sessionError, _response2, tableName, supabase, _yield$supabase$from$, data, error, response, _response3, _t;
|
|
6688
|
-
return _regeneratorRuntime.wrap(function (_context2) {
|
|
6689
|
-
while (1) switch (_context2.prev = _context2.next) {
|
|
6690
|
-
case 0:
|
|
6691
|
-
_context2.prev = 0;
|
|
6692
|
-
namespace = (c.req.query("namespace") || "").trim();
|
|
6693
|
-
namespaceError = validateNamespace(namespace);
|
|
6694
|
-
if (!namespaceError) {
|
|
6695
|
-
_context2.next = 1;
|
|
6696
|
-
break;
|
|
6697
|
-
}
|
|
6698
|
-
_response = {
|
|
6699
|
-
success: false,
|
|
6700
|
-
message: namespaceError
|
|
6701
|
-
};
|
|
6702
|
-
return _context2.abrupt("return", c.json(_response, 200));
|
|
6703
|
-
case 1:
|
|
6704
|
-
sessionId = getConfigSessionId(c);
|
|
6705
|
-
sessionError = validateConfigSessionId(sessionId);
|
|
6706
|
-
if (!sessionError) {
|
|
6707
|
-
_context2.next = 2;
|
|
6708
|
-
break;
|
|
6709
|
-
}
|
|
6710
|
-
_response2 = {
|
|
6711
|
-
success: false,
|
|
6712
|
-
message: sessionError
|
|
6713
|
-
};
|
|
6714
|
-
return _context2.abrupt("return", c.json(_response2, 200));
|
|
6715
|
-
case 2:
|
|
6716
|
-
tableName = getConfigsTableName(sessionId);
|
|
6717
|
-
_context2.next = 3;
|
|
6718
|
-
return ensureConfigsTable(tableName);
|
|
6719
|
-
case 3:
|
|
6720
|
-
supabase = getSupabase();
|
|
6721
|
-
_context2.next = 4;
|
|
6722
|
-
return supabase.from(tableName).select("*").eq("namespace", namespace).maybeSingle();
|
|
6723
|
-
case 4:
|
|
6724
|
-
_yield$supabase$from$ = _context2.sent;
|
|
6725
|
-
data = _yield$supabase$from$.data;
|
|
6726
|
-
error = _yield$supabase$from$.error;
|
|
6727
|
-
if (!error) {
|
|
6728
|
-
_context2.next = 5;
|
|
6729
|
-
break;
|
|
6730
|
-
}
|
|
6731
|
-
throw error;
|
|
6732
|
-
case 5:
|
|
6733
|
-
response = {
|
|
6734
|
-
success: true,
|
|
6735
|
-
data: toConfigResponse(data, namespace)
|
|
6736
|
-
};
|
|
6737
|
-
return _context2.abrupt("return", c.json(response, 200));
|
|
6738
|
-
case 6:
|
|
6739
|
-
_context2.prev = 6;
|
|
6740
|
-
_t = _context2["catch"](0);
|
|
6741
|
-
console.error("获取配置失败:", _t);
|
|
6742
|
-
_response3 = {
|
|
6743
|
-
success: false,
|
|
6744
|
-
message: "获取配置失败",
|
|
6745
|
-
error: _t.message
|
|
6746
|
-
};
|
|
6747
|
-
return _context2.abrupt("return", c.json(_response3, 500));
|
|
6748
|
-
case 7:
|
|
6749
|
-
case "end":
|
|
6750
|
-
return _context2.stop();
|
|
6751
|
-
}
|
|
6752
|
-
}, _callee2, null, [[0, 6]]);
|
|
6753
|
-
}));
|
|
6754
|
-
return _getConfig.apply(this, arguments);
|
|
6755
|
-
}
|
|
6756
|
-
function updateConfig(_x3) {
|
|
6757
|
-
return _updateConfig.apply(this, arguments);
|
|
6758
|
-
}
|
|
6759
|
-
function _updateConfig() {
|
|
6760
|
-
_updateConfig = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3(c) {
|
|
6761
|
-
var namespace, namespaceError, _response4, body, values, sessionId, sessionError, _response5, tableName, supabase, _yield$supabase$from$2, existing, existingError, nextValues, _yield$supabase$from$3, data, error, response, _response6, _t2;
|
|
6762
|
-
return _regeneratorRuntime.wrap(function (_context3) {
|
|
6763
|
-
while (1) switch (_context3.prev = _context3.next) {
|
|
6764
|
-
case 0:
|
|
6765
|
-
_context3.prev = 0;
|
|
6766
|
-
namespace = (c.req.param("namespace") || "").trim();
|
|
6767
|
-
namespaceError = validateNamespace(namespace);
|
|
6768
|
-
if (!namespaceError) {
|
|
6769
|
-
_context3.next = 1;
|
|
6770
|
-
break;
|
|
6771
|
-
}
|
|
6772
|
-
_response4 = {
|
|
6773
|
-
success: false,
|
|
6774
|
-
message: namespaceError
|
|
6775
|
-
};
|
|
6776
|
-
return _context3.abrupt("return", c.json(_response4, 200));
|
|
6777
|
-
case 1:
|
|
6778
|
-
_context3.next = 2;
|
|
6779
|
-
return c.req.json();
|
|
6780
|
-
case 2:
|
|
6781
|
-
body = _context3.sent;
|
|
6782
|
-
values = normalizeValues(body === null || body === void 0 ? void 0 : body.values);
|
|
6783
|
-
sessionId = getConfigSessionId(c);
|
|
6784
|
-
sessionError = validateConfigSessionId(sessionId);
|
|
6785
|
-
if (!sessionError) {
|
|
6786
|
-
_context3.next = 3;
|
|
6787
|
-
break;
|
|
6788
|
-
}
|
|
6789
|
-
_response5 = {
|
|
6790
|
-
success: false,
|
|
6791
|
-
message: sessionError
|
|
6792
|
-
};
|
|
6793
|
-
return _context3.abrupt("return", c.json(_response5, 200));
|
|
6794
|
-
case 3:
|
|
6795
|
-
tableName = getConfigsTableName(sessionId);
|
|
6796
|
-
_context3.next = 4;
|
|
6797
|
-
return ensureConfigsTable(tableName);
|
|
6798
|
-
case 4:
|
|
6799
|
-
supabase = getSupabase();
|
|
6800
|
-
_context3.next = 5;
|
|
6801
|
-
return supabase.from(tableName).select("values").eq("namespace", namespace).maybeSingle();
|
|
6802
|
-
case 5:
|
|
6803
|
-
_yield$supabase$from$2 = _context3.sent;
|
|
6804
|
-
existing = _yield$supabase$from$2.data;
|
|
6805
|
-
existingError = _yield$supabase$from$2.error;
|
|
6806
|
-
if (!existingError) {
|
|
6807
|
-
_context3.next = 6;
|
|
6808
|
-
break;
|
|
6809
|
-
}
|
|
6810
|
-
throw existingError;
|
|
6811
|
-
case 6:
|
|
6812
|
-
nextValues = _objectSpread(_objectSpread({}, normalizeValues(existing === null || existing === void 0 ? void 0 : existing.values)), values);
|
|
6813
|
-
_context3.next = 7;
|
|
6814
|
-
return supabase.from(tableName).upsert({
|
|
6815
|
-
namespace: namespace,
|
|
6816
|
-
values: nextValues,
|
|
6817
|
-
updated_at: new Date().toISOString()
|
|
6818
|
-
}, {
|
|
6819
|
-
onConflict: "namespace"
|
|
6820
|
-
}).select("*").single();
|
|
6821
|
-
case 7:
|
|
6822
|
-
_yield$supabase$from$3 = _context3.sent;
|
|
6823
|
-
data = _yield$supabase$from$3.data;
|
|
6824
|
-
error = _yield$supabase$from$3.error;
|
|
6825
|
-
if (!error) {
|
|
6826
|
-
_context3.next = 8;
|
|
6827
|
-
break;
|
|
6828
|
-
}
|
|
6829
|
-
throw error;
|
|
6830
|
-
case 8:
|
|
6831
|
-
response = {
|
|
6832
|
-
success: true,
|
|
6833
|
-
message: "配置保存成功",
|
|
6834
|
-
data: toConfigResponse(data, namespace)
|
|
6835
|
-
};
|
|
6836
|
-
return _context3.abrupt("return", c.json(response, 200));
|
|
6837
|
-
case 9:
|
|
6838
|
-
_context3.prev = 9;
|
|
6839
|
-
_t2 = _context3["catch"](0);
|
|
6840
|
-
console.error("保存配置失败:", _t2);
|
|
6841
|
-
_response6 = {
|
|
6842
|
-
success: false,
|
|
6843
|
-
message: "保存配置失败",
|
|
6844
|
-
error: _t2.message
|
|
6845
|
-
};
|
|
6846
|
-
return _context3.abrupt("return", c.json(_response6, 500));
|
|
6847
|
-
case 10:
|
|
6848
|
-
case "end":
|
|
6849
|
-
return _context3.stop();
|
|
6850
|
-
}
|
|
6851
|
-
}, _callee3, null, [[0, 9]]);
|
|
6852
|
-
}));
|
|
6853
|
-
return _updateConfig.apply(this, arguments);
|
|
6854
|
-
}
|
|
6855
|
-
|
|
6856
6779
|
var AUTH_REQUIRED = "CMS_AUTH_REQUIRED";
|
|
6857
6780
|
var AUTH_INVALID = "CMS_AUTH_INVALID";
|
|
6858
6781
|
var CMS_FORBIDDEN = "CMS_FORBIDDEN";
|
|
@@ -7348,21 +7271,13 @@ function createOssUploadRoute(app) {
|
|
|
7348
7271
|
app.post("/upload", requireJwtAuth, requireAdminRole, uploadToOss);
|
|
7349
7272
|
return app;
|
|
7350
7273
|
}
|
|
7351
|
-
function createConfigRoute(app) {
|
|
7352
|
-
app.get("/configs", requireAdminRole, getConfig);
|
|
7353
|
-
app.put("/configs/:namespace", requireAdminRole, function (c) {
|
|
7354
|
-
return updateConfig(c);
|
|
7355
|
-
});
|
|
7356
|
-
return app;
|
|
7357
|
-
}
|
|
7358
7274
|
// 一键创建所有CMS路由
|
|
7359
7275
|
function createCmsRoutes(app) {
|
|
7360
7276
|
createModelRoute(app);
|
|
7361
|
-
createConfigRoute(app);
|
|
7362
7277
|
createDynamicDataRoute(app);
|
|
7363
7278
|
createDynamicAuthRoute(app);
|
|
7364
7279
|
return app;
|
|
7365
7280
|
}
|
|
7366
7281
|
|
|
7367
|
-
export { AuthService, getCmsModelService as CmsModel, CmsModelService, DynamicTableService, OssUploadError, OssUploadService, closeSupabase as closeDatabase, closeSupabase, createAuthRoute, createCmsRoutes,
|
|
7282
|
+
export { AuthService, getCmsModelService as CmsModel, CmsModelService, DynamicTableService, OssUploadError, OssUploadService, closeSupabase as closeDatabase, closeSupabase, createAuthRoute, createCmsRoutes, createDataRoute, createDynamicAuthRoute, createDynamicDataRoute, createModel, createModelRoute, createOssUploadRoute, createTableData, deleteModel, deleteTableData, dropForeignKeys, executeSupabaseSetup, feishuAlertConfig, getAuthService, getCmsModelService, getCurrentUser, getSupabase as getDatabase, getDynamicTableService, getModels, getOssUploadService, getRelationOptions, getSupabase, getSupabaseSetupSQL, getTableData, getTableDataWithRelations, initializeCmsModel, initializeCmsSystem, initializeSupabase as initializeDatabase, initializeOssUpload, initializeSupabase, login, notifyCmsCrudErrorToFeishu, reportCmsCrudErrorToFeishu, requireAuth, signup, signupStatus, initializeCmsSystem as syncDatabase, testConnection, updateModel, updateTableData, uploadToOss, verifyAuth };
|
|
7368
7283
|
//# sourceMappingURL=index.esm.js.map
|