@ynight/model-runtime 0.0.0-stage → 0.0.1

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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2019 diaogroup
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,3 +1,270 @@
1
- # Temporary Holding Version
1
+ # @ynight/model-runtime
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ > 模型加载、按菜单 key 合并与 JSON 边界校验的运行时——把业务目录的 DSL 模型转化为运行时可消费的结构化数据。
4
+
5
+ ## 概述
6
+
7
+ `@ynight/model-runtime` 是 Elpis 模型驱动后台框架中**模型 DSL 与运行时之间的桥梁**。它负责三件核心事情:
8
+
9
+ 1. **加载**:扫描约定的模型目录,把基础模型(`model.ts`)和项目配置(`project/*.ts`)解析为内存中的对象;
10
+ 2. **合并**:按菜单 `key` 递归合并基础模型与项目配置,让项目侧只需声明"差异部分";
11
+ 3. **校验**:用 AJV(Draft-07)校验模型结构与控件契约,确保模型是**JSON 可序列化**的纯数据,最终可以跨进程传递或落库。
12
+
13
+ 在 Elpis 整体架构中,本包被 `@ynight/framework` 在**服务启动阶段调用一次**:先 `loadModels` 得到完整的模型树,再 `validateModels` 校验其完整性。运行期不再做扫描或合并,因此模型必须满足全部静态约束。
14
+
15
+ ## 核心能力
16
+
17
+ - **模型目录扫描与加载**(`loadModels`):基于 `glob` 扫描业务目录,按 `<modelKey>/model.<ext>` 和 `<modelKey>/project/<projectKey>.<ext>` 约定收集文件,加载基础模型与项目配置。
18
+ - **基础模型 + 项目配置的按 key 合并**(`mergeModel`):纯函数递归合并两份模型对象,菜单树按 `key` 合并,其余数组(如 `oneOf`、`required`、按钮列表等)整体替换,避免错位。
19
+ - **判别联合的整分支替换**(`mergeMenuItem`):当 `menuType`(`group` ↔ `module`)或 `moduleType`(`schema` ↔ `sider` ↔ `iframe` ↔ `custom`)发生变化时,整分支由项目配置整体替换,避免旧字段残留。
20
+ - **模型数据与控件契约的 AJV 校验**(`validateModels`):递归校验模型是 JSON 可序列化纯数据,菜单 `key` 非空且唯一,菜单结构符合 `oneOf` 判别联合,所有 schema 模块字段上的自定义控件 `props` 符合契约。
21
+ - **类型导出**:导出 `LoadedModel`、`LoadModelsOptions`、`ControlContractDefinition`、`ValidateModelsOptions` 等类型,便于业务侧 TypeScript 工程使用。
22
+
23
+ ## 安装
24
+
25
+ ```bash
26
+ pnpm add @ynight/model-runtime
27
+ ```
28
+
29
+ > 本包在 Elpis 仓库中以 workspace 形式被 `@ynight/framework` 直接依赖。独立使用时请确保 `@ynight/contracts` 与 `ajv` 已就绪(已作为直接依赖声明)。
30
+
31
+ ## 典型用法
32
+
33
+ ```typescript
34
+ import { loadModels, mergeModel, validateModels } from '@ynight/model-runtime';
35
+ import type { ControlContractDefinition, IModel } from '@ynight/contracts';
36
+
37
+ // 1. 加载:扫描业务目录
38
+ const models = loadModels({ modelDir: './model', extension: '.ts' });
39
+
40
+ // 2. 合并:在服务启动时由 framework 完成
41
+ // 这里展示 mergeModel 的纯函数用法——业务侧很少直接调用。
42
+ const baseModel: IModel = {
43
+ /* ... */
44
+ };
45
+ const projectConfig: IModel = {
46
+ /* 差异部分 */
47
+ };
48
+ const merged = mergeModel(baseModel, projectConfig);
49
+
50
+ // 3. 校验:传入控件契约定义
51
+ const controlContracts: Record<string, ControlContractDefinition> = {
52
+ 'rich-editor': {
53
+ propsSchema: {
54
+ type: 'object',
55
+ required: ['height'],
56
+ properties: { height: { type: 'number' }, toolbar: { type: 'boolean' } },
57
+ additionalProperties: false,
58
+ },
59
+ },
60
+ };
61
+ validateModels(models, { controlContracts });
62
+ ```
63
+
64
+ > 在真实项目中,**步骤 2 通常由 `loadModels` 内部完成**——它会对每个项目文件调用 `mergeModel(loadedModel.model, projectConfig)`,所以调用方一般只看到 `loadModels` + `validateModels` 两步。
65
+
66
+ ## API 参考
67
+
68
+ ### `loadModels(options)`
69
+
70
+ - **签名**:`loadModels(options: LoadModelsOptions): LoadedModel[]`
71
+ - **说明**:扫描 `modelDir` 下形如 `<modelKey>/model.<ext>` 与 `<modelKey>/project/<projectKey>.<ext>` 的文件,把基础模型与项目配置解析为 `LoadedModel` 列表,每个 `projectKey` 对应的项目模型已通过 `mergeModel` 与基础模型合并。
72
+ - **参数**:
73
+ - `modelDir`:模型根目录。
74
+ - `extension`:要扫描的扩展名(仅识别 `.ts` / `.js` / `.cjs`),其它扩展名文件会被忽略。
75
+ - **行为**:
76
+ - 目录不存在时直接返回空数组(调用方可据此判断"未配置模型目录")。
77
+ - 忽略 `index.<ext>`(聚合入口)与 `*.test.<ext>`(测试文件)。
78
+ - 校验"基础模型文件唯一"与"项目文件能找到对应基础模型"。
79
+ - 同名 `modelKey` 重复抛错;同名 `projectKey` 在同一模型下重复抛错。
80
+ - **返回**:`LoadedModel` 列表,每个元素包含基础模型 `model`、模型 `key`、项目字典 `project`。
81
+
82
+ ```typescript
83
+ export interface LoadModelsOptions {
84
+ /** 模型根目录;约定:`<modelDir>/<modelKey>/model.{ts,js,cjs}` 为基础模型,
85
+ * `<modelDir>/<modelKey>/project/<projectKey>.{ts,js,cjs}` 为项目配置。 */
86
+ modelDir: string;
87
+ /** 要扫描的扩展名(其它扩展名文件会被忽略)。 */
88
+ extension: '.ts' | '.js' | '.cjs';
89
+ }
90
+
91
+ export interface LoadedModel {
92
+ /** 基础模型对象。 */
93
+ model: IModel;
94
+ /** 模型 key(等于模型目录名)。 */
95
+ key: string;
96
+ /** 项目字典:key=项目名,value=合并后的项目 IModel。 */
97
+ project: Record<string, IModel>;
98
+ }
99
+ ```
100
+
101
+ ### `mergeModel(base, current)`
102
+
103
+ - **签名**:`mergeModel<T extends object>(base: T, current: T): T`
104
+ - **说明**:深度合并两个模型对象。菜单树(`menu` / `subMenu`)按 `key` 递归合并;其余数组整体替换;标量或类型不一致时项目配置整体覆盖基础;`menuType` / `moduleType` 变化时整分支替换,避免旧字段残留。
105
+ - **纯函数**:不修改任何入参。
106
+
107
+ ```typescript
108
+ // 基础模型声明菜单项 A(group,含 subMenu: [B])
109
+ const base = {
110
+ menu: [{ key: 'A', name: 'A', menuType: 'group', subMenu: [{ key: 'B', name: 'B' }] }],
111
+ };
112
+ // 项目配置给 A 增加子菜单项 C,并修改 A 的描述
113
+ const current = {
114
+ menu: [{ key: 'A', name: 'A', subMenu: [{ key: 'C', name: 'C' }] }],
115
+ };
116
+ const merged = mergeModel(base, current);
117
+ // merged.menu[0].subMenu === [{ key: 'B', name: 'B' }, { key: 'C', name: 'C' }]
118
+ // —— B 按 key 保留,C 作为新分支追加
119
+ ```
120
+
121
+ ### `validateModels(models, options?)`
122
+
123
+ - **签名**:`validateModels(models: LoadedModel[], options?: ValidateModelsOptions): void`
124
+ - **说明**:对每个加载后的模型做 JSON 边界、菜单键、模型结构、控件契约校验,并对跨模型的项目 `key` 冲突做检测。校验失败直接 `throw`,错误信息含定位路径与失败原因。
125
+ - **参数**:
126
+ - `models`:`loadModels` 的返回值。
127
+ - `options.controlContracts`:控件契约字典,键为 `comType`,值为 `{ propsSchema }`。
128
+
129
+ ```typescript
130
+ export interface ControlContractDefinition {
131
+ /** 该控件 props 的 JSON Schema;用于 ajv 校验每个使用点的 props。 */
132
+ propsSchema: unknown;
133
+ }
134
+
135
+ export interface ValidateModelsOptions {
136
+ /** 由业务项目提供的纯 JSON 控件契约;不得包含 Vue 组件或函数。 */
137
+ controlContracts?: Record<string, ControlContractDefinition>;
138
+ }
139
+ ```
140
+
141
+ ## 合并规则详解
142
+
143
+ `mergeModel` 的合并策略围绕"**菜单树需要稳定寻址,其余字段只覆盖**"展开:
144
+
145
+ ### 1. 菜单树按 `key` 合并
146
+
147
+ 仅当合并上下文的 `key` 为 `menu` 或 `subMenu` 时,数组才会按元素 `key` 递归合并:
148
+
149
+ - **已存在的 `key`**:递归进入分支级合并(`mergeMenuItem`)。
150
+ - **新 `key`**:作为新分支追加到结果末尾。
151
+ - **无 `key` 的元素**:直接抛错——菜单必须稳定标识,便于框架寻址。
152
+
153
+ ### 2. 判别联合的整分支替换
154
+
155
+ 菜单是带判别字段的联合类型(`group` / `pathModule` / `siderModule` / `schemaModule`),`mergeMenuItem` 在合并两个同 `key` 项时:
156
+
157
+ - **`menuType` 不同**(`group` ↔ `module`):项目配置**整体替换**基础分支,避免旧的 `subMenu` 残留。
158
+ - **`menuType` 相同且都是 `module`,但 `moduleType` 不同**(`schema` ↔ `sider` ↔ `iframe` ↔ `custom`):项目配置**整体替换**基础分支,避免旧的 `moduleConfig` 残留。
159
+ - **同分支**(`menuType` 与 `moduleType` 一致):递归合并字段。
160
+
161
+ ### 3. 普通数组整体替换
162
+
163
+ `oneOf`、`required`、按钮列表等数组**不做按 key 合并**,而是由项目配置整体替换——它们的顺序和成员列表是业务语义相关,不能错位合并。
164
+
165
+ ### 4. 对象字段递归合并
166
+
167
+ 非数组对象:所有键并集递归合并——`current` 中存在的键以 `current` 为准递归合并;不存在的键保留 `base` 的深拷贝。
168
+
169
+ ### 5. 标量或类型不一致
170
+
171
+ `current` 整体覆盖 `base`。
172
+
173
+ ### 6. 深拷贝隔离
174
+
175
+ 所有返回值都是深拷贝(基于本包自实现的 `cloneValue`,不依赖 `structuredClone`),原 `base` 与 `current` 在合并后不会被修改,且不受后续修改影响。
176
+
177
+ ## 校验规则详解
178
+
179
+ `validateModels` 是一次性同步校验,**任何步骤失败都会抛错**,由调用方决定如何呈现。
180
+
181
+ ### 1. JSON 边界校验(`assertJson`)
182
+
183
+ 递归校验模型配置是**JSON 可序列化纯数据**,最终可以跨进程传递或落库。**拒绝**:
184
+
185
+ - `undefined`、函数、`Symbol`、`BigInt`;
186
+ - `Date` 实例;
187
+ - 非有限数(`NaN` / `±Infinity`);
188
+ - 类实例(原型不是 `Object.prototype` 或 `null` 的对象);
189
+ - 循环引用;
190
+ - 稀疏数组空位(`arr[0] = , arr[1]` 这种 `Object.hasOwn` 为 `false` 的位置);
191
+ - 非 enumerable 属性、getter/setter 属性;
192
+ - 非字符串键、非数字数组索引。
193
+
194
+ 走查时使用 `WeakSet` 检测循环引用,并在子树遍历完后 `delete` 释放,避免误判祖先-兄弟之间的"伪环"。
195
+
196
+ ### 2. 菜单键校验(`validateMenu`)
197
+
198
+ 递归校验菜单树:
199
+
200
+ - 每项必须是菜单对象,且带非空字符串 `key`;
201
+ - **整棵菜单树中 `key` 必须唯一**(`seenKeys` 跨层级共享);
202
+ - `menuType` 必须是 `'group'` 或 `'module'`;
203
+ - `group` 必须含 `subMenu` 数组;
204
+ - `module` 必须含 `moduleConfig` 对象,且 `moduleType` 必须是已知的 `'schema' / 'sider' / 'iframe' / 'custom'`;
205
+ - `sider` 模块的 `moduleConfig.menu` 递归走同套规则。
206
+
207
+ ### 3. 模型结构校验(`modelSchema` + AJV)
208
+
209
+ 通过 AJV 编译一份 Draft-07 兼容的 JSON Schema,**严格拒绝未知字段**(`additionalProperties: false`),关键约束:
210
+
211
+ - 根对象必含 `name`(非空字符串)与 `menu`(数组,元素引用 `$defs/menuItem`);
212
+ - 可选 `mode` 必须是字符串 `'dashboard'`;
213
+ - `group` / `pathModule` / `siderModule` / `schemaModule` 用 `oneOf` 判别联合;
214
+ - `schemaModule.moduleConfig` 必含 `api`、`schema`、`tableConfig`、`searchConfig`、`components`,且 `tableConfig` 必含 `headerButtons`、`rowButtons`。
215
+
216
+ 错误信息会做易读化处理:`required` 错误附加缺失的属性名、`additionalProperties` 错误附加多出来的属性名,并把 `/menu/0/subMenu` 这类 JSON Pointer 风格的 `instancePath` 转化为 `.menu[0].subMenu`。
217
+
218
+ ### 4. 控件契约校验
219
+
220
+ 遍历模型菜单树中所有 `schemaModule` 的字段配置,对每个字段的:
221
+
222
+ - `searchOption`
223
+ - `CreateFormOption`
224
+ - `UpdateFormOption`
225
+ - `DetailViewOption`
226
+
227
+ 查找其 `comType`:
228
+
229
+ - 若 `comType` 属于内置控件集合(来自 `@ynight/contracts` 的 `SchemaFormControlType`),跳过;
230
+ - 若 `comType` 未声明契约,抛错"引用了未知控件";
231
+ - 否则用契约的 `propsSchema` 校验 `props`(未声明时按 `{}` 处理,但仍会跑 `oneOf` / `$ref` 等组合约束)。
232
+
233
+ 契约定义本身也会被校验:必须包含 `propsSchema`,且必须是纯 JSON。**异步 Schema 在此处被拒绝**——`validateModels` 是同步流程。
234
+
235
+ ### 5. 跨模型项目键冲突
236
+
237
+ 记录每个 `projectKey` 当前归属的 `modelKey`,若同一 `projectKey` 同时出现在两个不同模型下,直接抛错。
238
+
239
+ ## 设计约束
240
+
241
+ - **目录约定**:`<modelDir>/<modelKey>/model.<ext>` 为基础模型,`<modelDir>/<modelKey>/project/<projectKey>.<ext>` 为项目配置。`modelKey` 支持嵌套子目录(例如 `feature-a/order`),由 glob 路径片段相对 `modelDir` 后用 `path.sep` 拼接。
242
+ - **扩展名推断**:扩展名(`.ts` / `.js` / `.cjs`)由调用方传入,**本包不自动嗅探**——在 `@ynight/framework` 中通常根据环境选择(开发用 `.ts`,生产用 `.js`)。
243
+ - **默认导出兼容**:模块既支持 `export default { ... }`(取 `module.default`),也支持 `module.exports = { ... }`(直接取模块本身)。
244
+ - **同步 API**:`loadModels` 与 `validateModels` 均为同步,不接受异步 Schema 或异步加载。
245
+ - **不修改入参**:`mergeModel` 与 `loadModels` 内部使用深拷贝隔离,原对象在合并后不会被修改。
246
+
247
+ ## 相关包
248
+
249
+ - **`@ynight/contracts`**:提供 DSL 类型(`IModel`、`MenuType`、`ModuleType`、`SchemaFormControlType` 等)与控件契约定义。本包的类型约束与运行时校验都建立在它的语义之上。
250
+ - **`@ynight/framework`**:服务启动时调用 `loadModels` + `validateModels`,把校验通过的模型树注入到运行时。
251
+ - **`@ynight/core`**:提供底层加载工具(glob、require 等)。
252
+
253
+ ## 脚本
254
+
255
+ | 命令 | 说明 |
256
+ | ------------ | -------------------------------------- |
257
+ | `clean` | 删除 `dist` 目录。 |
258
+ | `build` | 清空 `dist` 后用 `tsc` 编译。 |
259
+ | `dev` | 监听模式编译。 |
260
+ | `type-check` | 类型检查(同时校验 `src` 与 `test`)。 |
261
+ | `test` | 用 `ts-node` + Mocha 跑测试用例。 |
262
+ | `lint` | 对 `src` 与 `test` 跑 ESLint。 |
263
+
264
+ ## 引擎要求
265
+
266
+ - Node.js `>=22.0.0`
267
+
268
+ ## 许可证
269
+
270
+ MIT
@@ -0,0 +1 @@
1
+ {"fileNames":["../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.d.ts","../src/merge-model.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/compatibility/disposable.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/compatibility/indexable.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/compatibility/iterators.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/compatibility/index.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/globals.typedarray.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/buffer.buffer.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/globals.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/web-globals/abortcontroller.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/web-globals/domexception.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/web-globals/events.d.ts","../../../node_modules/.pnpm/buffer@6.0.3/node_modules/buffer/index.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/header.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/readable.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/file.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/fetch.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/formdata.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/connector.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/client.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/errors.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/dispatcher.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/global-dispatcher.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/global-origin.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/pool-stats.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/pool.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/handlers.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/balanced-pool.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/agent.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-interceptor.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-agent.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-client.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-pool.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-errors.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/proxy-agent.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/env-http-proxy-agent.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/retry-handler.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/retry-agent.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/api.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/interceptors.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/util.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/cookies.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/patch.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/websocket.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/eventsource.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/filereader.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/diagnostics-channel.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/content-type.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/cache.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/index.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/web-globals/fetch.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/web-globals/navigator.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/web-globals/storage.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/web-globals/streams.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/assert.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/assert/strict.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/async_hooks.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/buffer.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/child_process.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/cluster.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/console.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/constants.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/crypto.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/dgram.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/dns.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/dns/promises.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/domain.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/events.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/fs.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/fs/promises.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/http.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/http2.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/https.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/inspector.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/inspector.generated.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/module.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/net.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/os.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/path.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/process.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/punycode.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/querystring.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/readline.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/readline/promises.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/repl.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/sea.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/sqlite.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/stream.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/stream/promises.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/stream/web.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/string_decoder.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/test.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/timers.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/timers/promises.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/tls.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/trace_events.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/tty.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/url.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/util.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/v8.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/vm.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/wasi.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/worker_threads.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/zlib.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/index.d.ts","../../../node_modules/.pnpm/minipass@7.1.2/node_modules/minipass/dist/commonjs/index.d.ts","../../../node_modules/.pnpm/lru-cache@11.2.4/node_modules/lru-cache/dist/commonjs/index.d.ts","../../../node_modules/.pnpm/path-scurry@2.0.1/node_modules/path-scurry/dist/commonjs/index.d.ts","../../../node_modules/.pnpm/minimatch@10.1.1/node_modules/minimatch/dist/commonjs/ast.d.ts","../../../node_modules/.pnpm/minimatch@10.1.1/node_modules/minimatch/dist/commonjs/escape.d.ts","../../../node_modules/.pnpm/minimatch@10.1.1/node_modules/minimatch/dist/commonjs/unescape.d.ts","../../../node_modules/.pnpm/minimatch@10.1.1/node_modules/minimatch/dist/commonjs/index.d.ts","../../../node_modules/.pnpm/glob@11.1.0/node_modules/glob/dist/commonjs/pattern.d.ts","../../../node_modules/.pnpm/glob@11.1.0/node_modules/glob/dist/commonjs/processor.d.ts","../../../node_modules/.pnpm/glob@11.1.0/node_modules/glob/dist/commonjs/walker.d.ts","../../../node_modules/.pnpm/glob@11.1.0/node_modules/glob/dist/commonjs/ignore.d.ts","../../../node_modules/.pnpm/glob@11.1.0/node_modules/glob/dist/commonjs/glob.d.ts","../../../node_modules/.pnpm/glob@11.1.0/node_modules/glob/dist/commonjs/has-magic.d.ts","../../../node_modules/.pnpm/glob@11.1.0/node_modules/glob/dist/commonjs/index.d.ts","../../../node_modules/.pnpm/@types+json-schema@7.0.15/node_modules/@types/json-schema/index.d.ts","../../contracts/dist/api/schema.d.ts","../../contracts/dist/dsl/json.d.ts","../../contracts/dist/dsl/internal/element-plus-props.d.ts","../../contracts/dist/dsl/component-types.d.ts","../../contracts/dist/dsl/internal/search-shared.d.ts","../../contracts/dist/dsl/internal/custom-form-options.d.ts","../../contracts/dist/dsl/search-options.d.ts","../../contracts/dist/dsl/schema.d.ts","../../contracts/dist/dsl/model.d.ts","../../contracts/dist/dsl/index.d.ts","../../contracts/dist/dto/project.dto.d.ts","../../contracts/dist/utils/query.d.ts","../../contracts/dist/index.d.ts","../src/load-models.ts","../../../node_modules/.pnpm/fast-uri@3.1.0/node_modules/fast-uri/types/index.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/codegen/code.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/codegen/scope.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/codegen/index.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/rules.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/util.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/validate/subschema.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/errors.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/validate/index.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/validate/datatype.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/additionalitems.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/items2020.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/contains.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/dependencies.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/propertynames.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/additionalproperties.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/not.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/anyof.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/oneof.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/if.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/index.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/validation/limitnumber.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/validation/multipleof.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/validation/pattern.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/validation/required.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/validation/uniqueitems.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/validation/const.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/validation/enum.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/validation/index.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/format/format.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedproperties.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/unevaluated/unevaluateditems.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/validation/dependentrequired.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/discriminator/types.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/discriminator/index.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/errors.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/types/json-schema.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/types/jtd-schema.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/runtime/validation_error.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/ref_error.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/core.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/resolve.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/index.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/types/index.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/ajv.d.ts","../src/validate-models.ts","../src/index.ts"],"fileIdsList":[[65,115,132,133],[65,112,113,115,132,133],[65,114,115,132,133],[115,132,133],[65,115,120,132,133,150],[65,115,116,121,126,132,133,135,147,158],[65,115,116,117,126,132,133,135],[60,61,62,65,115,132,133],[65,115,118,132,133,159],[65,115,119,120,127,132,133,136],[65,115,120,132,133,147,155],[65,115,121,123,126,132,133,135],[65,114,115,122,132,133],[65,115,123,124,132,133],[65,115,125,126,132,133],[65,114,115,126,132,133],[65,115,126,127,128,132,133,147,158],[65,115,126,127,128,132,133,142,147,150],[65,107,115,123,126,129,132,133,135,147,158],[65,115,126,127,129,130,132,133,135,147,155,158],[65,115,129,131,132,133,147,155,158],[63,64,65,66,67,68,69,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164],[65,115,126,132,133],[65,115,132,133,134,158],[65,115,123,126,132,133,135,147],[65,115,132,133,136],[65,115,132,133,137],[65,114,115,132,133,138],[65,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164],[65,115,132,133,140],[65,115,132,133,141],[65,115,126,132,133,142,143],[65,115,132,133,142,144,159,161],[65,115,127,132,133],[65,115,126,132,133,147,148,150],[65,115,132,133,149,150],[65,115,132,133,147,148],[65,115,132,133,150],[65,115,132,133,151],[65,112,115,132,133,147,152,158],[65,115,126,132,133,153,154],[65,115,132,133,153,154],[65,115,120,132,133,135,147,155],[65,115,132,133,156],[65,115,132,133,135,157],[65,115,129,132,133,141,158],[65,115,120,132,133,159],[65,115,132,133,147,160],[65,115,132,133,134,161],[65,115,132,133,162],[65,107,115,132,133],[65,107,115,126,128,132,133,138,147,150,158,160,161,163],[65,115,132,133,147,164],[65,115,132,133,198,199,203,230,231,233,234,235,237,238],[65,115,132,133,196,197],[65,115,132,133,196],[65,115,132,133,198,238],[65,115,132,133,198,199,235,236,238],[65,115,132,133,238],[65,115,132,133,195,238,239],[65,115,132,133,198,199,237,238],[65,115,132,133,198,199,201,202,237,238],[65,115,132,133,198,199,200,237,238],[65,115,132,133,198,199,203,230,231,232,233,234,237,238],[65,115,132,133,195,198,199,203,235,237],[65,115,132,133,203,238],[65,115,132,133,205,206,207,208,209,210,211,212,213,214,238],[65,115,132,133,228,238],[65,115,132,133,204,215,223,224,225,226,227,229],[65,115,132,133,208,238],[65,115,132,133,216,217,218,219,220,221,222,238],[65,115,132,133,166,168,172,173,176],[65,115,132,133,177],[65,115,132,133,168,172,175],[65,115,132,133,166,168,172,175,176,177,178],[65,115,132,133,172],[65,115,132,133,168,172,173,175],[65,115,132,133,166,168,173,174,176],[65,115,132,133,169,170,171],[65,115,126,132,133,151,165],[65,115,127,132,133,137,166,167],[65,79,83,115,132,133,158],[65,79,115,132,133,147,158],[65,74,115,132,133],[65,76,79,115,132,133,155,158],[65,115,132,133,135,155],[65,115,132,133,165],[65,74,115,132,133,165],[65,76,79,115,132,133,135,158],[65,71,72,75,78,115,126,132,133,147,158],[65,79,86,115,132,133],[65,71,77,115,132,133],[65,79,100,101,115,132,133],[65,75,79,115,132,133,150,158,165],[65,100,115,132,133,165],[65,73,74,115,132,133,165],[65,79,115,132,133],[65,73,74,75,76,77,78,79,80,81,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,101,102,103,104,105,106,115,132,133],[65,79,94,115,132,133],[65,79,86,87,115,132,133],[65,77,79,87,88,115,132,133],[65,78,115,132,133],[65,71,74,79,115,132,133],[65,79,83,87,88,115,132,133],[65,83,115,132,133],[65,77,79,82,115,132,133,158],[65,71,76,79,86,115,132,133],[65,115,132,133,147],[65,74,79,100,115,132,133,163,165],[65,115,132,133,180],[65,115,132,133,182,184,186,187,188,189],[65,115,132,133,182,183,184,185],[65,115,132,133,182,188],[65,115,132,133,180,182,183,184,187],[65,115,132,133,182,183,184,185,186],[65,115,132,133,181,190,191,192],[58,59,65,115,132,133,194,240],[58,59,65,115,132,133,137,179,193],[58,65,115,132,133],[58,65,115,132,133,193,194,239]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"a6a5253138c5432c68a1510c70fe78a644fe2e632111ba778e1978010d6edfec","impliedFormat":1},{"version":"e9ffd15f20587a140bef3ae4f64d38f5ea11293e33b0abc3ce9567ba1dc4fef0","signature":"316c6f8af74b6894bd88e99d34c9312100da06fb80ebbf1f36fc37050eabb396"},{"version":"6c7176368037af28cb72f2392010fa1cef295d6d6744bca8cfb54985f3a18c3e","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab41ef1f2cdafb8df48be20cd969d875602483859dc194e9c97c8a576892c052","affectsGlobalScope":true,"impliedFormat":1},{"version":"437e20f2ba32abaeb7985e0afe0002de1917bc74e949ba585e49feba65da6ca1","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"98cffbf06d6bab333473c70a893770dbe990783904002c4f1a960447b4b53dca","affectsGlobalScope":true,"impliedFormat":1},{"version":"3af97acf03cc97de58a3a4bc91f8f616408099bc4233f6d0852e72a8ffb91ac9","affectsGlobalScope":true,"impliedFormat":1},{"version":"808069bba06b6768b62fd22429b53362e7af342da4a236ed2d2e1c89fcca3b4a","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"f26b11d8d8e4b8028f1c7d618b22274c892e4b0ef5b3678a8ccbad85419aef43","affectsGlobalScope":true,"impliedFormat":1},{"version":"4967529644e391115ca5592184d4b63980569adf60ee685f968fd59ab1557188","impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"763fe0f42b3d79b440a9b6e51e9ba3f3f91352469c1e4b3b67bfa4ff6352f3f4","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"7f182617db458e98fc18dfb272d40aa2fff3a353c44a89b2c0ccb3937709bfb5","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"b52476feb4a0cbcb25e5931b930fc73cb6643fb1a5060bf8a3dda0eeae5b4b68","affectsGlobalScope":true,"impliedFormat":1},{"version":"f9501cc13ce624c72b61f12b3963e84fad210fbdf0ffbc4590e08460a3f04eba","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d97fb21da858fb18b8ae72c314e9743fd52f73ebe2764e12af1db32fc03f853f","affectsGlobalScope":true,"impliedFormat":1},{"version":"0fa06ada475b910e2106c98c68b10483dc8811d0c14a8a8dd36efb2672485b29","impliedFormat":1},{"version":"33e5e9aba62c3193d10d1d33ae1fa75c46a1171cf76fef750777377d53b0303f","impliedFormat":1},{"version":"2b06b93fd01bcd49d1a6bd1f9b65ddcae6480b9a86e9061634d6f8e354c1468f","impliedFormat":1},{"version":"6a0cd27e5dc2cfbe039e731cf879d12b0e2dded06d1b1dedad07f7712de0d7f4","affectsGlobalScope":true,"impliedFormat":1},{"version":"13f5c844119c43e51ce777c509267f14d6aaf31eafb2c2b002ca35584cd13b29","impliedFormat":1},{"version":"e60477649d6ad21542bd2dc7e3d9ff6853d0797ba9f689ba2f6653818999c264","impliedFormat":1},{"version":"c2510f124c0293ab80b1777c44d80f812b75612f297b9857406468c0f4dafe29","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"4c829ab315f57c5442c6667b53769975acbf92003a66aef19bce151987675bd1","affectsGlobalScope":true,"impliedFormat":1},{"version":"b2ade7657e2db96d18315694789eff2ddd3d8aea7215b181f8a0b303277cc579","impliedFormat":1},{"version":"78dbea00e90d2df8ea3dbef0cc379d95b8be9b71cd6bde4c28728f306811803b","impliedFormat":1},{"version":"4d631b81fa2f07a0e63a9a143d6a82c25c5f051298651a9b69176ba28930756d","impliedFormat":1},{"version":"836a356aae992ff3c28a0212e3eabcb76dd4b0cc06bcb9607aeef560661b860d","impliedFormat":1},{"version":"1e0d1f8b0adfa0b0330e028c7941b5a98c08b600efe7f14d2d2a00854fb2f393","impliedFormat":1},{"version":"41670ee38943d9cbb4924e436f56fc19ee94232bc96108562de1a734af20dc2c","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e1e46d0a9837ee058c100501080c920fa98081ea3956af0374308ba6f22a33e","impliedFormat":1},{"version":"272ca407e0c9068bdc5152552d876e68037ceae3de62e529306403e973dec8e1","impliedFormat":1},{"version":"fa7834c715d5357e4540cee40ce96c3250ddb67a7b879a6b7fa0e86d6696f121","impliedFormat":1},{"version":"22dfb07a7ab15b66ac043829056fe70124844636ae719551812ac631ba04985b","impliedFormat":1},{"version":"a10f0e1854f3316d7ee437b79649e5a6ae3ae14ffe6322b02d4987071a95362e","impliedFormat":1},{"version":"e208f73ef6a980104304b0d2ca5f6bf1b85de6009d2c7e404028b875020fa8f2","impliedFormat":1},{"version":"d163b6bc2372b4f07260747cbc6c0a6405ab3fbcea3852305e98ac43ca59f5bc","impliedFormat":1},{"version":"e6fa9ad47c5f71ff733744a029d1dc472c618de53804eae08ffc243b936f87ff","affectsGlobalScope":true,"impliedFormat":1},{"version":"a6f137d651076822d4fe884287e68fd61785a0d3d1fdb250a5059b691fa897db","impliedFormat":1},{"version":"24826ed94a78d5c64bd857570fdbd96229ad41b5cb654c08d75a9845e3ab7dde","impliedFormat":1},{"version":"8b479a130ccb62e98f11f136d3ac80f2984fdc07616516d29881f3061f2dd472","impliedFormat":1},{"version":"928af3d90454bf656a52a48679f199f64c1435247d6189d1caf4c68f2eaf921f","affectsGlobalScope":true,"impliedFormat":1},{"version":"bceb58df66ab8fb00170df20cd813978c5ab84be1d285710c4eb005d8e9d8efb","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f16a7e4deafa527ed9995a772bb380eb7d3c2c0fd4ae178c5263ed18394db2c","impliedFormat":1},{"version":"933921f0bb0ec12ef45d1062a1fc0f27635318f4d294e4d99de9a5493e618ca2","impliedFormat":1},{"version":"71a0f3ad612c123b57239a7749770017ecfe6b66411488000aba83e4546fde25","impliedFormat":1},{"version":"77fbe5eecb6fac4b6242bbf6eebfc43e98ce5ccba8fa44e0ef6a95c945ff4d98","impliedFormat":1},{"version":"4f9d8ca0c417b67b69eeb54c7ca1bedd7b56034bb9bfd27c5d4f3bc4692daca7","impliedFormat":1},{"version":"0cb167c371eaa8c869f8a7656a7296f2e4fae43b4d8b803a680236b24794e5f9","impliedFormat":1},{"version":"0a839dba0287cc0481ad4beedd48a1c64acf1e212ae865d1315f7007ca215161","impliedFormat":1},{"version":"38dc4655376cd1a4bd6bb3763d92949233e33d38d3dd3cbea7bbf218175a38ef","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"45650f47bfb376c8a8ed39d4bcda5902ab899a3150029684ee4c10676d9fbaee","impliedFormat":1},{"version":"d61e0a64cd175208ac0b83670151a9a6b5916f0d1ffcdc5c29c90b1cebfc5045","affectsGlobalScope":true,"impliedFormat":1},{"version":"18fd40412d102c5564136f29735e5d1c3b455b8a37f920da79561f1fde068208","impliedFormat":1},{"version":"48a679952eefe4cb776d5a0e1ccba2d3eb53b57448bbb7abc1fcebcbd5440188","impliedFormat":1},{"version":"f0be1b8078cd549d91f37c30c222c2a187ac1cf981d994fb476a1adc61387b14","affectsGlobalScope":true,"impliedFormat":1},{"version":"0aaed1d72199b01234152f7a60046bc947f1f37d78d182e9ae09c4289e06a592","impliedFormat":1},{"version":"2d14da6ecb49bf828d83948765ec2d3a579d476bbb9645e749610baa6ec880ca","impliedFormat":1},{"version":"66ba1b2c3e3a3644a1011cd530fb444a96b1b2dfe2f5e837a002d41a1a799e60","impliedFormat":1},{"version":"7e514f5b852fdbc166b539fdd1f4e9114f29911592a5eb10a94bb3a13ccac3c4","impliedFormat":1},{"version":"5b7aa3c4c1a5d81b411e8cb302b45507fea9358d3569196b27eb1a27ae3a90ef","affectsGlobalScope":true,"impliedFormat":1},{"version":"5987a903da92c7462e0b35704ce7da94d7fdc4b89a984871c0e2b87a8aae9e69","affectsGlobalScope":true,"impliedFormat":1},{"version":"ea08a0345023ade2b47fbff5a76d0d0ed8bff10bc9d22b83f40858a8e941501c","impliedFormat":1},{"version":"0aef708fb4c7a6b915e8305cbfac40cd207b032dbaabe9a01889a5fff3254681","impliedFormat":1},{"version":"ae062ce7d9510060c5d7e7952ae379224fb3f8f2dd74e88959878af2057c143b","impliedFormat":1},{"version":"ad9bdafb4e7abf14cc53ce7970486a84c87831e62891e5dfe798ddcd55e84701","affectsGlobalScope":true,"impliedFormat":1},{"version":"358765d5ea8afd285d4fd1532e78b88273f18cb3f87403a9b16fef61ac9fdcfe","impliedFormat":1},{"version":"71d3ae6a5e73ca4130762560425e00984ebaff64d5353a3333d1bb7eb86ef336","impliedFormat":1},{"version":"041597c12abeaa2ef07766775955fc87cfc65c43e0fe86c836071bea787e967c","impliedFormat":1},{"version":"044e197786d0bd718281d6f4ab7332684bc7c7b3ba8ecda54ac5038c89e6e0bb","impliedFormat":1},{"version":"072f583571d6e3d30cd9760ee3485d29484fb7b54ba772ac135c747a380096a1","impliedFormat":1},{"version":"7212c2d58855b8df35275180e97903a4b6093d4fbaefea863d8d028da63938c6","impliedFormat":1},{"version":"d8a6b3f899917210f00ddf13b564a2a4fdcf1e50c5a22e8d3abcfd4f1c4f9ae1","impliedFormat":1},{"version":"fd5eab954b31e761a72234031dadc3aab768763942a9637e380aed441cc94f59","impliedFormat":1},{"version":"c7aaac3119acf27e03190cc4224f1d81c7498cf6b36fa72d10d99f2c41d1bbc0","impliedFormat":1},{"version":"dd9faff42b456b5f03b85d8fbd64838eb92f6f7b03b36322cbc59c005b7033d3","impliedFormat":1},{"version":"6ff702721d87c0ba8e7f8950e7b0a3b009dfd912fab3997e0b63fab8d83919c3","impliedFormat":1},{"version":"9dce9fc12e9a79d1135699d525aa6b44b71a45e32e3fa0cf331060b980b16317","impliedFormat":1},{"version":"586b2fd8a7d582329658aaceec22f8a5399e05013deb49bcfde28f95f093c8ee","impliedFormat":1},{"version":"59c44b081724d4ab8039988aba34ee6b3bd41c30fc2d8686f4ed06588397b2f7","impliedFormat":1},{"version":"ef1f3eadd7bed282de45bafd7c2c00105cf1db93e22f6cd763bec8a9c2cf6df1","impliedFormat":1},{"version":"2b90463c902dbe4f5bbb9eae084c05de37477c17a5de1e342eb7cbc9410dc6a1","impliedFormat":1},{"version":"f3d8c757e148ad968f0d98697987db363070abada5f503da3c06aefd9d4248c1","impliedFormat":1},"21871c48e710d8c23875392497b70bebc0396b52912e9f0cb356e9cf2035b734","ad8419d20aa4add9f2a748f9691ce492da10c7abdfd31dfa22cb8b57391288f3","925fd4546d282081b71df6e082399198833e6aa59869ffd1f1efe2e6c09795d9","2b5971fddc44469e17cfa9fd98910ce15aed415bdb80e6ac93785556161a709f","213f4415a4d8c7d7111c49fd16926d46488028035377c7f00aaf0d3a3f9ca2ae","88bbaf4361b9928be90e5ca7d616f4d73e0917e23c01fa6f212dca6e28714dcc","afb75f3275bf8245aac23eea96db5a44623ae0d832d3d321415f19936a3c6c54","8bb0e2642f651d6c5dd421e0532a5fcce2251abf492e3836a92869e6b27e9551","50cbf802b20e21fbe00f32ef73519fbadf93c16ca6763f6d4c64e3a1e4ad77e1","c405bab4a9998c59c23b59a67d52aaa51bac476943cf76ab77e3a47fb965a232","4ab337bc8170106ca7e880dc7614affa69f8d761430840f10f42ea30b12a46ef","c42107c39ced60d2be1e2673aa8f9fab75ddeb7b1626c1118b75500feb657f50","832d6b9e5d88f1ac524985d912472853462acb7276e418430d3e48951eaf33a2",{"version":"672955043e95afb0e2c4718a0dcd3d766a07e1752626aeff54b3d568c60040c9","signature":"12d89179d3be68653061dd57374c015df706431f8f19749f50b478401954a64c"},{"version":"84bcc7c6b06f4d643a55dc63b56be0c81d990f8d549b66ea615c553268774dc3","impliedFormat":1},{"version":"2d225e7bda2871c066a7079c88174340950fb604f624f2586d3ea27bb9e5f4ff","impliedFormat":1},{"version":"6a785f84e63234035e511817dd48ada756d984dd8f9344e56eb8b2bdcd8fd001","impliedFormat":1},{"version":"c1422d016f7df2ccd3594c06f2923199acd09898f2c42f50ea8159f1f856f618","impliedFormat":1},{"version":"2973b1b7857ca144251375b97f98474e9847a890331e27132d5a8b3aea9350a8","impliedFormat":1},{"version":"0eb6152d37c84d6119295493dfcc20c331c6fda1304a513d159cdaa599dcb78b","impliedFormat":1},{"version":"237df26f8c326ca00cd9d2deb40214a079749062156386b6d75bdcecc6988a6b","impliedFormat":1},{"version":"cd44995ee13d5d23df17a10213fed7b483fabfd5ea08f267ab52c07ce0b6b4da","impliedFormat":1},{"version":"58ce1486f851942bd2d3056b399079bc9cb978ec933fe9833ea417e33eab676e","impliedFormat":1},{"version":"7557d4d7f19f94341f4413575a3453ba7f6039c9591015bcf4282a8e75414043","impliedFormat":1},{"version":"a3b2cc16f3ce2d882eca44e1066f57a24751545f2a5e4a153d4de31b4cac9bb5","impliedFormat":1},{"version":"ac2b3b377d3068bfb6e1cb8889c99098f2c875955e2325315991882a74d92cc8","impliedFormat":1},{"version":"8deb39d89095469957f73bd194d11f01d9894b8c1f1e27fbf3f6e8122576b336","impliedFormat":1},{"version":"a38a9c41f433b608a0d37e645a31eecf7233ef3d3fffeb626988d3219f80e32f","impliedFormat":1},{"version":"8e1428dcba6a984489863935049893631170a37f9584c0479f06e1a5b1f04332","impliedFormat":1},{"version":"1fce9ecb87a2d3898941c60df617e52e50fb0c03c9b7b2ba8381972448327285","impliedFormat":1},{"version":"5ef0597b8238443908b2c4bf69149ed3894ac0ddd0515ac583d38c7595b151f1","impliedFormat":1},{"version":"ac52b775a80badff5f4ac329c5725a26bd5aaadd57afa7ad9e98b4844767312a","impliedFormat":1},{"version":"6ae5b4a63010c82bf2522b4ecfc29ffe6a8b0c5eea6b2b35120077e9ac54d7a1","impliedFormat":1},{"version":"dd7109c49f416f218915921d44f0f28975df78e04e437c62e1e1eb3be5e18a35","impliedFormat":1},{"version":"eee181112e420b345fc78422a6cc32385ede3d27e2eaf8b8c4ad8b2c29e3e52e","impliedFormat":1},{"version":"25fbe57c8ee3079e2201fe580578fab4f3a78881c98865b7c96233af00bf9624","impliedFormat":1},{"version":"62cc8477858487b4c4de7d7ae5e745a8ce0015c1592f398b63ee05d6e64ca295","impliedFormat":1},{"version":"cc2a9ec3cb10e4c0b8738b02c31798fad312d21ef20b6a2f5be1d077e9f5409d","impliedFormat":1},{"version":"4b4fadcda7d34034737598c07e2dca5d7e1e633cb3ba8dd4d2e6a7782b30b296","impliedFormat":1},{"version":"360fdc8829a51c5428636f1f83e7db36fef6c5a15ed4411b582d00a1c2bd6e97","impliedFormat":1},{"version":"1cf0d15e6ab1ecabbf329b906ae8543e6b8955133b7f6655f04d433e3a0597ab","impliedFormat":1},{"version":"7c9f98fe812643141502b30fb2b5ec56d16aaf94f98580276ae37b7924dd44a4","impliedFormat":1},{"version":"b3547893f24f59d0a644c52f55901b15a3fa1a115bc5ea9a582911469b9348b7","impliedFormat":1},{"version":"596e5b88b6ca8399076afcc22af6e6e0c4700c7cd1f420a78d637c3fb44a885e","impliedFormat":1},{"version":"adddf736e08132c7059ee572b128fdacb1c2650ace80d0f582e93d097ed4fbaf","impliedFormat":1},{"version":"d4cad9dc13e9c5348637170ddd5d95f7ed5fdfc856ddca40234fa55518bc99a6","impliedFormat":1},{"version":"d70675ba7ba7d02e52b7070a369957a70827e4b2bca2c1680c38a832e87b61fd","impliedFormat":1},{"version":"3be71f4ce8988a01e2f5368bdd58e1d60236baf511e4510ee9291c7b3729a27e","impliedFormat":1},{"version":"423d2ccc38e369a7527988d682fafc40267bcd6688a7473e59c5eea20a29b64f","impliedFormat":1},{"version":"2f9fde0868ed030277c678b435f63fcf03d27c04301299580a4017963cc04ce6","impliedFormat":1},{"version":"feeb73d48cc41c6dd23d17473521b0af877751504c30c18dc84267c8eeea429a","impliedFormat":1},{"version":"25f1159094dc0bf3a71313a74e0885426af21c5d6564a254004f2cadf9c5b052","impliedFormat":1},{"version":"cde493e09daad4bb29922fe633f760be9f0e8e2f39cdca999cce3b8690b5e13a","impliedFormat":1},{"version":"3d7f9eb12aface876f7b535cc89dcd416daf77f0b3573333f16ec0a70bcf902a","impliedFormat":1},{"version":"b83139ae818dd20f365118f9999335ca4cd84ae518348619adc5728e7e0372d5","impliedFormat":1},{"version":"e0205f04611bea8b5b82168065b8ef1476a8e96236201494eb8c785331c43118","impliedFormat":1},{"version":"62d26d8ba4fa15ab425c1b57a050ed76c5b0ecbffaa53f182110aa3a02405a07","impliedFormat":1},{"version":"9941cbf7ca695e95d588f5f1692ab040b078d44a95d231fa9a8f828186b7b77d","impliedFormat":1},{"version":"41b8775befd7ded7245a627e9f4de6110236688ce4c124d2d40c37bc1a3bfe05","impliedFormat":1},{"version":"f59317da978bb5984bff9022424cdfbcb9a20fe9f7d78a1b22c7447833f53a91","signature":"f40179a727528ed1f5124f9dd318684cfbb35e8762e72ce164db18621a232bca"},{"version":"1a0da83ad5892169df95e3ecbfcd0126763ea640c99a4cc8c6cccb1f01abdd85","signature":"8874efbe62406f565ab542b69c4c2e8ff1b7fd714bcbbb106e3babf1ddf83736"}],"root":[59,194,240,241],"options":{"allowSyntheticDefaultImports":true,"allowUnreachableCode":false,"allowUnusedLabels":false,"alwaysStrict":true,"declaration":true,"declarationMap":true,"downlevelIteration":true,"esModuleInterop":true,"exactOptionalPropertyTypes":true,"importHelpers":true,"module":1,"noFallthroughCasesInSwitch":true,"noImplicitAny":true,"noImplicitOverride":true,"noImplicitReturns":true,"noImplicitThis":true,"noUncheckedIndexedAccess":true,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./","rootDir":"../src","skipDefaultLibCheck":true,"skipLibCheck":true,"sourceMap":true,"strict":true,"strictBindCallApply":true,"strictFunctionTypes":true,"strictNullChecks":true,"strictPropertyInitialization":true,"target":9,"tsBuildInfoFile":"./.tsbuildinfo","useUnknownInCatchVariables":true},"referencedMap":[[180,1],[112,2],[113,2],[114,3],[65,4],[115,5],[116,6],[117,7],[60,1],[63,8],[61,1],[62,1],[118,9],[119,10],[120,11],[121,12],[122,13],[123,14],[124,14],[125,15],[126,16],[127,17],[128,18],[66,1],[64,1],[129,19],[130,20],[131,21],[165,22],[132,23],[133,1],[134,24],[135,25],[136,26],[137,27],[138,28],[139,29],[140,30],[141,31],[142,32],[143,32],[144,33],[145,1],[146,34],[147,35],[149,36],[148,37],[150,38],[151,39],[152,40],[153,41],[154,42],[155,43],[156,44],[157,45],[158,46],[159,47],[160,48],[161,49],[162,50],[67,1],[68,1],[69,1],[108,51],[109,1],[110,1],[111,38],[163,52],[164,53],[239,54],[196,1],[198,55],[197,56],[202,57],[237,58],[234,59],[236,60],[199,59],[200,61],[204,61],[203,62],[201,63],[235,64],[233,59],[238,65],[231,1],[232,1],[205,66],[210,59],[212,59],[207,59],[208,66],[214,59],[215,67],[206,59],[211,59],[213,59],[209,59],[229,68],[228,59],[230,69],[224,59],[226,59],[225,59],[221,59],[227,70],[222,59],[223,71],[216,59],[217,59],[218,59],[219,59],[220,59],[70,1],[195,1],[177,72],[178,73],[176,74],[179,75],[173,76],[174,77],[175,78],[167,1],[169,76],[170,76],[172,79],[171,76],[166,80],[168,81],[58,1],[56,1],[57,1],[11,1],[10,1],[2,1],[12,1],[13,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[3,1],[20,1],[21,1],[4,1],[22,1],[26,1],[23,1],[24,1],[25,1],[27,1],[28,1],[29,1],[5,1],[30,1],[31,1],[32,1],[33,1],[6,1],[37,1],[34,1],[35,1],[36,1],[38,1],[7,1],[39,1],[44,1],[45,1],[40,1],[41,1],[42,1],[43,1],[8,1],[49,1],[46,1],[47,1],[48,1],[50,1],[9,1],[51,1],[52,1],[53,1],[55,1],[54,1],[1,1],[86,82],[96,83],[85,82],[106,84],[77,85],[76,86],[105,87],[99,88],[104,89],[79,90],[93,91],[78,92],[102,93],[74,94],[73,87],[103,95],[75,96],[80,97],[81,1],[84,97],[71,1],[107,98],[97,99],[88,100],[89,101],[91,102],[87,103],[90,104],[100,87],[82,105],[83,106],[92,107],[72,108],[95,99],[94,97],[98,1],[101,109],[181,110],[184,1],[190,111],[186,112],[183,1],[185,1],[182,1],[189,113],[188,114],[187,115],[191,1],[193,116],[192,1],[241,117],[194,118],[59,119],[240,120]],"version":"5.9.3"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * @ynight/model-runtime 包统一入口。
3
+ *
4
+ * model-runtime 是模型 DSL 与运行时之间的桥梁:
5
+ * - `loadModels`:扫描业务目录,加载基础模型与项目配置并按 menu key 合并
6
+ * - `validateModels`:对加载后的模型做 JSON 边界/菜单键/控件契约校验
7
+ * - `mergeModel`:纯函数,按 key 递归合并两份模型对象
8
+ */
9
+ /** 按菜单 key 合并两份模型对象(纯函数)。 */
10
+ export { mergeModel } from './merge-model';
11
+ /** 扫描 modelDir,加载基础模型与项目配置并按 key 合并。 */
12
+ export { loadModels } from './load-models';
13
+ /** 对已加载的模型做 JSON 边界、菜单键、控件契约和跨模型项目键校验。 */
14
+ export { validateModels } from './validate-models';
15
+ /** `loadModels` 的入参配置项类型。 */
16
+ export type { LoadModelsOptions, LoadedModel } from './load-models';
17
+ /** 控件契约定义 + `validateModels` 的入参配置项类型。 */
18
+ export type { ControlContractDefinition, ValidateModelsOptions } from './validate-models';
19
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,6BAA6B;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,wCAAwC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,0CAA0C;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,6BAA6B;AAC7B,YAAY,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACpE,0CAA0C;AAC1C,YAAY,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ /**
3
+ * @ynight/model-runtime 包统一入口。
4
+ *
5
+ * model-runtime 是模型 DSL 与运行时之间的桥梁:
6
+ * - `loadModels`:扫描业务目录,加载基础模型与项目配置并按 menu key 合并
7
+ * - `validateModels`:对加载后的模型做 JSON 边界/菜单键/控件契约校验
8
+ * - `mergeModel`:纯函数,按 key 递归合并两份模型对象
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.validateModels = exports.loadModels = exports.mergeModel = void 0;
12
+ /** 按菜单 key 合并两份模型对象(纯函数)。 */
13
+ var merge_model_1 = require("./merge-model");
14
+ Object.defineProperty(exports, "mergeModel", { enumerable: true, get: function () { return merge_model_1.mergeModel; } });
15
+ /** 扫描 modelDir,加载基础模型与项目配置并按 key 合并。 */
16
+ var load_models_1 = require("./load-models");
17
+ Object.defineProperty(exports, "loadModels", { enumerable: true, get: function () { return load_models_1.loadModels; } });
18
+ /** 对已加载的模型做 JSON 边界、菜单键、控件契约和跨模型项目键校验。 */
19
+ var validate_models_1 = require("./validate-models");
20
+ Object.defineProperty(exports, "validateModels", { enumerable: true, get: function () { return validate_models_1.validateModels; } });
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAEH,6BAA6B;AAC7B,6CAA2C;AAAlC,yGAAA,UAAU,OAAA;AACnB,wCAAwC;AACxC,6CAA2C;AAAlC,yGAAA,UAAU,OAAA;AACnB,0CAA0C;AAC1C,qDAAmD;AAA1C,iHAAA,cAAc,OAAA"}
@@ -0,0 +1,44 @@
1
+ import type { IModel } from '@ynight/contracts';
2
+ /**
3
+ * `loadModels` 的入参配置。
4
+ */
5
+ export interface LoadModelsOptions {
6
+ /** 模型根目录;约定:`<modelDir>/<modelKey>/model.{ts,js,cjs}` 为基础模型,
7
+ * `<modelDir>/<modelKey>/project/<projectKey>.{ts,js,cjs}` 为项目配置。 */
8
+ modelDir: string;
9
+ /** 要扫描的扩展名(其它扩展名文件会被忽略)。 */
10
+ extension: '.ts' | '.js' | '.cjs';
11
+ }
12
+ /**
13
+ * 加载后的模型单元:一份基础模型 + 它派生的所有项目。
14
+ *
15
+ * - `model`:基础模型对象(IModel)
16
+ * - `key`:模型 key(即模型目录名)
17
+ * - `project`:key=项目名 / value=项目合并后 IModel 的字典
18
+ */
19
+ export interface LoadedModel {
20
+ /** 基础模型对象。 */
21
+ model: IModel;
22
+ /** 模型 key(等于模型目录名)。 */
23
+ key: string;
24
+ /** 项目字典:key=项目名,value=合并后的项目 IModel。 */
25
+ project: Record<string, IModel>;
26
+ }
27
+ /**
28
+ * 扫描基础模型和项目模型,并按模型 key 合并项目配置。
29
+ *
30
+ * 目录约定:
31
+ * - `<modelDir>/<modelKey>/model.<ext>`:基础模型
32
+ * - `<modelDir>/<modelKey>/project/<projectKey>.<ext>`:项目配置
33
+ *
34
+ * 处理流程:
35
+ * 1. glob 扫描所有相关文件
36
+ * 2. 区分基础模型文件与项目文件,记录到 modelFiles / projectFiles
37
+ * 3. 校验:基础模型文件唯一、项目文件能找到对应基础模型
38
+ * 4. 按需加载基础模型,并把每个项目按菜单 key 合并进对应基础模型
39
+ *
40
+ * @param options 扫描配置
41
+ * @returns 已加载并合并的模型列表
42
+ */
43
+ export declare function loadModels({ modelDir, extension }: LoadModelsOptions): LoadedModel[];
44
+ //# sourceMappingURL=load-models.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"load-models.d.ts","sourceRoot":"","sources":["../src/load-models.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAGhD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;0EACsE;IACtE,QAAQ,EAAE,MAAM,CAAC;IACjB,4BAA4B;IAC5B,SAAS,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;CACnC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IAC1B,cAAc;IACd,KAAK,EAAE,MAAM,CAAC;IACd,uBAAuB;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,wCAAwC;IACxC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAoCD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,UAAU,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,iBAAiB,GAAG,WAAW,EAAE,CA6EpF"}