@aalis/plugin-webui-server 0.15.0 → 0.17.0

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.
Files changed (79) hide show
  1. package/dist/attention.d.ts +2 -2
  2. package/dist/attention.d.ts.map +1 -1
  3. package/dist/attention.js +5 -4
  4. package/dist/attention.js.map +1 -1
  5. package/dist/auth.d.ts +13 -4
  6. package/dist/auth.d.ts.map +1 -1
  7. package/dist/auth.js +77 -27
  8. package/dist/auth.js.map +1 -1
  9. package/dist/client-switch-page.d.ts +25 -3
  10. package/dist/client-switch-page.d.ts.map +1 -1
  11. package/dist/client-switch-page.js +49 -19
  12. package/dist/client-switch-page.js.map +1 -1
  13. package/dist/gate.d.ts.map +1 -1
  14. package/dist/gate.js +2 -1
  15. package/dist/gate.js.map +1 -1
  16. package/dist/html.d.ts +15 -0
  17. package/dist/html.d.ts.map +1 -0
  18. package/dist/html.js +38 -0
  19. package/dist/html.js.map +1 -0
  20. package/dist/index.d.ts +4 -1
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +223 -244
  23. package/dist/index.js.map +1 -1
  24. package/dist/layout.d.ts +4 -3
  25. package/dist/layout.d.ts.map +1 -1
  26. package/dist/layout.js +5 -3
  27. package/dist/layout.js.map +1 -1
  28. package/dist/locales/en.d.ts +192 -0
  29. package/dist/locales/en.d.ts.map +1 -0
  30. package/dist/locales/en.js +192 -0
  31. package/dist/locales/en.js.map +1 -0
  32. package/dist/localize.d.ts +24 -0
  33. package/dist/localize.d.ts.map +1 -0
  34. package/dist/localize.js +68 -0
  35. package/dist/localize.js.map +1 -0
  36. package/dist/page-check.d.ts.map +1 -1
  37. package/dist/page-check.js +32 -25
  38. package/dist/page-check.js.map +1 -1
  39. package/dist/pages.d.ts +9 -7
  40. package/dist/pages.d.ts.map +1 -1
  41. package/dist/pages.js +77 -61
  42. package/dist/pages.js.map +1 -1
  43. package/dist/route.d.ts +5 -2
  44. package/dist/route.d.ts.map +1 -1
  45. package/dist/route.js +5 -2
  46. package/dist/route.js.map +1 -1
  47. package/dist/routes/files.d.ts.map +1 -1
  48. package/dist/routes/files.js +4 -3
  49. package/dist/routes/files.js.map +1 -1
  50. package/dist/routes/frames.js +3 -3
  51. package/dist/routes/frames.js.map +1 -1
  52. package/dist/routes/i18n.d.ts +20 -0
  53. package/dist/routes/i18n.d.ts.map +1 -0
  54. package/dist/routes/i18n.js +78 -0
  55. package/dist/routes/i18n.js.map +1 -0
  56. package/dist/routes/marketplace.d.ts.map +1 -1
  57. package/dist/routes/marketplace.js +27 -29
  58. package/dist/routes/marketplace.js.map +1 -1
  59. package/dist/routes/media.d.ts +3 -0
  60. package/dist/routes/media.d.ts.map +1 -1
  61. package/dist/routes/media.js +29 -26
  62. package/dist/routes/media.js.map +1 -1
  63. package/dist/routes/pages.d.ts +4 -2
  64. package/dist/routes/pages.d.ts.map +1 -1
  65. package/dist/routes/pages.js +36 -18
  66. package/dist/routes/pages.js.map +1 -1
  67. package/dist/routes/plugins.d.ts +5 -9
  68. package/dist/routes/plugins.d.ts.map +1 -1
  69. package/dist/routes/plugins.js +114 -129
  70. package/dist/routes/plugins.js.map +1 -1
  71. package/dist/routes/proxy.d.ts +3 -2
  72. package/dist/routes/proxy.d.ts.map +1 -1
  73. package/dist/routes/proxy.js +62 -41
  74. package/dist/routes/proxy.js.map +1 -1
  75. package/dist/texts.d.ts +383 -0
  76. package/dist/texts.d.ts.map +1 -0
  77. package/dist/texts.js +195 -0
  78. package/dist/texts.js.map +1 -0
  79. package/package.json +26 -23
@@ -0,0 +1,192 @@
1
+ import { defineLocale } from '@aalis/schema-i18n';
2
+ export default defineLocale()({
3
+ displayName: 'WebUI server',
4
+ portLabel: 'Port',
5
+ portDescription: 'HTTP port of the web admin interface',
6
+ hostLabel: 'Listen address',
7
+ hostDescription: 'IP address to bind; 0.0.0.0 makes it reachable from other machines',
8
+ allowedHostsLabel: 'Host allowlist',
9
+ allowedHostsDescription: 'Host names in the browser address bar when the WebUI is reached through a reverse proxy or a domain name, without scheme or port. IP addresses, localhost and the listen address are always accepted; requests for any other host name get 421, which keeps out DNS rebinding pages',
10
+ badAllowedHost: '{entry} is not a host name: write only the host name, without a scheme, user name or path',
11
+ autoOpenLabel: 'Open the browser on startup',
12
+ autoOpenDescription: 'Opens the default browser the first time the app starts listening; reloading the plugin with the same token does not open it again, while a newly generated token opens it again so you can sign in. Turn this off over SSH or in headless environments',
13
+ tokenModeLabel: 'Token policy',
14
+ tokenEphemeral: 'Generate a random token at each start (rotates on restart)',
15
+ tokenPersist: 'Persist after the first generation (stays signed in across restarts)',
16
+ tokenFixed: 'Use the fixed token below',
17
+ tokenModeDescription: 'ephemeral = random at each start; persist = token written to data:/webui/token and reused; fixed = use the fixedToken field. Every mode writes the convenience file data:/webui/access.txt with the access URL.',
18
+ fixedTokenLabel: 'Fixed token (only with tokenMode=fixed)',
19
+ fixedTokenDescription: 'A random string of at least {min} characters (after trimming whitespace); a shorter one keeps the plugin from starting; empty means persist. Stored in secrets.yaml and never shown in the WebUI.',
20
+ registryLabel: 'Plugin market npm registry',
21
+ registryDescription: 'Base URL of the npm registry the plugin market searches. Not every mirror supports the npm search API (Taobao and other mainland mirrors do not), so the official registry is the default; in mainland China use a mirror or proxy that supports search. Installation goes through package-manager (following the local npm config), and the latest versions and updates on the cards are checked against the registry used for installing.',
22
+ registryInvalid: 'marketplaceRegistry is not a valid URL',
23
+ tokenTooShort: 'fixedToken needs at least {min} characters (currently {length})',
24
+ accessTitle: '# Aalis WebUI access credentials (generated)',
25
+ accessGenerated: '# Generated at: {time}',
26
+ accessMode: '# Token mode: {mode}',
27
+ accessLogin: 'One-click sign-in: {url}',
28
+ accessHint: '# Tip: paste the one-click sign-in link into a browser and the cookie is set for you',
29
+ pageLanguage: 'en',
30
+ loginTitle: 'Aalis WebUI sign-in',
31
+ loginHint: 'The access token is in state/webui/access.txt under the home directory; the startup log line “Access credentials written” gives its full path. With tokenMode set to fixed it is the config item fixedToken, whose value is stored in secrets.yaml under the home directory after startup (the config file holds a reference).',
32
+ tokenPlaceholder: 'Access token',
33
+ loginButton: 'Sign in',
34
+ tokenWrong: 'Incorrect token',
35
+ networkError: 'Network error',
36
+ urlTokenWrong: 'The token in the URL is incorrect; please enter it by hand.',
37
+ tooManyFailures: 'Too many failed sign-ins; try again in {minutes, plural, one {# minute} other {# minutes}}.',
38
+ crossOrigin: 'The request comes from a different origin than this service (behind a reverse proxy, the proxy must forward the original Host)',
39
+ hostNotAllowed: 'The host name of the request is not one this service accepts (when accessing through a reverse proxy or a domain name, add it to the Host allowlist in the WebUI server settings)',
40
+ ownerRequired: 'Owner permission required',
41
+ unauthenticated: 'Not signed in',
42
+ switchTitle: 'Switch frontend · Aalis',
43
+ switchHeading: 'Switch frontend',
44
+ switchIntro: 'This is the frontend recovery page of Aalis, served directly by webui-server and independent of the current frontend, so you can switch back here even when the current frontend has no switcher.',
45
+ switchLabel: 'Available frontends (webui-client)',
46
+ switchLoading: 'Loading…',
47
+ switchButton: 'Switch and reload',
48
+ switchBack: 'To switch back to the previous frontend, select it above and click “Switch and reload”.',
49
+ switchListFailed: 'Failed to read the service list (HTTP {status})',
50
+ switchNoClients: 'No frontend found (webui-client provider). Install an aalis.client package first.',
51
+ switchCurrent: '{name} (current)',
52
+ switching: 'Switching…',
53
+ switched: 'Switched; redirecting…',
54
+ switchOwnerHint: ' (owner permission required: open the WebUI with the one-click sign-in link and try again)',
55
+ switchFailed: 'Switch failed: {detail}{hint}',
56
+ switchError: 'Switch request failed: {error}',
57
+ unknownApi: 'Unknown API: {method} {path}',
58
+ noClient: 'The frontend is not ready: install a frontend package marked aalis.client',
59
+ serverError: 'Something went wrong handling this request; see the logs for the reason',
60
+ badRequest: 'The request is malformed',
61
+ bodyTooLarge: 'The request body is too large',
62
+ bodyNotJson: 'The request body must be a valid JSON object or array',
63
+ bodyEncoding: 'The charset or content encoding of the request body is not supported',
64
+ logFilterInvalid: 'Invalid log filter: level accepts only debug, info, warn and error, and each parameter may be given at most once',
65
+ noHostLogs: 'The host provides no log service (host-logs), so the logs cannot be read',
66
+ logBeforeRequired: 'Paging back through the logs needs the numeric parameter before (entries with a smaller seq)',
67
+ host: 'Host',
68
+ noProvider: 'Service {service} has no provider with id {id}',
69
+ noHostConfigPreference: 'The host provides no config document (host-config), so the preference cannot be saved',
70
+ contextIdRequired: 'The request body needs contextId: the id of the preferred provider',
71
+ refreshUnsupported: 'Provider {provider} does not support refreshing its model list at runtime (for example, model discovery is off)',
72
+ refreshNoModels: 'Provider {provider} has no registered models right now and cannot be refreshed',
73
+ dependencyInvalid: 'dependency must be an entry id <provider instance id>/<model id>',
74
+ allGroups: '* (all groups)',
75
+ allGroupsNote: 'Includes groups from plugins installed later',
76
+ ungroupedTools: 'Tools outside any group',
77
+ pluginMissing: 'Plugin {instance} does not exist',
78
+ refused: 'Plugin {instance} {action, select, config {can’t take config updates} enable {can’t be enabled} disable {can’t be disabled} other {can’t be reloaded}} right now (shutting down or being unloaded); the config was not changed',
79
+ noHostConfig: 'The host provides no config document (host-config), so the config cannot be read or written',
80
+ selfDisable: 'Plugin {name} provides this interface and cannot be disabled from it',
81
+ bodyNotObject: 'The request body must be an object',
82
+ foreignKeys: 'Only the core keys ({allowed, list}) can be changed; not accepted: {foreign, list}',
83
+ configNotSaved: 'Not written to the config file ({error}); this change was rolled back',
84
+ savedRestart: 'Global config saved; it takes effect after a restart',
85
+ saved: 'Global config updated and saved',
86
+ noApp: 'The app is unavailable',
87
+ restartFailed: 'Restart failed ({error}); the changes take effect at the next start',
88
+ restarting: 'Restarting the app',
89
+ configNotObject: 'The config field must be an object',
90
+ noPluginManager: 'The plugin manager service is unavailable',
91
+ configInvalid: 'Config validation failed: {issues}',
92
+ issue: '{path}: {reason}',
93
+ inputInvalid: 'Input failed validation: {issues}',
94
+ inputIssue: '{path}: {reason}',
95
+ stillActivating: 'still activating (past the slow-activation threshold, moved to the background); see the plugin list for the result',
96
+ waitingOld: 'waiting for the old instance of {instance} to stop',
97
+ notYetActive: 'not yet active; see the plugin list for the result',
98
+ notYetActiveBecause: 'not yet active: {why}',
99
+ seeLog: 'see the logs for details',
100
+ ignoredNote: ' (ignored undeclared config fields: {fields})',
101
+ removedNote: ' (removed undeclared fields from the config file: {fields})',
102
+ unchanged: 'Plugin {name} config unchanged; written back to the config file{ignored}{removed}',
103
+ reactivateFailed: 'Plugin {name} failed to reactivate with the new config and is now in the error state ({reason})',
104
+ disabledNewConfig: 'the plugin is disabled; it activates with the new config once enabled',
105
+ configWritten: 'the config was written to the config file{ignored}{removed}',
106
+ configUpdated: 'Plugin {name} config updated{ignored}{removed}',
107
+ activateFailed: 'Plugin {name} failed to activate and is now in the error state ({reason})',
108
+ markedEnabled: 'marked as enabled in the config file',
109
+ enabled: 'Plugin {name} enabled',
110
+ disabledStuck: 'Plugin {name} is disabled but has not stopped after the grace period; see the logs for details',
111
+ markedDisabled: 'marked as disabled in the config file',
112
+ disabled: 'Plugin {name} disabled',
113
+ reloadDisabled: 'Plugin {name} is disabled; enable it before reloading',
114
+ reloadFailed: 'Plugin {name} failed to reactivate and is now in the error state ({reason})',
115
+ reloaded: 'Plugin {name} reloaded',
116
+ noPluginSource: 'The host provides no plugin source, so plugins cannot be scanned',
117
+ scanned: '{count, plural, =0 {No new plugins} one {Loaded # new plugin} other {Loaded # new plugins}}',
118
+ suffixRequired: 'suffix must be a non-empty string',
119
+ suffixInvalid: 'suffix may contain only letters, digits, underscores and hyphens',
120
+ moduleMissing: 'Cannot create the instance: module “{module}” not found',
121
+ moduleNotReusable: 'Cannot create the instance: module “{module}” does not declare reusable',
122
+ instanceExists: 'Cannot create the instance: “{instance}” already exists',
123
+ instanceRefused: 'Instance {instance} was not registered (shutting down or refused; see the logs); the config was not written',
124
+ instanceFailed: 'Created instance {instance}, but it failed to activate and is now in the error state ({reason})',
125
+ instanceDisabled: 'it is listed in disabledPlugins in the config file, so it was registered as disabled and activates once enabled',
126
+ instanceCreated: 'Created instance {instance}{ignored}',
127
+ cannotDelete: 'Cannot delete (the instance does not exist, or it is the main instance, which cannot be deleted)',
128
+ deleteNotSaved: 'Instance {instance} was not deleted: not written to the config file ({error})',
129
+ unloadFailed: 'Deleted instance {instance} from the config file, but unloading failed ({error}); it is no longer registered after a restart',
130
+ deletedShuttingDown: 'Deleted instance {instance} from the config file; shutting down, so the running instance was not unloaded',
131
+ deleted: 'Deleted instance {instance}',
132
+ noAppDir: 'The host provides no install directory (host-paths), so installed packages cannot be determined',
133
+ noInstallSource: 'Cannot determine the install registry ({error}); latest versions and updates are not shown for now',
134
+ registryStatus: 'npm registry returned {status}',
135
+ searchOffline: 'Cannot reach the npm registry ({error}); only locally installed plugins can be managed for now',
136
+ packageNameInvalid: 'name must be a valid npm package name',
137
+ nameNotString: 'The name field must be a string',
138
+ removeConfigNotBoolean: 'The removeConfig field must be a boolean',
139
+ targetsRequired: 'targets must be a non-empty array',
140
+ noPackageManagerInstall: 'No running plugin provides the package-manager service, so the market cannot install plugins: enable it in the plugin area, or run npm install <package> in the project directory and restart',
141
+ noPackageManagerUninstall: 'No running plugin provides the package-manager service, so the market cannot uninstall plugins: enable it in the plugin area, or run npm uninstall <package> in the project directory and restart',
142
+ noPackageManagerUpdate: 'No running plugin provides the package-manager service, so the market cannot update: enable it in the plugin area',
143
+ urlRequired: 'The url parameter is missing',
144
+ upstreamStatus: 'Upstream returned {status}',
145
+ notImage: 'Upstream did not return a displayable image',
146
+ imageTooLarge: 'Image too large ({size} > {max})',
147
+ noUpstreamBody: 'Upstream sent no response body',
148
+ proxyFailed: 'Proxy failed: {error}',
149
+ invalidHandle: 'Invalid file handle',
150
+ fileGone: 'The file is gone',
151
+ readFailed: 'Failed to read the file',
152
+ notStorageUri: 'Not a storage address',
153
+ notMedia: 'Only images, video and audio are served',
154
+ fileMissing: 'The file does not exist',
155
+ noStorageLayout: 'The storage service is absent, so layout records cannot be read or written',
156
+ layoutReadFailed: 'Failed to read the layout records',
157
+ layoutOpInvalid: "The operation must be '{ op, page }' or '{ op, tab }': pin, unpin, move-up and move-down take page ('{ instance, pageKey }'); open-tab, close-tab, tab-up and tab-down take tab ('{ host }' or '{ instance, pageKey }'); remove-tab takes only a plugin tab ('{ instance, pageKey }'); host tabs can only be closed, not removed",
158
+ pinPluginOnly: 'Only pages placed in plugin details can be pinned',
159
+ openSessionOnly: 'Only session panel pages can be opened in the panel',
160
+ layoutSaveFailed: 'Failed to save the layout records; they are unchanged',
161
+ pinnedFull: 'At most {max} entries; unpin some first',
162
+ tabsFull: 'The session panel keeps at most {max} tabs',
163
+ pageMissing: 'Page {page} ({instance}) does not exist',
164
+ extraParams: 'Unexpected parameters: {keys, list}',
165
+ nameRequired: '{name} must be a non-empty string',
166
+ noSessionManager: 'The session manager service is absent, so session panels are unavailable',
167
+ archiveAbsent: 'The message archive service is absent, so this message was not saved to the WebUI session history',
168
+ sessionMissing: 'Session {session} does not exist',
169
+ inputNotObject: 'input must be an object',
170
+ inputExtraKeys: 'Unexpected keys in input: {keys, list}',
171
+ inputNotJsonString: 'input must be a JSON string',
172
+ inputBadJson: 'input is not valid JSON',
173
+ breach: 'Data source {source} returned bad data: {problem}',
174
+ notJson: 'cannot be converted to JSON: {error}',
175
+ notJsonValue: 'cannot be converted to JSON',
176
+ wantRows: 'must return an array of rows',
177
+ rowNotObject: 'row {row} is not an object',
178
+ rowKeyInvalid: '{key} in row {row} must be a unique non-empty string',
179
+ rowFlagInvalid: '{key} in row {row} must be a boolean',
180
+ rowUriInvalid: '{key} in row {row} must be a storage address',
181
+ wantText: 'must return a string or a text object',
182
+ wantInfo: "must return an array of '{ label, value }'",
183
+ wantGraph: "must return '{ nodes, edges }'",
184
+ nodeInvalid: 'nodes need a unique id and a label',
185
+ edgeInvalid: 'both ends of an edge must be node ids',
186
+ noSource: 'Page {page} has no data source {source}',
187
+ noComponent: 'Page {page} has no component {component}',
188
+ noAction: 'Page {page} has no action {action}',
189
+ requestNotObject: 'The request body must be an object',
190
+ notASentence: 'Action {action} did not return a sentence',
191
+ });
192
+ //# sourceMappingURL=en.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"en.js","sourceRoot":"","sources":["../../src/locales/en.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import { type I18nService, type RenderOptions } from '@aalis/api-i18n';
2
+ import type { Logger, ServiceSelection } from '@aalis/core';
3
+ import type { Localized, LocalizeSkip } from '@aalis/schema-i18n';
4
+ import type express from 'express';
5
+ /** 交代这次回应的渲染选项:要跳过的原样数据、Markdown 正文的转义。在 res.json 之前调 */
6
+ export declare function renderWith(res: express.Response, options: RenderOptions): void;
7
+ /**
8
+ * schema(插件配置、核心配置、动作的输入字段)里的 default 是取值,不是文字:跳过它们,形如文字对象的默认值原样交出,表单读回
9
+ * 再保存时不被改写成字符串。字段、分组、数组与元素字段按对象身份认,不按键名(配置里可能有名叫 default 的字段)
10
+ */
11
+ export declare function skipSchemaDefaults(schemas: Iterable<unknown>): LocalizeSkip;
12
+ export interface Localizer {
13
+ /** 最早挂上:包住 res.json,渲染后再发 */
14
+ middleware: express.RequestHandler;
15
+ /** 把值里的文字对象按全局层的语言渲染 */
16
+ render<T>(value: T, options?: RenderOptions): Localized<T>;
17
+ /**
18
+ * 全局层的语言链(i18n 的 chainOf),/api/i18n/messages 与页面的 lang 用它。i18n 缺席时为空,取链出错时告警
19
+ * (与渲染共用一次)并为空
20
+ */
21
+ languages(): readonly string[];
22
+ }
23
+ export declare function createLocalizer(i18n: Pick<ServiceSelection<I18nService>, 'present' | 'use'>, logger: Logger): Localizer;
24
+ //# sourceMappingURL=localize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"localize.d.ts","sourceRoot":"","sources":["../src/localize.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,KAAK,WAAW,EAAe,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACpF,OAAO,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAInC,yDAAyD;AACzD,wBAAgB,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI,CAE9E;AAKD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,YAAY,CAa3E;AAED,MAAM,WAAW,SAAS;IACxB,6BAA6B;IAC7B,UAAU,EAAE,OAAO,CAAC,cAAc,CAAC;IACnC,wBAAwB;IACxB,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IAC3D;;;OAGG;IACH,SAAS,IAAI,SAAS,MAAM,EAAE,CAAC;CAChC;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,EAAE,SAAS,GAAG,KAAK,CAAC,EAC5D,MAAM,EAAE,MAAM,GACb,SAAS,CA0BX"}
@@ -0,0 +1,68 @@
1
+ // ============================================================
2
+ // localize.ts — 回应里的文字按全局层的语言渲染
3
+ //
4
+ // WebUI 的读者是 owner 自己:一律按全局层的语言(i18n 的 { host: true } 读者),日期与时间按服务进程的时区,不看浏览器的
5
+ // 语言与时区(会话与场所的语言设置管的是聊天平台上的读者)。
6
+ // 最早挂的中间件包住 res.json:值里的文字对象渲染后再发,i18n 缺席或渲染抛错时按原文(抛错只告警一次)。路由里外的 JSON 回应
7
+ // (认证的 401 与 403、闸门、未知 API、错误处理)都经过它;不经 res.json 的文字(纯文本的错误、登录页与恢复页、access.txt)
8
+ // 用 render。原样数据(插件配置值、schema 的默认值、插件前端的数据)要跳过、Markdown 正文要转义时,路由在 res.json 之前经
9
+ // renderWith 交代。
10
+ // ============================================================
11
+ import { localizeFor } from '@aalis/api-i18n';
12
+ const optionsOf = new WeakMap();
13
+ /** 交代这次回应的渲染选项:要跳过的原样数据、Markdown 正文的转义。在 res.json 之前调 */
14
+ export function renderWith(res, options) {
15
+ optionsOf.set(res, options);
16
+ }
17
+ const isRecord = (value) => typeof value === 'object' && value !== null && !Array.isArray(value);
18
+ /**
19
+ * schema(插件配置、核心配置、动作的输入字段)里的 default 是取值,不是文字:跳过它们,形如文字对象的默认值原样交出,表单读回
20
+ * 再保存时不被改写成字符串。字段、分组、数组与元素字段按对象身份认,不按键名(配置里可能有名叫 default 的字段)
21
+ */
22
+ export function skipSchemaDefaults(schemas) {
23
+ const entries = new Set();
24
+ const collect = (schema) => {
25
+ if (!isRecord(schema))
26
+ return;
27
+ for (const entry of Object.values(schema)) {
28
+ if (!isRecord(entry) || entries.has(entry))
29
+ continue;
30
+ entries.add(entry);
31
+ collect(entry.fields);
32
+ collect(entry.items);
33
+ }
34
+ };
35
+ for (const schema of schemas)
36
+ collect(schema);
37
+ return (key, parent) => key === 'default' && entries.has(parent);
38
+ }
39
+ export function createLocalizer(i18n, logger) {
40
+ let warned = false;
41
+ const onError = (err) => {
42
+ if (warned)
43
+ return;
44
+ warned = true;
45
+ logger.warn('按全局层的语言渲染出错,按原文发出(之后再出错不再告警):', err);
46
+ };
47
+ const render = (value, options) => localizeFor(i18n, value, { host: true }, { ...options, onError });
48
+ return {
49
+ middleware: (_req, res, next) => {
50
+ const send = res.json.bind(res);
51
+ res.json = body => send(render(body, optionsOf.get(res)));
52
+ next();
53
+ },
54
+ render,
55
+ languages: () => {
56
+ if (!i18n.present)
57
+ return [];
58
+ try {
59
+ return i18n.use.chainOf({ host: true });
60
+ }
61
+ catch (err) {
62
+ onError(err);
63
+ return [];
64
+ }
65
+ },
66
+ };
67
+ }
68
+ //# sourceMappingURL=localize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"localize.js","sourceRoot":"","sources":["../src/localize.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"page-check.d.ts","sourceRoot":"","sources":["../src/page-check.ts"],"names":[],"mappings":"AAaA,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,UAAU,EAIf,KAAK,mBAAmB,EAGxB,KAAK,uBAAuB,EAC5B,KAAK,WAAW,EAChB,KAAK,aAAa,EACnB,MAAM,kBAAkB,CAAC;AAE1B,cAAc;AACd,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,uBAAuB,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC,CAAC;AAEzG,wBAAwB;AACxB,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,eAAe,CAAC;IAC3B,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,+CAA+C;AAC/C,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG;IACvC,OAAO,CAAC,IAAI,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,GAAG,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC;CAChG,CAAC;AAEF,4BAA4B;AAC5B,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B,IAAI,CAAC,IAAI,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,GAAG,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC;CAC5E;AAED,2BAA2B;AAC3B,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,mBAAmB,EAAE,CAAC;CAC7B;AAED,MAAM,MAAM,WAAW,GAAG;IAAE,SAAS,EAAE,aAAa,CAAC;IAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;CAAE,GAAG,CAC1F;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;CAAE,GAC5D;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAA;CAAE,CACnF,CAAC;AAkCF,uCAAuC;AACvC,wBAAgB,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,WAAW,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CA6P5G;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,aAAa,GAAG,SAAS,GAAG,MAAM,EAAE,CAoBlH"}
1
+ {"version":3,"file":"page-check.d.ts","sourceRoot":"","sources":["../src/page-check.ts"],"names":[],"mappings":"AAcA,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,UAAU,EAIf,KAAK,mBAAmB,EAGxB,KAAK,uBAAuB,EAC5B,KAAK,WAAW,EAChB,KAAK,aAAa,EACnB,MAAM,kBAAkB,CAAC;AAG1B,cAAc;AACd,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,uBAAuB,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC,CAAC;AAEzG,wBAAwB;AACxB,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,eAAe,CAAC;IAC3B,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,+CAA+C;AAC/C,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG;IACvC,OAAO,CAAC,IAAI,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,GAAG,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC;CAChG,CAAC;AAEF,4BAA4B;AAC5B,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B,IAAI,CAAC,IAAI,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,GAAG,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC;CAC5E;AAED,2BAA2B;AAC3B,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,mBAAmB,EAAE,CAAC;CAC7B;AAED,MAAM,MAAM,WAAW,GAAG;IAAE,SAAS,EAAE,aAAa,CAAC;IAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;CAAE,GAAG,CAC1F;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;CAAE,GAC5D;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAA;CAAE,CACnF,CAAC;AAuCF,uCAAuC;AACvC,wBAAgB,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,WAAW,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CA6P5G;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,aAAa,GAAG,SAAS,GAAG,MAAM,EAAE,CAoBlH"}
@@ -2,7 +2,8 @@
2
2
  // page-check.ts — 页面登记时的质量门槛
3
3
  //
4
4
  // 插件交来的页面声明在登记时整份核一遍,不过就不登记:content(声明式)与 frame(插件前端)恰好一个;不认识的字段一律
5
- // 拒收(旧写法的 refresh、danger、source 等在这里就被拦下)。
5
+ // 拒收(旧写法的 refresh、danger、source 等在这里就被拦下)。给人看的文字(标题、标签、说明、确认文案)收字符串或文字对象,
6
+ // 标识(key、id、字段名)只收字符串。
6
7
  // 声明式页面:一屏最多 MAX_SCREEN_COMPONENTS 个组件、最多 MAX_PAGE_TABS 个标签;标签页只在最外层,详情里的组件不再带
7
8
  // 详情;组件 id 在页面内唯一;引用的动作都存在,且行动作只放在表格行上与详情里、页面动作只放在最外层与标签里。核过的
8
9
  // 声明原样经 JSON 下发给界面,函数随序列化去掉。
@@ -11,6 +12,7 @@
11
12
  // 的几条(包根、webui/、入口文件)在 pages.ts。
12
13
  // ============================================================
13
14
  import { FRAME_HOST_CAPABILITIES, FRAME_NAME_MAX_LENGTH, MAX_PAGE_TABS, MAX_SCREEN_COMPONENTS, } from '@aalis/api-webui';
15
+ import { isTextRef } from '@aalis/schema-i18n';
14
16
  const PLACEMENTS = new Set(['plugin', 'settings', 'session']);
15
17
  const CAPABILITIES = new Set(FRAME_HOST_CAPABILITIES);
16
18
  const EFFECTS = new Set(['read', 'write', 'destructive']);
@@ -38,7 +40,12 @@ const COMPONENT_KEYS = {
38
40
  actions: [...COMMON_KEYS, 'actions'],
39
41
  };
40
42
  const isRecord = (value) => typeof value === 'object' && value !== null && !Array.isArray(value);
41
- const isText = (value) => typeof value === 'string' && value.trim() !== '';
43
+ /** 标识:非空字符串 */
44
+ const isName = (value) => typeof value === 'string' && value.trim() !== '';
45
+ /** 给人看的文字:非空字符串或文字对象 */
46
+ const isText = (value) => isName(value) || isTextRef(value);
47
+ /** 可选的文字:不写,或字符串(可以为空)、文字对象 */
48
+ const isOptionalText = (value) => value === undefined || typeof value === 'string' || isTextRef(value);
42
49
  /** 核一份页面声明:过了回分派用的索引,不过回全部问题(每条带位置) */
43
50
  export function checkPage(page) {
44
51
  const problems = [];
@@ -51,8 +58,8 @@ export function checkPage(page) {
51
58
  fail(path ? `${path}.${key}` : key, '不认识的字段');
52
59
  };
53
60
  const optionalText = (value, path) => {
54
- if (value !== undefined && typeof value !== 'string')
55
- fail(path, '要是字符串');
61
+ if (!isOptionalText(value))
62
+ fail(path, '要是字符串或文字对象');
56
63
  };
57
64
  /** 动作与数据源的输入:非空的字段表,每个字段带 type 与 label */
58
65
  const inputFields = (value, path) => {
@@ -61,7 +68,7 @@ export function checkPage(page) {
61
68
  if (!isRecord(value) || Object.keys(value).length === 0)
62
69
  return fail(path, '要是非空的字段表');
63
70
  for (const [key, field] of Object.entries(value)) {
64
- if (!isRecord(field) || !isText(field.type) || !isText(field.label)) {
71
+ if (!isRecord(field) || !isName(field.type) || !isText(field.label)) {
65
72
  fail(`${path}.${key}`, '要是带 type 与 label 的配置字段');
66
73
  }
67
74
  }
@@ -73,10 +80,10 @@ export function checkPage(page) {
73
80
  if (isFrame === (page.content !== undefined)) {
74
81
  fail('content', '与 frame 恰好写一个(声明式页面写 content,插件前端写 frame)');
75
82
  }
76
- if (!isText(page.key))
83
+ if (!isName(page.key))
77
84
  fail('key', '要是非空字符串');
78
85
  if (!isText(page.title))
79
- fail('title', '要是非空字符串');
86
+ fail('title', '要是非空字符串或文字对象');
80
87
  if (page.icon !== undefined && !(typeof page.icon === 'string' && ICON_NAME.test(page.icon))) {
81
88
  fail('icon', '只收 lucide 图标名(小写字母、数字与连字符)');
82
89
  }
@@ -107,14 +114,14 @@ export function checkPage(page) {
107
114
  }
108
115
  strict(action, ['label', 'effect', 'confirm', 'input', 'row', 'handler'], path);
109
116
  if (!isText(action.label))
110
- fail(`${path}.label`, '要是非空字符串');
117
+ fail(`${path}.label`, '要是非空字符串或文字对象');
111
118
  if (!EFFECTS.has(action.effect))
112
119
  fail(`${path}.effect`, '只有 read、write、destructive');
113
120
  if (action.confirm !== undefined) {
114
121
  if (action.effect !== 'destructive')
115
122
  fail(`${path}.confirm`, '确认文案只给 destructive 的动作');
116
123
  else if (!isText(action.confirm))
117
- fail(`${path}.confirm`, '要是非空字符串');
124
+ fail(`${path}.confirm`, '要是非空字符串或文字对象');
118
125
  }
119
126
  inputFields(action.input, `${path}.input`);
120
127
  if (action.row !== undefined) {
@@ -133,7 +140,7 @@ export function checkPage(page) {
133
140
  fail('frame', '要是对象');
134
141
  else {
135
142
  strict(frame, ['module', 'entry', 'host'], 'frame');
136
- if (!isText(frame.module))
143
+ if (!isName(frame.module))
137
144
  fail('frame.module', '要是非空字符串(写 import.meta.url)');
138
145
  if (frame.entry !== undefined && !(typeof frame.entry === 'string' && ENTRY.test(frame.entry))) {
139
146
  fail('frame.entry', '只许 webui/ 里以 .html 结尾的相对路径:不以 / 开头,各段非空、不以点开头,不含反斜杠');
@@ -155,7 +162,7 @@ export function checkPage(page) {
155
162
  fail('sources', '要是对象');
156
163
  for (const [name, source] of Object.entries(isRecord(page.sources) ? page.sources : {})) {
157
164
  const path = `sources.${name}`;
158
- if (!isText(name)) {
165
+ if (!isName(name)) {
159
166
  fail('sources', '数据源的名字要非空');
160
167
  continue;
161
168
  }
@@ -204,11 +211,11 @@ export function checkPage(page) {
204
211
  continue;
205
212
  }
206
213
  strict(kind, ['kind', 'label', 'tone'], at);
207
- if (!isText(kind.kind) || seen.has(kind.kind))
214
+ if (!isName(kind.kind) || seen.has(kind.kind))
208
215
  fail(`${at}.kind`, '要是不重复的非空字符串');
209
216
  seen.add(kind.kind);
210
217
  if (!isText(kind.label))
211
- fail(`${at}.label`, '要是非空字符串');
218
+ fail(`${at}.label`, '要是非空字符串或文字对象');
212
219
  if (!Number.isInteger(kind.tone) || kind.tone < 1 || kind.tone > 6) {
213
220
  fail(`${at}.tone`, '只有 1 到 6');
214
221
  }
@@ -230,7 +237,7 @@ export function checkPage(page) {
230
237
  referenced(name, `${path}.actions[${i}]`, inDetail);
231
238
  return;
232
239
  }
233
- if (!isText(value.id))
240
+ if (!isName(value.id))
234
241
  fail(`${path}.id`, '要是非空字符串');
235
242
  else if (sources.has(value.id))
236
243
  fail(`${path}.id`, `组件 id ${value.id} 重复`);
@@ -239,7 +246,7 @@ export function checkPage(page) {
239
246
  if (typeof value.data !== 'function')
240
247
  fail(`${path}.data`, '要是函数');
241
248
  if (value.type === 'table') {
242
- if (!isText(value.rowKey))
249
+ if (!isName(value.rowKey))
243
250
  fail(`${path}.rowKey`, '要是非空字符串');
244
251
  optionalText(value.empty, `${path}.empty`);
245
252
  if (!Array.isArray(value.columns) || value.columns.length === 0)
@@ -253,11 +260,11 @@ export function checkPage(page) {
253
260
  continue;
254
261
  }
255
262
  strict(column, ['key', 'label', 'kind', 'primary'], at);
256
- if (!isText(column.key) || keys.has(column.key))
263
+ if (!isName(column.key) || keys.has(column.key))
257
264
  fail(`${at}.key`, '要是不重复的非空字符串');
258
265
  keys.add(column.key);
259
266
  if (!isText(column.label))
260
- fail(`${at}.label`, '要是非空字符串');
267
+ fail(`${at}.label`, '要是非空字符串或文字对象');
261
268
  if (column.kind !== undefined && !CELL_KINDS.has(column.kind))
262
269
  fail(`${at}.kind`, '不认识的显示种类');
263
270
  if (column.primary !== undefined && typeof column.primary !== 'boolean')
@@ -276,7 +283,7 @@ export function checkPage(page) {
276
283
  }
277
284
  strict(entry, ['action', 'visibleWhen'], at);
278
285
  referenced(entry.action, `${at}.action`, true);
279
- if (entry.visibleWhen !== undefined && !isText(entry.visibleWhen)) {
286
+ if (entry.visibleWhen !== undefined && !isName(entry.visibleWhen)) {
280
287
  fail(`${at}.visibleWhen`, '要是行字段名');
281
288
  }
282
289
  }
@@ -322,11 +329,11 @@ export function checkPage(page) {
322
329
  continue;
323
330
  }
324
331
  strict(tab, ['key', 'title', 'content'], at);
325
- if (!isText(tab.key) || keys.has(tab.key))
332
+ if (!isName(tab.key) || keys.has(tab.key))
326
333
  fail(`${at}.key`, '要是不重复的非空字符串');
327
334
  keys.add(tab.key);
328
335
  if (!isText(tab.title))
329
- fail(`${at}.title`, '要是非空字符串');
336
+ fail(`${at}.title`, '要是非空字符串或文字对象');
330
337
  screen(tab.content, `${at}.content`, false);
331
338
  }
332
339
  }
@@ -348,18 +355,18 @@ export function checkNotice(notice, placementOf) {
348
355
  if (!['id', 'level', 'title', 'detail', 'open'].includes(key))
349
356
  fail(key, '不认识的字段');
350
357
  }
351
- if (!isText(notice.id))
358
+ if (!isName(notice.id))
352
359
  fail('id', '要是非空字符串');
353
360
  if (notice.level !== 'action' && notice.level !== 'error')
354
361
  fail('level', '只有 action、error');
355
362
  if (!isText(notice.title))
356
- fail('title', '要是非空字符串');
357
- if (notice.detail !== undefined && typeof notice.detail !== 'string')
358
- fail('detail', '要是字符串');
363
+ fail('title', '要是非空字符串或文字对象');
364
+ if (!isOptionalText(notice.detail))
365
+ fail('detail', '要是字符串或文字对象');
359
366
  const open = notice.open;
360
367
  if (open !== undefined && open !== 'config') {
361
368
  const page = isRecord(open) && Object.keys(open).length === 1 ? open.page : undefined;
362
- const placement = isText(page) ? placementOf(page) : undefined;
369
+ const placement = isName(page) ? placementOf(page) : undefined;
363
370
  if (placement !== 'plugin' && placement !== 'settings') {
364
371
  fail('open', '只收 config,或本插件已登记、位置为 plugin 或 settings 的页面 { page }');
365
372
  }
@@ -1 +1 @@
1
- {"version":3,"file":"page-check.js","sourceRoot":"","sources":["../src/page-check.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"page-check.js","sourceRoot":"","sources":["../src/page-check.ts"],"names":[],"mappings":"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"}