diff --git a/backend/kitex_gen/coze/loop/evaluation/domain/expt/expt.go b/backend/kitex_gen/coze/loop/evaluation/domain/expt/expt.go index 1e1fa26af..3fdb99e7b 100644 --- a/backend/kitex_gen/coze/loop/evaluation/domain/expt/expt.go +++ b/backend/kitex_gen/coze/loop/evaluation/domain/expt/expt.go @@ -14429,8 +14429,8 @@ func (p *ExptAggregateResult_) Field6DeepEqual(src *int64) bool { } type EvalTargetAggregateResult_ struct { - TargetID *int64 `thrift:"target_id,1,optional" frugal:"1,optional,i64" form:"target_id" json:"target_id,string,omitempty" query:"target_id"` - TargetVersionID *int64 `thrift:"target_version_id,2,optional" frugal:"2,optional,i64" form:"target_version_id" json:"target_version_id,string,omitempty" query:"target_version_id"` + TargetID *int64 `thrift:"target_id,1,optional" frugal:"1,optional,i64" json:"target_id" form:"target_id" query:"target_id"` + TargetVersionID *int64 `thrift:"target_version_id,2,optional" frugal:"2,optional,i64" json:"target_version_id" form:"target_version_id" query:"target_version_id"` Latency []*AggregatorResult_ `thrift:"latency,5,optional" frugal:"5,optional,list" form:"latency" json:"latency,omitempty" query:"latency"` InputTokens []*AggregatorResult_ `thrift:"input_tokens,6,optional" frugal:"6,optional,list" form:"input_tokens" json:"input_tokens,omitempty" query:"input_tokens"` OutputTokens []*AggregatorResult_ `thrift:"output_tokens,7,optional" frugal:"7,optional,list" form:"output_tokens" json:"output_tokens,omitempty" query:"output_tokens"` diff --git a/backend/modules/evaluation/infra/repo/evaluator/mysql/evaluator_tag.go b/backend/modules/evaluation/infra/repo/evaluator/mysql/evaluator_tag.go index cfe2d8abd..02e3c9cce 100644 --- a/backend/modules/evaluation/infra/repo/evaluator/mysql/evaluator_tag.go +++ b/backend/modules/evaluation/infra/repo/evaluator/mysql/evaluator_tag.go @@ -212,24 +212,38 @@ func (dao *EvaluatorTagDAOImpl) GetSourceIDsByFilterConditions(ctx context.Conte return nil, 0, err } - // 分页处理 + // 为 SELECT 构造一个不带分页副作用的基准查询 + selectBaseQuery := query.Session(&gorm.Session{}) + + // 分页参数(延后到最外层查询中再应用,避免影响 DISTINCT 子查询) + var limit, offset int if pageSize > 0 && pageNum > 0 { - offset := (pageNum - 1) * pageSize - query = query.Limit(int(pageSize)).Offset(int(offset)) + limit = int(pageSize) + offset = int((pageNum - 1) * pageSize) + } + + // 为了兼容 MySQL 在 DISTINCT 场景下对 ORDER BY 的限制(排序字段必须出现在 SELECT 列表中), + // 这里构造一个子查询:内部 SELECT DISTINCT source_id, t_name.tag_value,外层再按 tag_value 排序并做分页。 + subQuery := selectBaseQuery. + Select("DISTINCT evaluator_tag.source_id, t_name.tag_value") + + outerQuery := dbsession.WithContext(ctx). + Table("(?) AS src", subQuery). + Order("src.tag_value IS NULL, src.tag_value ASC") + if limit > 0 { + outerQuery = outerQuery.Limit(limit).Offset(offset) } // 执行查询(按 Name 标签值排序;无 Name 的排在后面) var sourceIDs []int64 // 打印 SELECT SQL(完整) - selectSQL := query.ToSQL(func(tx *gorm.DB) *gorm.DB { + selectSQL := outerQuery.ToSQL(func(tx *gorm.DB) *gorm.DB { var tmp []int64 - return tx.Distinct("evaluator_tag.source_id").Order("t_name.tag_value IS NULL, t_name.tag_value ASC").Pluck("evaluator_tag.source_id", &tmp) + return tx.Pluck("src.source_id", &tmp) }) logs.CtxInfo(ctx, "[GetSourceIDsByFilterConditions] SELECT SQL: %s", selectSQL) - err := query. - Distinct("evaluator_tag.source_id"). - Order("t_name.tag_value IS NULL, t_name.tag_value ASC"). - Pluck("evaluator_tag.source_id", &sourceIDs).Error + err := outerQuery. + Pluck("src.source_id", &sourceIDs).Error if err != nil { if errors.Is(err, gorm.ErrRecordNotFound) { return []int64{}, total, nil diff --git a/common/config/subspaces/default/common-versions.json b/common/config/subspaces/default/common-versions.json index a75e8cb67..d9e9f56cc 100644 --- a/common/config/subspaces/default/common-versions.json +++ b/common/config/subspaces/default/common-versions.json @@ -5,7 +5,6 @@ "@coze-arch/coze-design": "0.0.7-alpha.985c0d" }, "allowedAlternativeVersions": { - "@coze-arch/coze-design": ["0.0.6-alpha.101d0c"], "@rspack/cli": ["0.6.0"], "@rspack/core": ["0.6.0", ">=0.7"], "@rspack/plugin-react-refresh": ["0.6.0"], diff --git a/common/config/subspaces/default/pnpm-lock.yaml b/common/config/subspaces/default/pnpm-lock.yaml index 3292e9d33..0f51e49b2 100644 --- a/common/config/subspaces/default/pnpm-lock.yaml +++ b/common/config/subspaces/default/pnpm-lock.yaml @@ -66,9 +66,6 @@ importers: '@cozeloop/auth-pages': specifier: workspace:* version: link:../../packages/cozeloop/auth-pages - '@cozeloop/base-hooks': - specifier: workspace:* - version: link:../../packages/cozeloop/base-hooks '@cozeloop/biz-hooks-adapter': specifier: workspace:* version: link:../../packages/cozeloop/biz-hooks @@ -81,6 +78,9 @@ importers: '@cozeloop/guard': specifier: workspace:* version: link:../../packages/cozeloop/guard + '@cozeloop/hooks': + specifier: workspace:* + version: link:../../packages/cozeloop/base-hooks '@cozeloop/i18n-adapter': specifier: workspace:* version: link:../../packages/cozeloop/i18n @@ -96,6 +96,9 @@ importers: '@cozeloop/tag-pages': specifier: workspace:* version: link:../../packages/cozeloop/tag-pages + '@cozeloop/tea-adapter': + specifier: workspace:* + version: link:../../packages/cozeloop/tea '@cozeloop/toolkit': specifier: workspace:* version: link:../../packages/cozeloop/toolkit @@ -1034,7 +1037,7 @@ importers: dependencies: '@bytedance/calypso': specifier: 0.1.0-beta.8 - version: 0.1.0-beta.8(@babel/runtime@7.27.6)(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@mui/material@5.17.1)(@types/react@18.2.37)(react-dom@18.2.0)(react@18.2.0) + version: 0.1.0-beta.8(@babel/runtime@7.27.6)(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@mui/material@5.17.1)(@types/react@18.2.37)(immer@10.1.1)(react-dom@18.2.0)(react@18.2.0) devDependencies: '@coze-arch/bot-typings': specifier: workspace:* @@ -1319,6 +1322,9 @@ importers: '@cozeloop/api-schema': specifier: workspace:* version: link:../api-schema + '@cozeloop/observation-components': + specifier: workspace:* + version: link:../observation-components '@types/node': specifier: 18.18.9 version: 18.18.9 @@ -1331,6 +1337,9 @@ importers: '@vitest/coverage-v8': specifier: ~3.0.5 version: 3.0.9(vitest@3.0.9) + ahooks: + specifier: 3.7.8 + version: 3.7.8(patch_hash=sa4ddrxdk2yhjzudeck6u5ww3i)(react@18.2.0) react: specifier: 18.2.0 version: 18.2.0 @@ -1340,12 +1349,6 @@ importers: ../../../frontend/packages/cozeloop/api-schema: dependencies: - '@coze-arch/idl2ts-runtime': - specifier: workspace:* - version: link:../../../infra/idl/idl2ts-runtime - '@coze-arch/logger': - specifier: workspace:* - version: link:../../arch/logger eventemitter3: specifier: ^5.0.1 version: 5.0.1 @@ -1356,12 +1359,27 @@ importers: '@coze-arch/idl2ts-cli': specifier: workspace:* version: link:../../../infra/idl/idl2ts-cli + '@coze-arch/idl2ts-runtime': + specifier: workspace:* + version: link:../../../infra/idl/idl2ts-runtime + '@coze-arch/logger': + specifier: workspace:* + version: link:../../arch/logger '@coze-arch/ts-config': specifier: workspace:* version: link:../../../config/ts-config '@coze-arch/vitest-config': specifier: workspace:* version: link:../../../config/vitest-config + '@microsoft/api-extractor': + specifier: 7.43.0 + version: 7.43.0(@types/node@18.18.9) + '@rsbuild/core': + specifier: ~1.1.0 + version: 1.1.13 + '@rslib/core': + specifier: ~0.11.0 + version: 0.11.2(@microsoft/api-extractor@7.43.0) '@types/node': specifier: 18.18.9 version: 18.18.9 @@ -1435,6 +1453,9 @@ importers: ../../../frontend/packages/cozeloop/base-hooks: dependencies: + '@cozeloop/i18n-adapter': + specifier: workspace:* + version: link:../i18n '@cozeloop/stores': specifier: workspace:* version: link:../stores @@ -1487,13 +1508,22 @@ importers: '@cozeloop/i18n-adapter': specifier: workspace:* version: link:../i18n + '@cozeloop/tea-adapter': + specifier: workspace:* + version: link:../tea classnames: specifier: ^2.3.2 version: 2.5.1 nanoid: specifier: ^4.0.2 version: 4.0.2 + zustand: + specifier: ^4.4.7 + version: 4.5.7(@types/react@18.2.37)(immer@10.1.1)(react@18.2.0) devDependencies: + '@coze-arch/bot-typings': + specifier: workspace:* + version: link:../../arch/bot-typings '@coze-arch/eslint-config': specifier: workspace:* version: link:../../../config/eslint-config @@ -1535,6 +1565,10 @@ importers: version: 3.0.9(@types/node@18.18.9)(happy-dom@20.0.10) ../../../frontend/packages/cozeloop/biz-config: + dependencies: + '@cozeloop/i18n-adapter': + specifier: workspace:* + version: link:../i18n devDependencies: '@coze-arch/eslint-config': specifier: workspace:* @@ -1566,6 +1600,9 @@ importers: '@cozeloop/api-schema': specifier: workspace:* version: link:../api-schema + '@cozeloop/i18n-adapter': + specifier: workspace:* + version: link:../i18n '@cozeloop/route-base': specifier: workspace:* version: link:../route @@ -1588,9 +1625,6 @@ importers: '@coze-arch/vitest-config': specifier: workspace:* version: link:../../../config/vitest-config - '@types/node': - specifier: 18.18.9 - version: 18.18.9 '@types/react': specifier: 18.2.37 version: 18.2.37 @@ -1608,28 +1642,46 @@ importers: version: 5.8.2 vitest: specifier: ~3.0.5 - version: 3.0.9(@types/node@18.18.9)(happy-dom@20.0.10) + version: 3.0.9(happy-dom@20.0.10) ../../../frontend/packages/cozeloop/components: dependencies: + '@codemirror/commands': + specifier: ^6.3.3 + version: 6.8.1 + '@codemirror/state': + specifier: ^6.4.1 + version: 6.5.2 + '@codemirror/view': + specifier: ^6.34.1 + version: 6.37.2 '@coze-arch/coze-design': specifier: 0.0.7-alpha.985c0d version: 0.0.7-alpha.985c0d(@types/react@18.2.37)(acorn@8.15.0)(react-dom@18.2.0)(react@18.2.0) + '@coze-editor/editor': + specifier: 0.1.0-alpha.dac011 + version: 0.1.0-alpha.dac011(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.1)(@codemirror/state@6.5.2)(@codemirror/view@6.37.2)(@lezer/common@1.2.3)(@types/react@18.2.37)(react-dom@18.2.0)(react@18.2.0)(typescript@5.8.2)(vue@3.5.16) '@cozeloop/api-schema': specifier: workspace:* version: link:../api-schema - '@cozeloop/biz-hooks-adapter': - specifier: workspace:* - version: link:../biz-hooks - '@cozeloop/i18n-adapter': + '@cozeloop/hooks': specifier: workspace:* - version: link:../i18n + version: link:../base-hooks '@cozeloop/toolkit': specifier: workspace:* version: link:../toolkit '@monaco-editor/react': specifier: ^4.5.2 version: 4.7.0(monaco-editor@0.45.0)(react-dom@18.2.0)(react@18.2.0) + '@rjsf/core': + specifier: ~5.24.9 + version: 5.24.13(@rjsf/utils@5.24.13)(react@18.2.0) + '@rjsf/utils': + specifier: ~5.24.9 + version: 5.24.13(react@18.2.0) + '@rjsf/validator-ajv8': + specifier: ~5.24.9 + version: 5.24.13(@rjsf/utils@5.24.13) ahooks: specifier: 3.7.8 version: 3.7.8(patch_hash=sa4ddrxdk2yhjzudeck6u5ww3i)(react@18.2.0) @@ -1639,6 +1691,9 @@ importers: copy-to-clipboard: specifier: ^3.3.3 version: 3.3.3 + dayjs: + specifier: ^1.11.7 + version: 1.11.13 immer: specifier: ^10.0.3 version: 10.1.1 @@ -1707,6 +1762,67 @@ importers: specifier: ~3.0.5 version: 3.0.9(happy-dom@20.0.10) + ../../../frontend/packages/cozeloop/components-with-adapter: + dependencies: + '@coze-arch/coze-design': + specifier: 0.0.7-alpha.985c0d + version: 0.0.7-alpha.985c0d(@types/react@18.2.37)(acorn@8.15.0)(react-dom@18.2.0)(react@18.2.0) + '@cozeloop/biz-hooks-adapter': + specifier: workspace:* + version: link:../biz-hooks + '@cozeloop/i18n-adapter': + specifier: workspace:* + version: link:../i18n + devDependencies: + '@coze-arch/bot-typings': + specifier: workspace:* + version: link:../../arch/bot-typings + '@coze-arch/eslint-config': + specifier: workspace:* + version: link:../../../config/eslint-config + '@coze-arch/ts-config': + specifier: workspace:* + version: link:../../../config/ts-config + '@cozeloop/tailwind-config': + specifier: workspace:* + version: link:../tailwind-config + '@types/lodash-es': + specifier: ^4.17.10 + version: 4.17.12 + '@types/react': + specifier: 18.2.37 + version: 18.2.37 + '@types/react-dom': + specifier: 18.2.15 + version: 18.2.15 + '@vitest/coverage-v8': + specifier: ~3.0.5 + version: 3.0.9(vitest@3.0.9) + happy-dom: + specifier: ^20.0.10 + version: 20.0.10 + react: + specifier: 18.2.0 + version: 18.2.0 + react-dom: + specifier: 18.2.0 + version: 18.2.0(react@18.2.0) + react-router-dom: + specifier: ^6.22.0 + version: 6.30.1(react-dom@18.2.0)(react@18.2.0) + tsconfig-paths: + specifier: 4.1.0 + version: 4.1.0 + vite: + specifier: ^4.3.9 + version: 4.5.14(@types/node@18.18.9) + vite-plugin-svgr: + specifier: ~3.3.0 + version: 3.3.0(typescript@5.8.2)(vite@4.5.14) + vitest: + specifier: ~3.0.5 + version: 3.0.9(happy-dom@20.0.10) + ../../../frontend/packages/cozeloop/env: devDependencies: '@coze-arch/eslint-config': @@ -1730,15 +1846,21 @@ importers: ../../../frontend/packages/cozeloop/evaluate: dependencies: + '@coze-arch/bot-md-box-adapter': + specifier: workspace:* + version: link:../../arch/bot-md-box-adapter '@coze-arch/coze-design': specifier: 0.0.7-alpha.985c0d version: 0.0.7-alpha.985c0d(@types/react@18.2.37)(acorn@8.15.0)(react-dom@18.2.0)(react@18.2.0) + '@cozeloop/adapter-interfaces': + specifier: workspace:* + version: link:../adapter-interfaces '@cozeloop/api-schema': specifier: workspace:* version: link:../api-schema - '@cozeloop/base-hooks': + '@cozeloop/base-with-adapter-components': specifier: workspace:* - version: link:../base-hooks + version: link:../components-with-adapter '@cozeloop/biz-components-adapter': specifier: workspace:* version: link:../biz-components @@ -1760,15 +1882,21 @@ importers: '@cozeloop/guard': specifier: workspace:* version: link:../guard + '@cozeloop/hooks': + specifier: workspace:* + version: link:../base-hooks '@cozeloop/i18n-adapter': specifier: workspace:* version: link:../i18n - '@cozeloop/observation-component-adapter': + '@cozeloop/observation-adapter': specifier: workspace:* - version: link:../observation/trace-detail-open + version: link:../observation-adapter '@cozeloop/prompt-components': specifier: workspace:* version: link:../prompt-components + '@cozeloop/shared-components': + specifier: workspace:* + version: link:../shared-components '@cozeloop/tag-components': specifier: workspace:* version: link:../tag-components @@ -1779,8 +1907,8 @@ importers: specifier: workspace:* version: link:../toolkit '@visactor/vchart': - specifier: 1.13.8 - version: 1.13.8 + specifier: 1.13.11 + version: 1.13.11 ahooks: specifier: 3.7.8 version: 3.7.8(patch_hash=sa4ddrxdk2yhjzudeck6u5ww3i)(react@18.2.0) @@ -1818,6 +1946,9 @@ importers: '@coze-arch/vitest-config': specifier: workspace:* version: link:../../../config/vitest-config + '@cozeloop/stores': + specifier: workspace:* + version: link:../stores '@testing-library/jest-dom': specifier: ^6.1.5 version: 6.6.3 @@ -1875,6 +2006,9 @@ importers: '@cozeloop/components': specifier: workspace:* version: link:../components + '@cozeloop/i18n-adapter': + specifier: workspace:* + version: link:../i18n '@cozeloop/prompt-components': specifier: workspace:* version: link:../prompt-components @@ -1939,15 +2073,21 @@ importers: '@coze-arch/coze-design': specifier: 0.0.7-alpha.985c0d version: 0.0.7-alpha.985c0d(@types/react@18.2.37)(acorn@8.15.0)(react-dom@18.2.0)(react@18.2.0) + '@cozeloop/adapter-interfaces': + specifier: workspace:* + version: link:../adapter-interfaces '@cozeloop/api-schema': specifier: workspace:* version: link:../api-schema - '@cozeloop/base-hooks': + '@cozeloop/base-with-adapter-components': specifier: workspace:* - version: link:../base-hooks + version: link:../components-with-adapter '@cozeloop/biz-components-adapter': specifier: workspace:* version: link:../biz-components + '@cozeloop/biz-config-adapter': + specifier: workspace:* + version: link:../biz-config '@cozeloop/biz-hooks-adapter': specifier: workspace:* version: link:../biz-hooks @@ -1963,15 +2103,21 @@ importers: '@cozeloop/guard': specifier: workspace:* version: link:../guard + '@cozeloop/hooks': + specifier: workspace:* + version: link:../base-hooks '@cozeloop/i18n-adapter': specifier: workspace:* version: link:../i18n - '@cozeloop/observation-component-adapter': + '@cozeloop/observation-adapter': specifier: workspace:* - version: link:../observation/trace-detail-open + version: link:../observation-adapter '@cozeloop/prompt-components': specifier: workspace:* version: link:../prompt-components + '@cozeloop/shared-components': + specifier: workspace:* + version: link:../shared-components '@cozeloop/stores': specifier: workspace:* version: link:../stores @@ -1997,8 +2143,8 @@ importers: specifier: ^3.0.0 version: 3.5.0(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@mui/material@5.17.1)(@types/react@18.2.37)(immer@10.1.1)(react-dom@18.2.0)(react@18.2.0) '@visactor/vchart': - specifier: 1.13.8 - version: 1.13.8 + specifier: 1.13.11 + version: 1.13.11 ahooks: specifier: 3.7.8 version: 3.7.8(patch_hash=sa4ddrxdk2yhjzudeck6u5ww3i)(react@18.2.0) @@ -2035,6 +2181,9 @@ importers: papaparse: specifier: ^5.4.1 version: 5.5.3 + react-resizable-panels: + specifier: ~2.1.6 + version: 2.1.9(react-dom@18.2.0)(react@18.2.0) sortablejs: specifier: ~1.15.2 version: 1.15.6 @@ -2144,6 +2293,9 @@ importers: '@coze-arch/coze-design': specifier: 0.0.7-alpha.985c0d version: 0.0.7-alpha.985c0d(@types/react@18.2.37)(acorn@8.15.0)(react-dom@18.2.0)(react@18.2.0) + '@cozeloop/biz-hooks-adapter': + specifier: workspace:* + version: link:../biz-hooks '@cozeloop/evaluate': specifier: workspace:* version: link:../evaluate @@ -2217,6 +2369,9 @@ importers: '@cozeloop/biz-hooks-adapter': specifier: workspace:* version: link:../biz-hooks + '@cozeloop/i18n-adapter': + specifier: workspace:* + version: link:../i18n classnames: specifier: ^2.3.2 version: 2.5.1 @@ -2365,15 +2520,36 @@ importers: specifier: ~3.0.5 version: 3.0.9(@types/node@18.18.9)(tsx@4.20.3) - ../../../frontend/packages/cozeloop/observation-pages: + ../../../frontend/packages/cozeloop/observation-adapter: dependencies: - '@cozeloop/trace-list': + '@coze-arch/coze-design': + specifier: 0.0.7-alpha.985c0d + version: 0.0.7-alpha.985c0d(@types/react@18.2.37)(acorn@8.15.0)(react-dom@18.2.0)(react@18.2.0) + '@cozeloop/adapter-interfaces': specifier: workspace:* - version: link:../observation/trace-list - devDependencies: - '@coze-arch/bot-typings': + version: link:../adapter-interfaces + '@cozeloop/api-schema': specifier: workspace:* - version: link:../../arch/bot-typings + version: link:../api-schema + '@cozeloop/biz-hooks-adapter': + specifier: workspace:* + version: link:../biz-hooks + '@cozeloop/i18n-adapter': + specifier: workspace:* + version: link:../i18n + '@cozeloop/observation-components': + specifier: workspace:* + version: link:../observation-components + '@cozeloop/tag-components': + specifier: workspace:* + version: link:../tag-components + ahooks: + specifier: 3.7.8 + version: 3.7.8(patch_hash=sa4ddrxdk2yhjzudeck6u5ww3i)(react@18.2.0) + dayjs: + specifier: ^1.11.7 + version: 1.11.13 + devDependencies: '@coze-arch/eslint-config': specifier: workspace:* version: link:../../../config/eslint-config @@ -2386,6 +2562,9 @@ importers: '@coze-arch/vitest-config': specifier: workspace:* version: link:../../../config/vitest-config + '@cozeloop/tailwind-config': + specifier: workspace:* + version: link:../tailwind-config '@testing-library/jest-dom': specifier: ^6.1.5 version: 6.6.3 @@ -2395,12 +2574,18 @@ importers: '@testing-library/react-hooks': specifier: ^8.0.1 version: 8.0.1(@types/react@18.2.37)(react-dom@18.2.0)(react@18.2.0) - '@types/lodash-es': - specifier: ^4.17.10 - version: 4.17.12 - '@types/papaparse': - specifier: ^5.3.9 - version: 5.3.16 + '@types/json-bigint': + specifier: ~1.0.4 + version: 1.0.4 + '@types/json-schema': + specifier: ~7.0.15 + version: 7.0.15 + '@types/jszip': + specifier: ~3.4.1 + version: 3.4.1 + '@types/node': + specifier: 18.18.9 + version: 18.18.9 '@types/react': specifier: 18.2.37 version: 18.2.37 @@ -2422,45 +2607,36 @@ importers: stylelint: specifier: ^15.11.0 version: 15.11.0(typescript@5.8.2) + vite: + specifier: ^4.3.9 + version: 4.5.14(@types/node@18.18.9) + vite-plugin-svgr: + specifier: ~3.3.0 + version: 3.3.0(typescript@5.8.2)(vite@4.5.14) vitest: specifier: ~3.0.5 - version: 3.0.9(happy-dom@20.0.10) + version: 3.0.9(@types/node@18.18.9)(happy-dom@20.0.10) - ../../../frontend/packages/cozeloop/observation/trace-detail: + ../../../frontend/packages/cozeloop/observation-components: dependencies: '@coze-arch/coze-design': specifier: 0.0.7-alpha.985c0d version: 0.0.7-alpha.985c0d(@types/react@18.2.37)(acorn@8.15.0)(react-dom@18.2.0)(react@18.2.0) '@cozeloop/api-schema': specifier: workspace:* - version: link:../../api-schema - '@cozeloop/base-hooks': - specifier: workspace:* - version: link:../../base-hooks - '@cozeloop/biz-hooks-adapter': - specifier: workspace:* - version: link:../../biz-hooks + version: link:../api-schema '@cozeloop/components': specifier: workspace:* - version: link:../../components - '@cozeloop/env-adapter': - specifier: workspace:* - version: link:../../env - '@cozeloop/i18n-adapter': - specifier: workspace:* - version: link:../../i18n - '@cozeloop/tea-adapter': - specifier: workspace:* - version: link:../../tea - '@cozeloop/trace-struct-data': - specifier: workspace:* - version: link:../trace-struct-data + version: link:../components '@textea/json-viewer': specifier: ^3.0.0 version: 3.5.0(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@mui/material@5.17.1)(@types/react@18.2.37)(immer@10.1.1)(react-dom@18.2.0)(react@18.2.0) ahooks: specifier: 3.7.8 version: 3.7.8(patch_hash=sa4ddrxdk2yhjzudeck6u5ww3i)(react@18.2.0) + axios: + specifier: ^1.4.0 + version: 1.13.2 classnames: specifier: ^2.3.2 version: 2.5.1 @@ -2470,134 +2646,109 @@ importers: immer: specifier: ^10.0.3 version: 10.1.1 + intl-messageformat: + specifier: ^10.7.16 + version: 10.7.16 json-bigint: specifier: ~1.0.0 version: 1.0.0 lodash-es: specifier: ^4.17.21 version: 4.17.21 + lru-cache: + specifier: ^11.2.2 + version: 11.2.4 nanoid: specifier: ^4.0.2 version: 4.0.2 - react: - specifier: 18.2.0 - version: 18.2.0 + query-string: + specifier: ^8.1.0 + version: 8.2.0 react-error-boundary: specifier: ^4.0.9 version: 4.1.2(react@18.2.0) + react-json-view: + specifier: ~1.21.3 + version: 1.21.3(@types/react@18.2.37)(react-dom@18.2.0)(react@18.2.0) react-resizable-panels: - specifier: ~2.0.19 - version: 2.0.23(react-dom@18.2.0)(react@18.2.0) + specifier: ~2.1.6 + version: 2.1.9(react-dom@18.2.0)(react@18.2.0) + react-router-dom: + specifier: ^6.22.0 + version: 6.30.1(react-dom@18.2.0)(react@18.2.0) + react-virtuoso: + specifier: ^4.14.1 + version: 4.17.0(react-dom@18.2.0)(react@18.2.0) + rxjs: + specifier: ^7.8.0 + version: 7.8.2 + zod: + specifier: ^3.25.76 + version: 3.25.76 zustand: specifier: ^4.4.7 version: 4.5.7(@types/react@18.2.37)(immer@10.1.1)(react@18.2.0) devDependencies: + '@coze-arch/bot-typings': + specifier: workspace:* + version: link:../../arch/bot-typings '@coze-arch/eslint-config': specifier: workspace:* - version: link:../../../../config/eslint-config - '@coze-arch/stylelint-config': + version: link:../../../config/eslint-config + '@coze-arch/pkg-root-webpack-plugin': specifier: workspace:* - version: link:../../../../config/stylelint-config - '@coze-arch/ts-config': - specifier: workspace:* - version: link:../../../../config/ts-config - '@coze-arch/vitest-config': - specifier: workspace:* - version: link:../../../../config/vitest-config - '@emotion/react': - specifier: 11.11.1 - version: 11.11.1(@types/react@18.2.37)(react@18.2.0) - '@emotion/styled': - specifier: 11.11.0 - version: 11.11.0(@emotion/react@11.11.1)(@types/react@18.2.37)(react@18.2.0) - '@mui/material': - specifier: ^5 - version: 5.17.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.37)(react-dom@18.2.0)(react@18.2.0) - '@rsbuild/core': - specifier: ~1.1.0 - version: 1.1.13 - '@types/json-bigint': - specifier: ~1.0.4 - version: 1.0.4 - '@types/lodash-es': - specifier: ^4.17.10 - version: 4.17.12 - '@types/react': - specifier: 18.2.37 - version: 18.2.37 - '@types/react-dom': - specifier: 18.2.15 - version: 18.2.15 - '@vitest/coverage-v8': - specifier: ~3.0.5 - version: 3.0.9(vitest@3.0.9) - happy-dom: - specifier: ^20.0.10 - version: 20.0.10 - react-dom: - specifier: 18.2.0 - version: 18.2.0(react@18.2.0) - tsconfig-paths: - specifier: 4.1.0 - version: 4.1.0 - vite: - specifier: ^4.3.9 - version: 4.5.14(@types/node@18.18.9) - vite-plugin-svgr: - specifier: ~3.3.0 - version: 3.3.0(typescript@5.8.2)(vite@4.5.14) - vitest: - specifier: ~3.0.5 - version: 3.0.9(happy-dom@20.0.10) - - ../../../frontend/packages/cozeloop/observation/trace-detail-open: - dependencies: - '@coze-arch/coze-design': - specifier: 0.0.7-alpha.985c0d - version: 0.0.7-alpha.985c0d(@types/react@18.2.37)(acorn@8.15.0)(react-dom@18.2.0)(react@18.2.0) - '@cozeloop/api-schema': - specifier: workspace:* - version: link:../../api-schema - '@cozeloop/biz-hooks-adapter': - specifier: workspace:* - version: link:../../biz-hooks - '@cozeloop/components': - specifier: workspace:* - version: link:../../components - '@cozeloop/observation-component': - specifier: workspace:* - version: link:../trace-detail - '@cozeloop/tag-components': + version: link:../../../infra/plugins/pkg-root-webpack-plugin + '@coze-arch/postcss-plugin': specifier: workspace:* - version: link:../../tag-components - ahooks: - specifier: 3.7.8 - version: 3.7.8(patch_hash=sa4ddrxdk2yhjzudeck6u5ww3i)(react@18.2.0) - classnames: - specifier: ^2.3.2 - version: 2.5.1 - dayjs: - specifier: ^1.11.7 - version: 1.11.13 - lodash-es: - specifier: ^4.17.21 - version: 4.17.21 - devDependencies: - '@coze-arch/bot-typings': + version: link:../../../infra/plugins/postcss-plugin + '@coze-arch/stylelint-config': specifier: workspace:* - version: link:../../../arch/bot-typings - '@coze-arch/eslint-config': + version: link:../../../config/stylelint-config + '@coze-arch/subspace-resolve-plugin': specifier: workspace:* - version: link:../../../../config/eslint-config - '@coze-arch/stylelint-config': + version: link:../../arch/subspace-resolve-plugin + '@coze-arch/tailwind-config': specifier: workspace:* - version: link:../../../../config/stylelint-config + version: link:../../../config/tailwind-config '@coze-arch/ts-config': specifier: workspace:* - version: link:../../../../config/ts-config + version: link:../../../config/ts-config '@coze-arch/vitest-config': specifier: workspace:* - version: link:../../../../config/vitest-config + version: link:../../../config/vitest-config + '@cozeloop/tailwind-config': + specifier: workspace:* + version: link:../tailwind-config + '@cozeloop/tailwind-plugin': + specifier: workspace:* + version: link:../tailwind-plugin + '@douyinfe/semi-rspack-plugin': + specifier: 2.61.0 + version: 2.61.0(patch_hash=jgvrbizgnsxhugflluipewtgrm)(webpack@5.91.0) + '@microsoft/rush-lib': + specifier: ~5.147.1 + version: 5.147.2(@types/node@18.18.9) + '@rsbuild/core': + specifier: ~1.1.0 + version: 1.1.13 + '@rsbuild/plugin-less': + specifier: ~1.1.0 + version: 1.1.1(@rsbuild/core@1.1.13) + '@rsbuild/plugin-node-polyfill': + specifier: ~0.3.0 + version: 0.3.11(@rsbuild/core@1.1.13) + '@rsbuild/plugin-react': + specifier: ~1.1.0 + version: 1.1.1(@rsbuild/core@1.1.13) + '@rsbuild/plugin-sass': + specifier: ~1.1.0 + version: 1.1.2(@rsbuild/core@1.1.13) + '@rsbuild/plugin-svgr': + specifier: ~1.0.6 + version: 1.0.7(@rsbuild/core@1.1.13)(typescript@5.8.2) + '@rslib/core': + specifier: ~0.11.0 + version: 0.11.2(typescript@5.8.2) '@storybook/addon-essentials': specifier: ^7.6.7 version: 7.6.20(@types/react-dom@18.2.15)(@types/react@18.2.37)(react-dom@18.2.0)(react@18.2.0) @@ -2631,6 +2782,9 @@ importers: '@testing-library/react-hooks': specifier: ^8.0.1 version: 8.0.1(@types/react@18.2.37)(react-dom@18.2.0)(react@18.2.0) + '@types/lodash-es': + specifier: ^4.17.10 + version: 4.17.12 '@types/react': specifier: 18.2.37 version: 18.2.37 @@ -2649,9 +2803,15 @@ importers: storybook: specifier: ^7.6.7 version: 7.6.20 + storybook-react-rsbuild: + specifier: ~0.1.3 + version: 0.1.10(@rsbuild/core@1.1.13)(@storybook/test@7.6.20)(@types/react@18.2.37)(react-dom@18.2.0)(react@18.2.0)(storybook@7.6.20)(typescript@5.8.2)(webpack@5.91.0) stylelint: specifier: ^15.11.0 version: 15.11.0(typescript@5.8.2) + tailwindcss: + specifier: ~3.3.3 + version: 3.3.7 vite-plugin-svgr: specifier: ~3.3.0 version: 3.3.0(typescript@5.8.2)(vite@4.5.14) @@ -2659,90 +2819,45 @@ importers: specifier: ~3.0.5 version: 3.0.9(happy-dom@20.0.10) - ../../../frontend/packages/cozeloop/observation/trace-list: + ../../../frontend/packages/cozeloop/observation-pages: dependencies: '@coze-arch/coze-design': specifier: 0.0.7-alpha.985c0d version: 0.0.7-alpha.985c0d(@types/react@18.2.37)(acorn@8.15.0)(react-dom@18.2.0)(react@18.2.0) - '@coze-arch/logger': - specifier: workspace:* - version: link:../../../arch/logger '@cozeloop/api-schema': specifier: workspace:* - version: link:../../api-schema + version: link:../api-schema '@cozeloop/biz-hooks-adapter': specifier: workspace:* - version: link:../../biz-hooks + version: link:../biz-hooks '@cozeloop/components': specifier: workspace:* - version: link:../../components - '@cozeloop/env-adapter': - specifier: workspace:* - version: link:../../env + version: link:../components '@cozeloop/guard': specifier: workspace:* - version: link:../../guard + version: link:../guard '@cozeloop/i18n-adapter': specifier: workspace:* - version: link:../../i18n - '@cozeloop/observation-component-adapter': - specifier: workspace:* - version: link:../trace-detail-open - '@cozeloop/tag-components': - specifier: workspace:* - version: link:../../tag-components - '@cozeloop/tea-adapter': - specifier: workspace:* - version: link:../../tea - '@cozeloop/toolkit': + version: link:../i18n + '@cozeloop/observation-components': specifier: workspace:* - version: link:../../toolkit - ahooks: - specifier: 3.7.8 - version: 3.7.8(patch_hash=sa4ddrxdk2yhjzudeck6u5ww3i)(react@18.2.0) - classnames: - specifier: ^2.3.2 - version: 2.5.1 - dayjs: - specifier: ^1.11.7 - version: 1.11.13 - immer: - specifier: ^10.0.3 - version: 10.1.1 - json-bigint: - specifier: ~1.0.0 - version: 1.0.0 - lodash-es: - specifier: ^4.17.21 - version: 4.17.21 - query-string: - specifier: ^8.1.0 - version: 8.2.0 - react-json-view: - specifier: ~1.21.3 - version: 1.21.3(@types/react@18.2.37)(react-dom@18.2.0)(react@18.2.0) - react-router-dom: - specifier: ^6.22.0 - version: 6.30.1(react-dom@18.2.0)(react@18.2.0) - zustand: - specifier: ^4.4.7 - version: 4.5.7(@types/react@18.2.37)(immer@10.1.1)(react@18.2.0) + version: link:../observation-components devDependencies: '@coze-arch/bot-typings': specifier: workspace:* - version: link:../../../arch/bot-typings + version: link:../../arch/bot-typings '@coze-arch/eslint-config': specifier: workspace:* - version: link:../../../../config/eslint-config + version: link:../../../config/eslint-config '@coze-arch/stylelint-config': specifier: workspace:* - version: link:../../../../config/stylelint-config + version: link:../../../config/stylelint-config '@coze-arch/ts-config': specifier: workspace:* - version: link:../../../../config/ts-config + version: link:../../../config/ts-config '@coze-arch/vitest-config': specifier: workspace:* - version: link:../../../../config/vitest-config + version: link:../../../config/vitest-config '@testing-library/jest-dom': specifier: ^6.1.5 version: 6.6.3 @@ -2755,6 +2870,9 @@ importers: '@types/lodash-es': specifier: ^4.17.10 version: 4.17.12 + '@types/papaparse': + specifier: ^5.3.9 + version: 5.3.16 '@types/react': specifier: 18.2.37 version: 18.2.37 @@ -2770,115 +2888,142 @@ importers: react-dom: specifier: 18.2.0 version: 18.2.0(react@18.2.0) + react-router-dom: + specifier: ^6.22.0 + version: 6.30.1(react-dom@18.2.0)(react@18.2.0) stylelint: specifier: ^15.11.0 version: 15.11.0(typescript@5.8.2) - vite: - specifier: ^4.3.9 - version: 4.5.14(@types/node@18.18.9) - vite-plugin-svgr: - specifier: ~3.3.0 - version: 3.3.0(typescript@5.8.2)(vite@4.5.14) vitest: specifier: ~3.0.5 version: 3.0.9(happy-dom@20.0.10) - ../../../frontend/packages/cozeloop/observation/trace-struct-data: + ../../../frontend/packages/cozeloop/prompt-components: dependencies: + '@codemirror/commands': + specifier: ^6.3.3 + version: 6.8.1 + '@codemirror/language': + specifier: ^6.10.1 + version: 6.11.1 + '@codemirror/merge': + specifier: ^6.10.0 + version: 6.10.2 + '@codemirror/search': + specifier: ^6.5.5 + version: 6.5.11 + '@codemirror/state': + specifier: ^6.4.1 + version: 6.5.2 + '@codemirror/view': + specifier: ^6.34.1 + version: 6.37.2 + '@coze-arch/bot-md-box-adapter': + specifier: workspace:* + version: link:../../arch/bot-md-box-adapter '@coze-arch/coze-design': specifier: 0.0.7-alpha.985c0d version: 0.0.7-alpha.985c0d(@types/react@18.2.37)(acorn@8.15.0)(react-dom@18.2.0)(react@18.2.0) - '@coze-arch/logger': + '@coze-arch/fetch-stream': specifier: workspace:* - version: link:../../../arch/logger + version: link:../../arch/fetch-stream + '@coze-editor/editor': + specifier: 0.1.0-alpha.dac011 + version: 0.1.0-alpha.dac011(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.1)(@codemirror/state@6.5.2)(@codemirror/view@6.37.2)(@lezer/common@1.2.3)(@types/react@18.2.37)(react-dom@18.2.0)(react@18.2.0)(typescript@5.8.2)(vue@3.5.16) + '@coze-editor/extension-regexp-decorator': + specifier: 0.1.0-alpha.0fd19e + version: 0.1.0-alpha.0fd19e(@codemirror/state@6.5.2)(@codemirror/view@6.37.2) '@cozeloop/api-schema': specifier: workspace:* - version: link:../../api-schema + version: link:../api-schema + '@cozeloop/biz-hooks-adapter': + specifier: workspace:* + version: link:../biz-hooks '@cozeloop/components': specifier: workspace:* - version: link:../../components - '@cozeloop/env-adapter': + version: link:../components + '@cozeloop/hooks': specifier: workspace:* - version: link:../../env + version: link:../base-hooks '@cozeloop/i18n-adapter': specifier: workspace:* - version: link:../../i18n - '@cozeloop/toolkit': + version: link:../i18n + '@cozeloop/tea-adapter': specifier: workspace:* - version: link:../../toolkit - '@textea/json-viewer': - specifier: ^3.0.0 - version: 3.5.0(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@mui/material@5.17.1)(@types/react@18.2.37)(immer@10.1.1)(react-dom@18.2.0)(react@18.2.0) + version: link:../tea + '@lezer/common': + specifier: ^1.2.2 + version: 1.2.3 + '@shikijs/langs': + specifier: 3.3.0 + version: 3.3.0 + '@shikijs/themes': + specifier: 3.3.0 + version: 3.3.0 + ahooks: + specifier: 3.7.8 + version: 3.7.8(patch_hash=sa4ddrxdk2yhjzudeck6u5ww3i)(react@18.2.0) classnames: specifier: ^2.3.2 version: 2.5.1 - json-bigint: - specifier: ~1.0.0 - version: 1.0.0 + codemirror-shiki: + specifier: ^0.3.0 + version: 0.3.0(@codemirror/state@6.5.2)(@codemirror/view@6.37.2)(shiki@3.6.0) + crelt: + specifier: ^1.0.5 + version: 1.0.6 + eventsource-parser: + specifier: ^1.0.0 + version: 1.1.2 + immer: + specifier: ^10.0.3 + version: 10.1.1 + js-base64: + specifier: ^3.7.7 + version: 3.7.8 lodash-es: specifier: ^4.17.21 version: 4.17.21 - zod: - specifier: 3.22.4 - version: 3.22.4 + lucide-react: + specifier: ^0.438.0 + version: 0.438.0(react@18.2.0) + mermaid: + specifier: ^11.4.1 + version: 11.11.0 + mitt: + specifier: ^3.0.1 + version: 3.0.1 + nanoid: + specifier: ^4.0.2 + version: 4.0.2 + react: + specifier: 18.2.0 + version: 18.2.0 + shiki: + specifier: ^3.2.2 + version: 3.6.0 + sortablejs: + specifier: ~1.15.2 + version: 1.15.6 + svg-pan-zoom: + specifier: ^3.6.2 + version: 3.6.2 + tippy.js: + specifier: ^6.3.7 + version: 6.3.7 devDependencies: '@coze-arch/bot-typings': specifier: workspace:* - version: link:../../../arch/bot-typings + version: link:../../arch/bot-typings '@coze-arch/eslint-config': specifier: workspace:* - version: link:../../../../config/eslint-config - '@coze-arch/stylelint-config': - specifier: workspace:* - version: link:../../../../config/stylelint-config + version: link:../../../config/eslint-config '@coze-arch/ts-config': specifier: workspace:* - version: link:../../../../config/ts-config - '@coze-arch/vitest-config': + version: link:../../../config/ts-config + '@cozeloop/tailwind-config': specifier: workspace:* - version: link:../../../../config/vitest-config - '@emotion/react': - specifier: 11.11.1 - version: 11.11.1(@types/react@18.2.37)(react@18.2.0) - '@emotion/styled': - specifier: 11.11.0 - version: 11.11.0(@emotion/react@11.11.1)(@types/react@18.2.37)(react@18.2.0) - '@mui/material': - specifier: ^5 - version: 5.17.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.37)(react-dom@18.2.0)(react@18.2.0) - '@storybook/addon-essentials': - specifier: ^7.6.7 - version: 7.6.20(@types/react-dom@18.2.15)(@types/react@18.2.37)(react-dom@18.2.0)(react@18.2.0) - '@storybook/addon-interactions': - specifier: ^7.6.7 - version: 7.6.20 - '@storybook/addon-links': - specifier: ^7.6.7 - version: 7.6.20(react@18.2.0) - '@storybook/addon-onboarding': - specifier: ^1.0.10 - version: 1.0.11(react-dom@18.2.0)(react@18.2.0) - '@storybook/blocks': - specifier: ^7.6.7 - version: 7.6.20(@types/react-dom@18.2.15)(@types/react@18.2.37)(react-dom@18.2.0)(react@18.2.0) - '@storybook/react': - specifier: ^7.6.7 - version: 7.6.20(react-dom@18.2.0)(react@18.2.0)(typescript@5.8.2) - '@storybook/react-vite': - specifier: ^7.6.7 - version: 7.6.20(react-dom@18.2.0)(react@18.2.0)(typescript@5.8.2)(vite@4.5.14) - '@storybook/test': - specifier: ^7.6.7 - version: 7.6.20 - '@testing-library/jest-dom': - specifier: ^6.1.5 - version: 6.6.3 - '@testing-library/react': - specifier: ^14.1.2 - version: 14.3.1(react-dom@18.2.0)(react@18.2.0) - '@testing-library/react-hooks': - specifier: ^8.0.1 - version: 8.0.1(@types/react@18.2.37)(react-dom@18.2.0)(react@18.2.0) + version: link:../tailwind-config '@types/lodash-es': specifier: ^4.17.10 version: 4.17.12 @@ -2891,18 +3036,15 @@ importers: '@vitest/coverage-v8': specifier: ~3.0.5 version: 3.0.9(vitest@3.0.9) - react: - specifier: 18.2.0 - version: 18.2.0 + happy-dom: + specifier: ^20.0.10 + version: 20.0.10 react-dom: specifier: 18.2.0 - version: 18.2.0(react@18.2.0) - storybook: - specifier: ^7.6.7 - version: 7.6.20 - stylelint: - specifier: ^15.11.0 - version: 15.11.0(typescript@5.8.2) + version: 18.2.0(react@18.2.0) + tsconfig-paths: + specifier: 4.1.0 + version: 4.1.0 vite: specifier: ^4.3.9 version: 4.5.14(@types/node@18.18.9) @@ -2913,8 +3055,11 @@ importers: specifier: ~3.0.5 version: 3.0.9(happy-dom@20.0.10) - ../../../frontend/packages/cozeloop/prompt-components: + ../../../frontend/packages/cozeloop/prompt-components-v2: dependencies: + '@bytedance/calypso': + specifier: 0.1.0-beta.8 + version: 0.1.0-beta.8(@babel/runtime@7.27.6)(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@mui/material@5.17.1)(@types/react@18.2.37)(immer@10.1.1)(react-dom@18.2.0)(react@18.2.0) '@codemirror/commands': specifier: ^6.3.3 version: 6.8.1 @@ -2933,9 +3078,6 @@ importers: '@codemirror/view': specifier: ^6.34.1 version: 6.37.2 - '@coze-arch/bot-md-box-adapter': - specifier: workspace:* - version: link:../../arch/bot-md-box-adapter '@coze-arch/coze-design': specifier: 0.0.7-alpha.985c0d version: 0.0.7-alpha.985c0d(@types/react@18.2.37)(acorn@8.15.0)(react-dom@18.2.0)(react@18.2.0) @@ -2951,30 +3093,33 @@ importers: '@cozeloop/api-schema': specifier: workspace:* version: link:../api-schema - '@cozeloop/biz-hooks-adapter': - specifier: workspace:* - version: link:../biz-hooks '@cozeloop/components': specifier: workspace:* version: link:../components + '@cozeloop/hooks': + specifier: workspace:* + version: link:../base-hooks '@cozeloop/i18n-adapter': specifier: workspace:* version: link:../i18n - '@cozeloop/tea-adapter': + '@cozeloop/toolkit': specifier: workspace:* - version: link:../tea + version: link:../toolkit '@lezer/common': specifier: ^1.2.2 version: 1.2.3 '@shikijs/langs': - specifier: ^3.9.2 - version: 3.12.2 + specifier: 3.3.0 + version: 3.3.0 '@shikijs/themes': - specifier: ^3.2.2 - version: 3.6.0 + specifier: 3.3.0 + version: 3.3.0 ahooks: specifier: 3.7.8 version: 3.7.8(patch_hash=sa4ddrxdk2yhjzudeck6u5ww3i)(react@18.2.0) + ajv: + specifier: ~8.12.0 + version: 8.12.0 classnames: specifier: ^2.3.2 version: 2.5.1 @@ -2984,6 +3129,9 @@ importers: crelt: specifier: ^1.0.5 version: 1.0.6 + dayjs: + specifier: ^1.11.7 + version: 1.11.13 eventsource-parser: specifier: ^1.0.0 version: 1.1.2 @@ -3008,6 +3156,9 @@ importers: nanoid: specifier: ^4.0.2 version: 4.0.2 + re-resizable: + specifier: ~6.9.11 + version: 6.9.18(react-dom@18.2.0)(react@18.2.0) react: specifier: 18.2.0 version: 18.2.0 @@ -3023,6 +3174,9 @@ importers: tippy.js: specifier: ^6.3.7 version: 6.3.7 + zustand: + specifier: ^4.4.7 + version: 4.5.7(@types/react@18.2.37)(immer@10.1.1)(react@18.2.0) devDependencies: '@coze-arch/bot-typings': specifier: workspace:* @@ -3033,9 +3187,6 @@ importers: '@coze-arch/ts-config': specifier: workspace:* version: link:../../../config/ts-config - '@coze-arch/vitest-config': - specifier: workspace:* - version: link:../../../config/vitest-config '@cozeloop/tailwind-config': specifier: workspace:* version: link:../tailwind-config @@ -3057,9 +3208,6 @@ importers: react-dom: specifier: 18.2.0 version: 18.2.0(react@18.2.0) - storybook: - specifier: ^7.6.7 - version: 7.6.20 tsconfig-paths: specifier: 4.1.0 version: 4.1.0 @@ -3075,18 +3223,12 @@ importers: ../../../frontend/packages/cozeloop/prompt-pages: dependencies: - '@coze-arch/bot-md-box-adapter': - specifier: workspace:* - version: link:../../arch/bot-md-box-adapter '@coze-arch/coze-design': specifier: 0.0.7-alpha.985c0d version: 0.0.7-alpha.985c0d(@types/react@18.2.37)(acorn@8.15.0)(react-dom@18.2.0)(react@18.2.0) - '@coze-arch/fetch-stream': - specifier: workspace:* - version: link:../../arch/fetch-stream - '@cozeloop/base-hooks': + '@cozeloop/api-schema': specifier: workspace:* - version: link:../base-hooks + version: link:../api-schema '@cozeloop/biz-components-adapter': specifier: workspace:* version: link:../biz-components @@ -3096,54 +3238,33 @@ importers: '@cozeloop/components': specifier: workspace:* version: link:../components - '@cozeloop/guard': + '@cozeloop/hooks': specifier: workspace:* - version: link:../guard - '@cozeloop/observation-component-adapter': + version: link:../base-hooks + '@cozeloop/i18n-adapter': specifier: workspace:* - version: link:../observation/trace-detail-open - '@cozeloop/prompt-components': + version: link:../i18n + '@cozeloop/observation-adapter': specifier: workspace:* - version: link:../prompt-components - '@cozeloop/tea-adapter': + version: link:../observation-adapter + '@cozeloop/observation-components': specifier: workspace:* - version: link:../tea + version: link:../observation-components + '@cozeloop/prompt-components-v2': + specifier: workspace:* + version: link:../prompt-components-v2 '@cozeloop/toolkit': specifier: workspace:* version: link:../toolkit ahooks: specifier: 3.7.8 version: 3.7.8(patch_hash=sa4ddrxdk2yhjzudeck6u5ww3i)(react@18.2.0) - ajv: - specifier: ~8.12.0 - version: 8.12.0 classnames: specifier: ^2.3.2 version: 2.5.1 - dayjs: - specifier: ^1.11.7 - version: 1.11.13 - eventsource-parser: - specifier: ^1.0.0 - version: 1.1.2 - immer: - specifier: ^10.0.3 - version: 10.1.1 - lodash-es: - specifier: ^4.17.21 - version: 4.17.21 - nanoid: - specifier: ^4.0.2 - version: 4.0.2 re-resizable: specifier: ~6.9.11 version: 6.9.18(react-dom@18.2.0)(react@18.2.0) - sortablejs: - specifier: ~1.15.2 - version: 1.15.6 - zustand: - specifier: ^4.4.7 - version: 4.5.7(@types/react@18.2.37)(immer@10.1.1)(react@18.2.0) devDependencies: '@coze-arch/bot-typings': specifier: workspace:* @@ -3157,15 +3278,9 @@ importers: '@coze-arch/vitest-config': specifier: workspace:* version: link:../../../config/vitest-config - '@cozeloop/api-schema': - specifier: workspace:* - version: link:../api-schema '@cozeloop/tailwind-config': specifier: workspace:* version: link:../tailwind-config - '@types/lodash-es': - specifier: ^4.17.10 - version: 4.17.12 '@types/react': specifier: 18.2.37 version: 18.2.37 @@ -3187,9 +3302,6 @@ importers: react-router-dom: specifier: ^6.22.0 version: 6.30.1(react-dom@18.2.0)(react@18.2.0) - storybook: - specifier: ^7.6.7 - version: 7.6.20 tsconfig-paths: specifier: 4.1.0 version: 4.1.0 @@ -3211,18 +3323,12 @@ importers: '@coze-arch/ts-config': specifier: workspace:* version: link:../../../../config/ts-config - '@coze-arch/vitest-config': - specifier: workspace:* - version: link:../../../../config/vitest-config '@types/node': specifier: 18.18.9 version: 18.18.9 - '@vitest/coverage-v8': - specifier: ~3.0.5 - version: 3.0.9(vitest@3.0.9) - vitest: - specifier: ~3.0.5 - version: 3.0.9(@types/node@18.18.9)(happy-dom@20.0.10) + '@types/react': + specifier: 18.2.37 + version: 18.2.37 ../../../frontend/packages/cozeloop/route: dependencies: @@ -3340,6 +3446,73 @@ importers: specifier: ~5.91.0 version: 5.91.0 + ../../../frontend/packages/cozeloop/shared-components: + dependencies: + '@coze-arch/coze-design': + specifier: 0.0.7-alpha.985c0d + version: 0.0.7-alpha.985c0d(@types/react@18.2.37)(acorn@8.15.0)(react-dom@18.2.0)(react@18.2.0) + '@cozeloop/api-schema': + specifier: workspace:* + version: link:../api-schema + '@cozeloop/i18n-adapter': + specifier: workspace:* + version: link:../i18n + ahooks: + specifier: 3.7.8 + version: 3.7.8(patch_hash=sa4ddrxdk2yhjzudeck6u5ww3i)(react@18.2.0) + classnames: + specifier: ^2.3.2 + version: 2.5.1 + devDependencies: + '@coze-arch/bot-typings': + specifier: workspace:* + version: link:../../arch/bot-typings + '@coze-arch/eslint-config': + specifier: workspace:* + version: link:../../../config/eslint-config + '@coze-arch/ts-config': + specifier: workspace:* + version: link:../../../config/ts-config + '@coze-arch/vitest-config': + specifier: workspace:* + version: link:../../../config/vitest-config + '@cozeloop/guard': + specifier: workspace:* + version: link:../guard + '@types/lodash-es': + specifier: ^4.17.10 + version: 4.17.12 + '@types/react': + specifier: 18.2.37 + version: 18.2.37 + '@types/react-dom': + specifier: 18.2.15 + version: 18.2.15 + '@vitest/coverage-v8': + specifier: ~3.0.5 + version: 3.0.9(vitest@3.0.9) + less: + specifier: ^4.2.0 + version: 4.4.2 + react: + specifier: 18.2.0 + version: 18.2.0 + react-dom: + specifier: 18.2.0 + version: 18.2.0(react@18.2.0) + react-router-dom: + specifier: ^6.22.0 + version: 6.30.1(react-dom@18.2.0)(react@18.2.0) + sucrase: + specifier: ^3.32.0 + version: 3.35.0 + typescript: + specifier: 5.8.2 + version: 5.8.2 + vitest: + specifier: ~3.0.5 + version: 3.0.9(less@4.4.2) + ../../../frontend/packages/cozeloop/stores: dependencies: '@cozeloop/i18n-adapter': @@ -3388,9 +3561,6 @@ importers: '@cozeloop/api-schema': specifier: workspace:* version: link:../api-schema - '@cozeloop/base-hooks': - specifier: workspace:* - version: link:../base-hooks '@cozeloop/biz-components-adapter': specifier: workspace:* version: link:../biz-components @@ -3406,6 +3576,9 @@ importers: '@cozeloop/guard': specifier: workspace:* version: link:../guard + '@cozeloop/hooks': + specifier: workspace:* + version: link:../base-hooks '@cozeloop/i18n-adapter': specifier: workspace:* version: link:../i18n @@ -3650,12 +3823,18 @@ importers: ../../../frontend/packages/cozeloop/toolkit: dependencies: + '@cozeloop/i18n-adapter': + specifier: workspace:* + version: link:../i18n dayjs: specifier: ^1.11.7 version: 1.11.13 json-bigint: specifier: ~1.0.0 version: 1.0.0 + lodash-es: + specifier: ^4.17.21 + version: 4.17.21 devDependencies: '@coze-arch/eslint-config': specifier: workspace:* @@ -3666,9 +3845,21 @@ importers: '@coze-arch/vitest-config': specifier: workspace:* version: link:../../../config/vitest-config + '@types/json-bigint': + specifier: ~1.0.4 + version: 1.0.4 + '@types/lodash-es': + specifier: ^4.17.10 + version: 4.17.12 + '@types/react': + specifier: 18.2.37 + version: 18.2.37 '@vitest/coverage-v8': specifier: ~3.0.5 version: 3.0.9(vitest@3.0.9) + react: + specifier: 18.2.0 + version: 18.2.0 tsconfig-paths: specifier: 4.1.0 version: 4.1.0 @@ -3703,19 +3894,115 @@ packages: tinyexec: 1.0.1 dev: false - /@antfu/utils@9.2.0: - resolution: {integrity: sha512-Oq1d9BGZakE/FyoEtcNeSwM7MpDO2vUBi11RWBZXf75zPsbUVWmUs03EqkRFrcgbXyKTas0BdZWC1wcuSoqSAw==} - dev: false + /@antfu/utils@9.2.0: + resolution: {integrity: sha512-Oq1d9BGZakE/FyoEtcNeSwM7MpDO2vUBi11RWBZXf75zPsbUVWmUs03EqkRFrcgbXyKTas0BdZWC1wcuSoqSAw==} + dev: false + + /@asamuzakjp/css-color@3.2.0: + resolution: {integrity: sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==} + dependencies: + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5)(@csstools/css-tokenizer@3.0.4) + '@csstools/css-color-parser': 3.0.10(@csstools/css-parser-algorithms@3.0.5)(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + lru-cache: 10.4.3 + dev: false + + /@ast-grep/napi-darwin-arm64@0.37.0: + resolution: {integrity: sha512-QAiIiaAbLvMEg/yBbyKn+p1gX2/FuaC0SMf7D7capm/oG4xGMzdeaQIcSosF4TCxxV+hIH4Bz9e4/u7w6Bnk3Q==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@ast-grep/napi-darwin-x64@0.37.0: + resolution: {integrity: sha512-zvcvdgekd4ySV3zUbUp8HF5nk5zqwiMXTuVzTUdl/w08O7JjM6XPOIVT+d2o/MqwM9rsXdzdergY5oY2RdhSPA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@ast-grep/napi-linux-arm64-gnu@0.37.0: + resolution: {integrity: sha512-L7Sj0lXy8X+BqSMgr1LB8cCoWk0rericdeu+dC8/c8zpsav5Oo2IQKY1PmiZ7H8IHoFBbURLf8iklY9wsD+cyA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@ast-grep/napi-linux-arm64-musl@0.37.0: + resolution: {integrity: sha512-LF9sAvYy6es/OdyJDO3RwkX3I82Vkfsng1sqUBcoWC1jVb1wX5YVzHtpQox9JrEhGl+bNp7FYxB4Qba9OdA5GA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@ast-grep/napi-linux-x64-gnu@0.37.0: + resolution: {integrity: sha512-TViz5/klqre6aSmJzswEIjApnGjJzstG/SE8VDWsrftMBMYt2PTu3MeluZVwzSqDao8doT/P+6U11dU05UOgxw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@ast-grep/napi-linux-x64-musl@0.37.0: + resolution: {integrity: sha512-/BcCH33S9E3ovOAEoxYngUNXgb+JLg991sdyiNP2bSoYd30a9RHrG7CYwW6fMgua3ijQ474eV6cq9yZO1bCpXg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@ast-grep/napi-win32-arm64-msvc@0.37.0: + resolution: {integrity: sha512-TjQA4cFoIEW2bgjLkaL9yqT4XWuuLa5MCNd0VCDhGRDMNQ9+rhwi9eLOWRaap3xzT7g+nlbcEHL3AkVCD2+b3A==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@ast-grep/napi-win32-ia32-msvc@0.37.0: + resolution: {integrity: sha512-uNmVka8fJCdYsyOlF9aZqQMLTatEYBynjChVTzUfFMDfmZ0bihs/YTqJVbkSm8TZM7CUX82apvn50z/dX5iWRA==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@ast-grep/napi-win32-x64-msvc@0.37.0: + resolution: {integrity: sha512-vCiFOT3hSCQuHHfZ933GAwnPzmL0G04JxQEsBRfqONywyT8bSdDc/ECpAfr3S9VcS4JZ9/F6tkePKW/Om2Dq2g==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true - /@asamuzakjp/css-color@3.2.0: - resolution: {integrity: sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==} - dependencies: - '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5)(@csstools/css-tokenizer@3.0.4) - '@csstools/css-color-parser': 3.0.10(@csstools/css-parser-algorithms@3.0.5)(@csstools/css-tokenizer@3.0.4) - '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) - '@csstools/css-tokenizer': 3.0.4 - lru-cache: 10.4.3 - dev: false + /@ast-grep/napi@0.37.0: + resolution: {integrity: sha512-Hb4o6h1Pf6yRUAX07DR4JVY7dmQw+RVQMW5/m55GoiAT/VRoKCWBtIUPPOnqDVhbx1Cjfil9b6EDrgJsUAujEQ==} + engines: {node: '>= 10'} + optionalDependencies: + '@ast-grep/napi-darwin-arm64': 0.37.0 + '@ast-grep/napi-darwin-x64': 0.37.0 + '@ast-grep/napi-linux-arm64-gnu': 0.37.0 + '@ast-grep/napi-linux-arm64-musl': 0.37.0 + '@ast-grep/napi-linux-x64-gnu': 0.37.0 + '@ast-grep/napi-linux-x64-musl': 0.37.0 + '@ast-grep/napi-win32-arm64-msvc': 0.37.0 + '@ast-grep/napi-win32-ia32-msvc': 0.37.0 + '@ast-grep/napi-win32-x64-msvc': 0.37.0 + dev: true /@aw-web-design/x-default-browser@1.4.126: resolution: {integrity: sha512-Xk1sIhyNC/esHGGVjL/niHLowM0csl/kFO5uawBy4IrWwy0o1G8LGt3jP6nmWGz+USxeeqbihAmp/oVZju6wug==} @@ -3729,7 +4016,6 @@ packages: engines: {node: '>=18.0.0'} dependencies: tslib: 2.8.1 - dev: false /@azure/core-auth@1.9.0: resolution: {integrity: sha512-FPwHpZywuyasDSLMqJ6fhbOK3TqUdviZNF8OqRGA4W5Ewib2lEEZ+pBsYcBa88B2NGO/SEnYPGhyBqNlE8ilSw==} @@ -3740,7 +4026,6 @@ packages: tslib: 2.8.1 transitivePeerDependencies: - supports-color - dev: false /@azure/core-client@1.9.4: resolution: {integrity: sha512-f7IxTD15Qdux30s2qFARH+JxgwxWLG2Rlr4oSkPGuLWm+1p5y1+C04XGLA0vmX6EtqfutmjvpNmAfgwVIS5hpw==} @@ -3755,7 +4040,6 @@ packages: tslib: 2.8.1 transitivePeerDependencies: - supports-color - dev: false /@azure/core-http-compat@2.3.0: resolution: {integrity: sha512-qLQujmUypBBG0gxHd0j6/Jdmul6ttl24c8WGiLXIk7IHXdBlfoBqW27hyz3Xn6xbfdyVSarl1Ttbk0AwnZBYCw==} @@ -3766,7 +4050,6 @@ packages: '@azure/core-rest-pipeline': 1.21.0 transitivePeerDependencies: - supports-color - dev: false /@azure/core-lro@2.7.2: resolution: {integrity: sha512-0YIpccoX8m/k00O7mDDMdJpbr6mf1yWo2dfmxt5A8XVZVVMz2SSKaEbMCeJRvgQ0IaSlqhjT47p4hVIRRy90xw==} @@ -3778,14 +4061,12 @@ packages: tslib: 2.8.1 transitivePeerDependencies: - supports-color - dev: false /@azure/core-paging@1.6.2: resolution: {integrity: sha512-YKWi9YuCU04B55h25cnOYZHxXYtEvQEbKST5vqRga7hWY9ydd3FZHdeQF8pyh+acWZvppw13M/LMGx0LABUVMA==} engines: {node: '>=18.0.0'} dependencies: tslib: 2.8.1 - dev: false /@azure/core-rest-pipeline@1.21.0: resolution: {integrity: sha512-a4MBwe/5WKbq9MIxikzgxLBbruC5qlkFYlBdI7Ev50Y7ib5Vo/Jvt5jnJo7NaWeJ908LCHL0S1Us4UMf1VoTfg==} @@ -3800,14 +4081,12 @@ packages: tslib: 2.8.1 transitivePeerDependencies: - supports-color - dev: false /@azure/core-tracing@1.2.0: resolution: {integrity: sha512-UKTiEJPkWcESPYJz3X5uKRYyOcJD+4nYph+KpfdPRnQJVrZfk0KJgdnaAWKfhsBBtAf/D58Az4AvCJEmWgIBAg==} engines: {node: '>=18.0.0'} dependencies: tslib: 2.8.1 - dev: false /@azure/core-util@1.12.0: resolution: {integrity: sha512-13IyjTQgABPARvG90+N2dXpC+hwp466XCdQXPCRlbWHgd3SJd5Q1VvaBGv6k1BIa4MQm6hAF1UBU1m8QUxV8sQ==} @@ -3818,7 +4097,6 @@ packages: tslib: 2.8.1 transitivePeerDependencies: - supports-color - dev: false /@azure/core-xml@1.4.5: resolution: {integrity: sha512-gT4H8mTaSXRz7eGTuQyq1aIJnJqeXzpOe9Ay7Z3FrCouer14CbV3VzjnJrNrQfbBpGBLO9oy8BmrY75A0p53cA==} @@ -3826,7 +4104,6 @@ packages: dependencies: fast-xml-parser: 5.2.5 tslib: 2.8.1 - dev: false /@azure/identity@4.5.0: resolution: {integrity: sha512-EknvVmtBuSIic47xkOqyNabAme0RYTw52BTMz8eBgU1ysTyMrD1uOoM+JdS0J/4Yfp98IBT3osqq3BfwSaNaGQ==} @@ -3848,7 +4125,6 @@ packages: tslib: 2.8.1 transitivePeerDependencies: - supports-color - dev: false /@azure/logger@1.2.0: resolution: {integrity: sha512-0hKEzLhpw+ZTAfNJyRrn6s+V0nDWzXk9OjBr2TiGIu0OfMr5s2V4FpKLTAK3Ca5r5OKLbf4hkOGDPyiRjie/jA==} @@ -3858,19 +4134,16 @@ packages: tslib: 2.8.1 transitivePeerDependencies: - supports-color - dev: false /@azure/msal-browser@3.28.1: resolution: {integrity: sha512-OHHEWMB5+Zrix8yKvLVzU3rKDFvh7SOzAzXfICD7YgUXLxfHpTPX2pzOotrri1kskwhHqIj4a5LvhZlIqE7C7g==} engines: {node: '>=0.8.0'} dependencies: '@azure/msal-common': 14.16.0 - dev: false /@azure/msal-common@14.16.0: resolution: {integrity: sha512-1KOZj9IpcDSwpNiQNjt0jDYZpQvNZay7QAEi/5DLubay40iGYtLzya/jbjRPLyOTZhEKyL1MzPuw2HqBCjceYA==} engines: {node: '>=0.8.0'} - dev: false /@azure/msal-node@2.16.2: resolution: {integrity: sha512-An7l1hEr0w1HMMh1LU+rtDtqL7/jw74ORlc9Wnh06v7TU/xpG39/Zdr1ZJu3QpjUfKJ+E0/OXMW8DRSWTlh7qQ==} @@ -3879,7 +4152,6 @@ packages: '@azure/msal-common': 14.16.0 jsonwebtoken: 9.0.2 uuid: 8.3.2 - dev: false /@azure/storage-blob@12.26.0: resolution: {integrity: sha512-SriLPKezypIsiZ+TtlFfE46uuBIap2HeaQVS78e1P7rz5OSbq0rsd52WE1mC5f7vAeLiXqv7I7oRhL3WFZEw3Q==} @@ -3900,7 +4172,6 @@ packages: tslib: 2.8.1 transitivePeerDependencies: - supports-color - dev: false /@babel/code-frame@7.27.1: resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} @@ -5703,7 +5974,7 @@ packages: resolution: {integrity: sha512-foZ7qr0IsUBjzWIq+SuBLfdQCpJ1j8cTuNNT4owngTHoN5KsJb8L9t65fzz7SCeSWzescoOil/0ldqiL041ABg==} dev: true - /@bytedance/calypso@0.1.0-beta.8(@babel/runtime@7.27.6)(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@mui/material@5.17.1)(@types/react@18.2.37)(react-dom@18.2.0)(react@18.2.0): + /@bytedance/calypso@0.1.0-beta.8(@babel/runtime@7.27.6)(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@mui/material@5.17.1)(@types/react@18.2.37)(immer@10.1.1)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-noJz3Ohh8eBxSPHjuH3ZB4FEt+9jT6fYMlhLf6Kpn0UUbOYsF85Qi43nsHf/rgjlgQFykYrv8MnNlld139bKig==} peerDependencies: react: 18.2.0 @@ -6669,7 +6940,6 @@ packages: resolution: {integrity: sha512-fneVypElGUH6Be39mlRZeAu00pccTlf4oVuzf9xPJD1cdEqI8NyAiQua/EW7lZdrbMUbgyXcJmfKPefhYius3A==} dependencies: stackframe: 1.3.4 - dev: false /@discoveryjs/json-ext@0.5.7: resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} @@ -6838,10 +7108,10 @@ packages: dependencies: '@babel/core': 7.27.4 css-loader: 4.3.0(webpack@5.91.0) - enhanced-resolve: 5.12.0 + enhanced-resolve: 5.18.1 raw-loader: 4.0.2(webpack@5.91.0) sass-loader: 10.5.2(webpack@5.91.0) - webpack: 5.91.0 + webpack: 5.91.0(esbuild@0.18.20) transitivePeerDependencies: - fibers - node-sass @@ -6926,29 +7196,26 @@ packages: - supports-color dev: false - /@emnapi/core@1.4.3: - resolution: {integrity: sha512-4m62DuCE07lw01soJwPiBGC0nAww0Q+RY70VZ+n49yDIO13yyinhbWCeNnaob0lakDtWQzSdtNWzJeOJt2ma+g==} + /@emnapi/core@1.7.1: + resolution: {integrity: sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg==} requiresBuild: true dependencies: - '@emnapi/wasi-threads': 1.0.2 + '@emnapi/wasi-threads': 1.1.0 tslib: 2.8.1 - dev: false optional: true - /@emnapi/runtime@1.4.3: - resolution: {integrity: sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==} + /@emnapi/runtime@1.7.1: + resolution: {integrity: sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==} requiresBuild: true dependencies: tslib: 2.8.1 - dev: false optional: true - /@emnapi/wasi-threads@1.0.2: - resolution: {integrity: sha512-5n3nTJblwRi8LlXkJ9eBzu+kZR8Yxcc7ubakyQTFzPMtIhFpUBRbsnc2Dv88IZDIbCDlBiWrknhB4Lsz7mg6BA==} + /@emnapi/wasi-threads@1.1.0: + resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} requiresBuild: true dependencies: tslib: 2.8.1 - dev: false optional: true /@emotion/babel-plugin@11.13.5: @@ -7808,7 +8075,6 @@ packages: jsep: ^0.4.0||^1.0.0 dependencies: jsep: 1.4.0 - dev: false /@jsep-plugin/regex@1.0.4(jsep@1.4.0): resolution: {integrity: sha512-q7qL4Mgjs1vByCaTnDFcBnV9HS7GVPJX5vyVoCgZHNSC9rjwIlmbXG5sUuorR5ndfHAIlJ8pVStxvjXHbNvtUg==} @@ -7817,7 +8083,6 @@ packages: jsep: ^0.4.0||^1.0.0 dependencies: jsep: 1.4.0 - dev: false /@jsonjoy.com/base64@1.1.2(tslib@2.8.1): resolution: {integrity: sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==} @@ -7828,6 +8093,24 @@ packages: tslib: 2.8.1 dev: true + /@jsonjoy.com/buffers@1.2.1(tslib@2.8.1): + resolution: {integrity: sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + dependencies: + tslib: 2.8.1 + dev: true + + /@jsonjoy.com/codegen@1.0.0(tslib@2.8.1): + resolution: {integrity: sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + dependencies: + tslib: 2.8.1 + dev: true + /@jsonjoy.com/json-pack@1.2.0(tslib@2.8.1): resolution: {integrity: sha512-io1zEbbYcElht3tdlqEOFxZ0dMTYrHz9iMf0gqn1pPjZFTCgM5R4R5IMA20Chb2UPYYsxjzs8CgZ7Nb5n2K2rA==} engines: {node: '>=10.0'} @@ -7841,6 +8124,34 @@ packages: tslib: 2.8.1 dev: true + /@jsonjoy.com/json-pack@1.21.0(tslib@2.8.1): + resolution: {integrity: sha512-+AKG+R2cfZMShzrF2uQw34v3zbeDYUqnQ+jg7ORic3BGtfw9p/+N6RJbq/kkV8JmYZaINknaEQ2m0/f693ZPpg==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + dependencies: + '@jsonjoy.com/base64': 1.1.2(tslib@2.8.1) + '@jsonjoy.com/buffers': 1.2.1(tslib@2.8.1) + '@jsonjoy.com/codegen': 1.0.0(tslib@2.8.1) + '@jsonjoy.com/json-pointer': 1.0.2(tslib@2.8.1) + '@jsonjoy.com/util': 1.9.0(tslib@2.8.1) + hyperdyperid: 1.2.0 + thingies: 2.5.0(tslib@2.8.1) + tree-dump: 1.1.0(tslib@2.8.1) + tslib: 2.8.1 + dev: true + + /@jsonjoy.com/json-pointer@1.0.2(tslib@2.8.1): + resolution: {integrity: sha512-Fsn6wM2zlDzY1U+v4Nc8bo3bVqgfNTGcn6dMgs6FjrEnt4ZCe60o6ByKRjOGlI2gow0aE/Q41QOigdTqkyK5fg==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + dependencies: + '@jsonjoy.com/codegen': 1.0.0(tslib@2.8.1) + '@jsonjoy.com/util': 1.9.0(tslib@2.8.1) + tslib: 2.8.1 + dev: true + /@jsonjoy.com/util@1.6.0(tslib@2.8.1): resolution: {integrity: sha512-sw/RMbehRhN68WRtcKCpQOPfnH6lLP4GJfqzi3iYej8tnzpZUDr6UkZYJjcjjC0FWEJOJbyM3PTIwxucUmDG2A==} engines: {node: '>=10.0'} @@ -7850,6 +8161,17 @@ packages: tslib: 2.8.1 dev: true + /@jsonjoy.com/util@1.9.0(tslib@2.8.1): + resolution: {integrity: sha512-pLuQo+VPRnN8hfPqUTLTHk126wuYdXVxE6aDmjSeV4NCAgyxWbiOIeNJVtID3h1Vzpoi9m4jXezf73I6LgabgQ==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + dependencies: + '@jsonjoy.com/buffers': 1.2.1(tslib@2.8.1) + '@jsonjoy.com/codegen': 1.0.0(tslib@2.8.1) + tslib: 2.8.1 + dev: true + /@juggle/resize-observer@3.4.0: resolution: {integrity: sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==} dev: true @@ -7977,12 +8299,54 @@ packages: react: 18.2.0 dev: true + /@mdx-js/react@3.1.1(@types/react@18.2.37)(react@18.2.0): + resolution: {integrity: sha512-f++rKLQgUVYDAtECQ6fn/is15GkEH9+nZPM3MS0RcxVqoTfawHvDlSCH7JbMhAM6uJ32v3eXLvLmLvjGu7PTQw==} + peerDependencies: + '@types/react': 18.2.37 + react: 18.2.0 + dependencies: + '@types/mdx': 2.0.13 + '@types/react': 18.2.37 + react: 18.2.0 + dev: true + /@mermaid-js/parser@0.6.2: resolution: {integrity: sha512-+PO02uGF6L6Cs0Bw8RpGhikVvMWEysfAyl27qTlroUB8jSWr1lL0Sf6zi78ZxlSnmgSY2AMMKVgghnN9jTtwkQ==} dependencies: langium: 3.3.1 dev: false + /@microsoft/api-extractor-model@7.28.13(@types/node@18.18.9): + resolution: {integrity: sha512-39v/JyldX4MS9uzHcdfmjjfS6cYGAoXV+io8B5a338pkHiSt+gy2eXQ0Q7cGFJ7quSa1VqqlMdlPrB6sLR/cAw==} + dependencies: + '@microsoft/tsdoc': 0.14.2 + '@microsoft/tsdoc-config': 0.16.2 + '@rushstack/node-core-library': 4.0.2(@types/node@18.18.9) + transitivePeerDependencies: + - '@types/node' + dev: true + + /@microsoft/api-extractor@7.43.0(@types/node@18.18.9): + resolution: {integrity: sha512-GFhTcJpB+MI6FhvXEI9b2K0snulNLWHqC/BbcJtyNYcKUiw7l3Lgis5ApsYncJ0leALX7/of4XfmXk+maT111w==} + hasBin: true + dependencies: + '@microsoft/api-extractor-model': 7.28.13(@types/node@18.18.9) + '@microsoft/tsdoc': 0.14.2 + '@microsoft/tsdoc-config': 0.16.2 + '@rushstack/node-core-library': 4.0.2(@types/node@18.18.9) + '@rushstack/rig-package': 0.5.2 + '@rushstack/terminal': 0.10.0(@types/node@18.18.9) + '@rushstack/ts-command-line': 4.19.1(@types/node@18.18.9) + lodash: 4.17.21 + minimatch: 3.0.8 + resolve: 1.22.10 + semver: 7.5.4 + source-map: 0.6.1 + typescript: 5.8.2 + transitivePeerDependencies: + - '@types/node' + dev: true + /@microsoft/rush-lib@5.147.2(@types/node@18.18.9): resolution: {integrity: sha512-MCUkNe91yGv0LZgLraB42eHNRRq0rRG5Xz4xfm1wqdi73NymbaRO/qgOFrIO8QTuDtEneuH6NSAzb0wPkyy/yA==} engines: {node: '>=5.6.0'} @@ -8029,7 +8393,6 @@ packages: transitivePeerDependencies: - '@types/node' - supports-color - dev: false /@microsoft/tsdoc-config@0.16.2: resolution: {integrity: sha512-OGiIzzoBLgWWR0UdRJX98oYO+XKGf7tiK4Zk6tQ/E4IJqGCe7dvkTvgDZV5cFJUzLGDOjeAXrnZoA6QkVySuxw==} @@ -8038,16 +8401,18 @@ packages: ajv: 6.12.6 jju: 1.4.0 resolve: 1.19.0 - dev: false /@microsoft/tsdoc@0.14.2: resolution: {integrity: sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==} - dev: false /@module-federation/error-codes@0.14.3: resolution: {integrity: sha512-sBJ3XKU9g5Up31jFeXPFsD8AgORV7TLO/cCSMuRewSfgYbG/3vSKLJmfHrO6+PvjZSb9VyV2UaF02ojktW65vw==} dev: true + /@module-federation/error-codes@0.17.1: + resolution: {integrity: sha512-n6Elm4qKSjwAPxLUGtwnl7qt4y1dxB8OpSgVvXBIzqI9p27a3ZXshLPLnumlpPg1Qudaj8sLnSnFtt9yGpt5yQ==} + dev: true + /@module-federation/runtime-core@0.14.3: resolution: {integrity: sha512-xMFQXflLVW/AJTWb4soAFP+LB4XuhE7ryiLIX8oTyUoBBgV6U2OPghnFljPjeXbud72O08NYlQ1qsHw1kN/V8Q==} dependencies: @@ -8055,6 +8420,13 @@ packages: '@module-federation/sdk': 0.14.3 dev: true + /@module-federation/runtime-core@0.17.1: + resolution: {integrity: sha512-LCtIFuKgWPQ3E+13OyrVpuTPOWBMI/Ggwsq1Q874YeT8Px28b8tJRCj09DjyRFyhpSPyV/uG80T6iXPAUoLIfQ==} + dependencies: + '@module-federation/error-codes': 0.17.1 + '@module-federation/sdk': 0.17.1 + dev: true + /@module-federation/runtime-tools@0.0.8: resolution: {integrity: sha512-tqx3wlVHnpWLk+vn22c0x9Nv1BqdZnoS6vdMb53IsVpbQIFP70nhhvymHUyFuPkoLzMFidS7GpG58DYT/4lvCw==} dependencies: @@ -8069,6 +8441,13 @@ packages: '@module-federation/webpack-bundler-runtime': 0.14.3 dev: true + /@module-federation/runtime-tools@0.17.1: + resolution: {integrity: sha512-4kr6zTFFwGywJx6whBtxsc84V+COAuuBpEdEbPZN//YLXhNB0iz2IGsy9r9wDl+06h84bD+3dQ05l9euRLgXzQ==} + dependencies: + '@module-federation/runtime': 0.17.1 + '@module-federation/webpack-bundler-runtime': 0.17.1 + dev: true + /@module-federation/runtime-tools@0.5.1: resolution: {integrity: sha512-nfBedkoZ3/SWyO0hnmaxuz0R0iGPSikHZOAZ0N/dVSQaIzlffUo35B5nlC2wgWIc0JdMZfkwkjZRrnuuDIJbzg==} dependencies: @@ -8090,6 +8469,14 @@ packages: '@module-federation/sdk': 0.14.3 dev: true + /@module-federation/runtime@0.17.1: + resolution: {integrity: sha512-vKEN32MvUbpeuB/s6UXfkHDZ9N5jFyDDJnj83UTJ8n4N1jHIJu9VZ6Yi4/Ac8cfdvU8UIK9bIbfVXWbUYZUDsw==} + dependencies: + '@module-federation/error-codes': 0.17.1 + '@module-federation/runtime-core': 0.17.1 + '@module-federation/sdk': 0.17.1 + dev: true + /@module-federation/runtime@0.5.1: resolution: {integrity: sha512-xgiMUWwGLWDrvZc9JibuEbXIbhXg6z2oUkemogSvQ4LKvrl/n0kbqP1Blk669mXzyWbqtSp6PpvNdwaE1aN5xQ==} dependencies: @@ -8104,6 +8491,10 @@ packages: resolution: {integrity: sha512-THJZMfbXpqjQOLblCQ8jjcBFFXsGRJwUWE9l/Q4SmuCSKMgAwie7yLT0qSGrHmyBYrsUjAuy+xNB4nfKP0pnGw==} dev: true + /@module-federation/sdk@0.17.1: + resolution: {integrity: sha512-nlUcN6UTEi+3HWF+k8wPy7gH0yUOmCT+xNatihkIVR9REAnr7BUvHFGlPJmx7WEbLPL46+zJUbtQHvLzXwFhng==} + dev: true + /@module-federation/sdk@0.5.1: resolution: {integrity: sha512-exvchtjNURJJkpqjQ3/opdbfeT2wPKvrbnGnyRkrwW5o3FH1LaST1tkiNviT6OXTexGaVc2DahbdniQHVtQ7pA==} dev: true @@ -8122,6 +8513,13 @@ packages: '@module-federation/sdk': 0.14.3 dev: true + /@module-federation/webpack-bundler-runtime@0.17.1: + resolution: {integrity: sha512-Swspdgf4PzcbvS9SNKFlBzfq8h/Qxwqjq/xRSqw1pqAZWondZQzwTTqPXhgrg0bFlz7qWjBS/6a8KuH/gRvGaQ==} + dependencies: + '@module-federation/runtime': 0.17.1 + '@module-federation/sdk': 0.17.1 + dev: true + /@module-federation/webpack-bundler-runtime@0.5.1: resolution: {integrity: sha512-mMhRFH0k2VjwHt3Jol9JkUsmI/4XlrAoBG3E0o7HoyoPYv1UFOWyqAflfANcUPgbYpvqmyLzDcO+3IT36LXnrA==} dependencies: @@ -8293,12 +8691,22 @@ packages: resolution: {integrity: sha512-9DPkXtvHydrcOsopiYpUgPHpmj0HWZKMUnL2dZqpvC42lsratuBG06V5ipyno0fUek5VlFsNQ+AcFATSrJXgMA==} requiresBuild: true dependencies: - '@emnapi/core': 1.4.3 - '@emnapi/runtime': 1.4.3 + '@emnapi/core': 1.7.1 + '@emnapi/runtime': 1.7.1 '@tybys/wasm-util': 0.9.0 dev: false optional: true + /@napi-rs/wasm-runtime@1.1.0: + resolution: {integrity: sha512-Fq6DJW+Bb5jaWE69/qOE0D1TUN9+6uWhCeZpdnSBk14pjLcCWR7Q8n49PTSPHazM37JqrsdpEthXy2xn6jWWiA==} + requiresBuild: true + dependencies: + '@emnapi/core': 1.7.1 + '@emnapi/runtime': 1.7.1 + '@tybys/wasm-util': 0.10.1 + dev: true + optional: true + /@ndelangen/get-tarball@3.0.9: resolution: {integrity: sha512-9JKTEik4vq+yGosHYhZ1tiH/3WpUS0Nh0kej4Agndhox8pAdWhEx5knFVRcb/ya9knCRCs1rPxNrSXTDdfVqpA==} dependencies: @@ -8359,14 +8767,12 @@ packages: engines: {node: '>=14.6'} dependencies: rfc4648: 1.5.4 - dev: false /@pnpm/crypto.base32-hash@2.0.0: resolution: {integrity: sha512-3ttOeHBpmWRbgJrpDQ8Nwd3W8s8iuiP5YZM0JRyKWaMtX8lu9d7/AKyxPmhYsMJuN+q/1dwHa7QFeDZJ53b0oA==} engines: {node: '>=16.14'} dependencies: rfc4648: 1.5.4 - dev: false /@pnpm/crypto.base32-hash@3.0.1: resolution: {integrity: sha512-DM4RR/tvB7tMb2FekL0Q97A5PCXNyEC+6ht8SaufAUFSJNxeozqHw9PHTZR03mzjziPzNQLOld0pNINBX3srtw==} @@ -8374,12 +8780,10 @@ packages: dependencies: '@pnpm/crypto.polyfill': 1.0.0 rfc4648: 1.5.4 - dev: false /@pnpm/crypto.polyfill@1.0.0: resolution: {integrity: sha512-WbmsqqcUXKKaAF77ox1TQbpZiaQcr26myuMUu+WjUtoWYgD3VP6iKYEvSx35SZ6G2L316lu+pv+40A2GbWJc1w==} engines: {node: '>=18.12'} - dev: false /@pnpm/dependency-path@2.1.8: resolution: {integrity: sha512-ywBaTjy0iSEF7lH3DlF8UXrdL2bw4AQFV2tTOeNeY7wc1W5CE+RHSJhf9MXBYcZPesqGRrPiU7Pimj3l05L9VA==} @@ -8389,7 +8793,6 @@ packages: '@pnpm/types': 9.4.2 encode-registry: 3.0.1 semver: 7.7.2 - dev: false /@pnpm/dependency-path@5.1.7: resolution: {integrity: sha512-MKCyaTy1r9fhBXAnhDZNBVgo6ThPnicwJEG203FDp7pGhD7NruS/FhBI+uMd7GNsK3D7aIFCDAgbWpNTXn/eWw==} @@ -8398,12 +8801,10 @@ packages: '@pnpm/crypto.base32-hash': 3.0.1 '@pnpm/types': 12.2.0 semver: 7.7.2 - dev: false /@pnpm/error@1.4.0: resolution: {integrity: sha512-vxkRrkneBPVmP23kyjnYwVOtipwlSl6UfL+h+Xa3TrABJTz5rYBXemlTsU5BzST8U4pD7YDkTb3SQu+MMuIDKA==} engines: {node: '>=10.16'} - dev: false /@pnpm/link-bins@5.3.25: resolution: {integrity: sha512-9Xq8lLNRHFDqvYPXPgaiKkZ4rtdsm7izwM/cUsFDc5IMnG0QYIVBXQbgwhz2UvjUotbJrvfKLJaCfA3NGBnLDg==} @@ -8422,7 +8823,6 @@ packages: normalize-path: 3.0.0 p-settle: 4.1.1 ramda: 0.27.2 - dev: false /@pnpm/lockfile.types@1.0.3: resolution: {integrity: sha512-A7vUWktnhDkrIs+WmXm7AdffJVyVYJpQUEouya/DYhB+Y+tQ3BXjZ6CV0KybqLgI/8AZErgCJqFxA0GJH6QDjA==} @@ -8438,7 +8838,6 @@ packages: '@pnpm/types': 6.4.0 fast-glob: 3.3.3 is-subdir: 1.2.0 - dev: false /@pnpm/patching.types@1.0.0: resolution: {integrity: sha512-juCdQCC1USqLcOhVPl1tYReoTO9YH4fTullMnFXXcmpsDM7Dkn3tzuOQKC3oPoJ2ozv+0EeWWMtMGqn2+IM3pQ==} @@ -8449,7 +8848,6 @@ packages: engines: {node: '>=10.13'} dependencies: mz: 2.7.0 - dev: false /@pnpm/read-package-json@4.0.0: resolution: {integrity: sha512-1cr2tEwe4YU6SI0Hmg+wnsr6yxBt2iJtqv6wrF84On8pS9hx4A2PLw3CIgbwxaG0b+ur5wzhNogwl4qD5FLFNg==} @@ -8459,7 +8857,6 @@ packages: '@pnpm/types': 6.4.0 load-json-file: 6.2.0 normalize-package-data: 3.0.3 - dev: false /@pnpm/read-project-manifest@1.1.7: resolution: {integrity: sha512-tj8ExXZeDcMmMUj7D292ETe/RiEirr1X1wpT6Zy85z2MrFYoG9jfCJpps40OdZBNZBhxbuKtGPWKVSgXD0yrVw==} @@ -8477,7 +8874,6 @@ packages: read-yaml-file: 2.1.0 sort-keys: 4.2.0 strip-bom: 4.0.0 - dev: false /@pnpm/types@12.2.0: resolution: {integrity: sha512-5RtwWhX39j89/Tmyv2QSlpiNjErA357T/8r1Dkg+2lD3P7RuS7Xi2tChvmOC3VlezEFNcWnEGCOeKoGRkDuqFA==} @@ -8486,17 +8882,14 @@ packages: /@pnpm/types@6.4.0: resolution: {integrity: sha512-nco4+4sZqNHn60Y4VE/fbtlShCBqipyUO+nKRPvDHqLrecMW9pzHWMVRxk4nrMRoeowj3q0rX3GYRBa8lsHTAg==} engines: {node: '>=10.16'} - dev: false /@pnpm/types@8.9.0: resolution: {integrity: sha512-3MYHYm8epnciApn6w5Fzx6sepawmsNU7l6lvIq+ER22/DPSrr83YMhU/EQWnf4lORn2YyiXFj0FJSyJzEtIGmw==} engines: {node: '>=14.6'} - dev: false /@pnpm/types@9.4.2: resolution: {integrity: sha512-g1hcF8Nv4gd76POilz9gD4LITAPXOe5nX4ijgr8ixCbLQZfcpYiMfJ+C1RlMNRUDo8vhlNB4O3bUlxmT6EAQXA==} engines: {node: '>=16.14'} - dev: false /@pnpm/write-project-manifest@1.1.7: resolution: {integrity: sha512-OLkDZSqkA1mkoPNPvLFXyI6fb0enCuFji6Zfditi/CLAo9kmIhQFmEUDu4krSB8i908EljG8YwL5Xjxzm5wsWA==} @@ -8507,7 +8900,10 @@ packages: mz: 2.7.0 write-file-atomic: 3.0.3 write-yaml-file: 4.2.0 - dev: false + + /@polka/url@1.0.0-next.29: + resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} + dev: true /@popperjs/core@2.11.8: resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} @@ -9403,6 +9799,48 @@ packages: '@resvg/resvg-js-win32-x64-msvc': 2.4.1 dev: false + /@rjsf/core@5.24.13(@rjsf/utils@5.24.13)(react@18.2.0): + resolution: {integrity: sha512-ONTr14s7LFIjx2VRFLuOpagL76sM/HPy6/OhdBfq6UukINmTIs6+aFN0GgcR0aXQHFDXQ7f/fel0o/SO05Htdg==} + engines: {node: '>=14'} + peerDependencies: + '@rjsf/utils': ^5.24.x + react: 18.2.0 + dependencies: + '@rjsf/utils': 5.24.13(react@18.2.0) + lodash: 4.17.21 + lodash-es: 4.17.21 + markdown-to-jsx: 7.7.7(react@18.2.0) + prop-types: 15.8.1 + react: 18.2.0 + dev: false + + /@rjsf/utils@5.24.13(react@18.2.0): + resolution: {integrity: sha512-rNF8tDxIwTtXzz5O/U23QU73nlhgQNYJ+Sv5BAwQOIyhIE2Z3S5tUiSVMwZHt0julkv/Ryfwi+qsD4FiE5rOuw==} + engines: {node: '>=14'} + peerDependencies: + react: 18.2.0 + dependencies: + json-schema-merge-allof: 0.8.1 + jsonpointer: 5.0.1 + lodash: 4.17.21 + lodash-es: 4.17.21 + react: 18.2.0 + react-is: 18.3.1 + dev: false + + /@rjsf/validator-ajv8@5.24.13(@rjsf/utils@5.24.13): + resolution: {integrity: sha512-oWHP7YK581M8I5cF1t+UXFavnv+bhcqjtL1a7MG/Kaffi0EwhgcYjODrD8SsnrhncsEYMqSECr4ZOEoirnEUWw==} + engines: {node: '>=14'} + peerDependencies: + '@rjsf/utils': ^5.24.x + dependencies: + '@rjsf/utils': 5.24.13(react@18.2.0) + ajv: 8.12.0 + ajv-formats: 2.1.1(ajv@8.12.0) + lodash: 4.17.21 + lodash-es: 4.17.21 + dev: false + /@rolldown/pluginutils@1.0.0-beta.11: resolution: {integrity: sha512-L/gAA/hyCSuzTF1ftlzUSI/IKr2POHsv1Dd78GfqkR83KMNuswWD61JxGV2L7nRwBBBSDr6R1gCkdTmoN7W4ag==} dev: true @@ -9592,6 +10030,18 @@ packages: core-js: 3.39.0 dev: true + /@rsbuild/core@1.4.16: + resolution: {integrity: sha512-t2684BBkqAh+dw/v00ySQc5P5SMul4a428L1qHwwIWFPAZ0bnus/hw/wI8nM2AQpMcKfJPkdyVSGm4ueCYPtPw==} + engines: {node: '>=16.10.0'} + hasBin: true + dependencies: + '@rspack/core': 1.4.11(@swc/helpers@0.5.17) + '@rspack/lite-tapable': 1.0.1 + '@swc/helpers': 0.5.17 + core-js: 3.45.1 + jiti: 2.6.1 + dev: true + /@rsbuild/plugin-less@1.1.1(@rsbuild/core@1.1.13): resolution: {integrity: sha512-Gkp73c9p4CQs2dB4BVCmw/cJ6JpIaWbsKcmZqyr+tlsKqZvZn9aYU+Zx4qWSqPR8I5zatiV2Lh15ObL9CCnlXw==} peerDependencies: @@ -9599,7 +10049,41 @@ packages: dependencies: '@rsbuild/core': 1.1.13 deepmerge: 4.3.1 - reduce-configs: 1.1.0 + reduce-configs: 1.1.1 + dev: true + + /@rsbuild/plugin-node-polyfill@0.3.11(@rsbuild/core@1.1.13): + resolution: {integrity: sha512-BunJOekqzMefGQOln4Zf5fW7gom+MwDgTZJWBzXAactbRMwRHmveG53xHYXqkV6XDzYqBI8Jj2ROIirBd/6KzQ==} + peerDependencies: + '@rsbuild/core': ^0.3.11 + dependencies: + '@rsbuild/core': 1.1.13 + '@rsbuild/shared': 0.3.11 + assert: 2.1.0 + browserify-zlib: 0.2.0 + buffer: 5.7.1 + console-browserify: 1.2.0 + constants-browserify: 1.0.0 + crypto-browserify: 3.12.1 + domain-browser: 5.7.0 + events: 3.3.0 + https-browserify: 1.0.0 + os-browserify: 0.3.0 + path-browserify: 1.0.1 + process: 0.11.10 + punycode: 2.3.1 + querystring-es3: 0.2.1 + readable-stream: 4.7.0 + stream-browserify: 3.0.0 + stream-http: 3.2.0 + string_decoder: 1.3.0 + timers-browserify: 2.0.12 + tty-browserify: 0.0.1 + url: 0.11.4 + util: 0.12.5 + vm-browserify: 1.1.2 + transitivePeerDependencies: + - '@swc/helpers' dev: true /@rsbuild/plugin-react@1.1.1(@rsbuild/core@1.1.13): @@ -9623,7 +10107,7 @@ packages: deepmerge: 4.3.1 loader-utils: 2.0.4 postcss: 8.5.6 - reduce-configs: 1.1.0 + reduce-configs: 1.1.1 sass-embedded: 1.89.2 dev: true @@ -9632,17 +10116,84 @@ packages: peerDependencies: '@rsbuild/core': 1.x dependencies: - '@rsbuild/core': 1.1.13 - '@rsbuild/plugin-react': 1.1.1(@rsbuild/core@1.1.13) - '@svgr/core': 8.1.0(typescript@5.8.2) - '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0) - '@svgr/plugin-svgo': 8.1.0(@svgr/core@8.1.0)(typescript@5.8.2) - deepmerge: 4.3.1 - loader-utils: 2.0.4 - transitivePeerDependencies: - - supports-color - - typescript - - webpack-hot-middleware + '@rsbuild/core': 1.1.13 + '@rsbuild/plugin-react': 1.1.1(@rsbuild/core@1.1.13) + '@svgr/core': 8.1.0(typescript@5.8.2) + '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0) + '@svgr/plugin-svgo': 8.1.0(@svgr/core@8.1.0)(typescript@5.8.2) + deepmerge: 4.3.1 + loader-utils: 2.0.4 + transitivePeerDependencies: + - supports-color + - typescript + - webpack-hot-middleware + dev: true + + /@rsbuild/plugin-type-check@1.3.2(@rsbuild/core@1.1.13)(typescript@5.8.2): + resolution: {integrity: sha512-8+N0Xbbh6d4yMxD4WeUXIywc72hJgMTdK9TDWuXvpeVfxPgmNTjS5rq0Y2nqhDdwwIzyW8sn3u0U6N7xvX0sIQ==} + peerDependencies: + '@rsbuild/core': 1.x + peerDependenciesMeta: + '@rsbuild/core': + optional: true + dependencies: + '@rsbuild/core': 1.1.13 + deepmerge: 4.3.1 + json5: 2.2.3 + reduce-configs: 1.1.1 + ts-checker-rspack-plugin: 1.2.1(typescript@5.8.2) + transitivePeerDependencies: + - '@rspack/core' + - typescript + dev: true + + /@rsbuild/shared@0.3.11: + resolution: {integrity: sha512-PjjrUe1mstoy7N7A6Xr1i5sAKSGPfNay/cEbRt3SBvdYPOsK87TLE6DS9WtViSp8QYHh97cgJ6z1ufuluElDDw==} + dependencies: + '@rspack/core': 0.5.3 + caniuse-lite: 1.0.30001723 + lodash: 4.17.21 + postcss: 8.5.6 + transitivePeerDependencies: + - '@swc/helpers' + dev: true + + /@rslib/core@0.11.2(@microsoft/api-extractor@7.43.0): + resolution: {integrity: sha512-NubpSx2DF5sSBpzJRQTsS2xFPdC2nCTBTRbQVXUNBYJikmJY6XgI1MU2jPzrecjX7QZOaH8APt2AEiWl0YNlrg==} + engines: {node: '>=16.7.0'} + hasBin: true + peerDependencies: + '@microsoft/api-extractor': ^7 + typescript: 5.8.2 + peerDependenciesMeta: + '@microsoft/api-extractor': + optional: true + typescript: + optional: true + dependencies: + '@microsoft/api-extractor': 7.43.0(@types/node@18.18.9) + '@rsbuild/core': 1.4.16 + rsbuild-plugin-dts: 0.11.2(@microsoft/api-extractor@7.43.0)(@rsbuild/core@1.4.16) + tinyglobby: 0.2.14 + dev: true + + /@rslib/core@0.11.2(typescript@5.8.2): + resolution: {integrity: sha512-NubpSx2DF5sSBpzJRQTsS2xFPdC2nCTBTRbQVXUNBYJikmJY6XgI1MU2jPzrecjX7QZOaH8APt2AEiWl0YNlrg==} + engines: {node: '>=16.7.0'} + hasBin: true + peerDependencies: + '@microsoft/api-extractor': ^7 + typescript: 5.8.2 + peerDependenciesMeta: + '@microsoft/api-extractor': + optional: true + typescript: + optional: true + dependencies: + '@rsbuild/core': 1.4.16 + rsbuild-plugin-dts: 0.11.2(@rsbuild/core@1.4.16)(typescript@5.8.2) + tinyglobby: 0.2.14 + typescript: 5.8.2 dev: true /@rspack/binding-darwin-arm64@0.4.0: @@ -9653,6 +10204,14 @@ packages: dev: true optional: true + /@rspack/binding-darwin-arm64@0.5.3: + resolution: {integrity: sha512-IgGpPtPwwlWkViTbrGBhywohXoGXwMZGZLPLR3tRZY4oPuSo41cwkPAhf2TZtBIfHGbITrmewsck853A4g7poA==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + /@rspack/binding-darwin-arm64@0.6.0: resolution: {integrity: sha512-IVZDiO4SaS4cuVQ7/fTBDjyxLHDJTr6AIwCiwLySdOvMaIYkdkD6REZfGSjnEpcW/9JRozidzJG5qQnMSPRyAg==} cpu: [arm64] @@ -9677,6 +10236,14 @@ packages: dev: true optional: true + /@rspack/binding-darwin-arm64@1.4.11: + resolution: {integrity: sha512-PrmBVhR8MC269jo6uQ+BMy1uwIDx0HAJYLQRQur8gXiehWabUBCRg/d4U9KR7rLzdaSScRyc5JWXR52T7/4MfA==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + /@rspack/binding-darwin-x64@0.4.0: resolution: {integrity: sha512-LRCiMPCbAIwwo0euqao7+8peUXj+qPDSi0nSK2y6wjaXfUVi8FwpWQ+O+B3RH3rpyFBU63IqatC8razalt8JgQ==} cpu: [x64] @@ -9685,6 +10252,14 @@ packages: dev: true optional: true + /@rspack/binding-darwin-x64@0.5.3: + resolution: {integrity: sha512-95lDx4+QTmuGQ3Ilo1BhM22jGHxPAMDvQzBD/4zO1cBtmXrFQuaDVRoM0hwlZDLZwGMP1sSpD5F75kWKhkOTDw==} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + /@rspack/binding-darwin-x64@0.6.0: resolution: {integrity: sha512-aaL8mkmMiBluwcgocDQECwkFZd/AFcf33O/JZbKCZ/nE4P2nTWMSs3IQVCQQMx9AvC/PPkzIbUAMQbSQUm1YJg==} cpu: [x64] @@ -9709,6 +10284,14 @@ packages: dev: true optional: true + /@rspack/binding-darwin-x64@1.4.11: + resolution: {integrity: sha512-YIV8Wzy+JY0SoSsVtN4wxFXOjzxxVPnVXNswrrfqVUTPr9jqGOFYUWCGpbt8lcCgfuBFm6zN8HpOsKm1xUNsVA==} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + /@rspack/binding-linux-arm64-gnu@0.4.0: resolution: {integrity: sha512-trfEUQ7awu6dLWUlIXmSJmwW48lSxEl7kW4FUas/UMNH3/B/wim8TPx6ZuDrCzVhYk5HP7ccjbQg7mnbJ+E48w==} cpu: [arm64] @@ -9717,6 +10300,14 @@ packages: dev: true optional: true + /@rspack/binding-linux-arm64-gnu@0.5.3: + resolution: {integrity: sha512-7ZcsDROYK01FWJ9Nv1Oso7gC3b3aP8FLzbZA7ZWFCPEuBoFmIvCIVqs6DSmmpZW3KSw+XoVMELuEJuTjDi869g==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@rspack/binding-linux-arm64-gnu@0.6.0: resolution: {integrity: sha512-QhZOblnpAzN6JYBVQaFxCmN5glzHH9ei8xQy+ARsGtxLnzovpvOMS3mcBuG6Tp5BSM0xsq3jCNX9AGeSuSt07g==} cpu: [arm64] @@ -9741,6 +10332,14 @@ packages: dev: true optional: true + /@rspack/binding-linux-arm64-gnu@1.4.11: + resolution: {integrity: sha512-ms6uwECUIcu+6e82C5HJhRMHnfsI+l33v7XQezntzRPN0+sG3EpikEoT7SGbgt4vDwaWLR7wS20suN4qd5r3GA==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@rspack/binding-linux-arm64-musl@0.4.0: resolution: {integrity: sha512-ubIcXmRopSJ6n+F/cRXDfGSgK847OX0CPeSSL4tiJ4dah5lz8iISZ9GLrNHJQ+SvphOH8F9lDpp8h2iwVt0Pbw==} cpu: [arm64] @@ -9749,6 +10348,14 @@ packages: dev: true optional: true + /@rspack/binding-linux-arm64-musl@0.5.3: + resolution: {integrity: sha512-IBfVGpycRrLbyCWzokzeFIfK+yII68w1WOx2iCoR+tPUKa3M7WAZjrbVB33PHxGKXeF+xX7Lzm50hi4uTK8L6g==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@rspack/binding-linux-arm64-musl@0.6.0: resolution: {integrity: sha512-Baei3WNRieWOzbVWiYurwTCP91booKpW7Ba6dlIG2dZriAnbIJakviFM1FI9sCXs10/O8bpqHZHYAk3tfwCFNQ==} cpu: [arm64] @@ -9773,6 +10380,14 @@ packages: dev: true optional: true + /@rspack/binding-linux-arm64-musl@1.4.11: + resolution: {integrity: sha512-9evq0DOdxMN/H8VM8ZmyY9NSuBgILNVV6ydBfVPMHPx4r1E7JZGpWeKDegZcS5Erw3sS9kVSIxyX78L5PDzzKw==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@rspack/binding-linux-x64-gnu@0.4.0: resolution: {integrity: sha512-Q3mqjgV2k68F8VuzZwaqhHggBhcSlD0N+vvtFP8BxXIX4Pdkmk2shwwVjniZmY+oKB16dbSmXxShdMlCE3CCng==} cpu: [x64] @@ -9781,6 +10396,14 @@ packages: dev: true optional: true + /@rspack/binding-linux-x64-gnu@0.5.3: + resolution: {integrity: sha512-EiVsp0yaGBmnMsS1U6Z5bitl2AjiVqFN3ArdIDZLlxgpVUHaR1ObXIkVqsX/VK5Jgytv1H7iOmtOnkOqyFmxPw==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@rspack/binding-linux-x64-gnu@0.6.0: resolution: {integrity: sha512-WfYz4GMjUIjoYrp6OrrQn9U1Zf6xaqvNKV4bvPHxNsewiUViXJuZ32ksqkk8uZ0lEQ3qPO9mk8B7cfUC8m715g==} cpu: [x64] @@ -9805,6 +10428,14 @@ packages: dev: true optional: true + /@rspack/binding-linux-x64-gnu@1.4.11: + resolution: {integrity: sha512-bHYFLxPPYBOSaHdQbEoCYGMQ1gOrEWj7Mro/DLfSHZi1a0okcQ2Q1y0i1DczReim3ZhLGNrK7k1IpFXCRbAobQ==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@rspack/binding-linux-x64-musl@0.4.0: resolution: {integrity: sha512-5l6Q00yZDIeT8T1ruxEfF1Wj3m3SqnSHrPFiUqYydmgmNll1iCCRC2AmGVsmAACDQ7rg9z8BhhHtKukNBvmwTQ==} cpu: [x64] @@ -9813,6 +10444,14 @@ packages: dev: true optional: true + /@rspack/binding-linux-x64-musl@0.5.3: + resolution: {integrity: sha512-PZbmHZ/sFBC0W2vNNmMgeVORijAxhdkaU0QS95ltacO+bU8npcNb+01QgRzJovuhOfiT7HXDUmH7K0mrUqXpFg==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@rspack/binding-linux-x64-musl@0.6.0: resolution: {integrity: sha512-EPYzBcAsKNpBPb8P8uTUnptX36z6S8rx768cPmgI0BHzjAIyfANqB9b+qQdpZ0oOwMVef81abGcjoa/TlyjRQg==} cpu: [x64] @@ -9837,6 +10476,23 @@ packages: dev: true optional: true + /@rspack/binding-linux-x64-musl@1.4.11: + resolution: {integrity: sha512-wrm4E7q2k4+cwT6Uhp6hIQ3eUe/YoaUttj6j5TqHYZX6YeLrNPtD9+ne6lQQ17BV8wmm6NZsmoFIJ5xIptpRhQ==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rspack/binding-wasm32-wasi@1.4.11: + resolution: {integrity: sha512-hiYxHZjaZ17wQtXyLCK0IdtOvMWreGVTiGsaHCxyeT+SldDG+r16bXNjmlqfZsjlfl1mkAqKz1dg+mMX28OTqw==} + cpu: [wasm32] + requiresBuild: true + dependencies: + '@napi-rs/wasm-runtime': 1.1.0 + dev: true + optional: true + /@rspack/binding-win32-arm64-msvc@0.4.0: resolution: {integrity: sha512-k96/PSkVT/VEvqHygenzgr8Z7n4SuCSKONVFB5zazWDPaJwCqaqANQuvX0PbuazVy6PbiLE/YI0+4TDjL7dHCw==} cpu: [arm64] @@ -9845,6 +10501,14 @@ packages: dev: true optional: true + /@rspack/binding-win32-arm64-msvc@0.5.3: + resolution: {integrity: sha512-bP1tgwQuTe0YSVpe73qEPXdt2rZGUpCUG3nFW+Ve27CJtq6btLqdcnnNEx2cAKs12ArN4H36U+BXfwJDp9/DaQ==} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@rspack/binding-win32-arm64-msvc@0.6.0: resolution: {integrity: sha512-H3RHF8Jl6JX2nf1GnyZEAFMgODZitSu+4xduHf3pYj5amPMyt8gExgtkqQwc+ktuOcAY6Kxn85kvF1kyZKutWQ==} cpu: [arm64] @@ -9869,6 +10533,14 @@ packages: dev: true optional: true + /@rspack/binding-win32-arm64-msvc@1.4.11: + resolution: {integrity: sha512-+HF/mnjmTr8PC1dccRt1bkrD2tPDGeqvXC1BBLYd/Klq1VbtIcnrhfmvQM6KaXbiLcY9VWKzcZPOTmnyZ8TaHQ==} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@rspack/binding-win32-ia32-msvc@0.4.0: resolution: {integrity: sha512-DmC7MumePZuss1AigT4FaIbFPZFtZXdcWBhD7dF88CvsvQRVtOcMujtByWkkNJ6ZDp+IUHyXOtPQWr1iRjDOCQ==} cpu: [ia32] @@ -9877,6 +10549,14 @@ packages: dev: true optional: true + /@rspack/binding-win32-ia32-msvc@0.5.3: + resolution: {integrity: sha512-XKMNgkc5ScDKzt2xFQWD7ELefaEQtm9+1/7xhftDAxAC3AQELC0NqL5qAWpgSXEgVIjCW8r7xiwX5mqEEqqiuw==} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@rspack/binding-win32-ia32-msvc@0.6.0: resolution: {integrity: sha512-z3XFtRPUW+WnKmjkxGQQMOd+v8LMTjcGyDPTajSG1PO5u1cAb/slm2a4QxqxSrBeDdYuHpscxU188EM1RzPqTA==} cpu: [ia32] @@ -9901,6 +10581,14 @@ packages: dev: true optional: true + /@rspack/binding-win32-ia32-msvc@1.4.11: + resolution: {integrity: sha512-EU2fQGwrRfwFd/tcOInlD0jy6gNQE4Q3Ayj0Is+cX77sbhPPyyOz0kZDEaQ4qaN2VU8w4Hu/rrD7c0GAKLFvCw==} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@rspack/binding-win32-x64-msvc@0.4.0: resolution: {integrity: sha512-F3pAxz1GakFkyq8S+iPTqVkvIFnHG9te36wLW+tIzY4oC0vNPsEVunBp6NrYHzTaOf3aBZ+bvsLZyfvg+pKxqA==} cpu: [x64] @@ -9909,6 +10597,14 @@ packages: dev: true optional: true + /@rspack/binding-win32-x64-msvc@0.5.3: + resolution: {integrity: sha512-B0iosD3cTXErnlqnOawn4DqfrO2QaY135vKqBrbqTfm9Zr4ftbqvp39nL9Qot+1QuixZdYwwF/NqBvRoFd9nig==} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@rspack/binding-win32-x64-msvc@0.6.0: resolution: {integrity: sha512-KKymC7zn3VERwXRS2BxdW5d2TNkaF/nRVcsgmH4EzJsGQo1lshGVya3B6Cxy/7M8EauCx7N2fBl3GrlfQfNgXw==} cpu: [x64] @@ -9933,6 +10629,14 @@ packages: dev: true optional: true + /@rspack/binding-win32-x64-msvc@1.4.11: + resolution: {integrity: sha512-1Nc5ZzWqfvE+iJc47qtHFzYYnHsC3awavXrCo74GdGip1vxtksM3G30BlvAQHHVtEmULotWqPbjZpflw/Xk9Ag==} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@rspack/binding@0.4.0: resolution: {integrity: sha512-SpjaySPGmyRnRHrQItl9W9NGE2WoHsUPnererZaLK+pfVgO92q9uoEoKl3EBNNI9uttG132SCz4cx1zXwN394w==} optionalDependencies: @@ -9947,6 +10651,20 @@ packages: '@rspack/binding-win32-x64-msvc': 0.4.0 dev: true + /@rspack/binding@0.5.3: + resolution: {integrity: sha512-bwxjp2mvSGGgVRk1D+dwilwaSEvzhQTlhe3+f2h+cjampJpEa72jle1T4bpXTOOMM0JRq06AzUWlzoMxKn+JKA==} + optionalDependencies: + '@rspack/binding-darwin-arm64': 0.5.3 + '@rspack/binding-darwin-x64': 0.5.3 + '@rspack/binding-linux-arm64-gnu': 0.5.3 + '@rspack/binding-linux-arm64-musl': 0.5.3 + '@rspack/binding-linux-x64-gnu': 0.5.3 + '@rspack/binding-linux-x64-musl': 0.5.3 + '@rspack/binding-win32-arm64-msvc': 0.5.3 + '@rspack/binding-win32-ia32-msvc': 0.5.3 + '@rspack/binding-win32-x64-msvc': 0.5.3 + dev: true + /@rspack/binding@0.6.0: resolution: {integrity: sha512-61B83pZ/eYq7j896b4N8z+RpTeX1yh/v0Im+cissvJ+6d7h43AGW/ir2e5/s4avYJvoUcxQQl/BApwokrZJzzw==} optionalDependencies: @@ -9989,6 +10707,21 @@ packages: '@rspack/binding-win32-x64-msvc': 1.3.15 dev: true + /@rspack/binding@1.4.11: + resolution: {integrity: sha512-maGl/zRwnl0QVwkBCkgjn5PH20L9HdlRIdkYhEsfTepy5x2QZ0ti/0T49djjTJQrqb+S1i6wWQymMMMMMsxx6Q==} + optionalDependencies: + '@rspack/binding-darwin-arm64': 1.4.11 + '@rspack/binding-darwin-x64': 1.4.11 + '@rspack/binding-linux-arm64-gnu': 1.4.11 + '@rspack/binding-linux-arm64-musl': 1.4.11 + '@rspack/binding-linux-x64-gnu': 1.4.11 + '@rspack/binding-linux-x64-musl': 1.4.11 + '@rspack/binding-wasm32-wasi': 1.4.11 + '@rspack/binding-win32-arm64-msvc': 1.4.11 + '@rspack/binding-win32-ia32-msvc': 1.4.11 + '@rspack/binding-win32-x64-msvc': 1.4.11 + dev: true + /@rspack/core@0.4.0: resolution: {integrity: sha512-GY8lsCGRzj1mj5q1Ss5kjazpSisT/HJdXpIU730pG4Os6mE2sGYVUJ0ncYRv/DEBcL1c2dVr5vtMKTHlNYRlfg==} engines: {node: '>=16.0.0'} @@ -10011,6 +10744,31 @@ packages: zod-validation-error: 1.2.0(zod@3.22.4) dev: true + /@rspack/core@0.5.3: + resolution: {integrity: sha512-/WCMUCwcduSrx0za1kVoN3Fdkf/fDK3v6fgvJeeNc+l7/mGttSROUmlVidmz7eyQuD9itr947NB5U087Y99dag==} + engines: {node: '>=16.0.0'} + peerDependencies: + '@swc/helpers': '>=0.5.1' + peerDependenciesMeta: + '@swc/helpers': + optional: true + dependencies: + '@module-federation/runtime-tools': 0.0.8 + '@rspack/binding': 0.5.3 + browserslist: 4.25.0 + enhanced-resolve: 5.12.0 + events: 3.3.0 + graceful-fs: 4.2.10 + json-parse-even-better-errors: 3.0.2 + neo-async: 2.6.2 + tapable: 2.2.1 + terminal-link: 2.1.1 + watchpack: 2.4.4 + webpack-sources: 3.2.3 + zod: 3.25.76 + zod-validation-error: 1.3.1(zod@3.25.76) + dev: true + /@rspack/core@0.6.0: resolution: {integrity: sha512-8agW+qqyeW9pHvBexb4hhZuR0D3H0vfZ3jvxO7rinXIyxoQt1u/eRkpd/j+J5JQvpbbu6jhvcR5njd8Wb+nQNA==} engines: {node: '>=16.0.0'} @@ -10065,11 +10823,30 @@ packages: '@rspack/lite-tapable': 1.0.1 dev: true + /@rspack/core@1.4.11(@swc/helpers@0.5.17): + resolution: {integrity: sha512-JtKnL6p7Kc/YgWQJF3Woo4OccbgKGyT/4187W4dyex8BMkdQcbqCNIdi6dFk02hwQzxpOOxRSBI4hlGRbz7oYQ==} + engines: {node: '>=16.0.0'} + peerDependencies: + '@swc/helpers': '>=0.5.1' + peerDependenciesMeta: + '@swc/helpers': + optional: true + dependencies: + '@module-federation/runtime-tools': 0.17.1 + '@rspack/binding': 1.4.11 + '@rspack/lite-tapable': 1.0.1 + '@swc/helpers': 0.5.17 + dev: true + /@rspack/lite-tapable@1.0.1: resolution: {integrity: sha512-VynGOEsVw2s8TAlLf/uESfrgfrq2+rcXB1muPJYBWbsm1Oa6r5qVQhjA5ggM6z/coYPrsVMgovl3Ff7Q7OCp1w==} engines: {node: '>=16.0.0'} dev: true + /@rspack/lite-tapable@1.1.0: + resolution: {integrity: sha512-E2B0JhYFmVAwdDiG14+DW0Di4Ze4Jg10Pc4/lILUrd5DRCaklduz2OvJ5HYQ6G+hd+WTzqQb3QnDNfK4yvAFYw==} + dev: true + /@rspack/plugin-react-refresh@1.0.3(react-refresh@0.16.0): resolution: {integrity: sha512-gGK197oIZaPFOTYZkWHZMWRdDlu03zIA3zcYuTKn5Ru6FyuQQu3KjprwDORTcYNHXZw188Exh3uhplM/d2ltIQ==} peerDependencies: @@ -10167,7 +10944,6 @@ packages: jsonpath-plus: 10.2.0 transitivePeerDependencies: - '@types/node' - dev: false /@rushstack/lookup-by-path@0.5.0(@types/node@18.18.9): resolution: {integrity: sha512-5+rcRXexVn9HWCmWC0ju8MpzcsyqXBvElAryDYYe5iID1fON+tuBLKmj9bLFZdJGQ76wTQ2iwRB81uSALyJ2mQ==} @@ -10196,6 +10972,23 @@ packages: z-schema: 5.0.5 dev: false + /@rushstack/node-core-library@4.0.2(@types/node@18.18.9): + resolution: {integrity: sha512-hyES82QVpkfQMeBMteQUnrhASL/KHPhd7iJ8euduwNJG4mu2GSOKybf0rOEjOm1Wz7CwJEUm9y0yD7jg2C1bfg==} + peerDependencies: + '@types/node': 18.18.9 + peerDependenciesMeta: + '@types/node': + optional: true + dependencies: + '@types/node': 18.18.9 + fs-extra: 7.0.1 + import-lazy: 4.0.0 + jju: 1.4.0 + resolve: 1.22.10 + semver: 7.5.4 + z-schema: 5.0.5 + dev: true + /@rushstack/node-core-library@5.10.1(@types/node@18.18.9): resolution: {integrity: sha512-BSb/KcyBHmUQwINrgtzo6jiH0HlGFmrUy33vO6unmceuVKTEyL2q+P0fQq2oB5hvXVWOEUhxB2QvlkZluvUEmg==} peerDependencies: @@ -10235,14 +11028,19 @@ packages: semver: 7.5.4 transitivePeerDependencies: - '@types/node' - dev: false + + /@rushstack/rig-package@0.5.2: + resolution: {integrity: sha512-mUDecIJeH3yYGZs2a48k+pbhM6JYwWlgjs2Ca5f2n1G2/kgdgP9D/07oglEGf6mRyXEnazhEENeYTSNDRCwdqA==} + dependencies: + resolve: 1.22.10 + strip-json-comments: 3.1.1 + dev: true /@rushstack/rig-package@0.5.3: resolution: {integrity: sha512-olzSSjYrvCNxUFZowevC3uz8gvKr3WTpHQ7BkpjtRpA3wK+T0ybep/SRUMfr195gBzJm5gaXw0ZMgjIyHqJUow==} dependencies: resolve: 1.22.10 strip-json-comments: 3.1.1 - dev: false /@rushstack/rush-amazon-s3-build-cache-plugin@5.147.2(@types/node@18.18.9): resolution: {integrity: sha512-/6hss9g8+6CWc+by4GUizRmX6YCQMF+uhf/DvRf0nNcGZWeVsfTx53dyaTOIpcadP++QPamzC0CTpGpbkf8hfg==} @@ -10254,7 +11052,6 @@ packages: transitivePeerDependencies: - '@types/node' - supports-color - dev: false /@rushstack/rush-azure-storage-build-cache-plugin@5.147.2(@types/node@18.18.9): resolution: {integrity: sha512-xo+7hqYMClvQn7BRT/RYfDeb7JdI5lhRlcEpKyqsRCxM0ndcj0CvyatrnrIKxlXwhWX6ZwXKpII3iGJYyRUZSQ==} @@ -10267,7 +11064,6 @@ packages: transitivePeerDependencies: - '@types/node' - supports-color - dev: false /@rushstack/rush-http-build-cache-plugin@5.147.2(@types/node@18.18.9): resolution: {integrity: sha512-Oho6pzAxGWsHhF2xEtJrdmo1WvJseGCI8+4aAeCcU8XG09mOvmAqknmsLwYXow/8hHHqvpCSvxtrLXMZvcm69g==} @@ -10278,7 +11074,6 @@ packages: transitivePeerDependencies: - '@types/node' - supports-color - dev: false /@rushstack/rush-sdk@5.147.2(@types/node@18.18.9): resolution: {integrity: sha512-WY2fYcUPVUXYQTtub0PwOT7OqRbGxEXa7QzoeoDdOmlS4WVWkVkGrANaWHyXFo270CUog/wpLOQRnntFNxRQQQ==} @@ -10299,7 +11094,19 @@ packages: '@rushstack/terminal': 0.14.4(@types/node@18.18.9) transitivePeerDependencies: - '@types/node' - dev: false + + /@rushstack/terminal@0.10.0(@types/node@18.18.9): + resolution: {integrity: sha512-UbELbXnUdc7EKwfH2sb8ChqNgapUOdqcCIdQP4NGxBpTZV2sQyeekuK3zmfQSa/MN+/7b4kBogl2wq0vpkpYGw==} + peerDependencies: + '@types/node': 18.18.9 + peerDependenciesMeta: + '@types/node': + optional: true + dependencies: + '@rushstack/node-core-library': 4.0.2(@types/node@18.18.9) + '@types/node': 18.18.9 + supports-color: 8.1.1 + dev: true /@rushstack/terminal@0.14.4(@types/node@18.18.9): resolution: {integrity: sha512-NxACqERW0PHq8Rpq1V6v5iTHEwkRGxenjEW+VWqRYQ8T9puUzgmGHmEZUaUEDHAe9Qyvp0/Ew04sAiQw9XjhJg==} @@ -10317,6 +11124,17 @@ packages: resolution: {integrity: sha512-H8i0OinWsdKM1TKEKPeRRTw85e+/7AIFpxm7q1blceZJhuxRBjCGAUZvQXZK4CMLx75xPqh/h1t5WHwFmElAPA==} dev: false + /@rushstack/ts-command-line@4.19.1(@types/node@18.18.9): + resolution: {integrity: sha512-J7H768dgcpG60d7skZ5uSSwyCZs/S2HrWP1Ds8d1qYAyaaeJmpmmLr9BVw97RjFzmQPOYnoXcKA4GkqDCkduQg==} + dependencies: + '@rushstack/terminal': 0.10.0(@types/node@18.18.9) + '@types/argparse': 1.0.38 + argparse: 1.0.10 + string-argv: 0.3.2 + transitivePeerDependencies: + - '@types/node' + dev: true + /@rushstack/ts-command-line@4.23.2(@types/node@18.18.9): resolution: {integrity: sha512-JJ7XZX5K3ThBBva38aomgsPv1L7FV6XmSOcR6HtM7HDFZJkepqT65imw26h9ggGqMjsY0R9jcl30tzKcVj9aOQ==} dependencies: @@ -10326,7 +11144,6 @@ packages: string-argv: 0.3.2 transitivePeerDependencies: - '@types/node' - dev: false /@shikijs/core@3.6.0: resolution: {integrity: sha512-9By7Xb3olEX0o6UeJyPLI1PE1scC4d3wcVepvtv2xbuN9/IThYN4Wcwh24rcFeASzPam11MCq8yQpwwzCgSBRw==} @@ -10352,10 +11169,10 @@ packages: '@shikijs/vscode-textmate': 10.0.2 dev: false - /@shikijs/langs@3.12.2: - resolution: {integrity: sha512-bVx5PfuZHDSHoBal+KzJZGheFuyH4qwwcwG/n+MsWno5cTlKmaNtTsGzJpHYQ8YPbB5BdEdKU1rga5/6JGY8ww==} + /@shikijs/langs@3.3.0: + resolution: {integrity: sha512-zt6Kf/7XpBQKSI9eqku+arLkAcDQ3NHJO6zFjiChI8w0Oz6Jjjay7pToottjQGjSDCFk++R85643WbyINcuL+g==} dependencies: - '@shikijs/types': 3.12.2 + '@shikijs/types': 3.3.0 dev: false /@shikijs/langs@3.6.0: @@ -10364,14 +11181,20 @@ packages: '@shikijs/types': 3.6.0 dev: false + /@shikijs/themes@3.3.0: + resolution: {integrity: sha512-tXeCvLXBnqq34B0YZUEaAD1lD4lmN6TOHAhnHacj4Owh7Ptb/rf5XCDeROZt2rEOk5yuka3OOW2zLqClV7/SOg==} + dependencies: + '@shikijs/types': 3.3.0 + dev: false + /@shikijs/themes@3.6.0: resolution: {integrity: sha512-Fq2j4nWr1DF4drvmhqKq8x5vVQ27VncF8XZMBuHuQMZvUSS3NBgpqfwz/FoGe36+W6PvniZ1yDlg2d4kmYDU6w==} dependencies: '@shikijs/types': 3.6.0 dev: false - /@shikijs/types@3.12.2: - resolution: {integrity: sha512-K5UIBzxCyv0YoxN3LMrKB9zuhp1bV+LgewxuVwHdl4Gz5oePoUFrr9EfgJlGlDeXCU1b/yhdnXeuRvAnz8HN8Q==} + /@shikijs/types@3.3.0: + resolution: {integrity: sha512-KPCGnHG6k06QG/2pnYGbFtFvpVJmC3uIpXrAiPrawETifujPBv0Se2oUxm5qYgjCvGJS9InKvjytOdN+bGuX+Q==} dependencies: '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 @@ -10395,7 +11218,6 @@ packages: /@sindresorhus/is@0.14.0: resolution: {integrity: sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==} engines: {node: '>=6'} - dev: false /@storybook/addon-actions@7.6.20: resolution: {integrity: sha512-c/GkEQ2U9BC/Ew/IMdh+zvsh4N6y6n7Zsn2GIhJgcu9YEAa5aF2a9/pNgEGBMOABH959XE8DAOMERw/5qiLR8g==} @@ -10465,6 +11287,23 @@ packages: - supports-color dev: true + /@storybook/addon-docs@8.6.14(@types/react@18.2.37)(storybook@7.6.20): + resolution: {integrity: sha512-Obpd0OhAF99JyU5pp5ci17YmpcQtMNgqW2pTXV8jAiiipWpwO++hNDeQmLmlSXB399XjtRDOcDVkoc7rc6JzdQ==} + peerDependencies: + storybook: ^8.6.14 + dependencies: + '@mdx-js/react': 3.1.1(@types/react@18.2.37)(react@18.2.0) + '@storybook/blocks': 8.6.14(react-dom@18.2.0)(react@18.2.0)(storybook@7.6.20) + '@storybook/csf-plugin': 8.6.14(storybook@7.6.20) + '@storybook/react-dom-shim': 8.6.14(react-dom@18.2.0)(react@18.2.0)(storybook@7.6.20) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + storybook: 7.6.20 + ts-dedent: 2.2.0 + transitivePeerDependencies: + - '@types/react' + dev: true + /@storybook/addon-essentials@7.6.20(@types/react-dom@18.2.15)(@types/react@18.2.37)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-hCupSOiJDeOxJKZSgH0x5Mb2Xqii6mps21g5hpxac1XjhQtmGflShxi/xOHhK3sNqrbgTSbScfpUP3hUlZO/2Q==} peerDependencies: @@ -10601,6 +11440,25 @@ packages: - supports-color dev: true + /@storybook/blocks@8.6.14(react-dom@18.2.0)(react@18.2.0)(storybook@7.6.20): + resolution: {integrity: sha512-rBMHAfA39AGHgkrDze4RmsnQTMw1ND5fGWobr9pDcJdnDKWQWNRD7Nrlxj0gFlN3n4D9lEZhWGdFrCbku7FVAQ==} + peerDependencies: + react: 18.2.0 + react-dom: 18.2.0 + storybook: ^8.6.14 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + dependencies: + '@storybook/icons': 1.6.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + storybook: 7.6.20 + ts-dedent: 2.2.0 + dev: true + /@storybook/builder-manager@7.6.20: resolution: {integrity: sha512-e2GzpjLaw6CM/XSmc4qJRzBF8GOoOyotyu3JrSPTYOt4RD8kjUsK4QlismQM1DQRu8i39aIexxmRbiJyD74xzQ==} dependencies: @@ -10775,6 +11633,14 @@ packages: - '@types/react-dom' dev: true + /@storybook/components@8.6.14(storybook@7.6.20): + resolution: {integrity: sha512-HNR2mC5I4Z5ek8kTrVZlIY/B8gJGs5b3XdZPBPBopTIN6U/YHXiDyOjY3JlaS4fSG1fVhp/Qp1TpMn1w/9m1pw==} + peerDependencies: + storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 + dependencies: + storybook: 7.6.20 + dev: true + /@storybook/core-client@7.6.20: resolution: {integrity: sha512-upQuQQinLmlOPKcT8yqXNtwIucZ4E4qegYZXH5HXRWoLAL6GQtW7sUVSIuFogdki8OXRncr/dz8OA+5yQyYS4w==} dependencies: @@ -10869,6 +11735,15 @@ packages: - utf-8-validate dev: true + /@storybook/core-webpack@8.6.14(storybook@7.6.20): + resolution: {integrity: sha512-iG7r8osNKabSGBbuJuSeMWKbU+ilt5PvzTYkClcYaagla/DliXkXvfywA6jOugVk/Cpx+c6tVKlPfjLcaQHwmw==} + peerDependencies: + storybook: ^8.6.14 + dependencies: + storybook: 7.6.20 + ts-dedent: 2.2.0 + dev: true + /@storybook/csf-plugin@7.6.20: resolution: {integrity: sha512-dzBzq0dN+8WLDp6NxYS4G7BCe8+vDeDRBRjHmM0xb0uJ6xgQViL8SDplYVSGnk3bXE/1WmtvyRzQyTffBnaj9Q==} dependencies: @@ -10878,6 +11753,15 @@ packages: - supports-color dev: true + /@storybook/csf-plugin@8.6.14(storybook@7.6.20): + resolution: {integrity: sha512-dErtc9teAuN+eelN8FojzFE635xlq9cNGGGEu0WEmMUQ4iJ8pingvBO1N8X3scz4Ry7KnxX++NNf3J3gpxS8qQ==} + peerDependencies: + storybook: ^8.6.14 + dependencies: + storybook: 7.6.20 + unplugin: 1.16.1 + dev: true + /@storybook/csf-tools@7.6.20: resolution: {integrity: sha512-rwcwzCsAYh/m/WYcxBiEtLpIW5OH1ingxNdF/rK9mtGWhJxXRDV8acPkFrF8rtFWIVKoOCXu5USJYmc3f2gdYQ==} dependencies: @@ -10923,6 +11807,17 @@ packages: resolution: {integrity: sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==} dev: true + /@storybook/icons@1.6.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-hcFZIjW8yQz8O8//2WTIXylm5Xsgc+lW9ISLgUk1xGmptIJQRdlhVIXCpSyLrQaaRiyhQRaVg7l3BD9S216BHw==} + engines: {node: '>=14.0.0'} + peerDependencies: + react: 18.2.0 + react-dom: 18.2.0 + dependencies: + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: true + /@storybook/instrumenter@7.6.20: resolution: {integrity: sha512-jqRpSEy+4rVXXgixMm7CPapZrTd4WqL0lkxLCzLC3BT6fom5MVUb6BTqWx3agYcsZR2yJjg6bR6CM44QAqknpQ==} dependencies: @@ -10957,6 +11852,14 @@ packages: - react-dom dev: true + /@storybook/manager-api@8.6.14(storybook@7.6.20): + resolution: {integrity: sha512-ez0Zihuy17udLbfHZQXkGqwtep0mSGgHcNzGN7iZrMP1m+VmNo+7aGCJJdvXi7+iU3yq8weXSQFWg5DqWgLS7g==} + peerDependencies: + storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 + dependencies: + storybook: 7.6.20 + dev: true + /@storybook/manager@7.6.20: resolution: {integrity: sha512-0Cf6WN0t7yEG2DR29tN5j+i7H/TH5EfPppg9h9/KiQSoFHk+6KLoy2p5do94acFU+Ro4+zzxvdCGbcYGKuArpg==} dev: true @@ -10992,10 +11895,37 @@ packages: util-deprecate: 1.0.2 dev: true + /@storybook/preview-api@8.6.14(storybook@7.6.20): + resolution: {integrity: sha512-2GhcCd4dNMrnD7eooEfvbfL4I83qAqEyO0CO7JQAmIO6Rxb9BsOLLI/GD5HkvQB73ArTJ+PT50rfaO820IExOQ==} + peerDependencies: + storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 + dependencies: + storybook: 7.6.20 + dev: true + /@storybook/preview@7.6.20: resolution: {integrity: sha512-cxYlZ5uKbCYMHoFpgleZqqGWEnqHrk5m5fT8bYSsDsdQ+X5wPcwI/V+v8dxYAdQcMphZVIlTjo6Dno9WG8qmVA==} dev: true + /@storybook/react-docgen-typescript-plugin@1.0.1(typescript@5.8.2)(webpack@5.91.0): + resolution: {integrity: sha512-dqbHa+5gaxaklFCuV1WTvljVPTo3QIJgpW4Ln+QeME7osPZUnUhjN2/djvo+sxrWUrTTuqX5jkn291aDngu9Tw==} + peerDependencies: + typescript: 5.8.2 + webpack: '>= 4' + dependencies: + debug: 4.3.3 + endent: 2.1.0 + find-cache-dir: 3.3.2 + flat-cache: 3.2.0 + micromatch: 4.0.8 + react-docgen-typescript: 2.4.0(typescript@5.8.2) + tslib: 2.8.1 + typescript: 5.8.2 + webpack: 5.91.0(esbuild@0.18.20) + transitivePeerDependencies: + - supports-color + dev: true + /@storybook/react-dom-shim@7.6.20(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-SRvPDr9VWcS24ByQOVmbfZ655y5LvjXRlsF1I6Pr9YZybLfYbu3L5IicfEHT4A8lMdghzgbPFVQaJez46DTrkg==} peerDependencies: @@ -11006,6 +11936,18 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: true + /@storybook/react-dom-shim@8.6.14(react-dom@18.2.0)(react@18.2.0)(storybook@7.6.20): + resolution: {integrity: sha512-0hixr3dOy3f3M+HBofp3jtMQMS+sqzjKNgl7Arfuj3fvjmyXOks/yGjDImySR4imPtEllvPZfhiQNlejheaInw==} + peerDependencies: + react: 18.2.0 + react-dom: 18.2.0 + storybook: ^8.6.14 + dependencies: + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + storybook: 7.6.20 + dev: true + /@storybook/react-vite@7.6.20(react-dom@18.2.0)(react@18.2.0)(typescript@5.8.2)(vite@4.5.14): resolution: {integrity: sha512-uKuBFyGPZxpfR8vpDU/2OE9v7iTaxwL7ldd7k1swYd1rTSAPacTnEHSMl1R5AjUhkdI7gRmGN9q7qiVfK2XJCA==} engines: {node: '>=16'} @@ -11073,6 +12015,34 @@ packages: - supports-color dev: true + /@storybook/react@8.6.14(@storybook/test@7.6.20)(react-dom@18.2.0)(react@18.2.0)(storybook@7.6.20)(typescript@5.8.2): + resolution: {integrity: sha512-BOepx5bBFwl/CPI+F+LnmMmsG1wQYmrX/UQXgUbHQUU9Tj7E2ndTnNbpIuSLc8IrM03ru+DfwSg1Co3cxWtT+g==} + engines: {node: '>=18.0.0'} + peerDependencies: + '@storybook/test': 8.6.14 + react: 18.2.0 + react-dom: 18.2.0 + storybook: ^8.6.14 + typescript: 5.8.2 + peerDependenciesMeta: + '@storybook/test': + optional: true + typescript: + optional: true + dependencies: + '@storybook/components': 8.6.14(storybook@7.6.20) + '@storybook/global': 5.0.0 + '@storybook/manager-api': 8.6.14(storybook@7.6.20) + '@storybook/preview-api': 8.6.14(storybook@7.6.20) + '@storybook/react-dom-shim': 8.6.14(react-dom@18.2.0)(react@18.2.0)(storybook@7.6.20) + '@storybook/test': 7.6.20 + '@storybook/theming': 8.6.14(storybook@7.6.20) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + storybook: 7.6.20 + typescript: 5.8.2 + dev: true + /@storybook/router@7.6.20: resolution: {integrity: sha512-mCzsWe6GrH47Xb1++foL98Zdek7uM5GhaSlrI7blWVohGa0qIUYbfJngqR4ZsrXmJeeEvqowobh+jlxg3IJh+w==} dependencies: @@ -11128,6 +12098,14 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: true + /@storybook/theming@8.6.14(storybook@7.6.20): + resolution: {integrity: sha512-r4y+LsiB37V5hzpQo+BM10PaCsp7YlZ0YcZzQP1OCkPlYXmUAFy2VvDKaFRpD8IeNPKug2u4iFm/laDEbs03dg==} + peerDependencies: + storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 + dependencies: + storybook: 7.6.20 + dev: true + /@storybook/types@7.6.20: resolution: {integrity: sha512-GncdY3x0LpbhmUAAJwXYtJDUQEwfF175gsjH0/fxPkxPoV7Sef9TM41jQLJW/5+6TnZoCZP/+aJZTJtq3ni23Q==} dependencies: @@ -11309,7 +12287,6 @@ packages: engines: {node: '>=6'} dependencies: defer-to-connect: 1.1.3 - dev: false /@tailwindcss/forms@0.5.10(tailwindcss@3.3.7): resolution: {integrity: sha512-utI1ONF6uf/pPNO68kmN1b8rEwNXv3czukalo8VtJH8ksIkZXr3Q3VYudZLkCsDd4Wku120uF02hYK25XGPorw==} @@ -11504,6 +12481,14 @@ packages: '@turf/meta': 6.5.0 dev: false + /@tybys/wasm-util@0.10.1: + resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} + requiresBuild: true + dependencies: + tslib: 2.8.1 + dev: true + optional: true + /@tybys/wasm-util@0.9.0: resolution: {integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==} requiresBuild: true @@ -11521,7 +12506,6 @@ packages: /@types/argparse@1.0.38: resolution: {integrity: sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==} - dev: false /@types/aria-query@5.0.4: resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} @@ -11878,6 +12862,10 @@ packages: '@types/unist': 3.0.3 dev: false + /@types/html-minifier-terser@7.0.2: + resolution: {integrity: sha512-mm2HqV22l8lFQh4r2oSsOEVea+m0qqxEmwpc9kC1p/XzmjLWrReR9D/GRs8Pex2NX/imyEH9c5IU/7tMBQCHOA==} + dev: true + /@types/http-errors@2.0.5: resolution: {integrity: sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==} dev: true @@ -11970,7 +12958,6 @@ packages: /@types/minimatch@3.0.5: resolution: {integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==} - dev: false /@types/minimatch@5.1.2: resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} @@ -12102,7 +13089,7 @@ packages: resolution: {integrity: sha512-b3nLFGaGkJ9rzOcuXRfHkZMdjsawuDD0ENL9fzTophtBg8FJHSGbH7daXkEpcwy3v7Xol3pAvsmlYyFhR4pqJw==} dependencies: '@types/node': 18.18.9 - '@types/unist': 2.0.11 + '@types/unist': 3.0.3 '@types/vfile-message': 2.0.0 dev: true @@ -12680,7 +13667,6 @@ packages: tslib: 2.8.1 transitivePeerDependencies: - supports-color - dev: false /@ungap/structured-clone@1.3.0: resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} @@ -12840,24 +13826,24 @@ packages: dev: false optional: true - /@visactor/vchart@1.13.8: - resolution: {integrity: sha512-g8GacKxDvxUiuT4kW83u5vrAoAvpJ0+yca4IUYvdSTxdYXzipJEgiNmSnwd46GP8eBKJj36ZmqzEhLVzPJ+/Pw==} + /@visactor/vchart@1.13.11: + resolution: {integrity: sha512-doJYOu8/vrnd2Jr7DmIj954C66cLXiGhXTHtaZb+HVFUinec50zw2zYp2ChuQ2Lb5/v+wiY6sR3evYWQHfPytw==} dependencies: '@visactor/vdataset': 0.19.6 - '@visactor/vgrammar-core': 0.16.3 - '@visactor/vgrammar-hierarchy': 0.16.3 - '@visactor/vgrammar-projection': 0.16.3 - '@visactor/vgrammar-sankey': 0.16.3 - '@visactor/vgrammar-util': 0.16.3 - '@visactor/vgrammar-venn': 0.16.3 - '@visactor/vgrammar-wordcloud': 0.16.3 - '@visactor/vgrammar-wordcloud-shape': 0.16.3 - '@visactor/vrender-components': 0.22.6 - '@visactor/vrender-core': 0.22.6 - '@visactor/vrender-kits': 0.22.6 + '@visactor/vgrammar-core': 0.16.7 + '@visactor/vgrammar-hierarchy': 0.16.7 + '@visactor/vgrammar-projection': 0.16.7 + '@visactor/vgrammar-sankey': 0.16.7 + '@visactor/vgrammar-util': 0.16.7 + '@visactor/vgrammar-venn': 0.16.7 + '@visactor/vgrammar-wordcloud': 0.16.7 + '@visactor/vgrammar-wordcloud-shape': 0.16.7 + '@visactor/vrender-components': 0.22.10 + '@visactor/vrender-core': 0.22.10 + '@visactor/vrender-kits': 0.22.10 '@visactor/vscale': 0.19.6 '@visactor/vutils': 0.19.6 - '@visactor/vutils-extension': 1.13.8 + '@visactor/vutils-extension': 1.13.11 dev: false /@visactor/vdataset@0.19.6: @@ -12882,114 +13868,114 @@ packages: topojson-client: 3.1.0 dev: false - /@visactor/vgrammar-coordinate@0.16.3: - resolution: {integrity: sha512-tfDSi3WgY/GWDvbf67eus4a7jR74y7OMod3JrTqyDVzSNZUOgUtS3ieEM71f9yipxjY8gxo53GPDpH/advxUZw==} + /@visactor/vgrammar-coordinate@0.16.7: + resolution: {integrity: sha512-iVLTgoMeB4a6AyOlzi3Zz/33wzJnVvZeQDxbKm74iQEAqwrdiQjTVCazFlZhFgx/kNCWh4gFVmIcsz4A0K7yyA==} dependencies: - '@visactor/vgrammar-util': 0.16.3 + '@visactor/vgrammar-util': 0.16.7 '@visactor/vutils': 0.19.6 dev: false - /@visactor/vgrammar-core@0.16.3: - resolution: {integrity: sha512-cd7hmh9JobbCDUJPOshmQB5V0KVM0GLTPBe/ZySJDi1cUSWpukAgRrLozEk/M5XgDbVIT+4pjqe6siacCad8dg==} + /@visactor/vgrammar-core@0.16.7: + resolution: {integrity: sha512-bBcys8VVI6AtFmkan0Uy/77iUmkE652a6kmAMxI6eUU86qSEHIMgHuB0Q6JwXuBPhFQ2YaZ0cEKMeVzwG2rMSw==} dependencies: '@visactor/vdataset': 0.19.6 - '@visactor/vgrammar-coordinate': 0.16.3 - '@visactor/vgrammar-util': 0.16.3 - '@visactor/vrender-components': 0.22.6 - '@visactor/vrender-core': 0.22.6 - '@visactor/vrender-kits': 0.22.6 + '@visactor/vgrammar-coordinate': 0.16.7 + '@visactor/vgrammar-util': 0.16.7 + '@visactor/vrender-components': 0.22.10 + '@visactor/vrender-core': 0.22.10 + '@visactor/vrender-kits': 0.22.10 '@visactor/vscale': 0.19.6 '@visactor/vutils': 0.19.6 dev: false - /@visactor/vgrammar-hierarchy@0.16.3: - resolution: {integrity: sha512-qnfSWRt1PErkVPTtet8DVc4MY+WwmgJoNNW2FALFht1qUfPdglTqT96drPbkurwiZMzSk+Xfr7+IPUA8ZQwWag==} + /@visactor/vgrammar-hierarchy@0.16.7: + resolution: {integrity: sha512-YaMR/0gvgS463pv3WUbp2t/AAahnGwVdiZRwoaaPRYwgW3sLj5bM8F6kI5UAT1g4las+WTb/OqC/J7p7xl1yMg==} dependencies: - '@visactor/vgrammar-core': 0.16.3 - '@visactor/vgrammar-util': 0.16.3 - '@visactor/vrender-core': 0.22.6 - '@visactor/vrender-kits': 0.22.6 + '@visactor/vgrammar-core': 0.16.7 + '@visactor/vgrammar-util': 0.16.7 + '@visactor/vrender-core': 0.22.10 + '@visactor/vrender-kits': 0.22.10 '@visactor/vutils': 0.19.6 dev: false - /@visactor/vgrammar-projection@0.16.3: - resolution: {integrity: sha512-c+MJ3qgtsNQHwZCDBVT7fNahNxe0g827IiytQWvrtMxavLIrtJqeul5H+6BYrGvYk8d81ByxNZdoVNn/mfNtDw==} + /@visactor/vgrammar-projection@0.16.7: + resolution: {integrity: sha512-ql1q0fbvwsBAHdqKq0lNc0eqWPTXclVWUVmaiWXDTHGdIaQadIVxbSN4c1ZF+PjQZqlHANvMedE+H3NkH86sUQ==} dependencies: - '@visactor/vgrammar-core': 0.16.3 - '@visactor/vgrammar-util': 0.16.3 + '@visactor/vgrammar-core': 0.16.7 + '@visactor/vgrammar-util': 0.16.7 '@visactor/vutils': 0.19.6 d3-geo: 1.12.1 dev: false - /@visactor/vgrammar-sankey@0.16.3: - resolution: {integrity: sha512-7j0xx77Yn2KzY4EcZ27qFF6R1KTcmy3BtQQewOHA1uoUX8ZRsfe57eziYRiBhyVrzdFWoa0IJqzH7Yk/zITvuQ==} + /@visactor/vgrammar-sankey@0.16.7: + resolution: {integrity: sha512-1e+6T1CYdr5325iHx0nYdbziJCTSzFZD+YPNci/aqDeVYioCKLFM3aHsXvZDVYkSf1LWAadZKmTIyMeY8/iLbw==} dependencies: - '@visactor/vgrammar-core': 0.16.3 - '@visactor/vgrammar-util': 0.16.3 - '@visactor/vrender-core': 0.22.6 - '@visactor/vrender-kits': 0.22.6 + '@visactor/vgrammar-core': 0.16.7 + '@visactor/vgrammar-util': 0.16.7 + '@visactor/vrender-core': 0.22.10 + '@visactor/vrender-kits': 0.22.10 '@visactor/vutils': 0.19.6 dev: false - /@visactor/vgrammar-util@0.16.3: - resolution: {integrity: sha512-aF9MqjTR7YvBAVDtp1A/CDVcXFGlO+TxkHVPEQVrn7cVu2DGRXCZnu/iQ+AUhttVYaWlSRflZj4cnQrKS4zy4g==} + /@visactor/vgrammar-util@0.16.7: + resolution: {integrity: sha512-TSUMaWDF+icwmeLFKJc3JJNVi+VrCtNgh9mHzetZx7xdIU1N4ezYZ6dT+PRNIXVETXlhB/WhJwEv9CWiUh23Mw==} dependencies: - '@visactor/vrender-core': 0.22.6 + '@visactor/vrender-core': 0.22.10 '@visactor/vutils': 0.19.6 dev: false - /@visactor/vgrammar-venn@0.16.3: - resolution: {integrity: sha512-M6mtCrpOcPrD6nkQFZ3Fl0Z2zPaKFTyRIPeO235vDwB/ZzefN5BObh85UGsv0swK46L5yu3daBxW0VtrGMBZRA==} + /@visactor/vgrammar-venn@0.16.7: + resolution: {integrity: sha512-d8ezA0f92wUmm/BgG9hUpDX1mpiW6Vb3RSJPyJIs62Qg243OUU4mfhKnmYeggFG1q/B2RCD+H+Slkk2nPlWH3Q==} dependencies: - '@visactor/vgrammar-core': 0.16.3 - '@visactor/vgrammar-util': 0.16.3 - '@visactor/vrender-core': 0.22.6 - '@visactor/vrender-kits': 0.22.6 + '@visactor/vgrammar-core': 0.16.7 + '@visactor/vgrammar-util': 0.16.7 + '@visactor/vrender-core': 0.22.10 + '@visactor/vrender-kits': 0.22.10 '@visactor/vutils': 0.19.6 dev: false - /@visactor/vgrammar-wordcloud-shape@0.16.3: - resolution: {integrity: sha512-ZWRHbec4WM2W3v2t57gRaX1IUGy+nDRjumcctgzSvmCpmR3nORgLKmMhxXYEA0VwcpY+umM0lVcd42iqPH8c7g==} + /@visactor/vgrammar-wordcloud-shape@0.16.7: + resolution: {integrity: sha512-vaAlS8GoZ57Ny2FRc3vSSUeC99t33tDDji99OLb8dmKYcVv4HPzsd3UOo+rSp+fkARiutrnJ75gTC/U55zlv2A==} dependencies: - '@visactor/vgrammar-core': 0.16.3 - '@visactor/vgrammar-util': 0.16.3 - '@visactor/vrender-core': 0.22.6 - '@visactor/vrender-kits': 0.22.6 + '@visactor/vgrammar-core': 0.16.7 + '@visactor/vgrammar-util': 0.16.7 + '@visactor/vrender-core': 0.22.10 + '@visactor/vrender-kits': 0.22.10 '@visactor/vscale': 0.19.6 '@visactor/vutils': 0.19.6 dev: false - /@visactor/vgrammar-wordcloud@0.16.3: - resolution: {integrity: sha512-uIHUJ3CGir+IjDjv4SpJR5SZvWSIYU2VoBdoCvFdhP9j8t15wadGYfe0/br9d6xOM3laiSCFYvPdhy0Ke5sP4w==} + /@visactor/vgrammar-wordcloud@0.16.7: + resolution: {integrity: sha512-fWaxIHxs0w/xeskZNRQnK4pNIsoCOEADHI1rS/WeQboHh+3NeAAtGaxvVd1d1VFbVA5TFk4iWe9w+JLv34GxSQ==} dependencies: - '@visactor/vgrammar-core': 0.16.3 - '@visactor/vgrammar-util': 0.16.3 - '@visactor/vrender-core': 0.22.6 - '@visactor/vrender-kits': 0.22.6 + '@visactor/vgrammar-core': 0.16.7 + '@visactor/vgrammar-util': 0.16.7 + '@visactor/vrender-core': 0.22.10 + '@visactor/vrender-kits': 0.22.10 '@visactor/vutils': 0.19.6 dev: false - /@visactor/vrender-components@0.22.6: - resolution: {integrity: sha512-YHLjA2GzP5LQxAAgzo2iniBxDldy9GtEzjm/sCXrrOGzzwMFlyhAeXCbUVEIMhTTfpRdK5LocAP1PSJsv4BObA==} + /@visactor/vrender-components@0.22.10: + resolution: {integrity: sha512-rfsci9y9AkEp/TCqCs0wpYdmPYqRnViEZ3EF9yiKhuFMExzdO8opga7JPfHJSbGCMoaqU5mWVCiEALsQkFuRQg==} dependencies: - '@visactor/vrender-core': 0.22.6 - '@visactor/vrender-kits': 0.22.6 + '@visactor/vrender-core': 0.22.10 + '@visactor/vrender-kits': 0.22.10 '@visactor/vscale': 0.19.6 '@visactor/vutils': 0.19.6 dev: false - /@visactor/vrender-core@0.22.6: - resolution: {integrity: sha512-R/MPjAuF9vT5atn7tAqhA5K1FMqYzv2SOhREsJpgP6QbJSnGR2uMTrNENRFvrM81ikR6yeh7WeTx6Fh2av+M4A==} + /@visactor/vrender-core@0.22.10: + resolution: {integrity: sha512-I2+/odcPphPujZtA26S4RG8Yn9BNPt4jlcsbOPwDGP5MvN7oLkWTSMgu4C9r0/lWYvfkwi5JpaoU8lLBZT7e6w==} dependencies: '@visactor/vutils': 0.19.6 color-convert: 2.0.1 dev: false - /@visactor/vrender-kits@0.22.6: - resolution: {integrity: sha512-0yRvhMhnT3JeFKCOi8riubkuKjNMIlzcW1FQV+kIyOGGV6nCSjvFL4+XDuEGalHlHt76BSlM1/cmxnmRNTHCRQ==} + /@visactor/vrender-kits@0.22.10: + resolution: {integrity: sha512-XjhThrOLvd1m7+o2jKNGKZSSAlHQG4cIm7H6BV2ew9/eQ532Fj8Vd7N17KU8bBnXzPulCmPpnEFj++E4Mnoqpg==} dependencies: '@resvg/resvg-js': 2.4.1 - '@visactor/vrender-core': 0.22.6 + '@visactor/vrender-core': 0.22.10 '@visactor/vutils': 0.19.6 gifuct-js: 2.1.2 lottie-web: 5.13.0 @@ -13002,8 +13988,8 @@ packages: '@visactor/vutils': 0.19.6 dev: false - /@visactor/vutils-extension@1.13.8: - resolution: {integrity: sha512-mOtUJjUEthQTHyYnynWJs8wbbW+UoW0z18lH++TqGoDbsJLcr4Mlpxhe8IDP/bda7kRVTI/FHbzVHhKWKLBvxw==} + /@visactor/vutils-extension@1.13.11: + resolution: {integrity: sha512-S4CuOE8AdbxmjNJlF15EF95OvxBs+g2ZQO7sg9yDpZv4A9KlNuLJm33amQ3isTRelIfjgcnCNuWUc82V6U1YAQ==} dependencies: '@visactor/vdataset': 0.19.6 '@visactor/vutils': 0.19.6 @@ -13187,14 +14173,12 @@ packages: entities: 4.5.0 estree-walker: 2.0.2 source-map-js: 1.2.1 - dev: false /@vue/compiler-dom@3.5.16: resolution: {integrity: sha512-SSJIhBr/teipXiXjmWOVWLnxjNGo65Oj/8wTEQz0nqwQeP75jWZ0n4sF24Zxoht1cuJoWopwj0J0exYwCJ0dCQ==} dependencies: '@vue/compiler-core': 3.5.16 '@vue/shared': 3.5.16 - dev: false /@vue/compiler-sfc@3.5.16: resolution: {integrity: sha512-rQR6VSFNpiinDy/DVUE0vHoIDUF++6p910cgcZoaAUm3POxgNOOdS/xgoll3rNdKYTYPnnbARDCZOyZ+QSe6Pw==} @@ -13208,14 +14192,12 @@ packages: magic-string: 0.30.17 postcss: 8.5.6 source-map-js: 1.2.1 - dev: false /@vue/compiler-ssr@3.5.16: resolution: {integrity: sha512-d2V7kfxbdsjrDSGlJE7my1ZzCXViEcqN6w14DOsDrUCHEA6vbnVCpRFfrc4ryCP/lCKzX2eS1YtnLE/BuC9f/A==} dependencies: '@vue/compiler-dom': 3.5.16 '@vue/shared': 3.5.16 - dev: false /@vue/reactivity@3.5.16: resolution: {integrity: sha512-FG5Q5ee/kxhIm1p2bykPpPwqiUBV3kFySsHEQha5BJvjXdZTUfmya7wP7zC39dFuZAcf/PD5S4Lni55vGLMhvA==} @@ -13251,7 +14233,6 @@ packages: /@vue/shared@3.5.16: resolution: {integrity: sha512-c/0fWy3Jw6Z8L9FmTyYfkpM5zklnqqa9+a6dz3DvONRKW2NEbh46BP0FHuLFSWi2TnQEtp91Z6zOWNrU6QiyPg==} - dev: false /@webassemblyjs/ast@1.14.1: resolution: {integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==} @@ -13383,7 +14364,6 @@ packages: /@yarnpkg/lockfile@1.0.2: resolution: {integrity: sha512-MqJ00WXw89ga0rK6GZkdmmgv3bAsxpJixyTthjcix73O44pBqotyU2BejBkLuIsaOBI6SEu77vAnSyLe5iIHkw==} - dev: false /@zkochan/cmd-shim@5.4.1: resolution: {integrity: sha512-odWb1qUzt0dIOEUPyWBEpFDYQPRjEMr/dbHHAfgBkVkYR9aO7Zo+I7oYWrXIxl+cKlC7+49ftPm8uJxL1MA9kw==} @@ -13392,7 +14372,13 @@ packages: cmd-extension: 1.0.2 graceful-fs: 4.2.11 is-windows: 1.0.2 - dev: false + + /abort-controller@3.0.0: + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} + dependencies: + event-target-shim: 5.0.1 + dev: true /abs-svg-path@0.1.1: resolution: {integrity: sha512-d8XPSGjfyzlXC3Xx891DJRyZfqk5JU0BJrDQcsWomFIV1/BIzPW5HDH5iDdWpqWaav0YVIEzT1RHTwWr0FFshA==} @@ -13474,12 +14460,10 @@ packages: debug: 4.3.3 transitivePeerDependencies: - supports-color - dev: false /agent-base@7.1.3: resolution: {integrity: sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==} engines: {node: '>= 14'} - dev: false /aggregate-error@3.1.0: resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} @@ -13584,7 +14568,6 @@ packages: resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} dependencies: string-width: 4.2.3 - dev: false /ansi-escapes@4.3.2: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} @@ -13697,7 +14680,6 @@ packages: /array-differ@3.0.0: resolution: {integrity: sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==} engines: {node: '>=8'} - dev: false /array-find-index@1.0.2: resolution: {integrity: sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==} @@ -13816,11 +14798,17 @@ packages: /arrify@2.0.1: resolution: {integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==} engines: {node: '>=8'} - dev: false /asap@2.0.6: resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} - dev: false + + /asn1.js@4.10.1: + resolution: {integrity: sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==} + dependencies: + bn.js: 4.12.2 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + dev: true /assert@2.1.0: resolution: {integrity: sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==} @@ -13890,7 +14878,6 @@ packages: /asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - dev: true /at-least-node@1.0.0: resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} @@ -13943,6 +14930,16 @@ packages: engines: {node: '>=4'} dev: false + /axios@1.13.2: + resolution: {integrity: sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==} + dependencies: + follow-redirects: 1.15.11 + form-data: 4.0.5 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + dev: false + /axobject-query@4.1.0: resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} engines: {node: '>= 0.4'} @@ -14121,7 +15118,6 @@ packages: engines: {node: '>=4'} dependencies: is-windows: 1.0.2 - dev: false /bezier-easing@2.1.0: resolution: {integrity: sha512-gbIqZ/eslnUFC1tjEvtz0sgx+xTK20wDnYMIA27VA04R7w6xxXQPZDbibjA9DTWZRA2CXtwHykkVzlCaAJAZig==} @@ -14151,6 +15147,14 @@ packages: inherits: 2.0.4 readable-stream: 3.6.2 + /bn.js@4.12.2: + resolution: {integrity: sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==} + dev: true + + /bn.js@5.2.2: + resolution: {integrity: sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw==} + dev: true + /body-parser@1.20.3: resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} @@ -14187,7 +15191,6 @@ packages: type-fest: 3.13.1 widest-line: 3.1.0 wrap-ansi: 7.0.0 - dev: false /bplist-parser@0.2.0: resolution: {integrity: sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==} @@ -14231,16 +15234,78 @@ packages: dependencies: fill-range: 7.1.1 + /brorand@1.1.0: + resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} + dev: true + /browser-assert@1.2.1: resolution: {integrity: sha512-nfulgvOR6S4gt9UKCeGJOuSGBPGiFT6oQ/2UBnvTY/5aQ1PnksW72fhZkM30DzoRRv2WpwZf1vHHEr3mtuXIWQ==} dev: true + /browserify-aes@1.2.0: + resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==} + dependencies: + buffer-xor: 1.0.3 + cipher-base: 1.0.7 + create-hash: 1.2.0 + evp_bytestokey: 1.0.3 + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: true + + /browserify-cipher@1.0.1: + resolution: {integrity: sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==} + dependencies: + browserify-aes: 1.2.0 + browserify-des: 1.0.2 + evp_bytestokey: 1.0.3 + dev: true + + /browserify-des@1.0.2: + resolution: {integrity: sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==} + dependencies: + cipher-base: 1.0.7 + des.js: 1.1.0 + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: true + + /browserify-rsa@4.1.1: + resolution: {integrity: sha512-YBjSAiTqM04ZVei6sXighu679a3SqWORA3qZTEqZImnlkDIFtKc6pNutpjyZ8RJTjQtuYfeetkxM11GwoYXMIQ==} + engines: {node: '>= 0.10'} + dependencies: + bn.js: 5.2.2 + randombytes: 2.1.0 + safe-buffer: 5.2.1 + dev: true + + /browserify-sign@4.2.5: + resolution: {integrity: sha512-C2AUdAJg6rlM2W5QMp2Q4KGQMVBwR1lIimTsUnutJ8bMpW5B52pGpR2gEnNBNwijumDo5FojQ0L9JrXA8m4YEw==} + engines: {node: '>= 0.10'} + dependencies: + bn.js: 5.2.2 + browserify-rsa: 4.1.1 + create-hash: 1.2.0 + create-hmac: 1.1.7 + elliptic: 6.6.1 + inherits: 2.0.4 + parse-asn1: 5.1.9 + readable-stream: 2.3.8 + safe-buffer: 5.2.1 + dev: true + /browserify-zlib@0.1.4: resolution: {integrity: sha512-19OEpq7vWgsH6WkvkBJQDFvJS1uPcbFOQ4v9CU839dO+ZZXUZO6XpE6hNCqvlIIj+4fZvRiJ6DsAQ382GwiyTQ==} dependencies: pako: 0.2.9 dev: true + /browserify-zlib@0.2.0: + resolution: {integrity: sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==} + dependencies: + pako: 1.0.11 + dev: true + /browserslist@4.25.0: resolution: {integrity: sha512-PJ8gYKeS5e/whHBh8xrwYK+dAvEj7JXtz6uTucnMRB8OiGTsKccFekoRrjajPBHV8oOY+2tI4uxeceSimKwMFA==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} @@ -14267,11 +15332,14 @@ packages: /buffer-equal-constant-time@1.0.1: resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} - dev: false /buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + /buffer-xor@1.0.3: + resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} + dev: true + /buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} dependencies: @@ -14283,20 +15351,21 @@ packages: dependencies: base64-js: 1.5.1 ieee754: 1.2.1 - dev: false /builtin-modules@3.1.0: resolution: {integrity: sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==} engines: {node: '>=6'} - dev: false /builtin-modules@3.3.0: resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} engines: {node: '>=6'} + /builtin-status-codes@3.0.0: + resolution: {integrity: sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==} + dev: true + /builtins@1.0.3: resolution: {integrity: sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==} - dev: false /bytes@3.1.2: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} @@ -14334,7 +15403,6 @@ packages: lowercase-keys: 2.0.0 normalize-url: 4.5.1 responselike: 1.0.2 - dev: false /call-bind-apply-helpers@1.0.2: resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} @@ -14387,11 +15455,9 @@ packages: highlight-es: 1.0.3 lodash: 4.17.21 pinkie-promise: 2.0.1 - dev: false /callsite@1.0.0: resolution: {integrity: sha512-0vdNRFXn5q+dtOqjfFtmtlI9N2eVZ7LMyEV2iKC5mEEFvSg/69Ml6b/WU2qF8W1nLRa0wiSrDT3Y5jOHZCwKPQ==} - dev: false /callsites@2.0.0: resolution: {integrity: sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==} @@ -14402,6 +15468,13 @@ packages: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} + /camel-case@4.1.2: + resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} + dependencies: + pascal-case: 3.1.2 + tslib: 2.8.1 + dev: true + /camelcase-css@2.0.1: resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} engines: {node: '>= 6'} @@ -14422,7 +15495,6 @@ packages: camelcase: 5.3.1 map-obj: 4.3.0 quick-lru: 4.0.1 - dev: false /camelcase-keys@7.0.2: resolution: {integrity: sha512-Rjs1H+A9R+Ig+4E/9oyB66UC5Mj9Xq3N//vcLf2WzgdTi/3gUu3Z9KoqmlrEG4VuuLK8wJHofxzdQXz/knhiYg==} @@ -14454,6 +15526,11 @@ packages: /caniuse-lite@1.0.30001723: resolution: {integrity: sha512-1R/elMjtehrFejxwmexeXAtae5UO9iSyFn6G/I806CYC/BLyyBk1EPhrKBkWhy6wM6Xnm47dSJQec+tLJ39WHw==} + /case-sensitive-paths-webpack-plugin@2.4.0: + resolution: {integrity: sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==} + engines: {node: '>=4'} + dev: true + /ccount@1.1.0: resolution: {integrity: sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==} dev: true @@ -14551,7 +15628,6 @@ packages: /chardet@0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} - dev: false /check-error@1.0.3: resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} @@ -14612,18 +15688,30 @@ packages: /ci-info@2.0.0: resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} - dev: false /ci-info@3.9.0: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} + /cipher-base@1.0.7: + resolution: {integrity: sha512-Mz9QMT5fJe7bKI7MH31UilT5cEK5EHHRCccw/YRFsRY47AuNgaV6HY3rscp0/I4Q+tTW/5zoqpSeRRI54TkDWA==} + engines: {node: '>= 0.10'} + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + to-buffer: 1.2.2 + dev: true + /citty@0.1.6: resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} dependencies: consola: 3.4.2 dev: true + /cjs-module-lexer@1.4.3: + resolution: {integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==} + dev: true + /class-utils@0.3.6: resolution: {integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==} engines: {node: '>=0.10.0'} @@ -14644,6 +15732,13 @@ packages: resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==} dev: false + /clean-css@5.3.3: + resolution: {integrity: sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==} + engines: {node: '>= 10.0'} + dependencies: + source-map: 0.6.1 + dev: true + /clean-regexp@1.0.0: resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==} engines: {node: '>=4'} @@ -14658,7 +15753,6 @@ packages: /cli-boxes@2.2.1: resolution: {integrity: sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==} engines: {node: '>=6'} - dev: false /cli-cursor@3.1.0: resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} @@ -14684,12 +15778,10 @@ packages: engines: {node: '>= 0.2.0'} dependencies: colors: 1.0.3 - dev: false /cli-width@3.0.0: resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} engines: {node: '>= 10'} - dev: false /cliui@7.0.4: resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} @@ -14697,7 +15789,6 @@ packages: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 7.0.0 - dev: false /clone-deep@4.0.1: resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} @@ -14720,7 +15811,6 @@ packages: resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==} dependencies: mimic-response: 1.0.1 - dev: false /clone@1.0.4: resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} @@ -14738,12 +15828,10 @@ packages: /cmd-extension@1.0.2: resolution: {integrity: sha512-iWDjmP8kvsMdBmLTHxFaqXikO8EdFRDfim7k6vUHglY/2xJ5jLrPsnQGijdfp4U+sr/BeecG0wKm02dSIAeQ1g==} engines: {node: '>=10'} - dev: false /co@4.6.0: resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} - dev: false /code-block-writer@12.0.0: resolution: {integrity: sha512-q4dMFMlXtKR3XNBHyMHt/3pwYNA69EDk00lloMOaaUMKPUXBw6lpXtbu3MMVG6/uOihGnRDOlkyqsONEUj60+w==} @@ -14822,7 +15910,6 @@ packages: /colors@1.0.3: resolution: {integrity: sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==} engines: {node: '>=0.1.90'} - dev: false /colors@1.2.5: resolution: {integrity: sha512-erNRLao/Y3Fv54qUa0LBB+//Uf3YwMUmdJinN20yMXm9zdKKqH9wt7R9IIVZ+K7ShzfpLV/Zg8+VyrBJYB4lpg==} @@ -14834,7 +15921,6 @@ packages: engines: {node: '>= 0.8'} dependencies: delayed-stream: 1.0.0 - dev: true /comlink@4.4.2: resolution: {integrity: sha512-OxGdvBmJuNKSCMO4NTl1L47VRp6xn2wG4F/2hYzB6tiCb709otOxtEYCSvK80PtjODfXXZu8ds+Nw5kVCjqd2g==} @@ -14844,6 +15930,11 @@ packages: resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} dev: false + /commander@10.0.1: + resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} + engines: {node: '>=14'} + dev: true + /commander@12.1.0: resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} engines: {node: '>=18'} @@ -14879,9 +15970,12 @@ packages: resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} engines: {node: ^12.20.0 || >=14} requiresBuild: true - dev: false optional: true + /common-path-prefix@3.0.0: + resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} + dev: true + /commondir@1.0.1: resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} dev: true @@ -14916,6 +16010,23 @@ packages: - supports-color dev: true + /compute-gcd@1.2.1: + resolution: {integrity: sha512-TwMbxBNz0l71+8Sc4czv13h4kEqnchV9igQZBi6QUaz09dnz13juGnnaWWJTRsP3brxOoxeB4SA2WELLw1hCtg==} + dependencies: + validate.io-array: 1.0.6 + validate.io-function: 1.0.2 + validate.io-integer-array: 1.0.0 + dev: false + + /compute-lcm@1.1.2: + resolution: {integrity: sha512-OFNPdQAXnQhDSKioX8/XYT6sdUlXwpeMjfd6ApxMJfyZ4GxmLR1xvMERctlYhlHwIiz6CSpBc2+qYKjHGZw4TQ==} + dependencies: + compute-gcd: 1.2.1 + validate.io-array: 1.0.6 + validate.io-function: 1.0.2 + validate.io-integer-array: 1.0.0 + dev: false + /compute-scroll-into-view@1.0.20: resolution: {integrity: sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg==} dev: false @@ -14969,7 +16080,6 @@ packages: unique-string: 2.0.0 write-file-atomic: 3.0.3 xdg-basedir: 4.0.0 - dev: false /confusing-browser-globals@1.0.11: resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} @@ -14980,6 +16090,14 @@ packages: engines: {node: ^14.18.0 || >=16.10.0} dev: true + /console-browserify@1.2.0: + resolution: {integrity: sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==} + dev: true + + /constants-browserify@1.0.0: + resolution: {integrity: sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==} + dev: true + /content-disposition@0.5.4: resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} engines: {node: '>= 0.6'} @@ -15007,6 +16125,12 @@ packages: engines: {node: '>= 0.6'} dev: true + /copy-anything@2.0.6: + resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==} + dependencies: + is-what: 3.14.1 + dev: true + /copy-descriptor@0.1.1: resolution: {integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==} engines: {node: '>=0.10.0'} @@ -15038,6 +16162,11 @@ packages: requiresBuild: true dev: true + /core-js@3.45.1: + resolution: {integrity: sha512-L4NPsJlCfZsPeXukyzHFlg/i7IIVwHSItR0wg0FLNqYClJ4MQYTYLbC7EkjKYRLZF2iof2MUgN0EGy7MdQFChg==} + requiresBuild: true + dev: true + /core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} @@ -15094,6 +16223,34 @@ packages: hasBin: true dev: false + /create-ecdh@4.0.4: + resolution: {integrity: sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==} + dependencies: + bn.js: 4.12.2 + elliptic: 6.6.1 + dev: true + + /create-hash@1.2.0: + resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==} + dependencies: + cipher-base: 1.0.7 + inherits: 2.0.4 + md5.js: 1.3.5 + ripemd160: 2.0.3 + sha.js: 2.4.12 + dev: true + + /create-hmac@1.1.7: + resolution: {integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==} + dependencies: + cipher-base: 1.0.7 + create-hash: 1.2.0 + inherits: 2.0.4 + ripemd160: 2.0.3 + safe-buffer: 5.2.1 + sha.js: 2.4.12 + dev: true + /create-require@1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} dev: true @@ -15127,6 +16284,24 @@ packages: shebang-command: 2.0.0 which: 2.0.2 + /crypto-browserify@3.12.1: + resolution: {integrity: sha512-r4ESw/IlusD17lgQi1O20Fa3qNnsckR126TdUuBgAu7GBYSIPvdNyONd3Zrxh0xCwA4+6w/TDArBPsMvhur+KQ==} + engines: {node: '>= 0.10'} + dependencies: + browserify-cipher: 1.0.1 + browserify-sign: 4.2.5 + create-ecdh: 4.0.4 + create-hash: 1.2.0 + create-hmac: 1.1.7 + diffie-hellman: 5.0.3 + hash-base: 3.0.5 + inherits: 2.0.4 + pbkdf2: 3.1.5 + public-encrypt: 4.0.3 + randombytes: 2.1.0 + randomfill: 1.0.4 + dev: true + /crypto-random-string@2.0.0: resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} engines: {node: '>=8'} @@ -15166,7 +16341,7 @@ packages: postcss-value-parser: 4.2.0 schema-utils: 2.7.1 semver: 7.7.2 - webpack: 5.91.0 + webpack: 5.91.0(esbuild@0.18.20) dev: true /css-select@5.1.0: @@ -15632,7 +16807,6 @@ packages: /debuglog@1.0.1: resolution: {integrity: sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw==} deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - dev: false /decamelize-keys@1.1.1: resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} @@ -15674,7 +16848,10 @@ packages: engines: {node: '>=4'} dependencies: mimic-response: 1.0.1 - dev: false + + /dedent@0.7.0: + resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} + dev: true /deep-eql@4.1.4: resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==} @@ -15715,7 +16892,6 @@ packages: /deep-extend@0.6.0: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} engines: {node: '>=4.0.0'} - dev: false /deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} @@ -15740,7 +16916,6 @@ packages: /defer-to-connect@1.1.3: resolution: {integrity: sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==} - dev: false /define-data-property@1.1.4: resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} @@ -15811,7 +16986,6 @@ packages: /delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} - dev: true /depcheck@1.4.7: resolution: {integrity: sha512-1lklS/bV5chOxwNKA/2XUUk/hPORp8zihZsXflr8x0kLwmcZ9Y9BsS6Hs3ssvA+2wUVbG0U2Ciqvm1SokNjPkA==} @@ -15839,11 +17013,10 @@ packages: require-package-name: 2.0.1 resolve: 1.22.10 resolve-from: 5.0.0 - semver: 7.5.4 + semver: 7.7.2 yargs: 16.2.0 transitivePeerDependencies: - supports-color - dev: false /depd@2.0.0: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} @@ -15857,17 +17030,22 @@ packages: '@pnpm/crypto.base32-hash': 1.0.1 '@pnpm/types': 8.9.0 encode-registry: 3.0.1 - semver: 7.5.4 - dev: false + semver: 7.7.2 /deps-regex@0.2.0: resolution: {integrity: sha512-PwuBojGMQAYbWkMXOY9Pd/NWCDNHVH12pnS7WHqZkTSeMESe4hwnKKRp0yR87g37113x4JPbo/oIvXY+s/f56Q==} - dev: false /dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} + /des.js@1.1.0: + resolution: {integrity: sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==} + dependencies: + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + dev: true + /destroy@1.2.0: resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} @@ -15876,7 +17054,6 @@ packages: /detect-file@1.0.0: resolution: {integrity: sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==} engines: {node: '>=0.10.0'} - dev: false /detect-indent@6.1.0: resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} @@ -15925,7 +17102,6 @@ packages: dependencies: asap: 2.0.6 wrappy: 1.0.2 - dev: false /didyoumean@1.2.2: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} @@ -15945,6 +17121,14 @@ packages: engines: {node: '>=0.3.1'} dev: false + /diffie-hellman@5.0.3: + resolution: {integrity: sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==} + dependencies: + bn.js: 4.12.2 + miller-rabin: 4.0.1 + randombytes: 2.1.0 + dev: true + /dir-glob@2.2.2: resolution: {integrity: sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==} engines: {node: '>=4'} @@ -16002,6 +17186,11 @@ packages: domhandler: 5.0.3 entities: 4.5.0 + /domain-browser@5.7.0: + resolution: {integrity: sha512-edTFu0M/7wO1pXY6GDxVNVW086uqwWYIHP98txhcPyV995X21JIH2DtYp33sQJOupYoXKe9RwTw2Ya2vWaquTQ==} + engines: {node: '>=4'} + dev: true + /domelementtype@1.3.1: resolution: {integrity: sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==} dev: true @@ -16080,7 +17269,6 @@ packages: /duplexer3@0.1.5: resolution: {integrity: sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==} - dev: false /duplexify@3.7.1: resolution: {integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==} @@ -16098,7 +17286,6 @@ packages: resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} dependencies: safe-buffer: 5.2.1 - dev: false /ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} @@ -16115,6 +17302,18 @@ packages: /electron-to-chromium@1.5.169: resolution: {integrity: sha512-q7SQx6mkLy0GTJK9K9OiWeaBMV4XQtBSdf6MJUzDB/H/5tFXfIiX38Lci1Kl6SsgiEhz1SQI1ejEOU5asWEhwQ==} + /elliptic@6.6.1: + resolution: {integrity: sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==} + dependencies: + bn.js: 4.12.2 + brorand: 1.1.0 + hash.js: 1.1.7 + hmac-drbg: 1.0.1 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + dev: true + /email-validator@2.0.4: resolution: {integrity: sha512-gYCwo7kh5S3IDyZPLZf6hSS0MnZT8QmJFqYvbqlDZSbwdZlY6QZWxJ4i/6UhITOJ4XzyI647Bm2MXKCLqnJ4nQ==} engines: {node: '>4.0'} @@ -16140,7 +17339,6 @@ packages: engines: {node: '>=10'} dependencies: mem: 8.1.1 - dev: false /encodeurl@1.0.2: resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} @@ -16157,6 +17355,14 @@ packages: dependencies: once: 1.4.0 + /endent@2.1.0: + resolution: {integrity: sha512-r8VyPX7XL8U01Xgnb1CjZ3XV+z90cXIJ9JPE/R9SEC9vpw2P6CfsRPJmp20DppC5N7ZAMCmjYkJIa744Iyg96w==} + dependencies: + dedent: 0.7.0 + fast-json-parse: 1.0.3 + objectorarray: 1.0.5 + dev: true + /enhanced-resolve@5.12.0: resolution: {integrity: sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==} engines: {node: '>=10.13.0'} @@ -16195,6 +17401,15 @@ packages: hasBin: true dev: true + /errno@0.1.8: + resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} + hasBin: true + requiresBuild: true + dependencies: + prr: 1.0.1 + dev: true + optional: true + /error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} dependencies: @@ -16450,7 +17665,6 @@ packages: /escape-goat@2.1.1: resolution: {integrity: sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==} engines: {node: '>=8'} - dev: false /escape-html@1.0.3: resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} @@ -17105,6 +18319,11 @@ packages: engines: {node: '>= 0.6'} dev: true + /event-target-shim@5.0.1: + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + engines: {node: '>=6'} + dev: true + /eventemitter3@4.0.7: resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} dev: false @@ -17122,6 +18341,13 @@ packages: engines: {node: '>=14.18'} dev: false + /evp_bytestokey@1.0.3: + resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} + dependencies: + md5.js: 1.3.5 + safe-buffer: 5.2.1 + dev: true + /execa@5.1.1: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} @@ -17163,7 +18389,6 @@ packages: engines: {node: '>=0.10.0'} dependencies: homedir-polyfill: 1.0.3 - dev: false /expect-type@1.2.1: resolution: {integrity: sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw==} @@ -17238,7 +18463,6 @@ packages: chardet: 0.7.0 iconv-lite: 0.4.24 tmp: 0.0.33 - dev: false /extglob@2.0.4: resolution: {integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==} @@ -17306,6 +18530,10 @@ packages: merge2: 1.4.1 micromatch: 4.0.8 + /fast-json-parse@1.0.3: + resolution: {integrity: sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw==} + dev: true + /fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} @@ -17323,7 +18551,6 @@ packages: hasBin: true dependencies: strnum: 2.1.1 - dev: false /fastest-levenshtein@1.0.16: resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} @@ -17392,7 +18619,6 @@ packages: engines: {node: '>=8'} dependencies: escape-string-regexp: 1.0.5 - dev: false /file-entry-cache@4.0.0: resolution: {integrity: sha512-AVSwsnbV8vH/UVbvgEhf3saVQXORNv0ZzSkvkhQIaia5Tia+JhGTaa/ePUSVoPHQyGayQNmYfkzFi3WZV5zcpA==} @@ -17487,6 +18713,14 @@ packages: pkg-dir: 4.2.0 dev: true + /find-cache-dir@5.0.0: + resolution: {integrity: sha512-OuWNfjfP05JcpAP3JPgAKUhWefjMRfI5iAoSsvE24ANYWJaepAtlSgWECSVEuRgSXpyNEc9DJwG/TZpgcOqyig==} + engines: {node: '>=16'} + dependencies: + common-path-prefix: 3.0.0 + pkg-dir: 7.0.0 + dev: true + /find-root@1.1.0: resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} @@ -17518,12 +18752,19 @@ packages: locate-path: 6.0.0 path-exists: 4.0.0 + /find-up@6.3.0: + resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + locate-path: 7.2.0 + path-exists: 5.0.0 + dev: true + /find-yarn-workspace-root2@1.2.16: resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} dependencies: micromatch: 4.0.8 pkg-dir: 4.2.0 - dev: false /findup-sync@5.0.0: resolution: {integrity: sha512-MzwXju70AuyflbgeOhzvQWAvvQdo1XL0A9bVvlXsYcFEBM87WR4OakL4OfZq+QRmr+duJubio+UtNQCPsVESzQ==} @@ -17533,7 +18774,6 @@ packages: is-glob: 4.0.3 micromatch: 4.0.8 resolve-dir: 1.0.1 - dev: false /flat-cache@2.0.1: resolution: {integrity: sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==} @@ -17584,6 +18824,16 @@ packages: - encoding dev: false + /follow-redirects@1.15.11: + resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + dev: false + /for-each@0.3.5: resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} engines: {node: '>= 0.4'} @@ -17613,6 +18863,17 @@ packages: mime-types: 2.1.35 dev: true + /form-data@4.0.5: + resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==} + engines: {node: '>= 6'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + hasown: 2.0.2 + mime-types: 2.1.35 + dev: false + /forwarded@0.2.0: resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} engines: {node: '>= 0.6'} @@ -17756,7 +19017,6 @@ packages: /get-caller-file@2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} - dev: false /get-func-name@2.0.2: resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} @@ -17813,14 +19073,12 @@ packages: engines: {node: '>=6'} dependencies: pump: 3.0.3 - dev: false /get-stream@5.2.0: resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} engines: {node: '>=8'} dependencies: pump: 3.0.3 - dev: false /get-stream@6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} @@ -17870,7 +19128,6 @@ packages: /git-repo-info@2.1.1: resolution: {integrity: sha512-8aCohiDo4jwjOwma4FmYFd3i97urZulL8XL24nIPxuE+GZnfsAyy/g2Shqx6OjUiFKUXZM+Yy+KHnOmmA3FVcg==} engines: {node: '>= 4.0'} - dev: false /github-slugger@1.5.0: resolution: {integrity: sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==} @@ -17879,12 +19136,10 @@ packages: /giturl@1.0.3: resolution: {integrity: sha512-qVDEXufVtYUzYqI5hoDUONh9GCEPi0n+e35KNDafdsNt9fPxB0nvFW/kFiw7W42wkg8TUyhBqb+t24yyaoc87A==} engines: {node: '>= 0.10.0'} - dev: false /glob-escape@0.0.2: resolution: {integrity: sha512-L/cXYz8x7qer1HAyUQ+mbjcUsJVdpRxpAf7CwqHoNBs9vTpABlGfNN4tzkDxt+u3Z7ZncVyKlCNPtzb0R/7WbA==} engines: {node: '>= 0.10'} - dev: false /glob-parent@3.1.0: resolution: {integrity: sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==} @@ -17915,6 +19170,15 @@ packages: glob: 7.2.3 dev: true + /glob-to-regex.js@1.2.0(tslib@2.8.1): + resolution: {integrity: sha512-QMwlOQKU/IzqMUOAZWubUOT8Qft+Y0KQWnX9nK3ch0CJg0tTp4TvGZsTfudYKv2NzoQSyPcnA6TYeIQ3jGichQ==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + dependencies: + tslib: 2.8.1 + dev: true + /glob-to-regexp@0.3.0: resolution: {integrity: sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig==} dev: true @@ -17949,7 +19213,6 @@ packages: engines: {node: '>=10'} dependencies: ini: 2.0.0 - dev: false /global-modules@1.0.0: resolution: {integrity: sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==} @@ -17958,7 +19221,6 @@ packages: global-prefix: 1.0.2 is-windows: 1.0.2 resolve-dir: 1.0.1 - dev: false /global-modules@2.0.0: resolution: {integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==} @@ -17975,7 +19237,6 @@ packages: ini: 1.3.8 is-windows: 1.0.2 which: 1.3.1 - dev: false /global-prefix@3.0.0: resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==} @@ -18079,7 +19340,6 @@ packages: p-cancelable: 1.1.0 to-readable-stream: 1.0.0 url-parse-lax: 3.0.0 - dev: false /graceful-fs@4.2.10: resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} @@ -18090,7 +19350,6 @@ packages: /graceful-fs@4.2.4: resolution: {integrity: sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==} - dev: false /graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} @@ -18204,12 +19463,36 @@ packages: /has-yarn@2.1.0: resolution: {integrity: sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==} engines: {node: '>=8'} - dev: false + + /hash-base@3.0.5: + resolution: {integrity: sha512-vXm0l45VbcHEVlTCzs8M+s0VeYsB2lnlAaThoLKGXr3bE/VWDOelNUnycUPEhKEaXARL2TEFjBOyUiM6+55KBg==} + engines: {node: '>= 0.10'} + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: true + + /hash-base@3.1.2: + resolution: {integrity: sha512-Bb33KbowVTIj5s7Ked1OsqHUeCpz//tPwR+E2zJgJKo9Z5XolZ9b6bdUgjmYlwnWhoOQKoTd1TYToZGn5mAYOg==} + engines: {node: '>= 0.8'} + dependencies: + inherits: 2.0.4 + readable-stream: 2.3.8 + safe-buffer: 5.2.1 + to-buffer: 1.2.2 + dev: true /hash-sum@2.0.0: resolution: {integrity: sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==} dev: false + /hash.js@1.1.7: + resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} + dependencies: + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + dev: true + /hasown@2.0.2: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} @@ -18298,13 +19581,20 @@ packages: chalk: 2.4.2 is-es2016-keyword: 1.0.0 js-tokens: 3.0.2 - dev: false /highlight.js@11.11.1: resolution: {integrity: sha512-Xwwo44whKBVCYoliBQwaPvtd/2tYFkRQtXDWj1nackaV2JPXx3L0+Jvd8/qCJ2p+ML0/XVkJ2q+Mr+UVdpJK5w==} engines: {node: '>=12.0.0'} dev: false + /hmac-drbg@1.0.1: + resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} + dependencies: + hash.js: 1.1.7 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + dev: true + /hoist-non-react-statics@3.3.2: resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} dependencies: @@ -18315,7 +19605,6 @@ packages: engines: {node: '>=0.10.0'} dependencies: parse-passwd: 1.0.0 - dev: false /hosted-git-info@2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} @@ -18348,6 +19637,20 @@ packages: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} dev: true + /html-minifier-terser@7.2.0: + resolution: {integrity: sha512-tXgn3QfqPIpGl9o+K5tpcj3/MN4SfLtsx2GWwBC3SSd0tXQGyF3gsSqad8loJgKZGM3ZxbYDd5yhiBIdWpmvLA==} + engines: {node: ^14.13.1 || >=16.0.0} + hasBin: true + dependencies: + camel-case: 4.1.2 + clean-css: 5.3.3 + commander: 10.0.1 + entities: 4.5.0 + param-case: 3.0.4 + relateurl: 0.2.7 + terser: 5.43.0 + dev: true + /html-react-parser@3.0.15(react@18.2.0): resolution: {integrity: sha512-iM2KUVhNoeIsezbpO6xwOHlFqWH+EYaCGwWWeX7R+jvrgc+mbnuouWaCU8GZRRbPKDD0eJXPZwLoeGVft84QXw==} peerDependencies: @@ -18396,7 +19699,6 @@ packages: /http-cache-semantics@4.2.0: resolution: {integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==} - dev: false /http-errors@2.0.0: resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} @@ -18417,7 +19719,10 @@ packages: debug: 4.3.3 transitivePeerDependencies: - supports-color - dev: false + + /https-browserify@1.0.0: + resolution: {integrity: sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==} + dev: true /https-proxy-agent@4.0.0: resolution: {integrity: sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg==} @@ -18437,7 +19742,6 @@ packages: debug: 4.3.3 transitivePeerDependencies: - supports-color - dev: false /https-proxy-agent@7.0.6: resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} @@ -18447,7 +19751,6 @@ packages: debug: 4.3.3 transitivePeerDependencies: - supports-color - dev: false /human-signals@2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} @@ -18490,7 +19793,6 @@ packages: engines: {node: '>=0.10.0'} dependencies: safer-buffer: 2.1.2 - dev: false /icss-utils@4.1.1: resolution: {integrity: sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==} @@ -18506,7 +19808,6 @@ packages: resolution: {integrity: sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==} dependencies: minimatch: 3.1.2 - dev: false /ignore@4.0.6: resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==} @@ -18516,7 +19817,6 @@ packages: /ignore@5.1.9: resolution: {integrity: sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==} engines: {node: '>= 4'} - dev: false /ignore@5.3.2: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} @@ -18526,6 +19826,14 @@ packages: resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} engines: {node: '>= 4'} + /image-size@0.5.5: + resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==} + engines: {node: '>=0.10.0'} + hasBin: true + requiresBuild: true + dev: true + optional: true + /immediate@3.0.6: resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} @@ -18555,7 +19863,6 @@ packages: /import-lazy@2.1.0: resolution: {integrity: sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==} engines: {node: '>=4'} - dev: false /import-lazy@3.1.0: resolution: {integrity: sha512-8/gvXvX2JMn0F+CDlSC4l6kOmVaLOO3XLkksI7CI3Ud95KDYJuYur2b9P/PUt/i/pDAMd/DulQsNbbbmRRsDIQ==} @@ -18609,7 +19916,6 @@ packages: /ini@2.0.0: resolution: {integrity: sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==} engines: {node: '>=10'} - dev: false /inline-style-parser@0.1.1: resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} @@ -18642,7 +19948,6 @@ packages: string-width: 4.2.3 strip-ansi: 6.0.1 through: 2.3.8 - dev: false /internal-slot@1.1.0: resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} @@ -18796,7 +20101,6 @@ packages: hasBin: true dependencies: ci-info: 2.0.0 - dev: false /is-core-module@2.16.1: resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} @@ -18866,7 +20170,6 @@ packages: /is-es2016-keyword@1.0.0: resolution: {integrity: sha512-JtZWPUwjdbQ1LIo9OSZ8MdkWEve198ors27vH+RzUUvZXXZkzXCxFnlUhzWYxy5IexQSRiXVw9j2q/tHMmkVYQ==} - dev: false /is-extendable@0.1.1: resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} @@ -18940,7 +20243,6 @@ packages: dependencies: global-dirs: 3.0.1 is-path-inside: 3.0.3 - dev: false /is-interactive@1.0.0: resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} @@ -18965,7 +20267,6 @@ packages: /is-npm@5.0.0: resolution: {integrity: sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==} engines: {node: '>=10'} - dev: false /is-number-object@1.1.1: resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} @@ -19005,7 +20306,6 @@ packages: /is-plain-obj@2.1.0: resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} engines: {node: '>=8'} - dev: false /is-plain-obj@4.1.0: resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} @@ -19068,7 +20368,6 @@ packages: engines: {node: '>=4'} dependencies: better-path-resolve: 1.0.0 - dev: false /is-supported-regexp-flag@1.0.1: resolution: {integrity: sha512-3vcJecUUrpgCqc/ca0aWeNu64UGgxcvO60K/Fkr1N6RSvfGCTU60UKN68JDmKokgba0rFFJs12EnzOQa14ubKQ==} @@ -19091,7 +20390,6 @@ packages: /is-typedarray@1.0.0: resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} - dev: false /is-unicode-supported@0.1.0: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} @@ -19114,6 +20412,10 @@ packages: call-bound: 1.0.4 get-intrinsic: 1.3.0 + /is-what@3.14.1: + resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==} + dev: true + /is-whitespace-character@1.0.4: resolution: {integrity: sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==} dev: true @@ -19134,7 +20436,6 @@ packages: /is-yarn-global@0.3.0: resolution: {integrity: sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==} - dev: false /isarray@0.0.1: resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} @@ -19164,7 +20465,7 @@ packages: resolution: {integrity: sha512-A2xsDNST1yB94rErEnwqlzSvGllCJ4e8lDMe1OWBH2hvpfc/2qzgMEiDshTO1HwO+PIDTiYeOc7ZDB7Ds49BOg==} engines: {node: '>=18'} dependencies: - dompurify: 3.2.4 + dompurify: 3.2.6 jsdom: 26.1.0 transitivePeerDependencies: - bufferutil @@ -19314,6 +20615,11 @@ packages: resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} hasBin: true + /jiti@2.6.1: + resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} + hasBin: true + dev: true + /jju@1.4.0: resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} @@ -19346,7 +20652,6 @@ packages: /js-tokens@3.0.2: resolution: {integrity: sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==} - dev: false /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -19357,7 +20662,6 @@ packages: dependencies: argparse: 1.0.10 esprima: 4.0.1 - dev: false /js-yaml@3.14.1: resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} @@ -19444,7 +20748,6 @@ packages: /jsep@1.4.0: resolution: {integrity: sha512-B7qPcEVE3NVkmSJbaYxvv4cHkVW7DQsZz13pUMrfS8z8Q/BuShN+gcTXrUlPiGqM2/t/EEaI030bpxMqY8gMlw==} engines: {node: '>= 10.16.0'} - dev: false /jsesc@0.5.0: resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} @@ -19468,7 +20771,6 @@ packages: /json-buffer@3.0.0: resolution: {integrity: sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==} - dev: false /json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} @@ -19485,6 +20787,21 @@ packages: engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dev: true + /json-schema-compare@0.2.2: + resolution: {integrity: sha512-c4WYmDKyJXhs7WWvAWm3uIYnfyWFoIp+JEoX34rctVvEkMYCPGhXtvmFFXiffBbxfZsvQ0RNnV5H7GvDF5HCqQ==} + dependencies: + lodash: 4.17.21 + dev: false + + /json-schema-merge-allof@0.8.1: + resolution: {integrity: sha512-CTUKmIlPJbsWfzRRnOXz+0MjIqvnleIXwFTzz+t9T86HnYX/Rozria6ZVGLktAU9e+NygNljveP+yxqtQp/Q4w==} + engines: {node: '>=12.0.0'} + dependencies: + compute-lcm: 1.1.2 + json-schema-compare: 0.2.2 + lodash: 4.17.21 + dev: false + /json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} @@ -19533,6 +20850,10 @@ packages: '@jsep-plugin/assignment': 1.3.0(jsep@1.4.0) '@jsep-plugin/regex': 1.0.4(jsep@1.4.0) jsep: 1.4.0 + + /jsonpointer@5.0.1: + resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==} + engines: {node: '>=0.10.0'} dev: false /jsonwebtoken@9.0.2: @@ -19549,7 +20870,6 @@ packages: lodash.once: 4.1.1 ms: 2.1.3 semver: 7.7.2 - dev: false /jsx-ast-utils@3.3.5: resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} @@ -19575,7 +20895,6 @@ packages: pako: 1.0.11 readable-stream: 2.3.8 set-immediate-shim: 1.0.1 - dev: false /jwa@1.4.2: resolution: {integrity: sha512-eeH5JO+21J78qMvTIDdBXidBd6nG2kZjg5Ohz/1fpa28Z4CcsWUzJ1ZZyFq/3z3N17aZy+ZuBoHljASbL1WfOw==} @@ -19583,7 +20902,6 @@ packages: buffer-equal-constant-time: 1.0.1 ecdsa-sig-formatter: 1.0.11 safe-buffer: 5.2.1 - dev: false /jwa@2.0.1: resolution: {integrity: sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==} @@ -19591,21 +20909,18 @@ packages: buffer-equal-constant-time: 1.0.1 ecdsa-sig-formatter: 1.0.11 safe-buffer: 5.2.1 - dev: false /jws@3.2.2: resolution: {integrity: sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==} dependencies: jwa: 1.4.2 safe-buffer: 5.2.1 - dev: false /jws@4.0.0: resolution: {integrity: sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==} dependencies: jwa: 2.0.1 safe-buffer: 5.2.1 - dev: false /katex@0.16.22: resolution: {integrity: sha512-XCHRdUw4lf3SKBaJe4EvgqIuWwkPSo9XoeO8GjQW94Bp7TWv9hNhzZjZ+OH9yf1UmLygb7DIT5GSFQiyt16zYg==} @@ -19618,7 +20933,6 @@ packages: resolution: {integrity: sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==} dependencies: json-buffer: 3.0.0 - dev: false /keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} @@ -19706,7 +21020,6 @@ packages: engines: {node: '>=8'} dependencies: package-json: 6.5.0 - dev: false /layout-base@1.0.2: resolution: {integrity: sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==} @@ -19725,6 +21038,24 @@ packages: dotenv-expand: 10.0.0 dev: true + /less@4.4.2: + resolution: {integrity: sha512-j1n1IuTX1VQjIy3tT7cyGbX7nvQOsFLoIqobZv4ttI5axP923gA44zUj6miiA6R5Aoms4sEGVIIcucXUbRI14g==} + engines: {node: '>=14'} + hasBin: true + dependencies: + copy-anything: 2.0.6 + parse-node-version: 1.0.1 + tslib: 2.8.1 + optionalDependencies: + errno: 0.1.8 + graceful-fs: 4.2.11 + image-size: 0.5.5 + make-dir: 2.1.0 + mime: 1.6.0 + needle: 3.3.1 + source-map: 0.6.1 + dev: true + /leven@2.1.0: resolution: {integrity: sha512-nvVPLpIHUxCUoRLrFqTgSxXJ614d8AgQoWl7zPe/2VadE8+1dpU3LBhowRuBAcuwruWtOdD8oYC9jDNJjXDPyA==} engines: {node: '>=0.10.0'} @@ -19776,17 +21107,15 @@ packages: parse-json: 5.2.0 strip-bom: 4.0.0 type-fest: 3.13.1 - dev: false /load-yaml-file@0.2.0: resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} engines: {node: '>=6'} dependencies: graceful-fs: 4.2.11 - js-yaml: 3.13.1 + js-yaml: 3.14.1 pify: 4.0.1 strip-bom: 3.0.0 - dev: false /loader-runner@4.3.0: resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} @@ -19838,6 +21167,13 @@ packages: dependencies: p-locate: 5.0.0 + /locate-path@7.2.0: + resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + p-locate: 6.0.0 + dev: true + /lodash-es@4.17.21: resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} dev: false @@ -19860,36 +21196,28 @@ packages: /lodash.get@4.4.2: resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} deprecated: This package is deprecated. Use the optional chaining (?.) operator instead. - dev: false /lodash.includes@4.3.0: resolution: {integrity: sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==} - dev: false /lodash.isboolean@3.0.3: resolution: {integrity: sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==} - dev: false /lodash.isequal@4.5.0: resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} deprecated: This package is deprecated. Use require('node:util').isDeepStrictEqual instead. - dev: false /lodash.isinteger@4.0.4: resolution: {integrity: sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==} - dev: false /lodash.isnumber@3.0.3: resolution: {integrity: sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==} - dev: false /lodash.isplainobject@4.0.6: resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} - dev: false /lodash.isstring@4.0.1: resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==} - dev: false /lodash.keys@4.2.0: resolution: {integrity: sha512-J79MkJcp7Df5mizHiVNpjoHXLi4HLjh9VLS/M7lQSGoQ+0oQ+lWEigREkqKyizPB1IawvQLLKY8mzEcm1tkyxQ==} @@ -19905,7 +21233,6 @@ packages: /lodash.once@4.1.1: resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==} - dev: false /lodash.truncate@4.4.2: resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} @@ -19985,16 +21312,19 @@ packages: /lowercase-keys@1.0.1: resolution: {integrity: sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==} engines: {node: '>=0.10.0'} - dev: false /lowercase-keys@2.0.0: resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} engines: {node: '>=8'} - dev: false /lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + /lru-cache@11.2.4: + resolution: {integrity: sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==} + engines: {node: 20 || >=22} + dev: false + /lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} dependencies: @@ -20074,7 +21404,6 @@ packages: engines: {node: '>=6'} dependencies: p-defer: 1.0.0 - dev: false /map-cache@0.2.2: resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==} @@ -20129,7 +21458,6 @@ packages: react: 18.2.0 dependencies: react: 18.2.0 - dev: true /marked-mangle@1.1.10(marked@15.0.7): resolution: {integrity: sha512-TrpN67SMJJdzXXWIzOd/QmnpsC5o1B44PUYaG2bh1XEbqVjA0UCI2ijFuE5LWESwKeI2gCP5FqcUHRGQwFtDIA==} @@ -20187,6 +21515,14 @@ packages: resolution: {integrity: sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==} dev: true + /md5.js@1.3.5: + resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} + dependencies: + hash-base: 3.1.2 + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: true + /mdast-util-compact@1.0.4: resolution: {integrity: sha512-3YDMQHI5vRiS2uygEFYaqckibpJtKq5Sj2c8JioeOQBU6INpKbdWzfyLqFFnDwEcEnRFIdMsguzs5pC1Jp4Isg==} dependencies: @@ -20516,7 +21852,6 @@ packages: dependencies: map-age-cleaner: 0.1.3 mimic-fn: 3.1.0 - dev: false /memfs@4.17.2: resolution: {integrity: sha512-NgYhCOWgovOXSzvYgUW0LQ7Qy72rWQMGGFJDoWg4G30RHd3z77VbYdtJ4fembJXBy8pMIUA31XNAupobOQlwdg==} @@ -20528,6 +21863,17 @@ packages: tslib: 2.8.1 dev: true + /memfs@4.51.1: + resolution: {integrity: sha512-Eyt3XrufitN2ZL9c/uIRMyDwXanLI88h/L3MoWqNY747ha3dMR9dWqp8cRT5ntjZ0U1TNuq4U91ZXK0sMBjYOQ==} + dependencies: + '@jsonjoy.com/json-pack': 1.21.0(tslib@2.8.1) + '@jsonjoy.com/util': 1.9.0(tslib@2.8.1) + glob-to-regex.js: 1.2.0(tslib@2.8.1) + thingies: 2.5.0(tslib@2.8.1) + tree-dump: 1.1.0(tslib@2.8.1) + tslib: 2.8.1 + dev: true + /memoize-one@5.2.1: resolution: {integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==} dev: false @@ -20587,7 +21933,6 @@ packages: trim-newlines: 3.0.1 type-fest: 3.13.1 yargs-parser: 20.2.9 - dev: false /merge-descriptors@1.0.3: resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} @@ -21216,6 +22561,14 @@ packages: braces: 3.0.3 picomatch: 2.3.1 + /miller-rabin@4.0.1: + resolution: {integrity: sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==} + hasBin: true + dependencies: + bn.js: 4.12.2 + brorand: 1.1.0 + dev: true + /mime-db@1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} @@ -21250,12 +22603,10 @@ packages: /mimic-fn@3.1.0: resolution: {integrity: sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==} engines: {node: '>=8'} - dev: false /mimic-response@1.0.1: resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} engines: {node: '>=4'} - dev: false /min-indent@1.0.1: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} @@ -21266,11 +22617,18 @@ packages: hasBin: true dev: false + /minimalistic-assert@1.0.1: + resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + dev: true + + /minimalistic-crypto-utils@1.0.1: + resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} + dev: true + /minimatch@3.0.8: resolution: {integrity: sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==} dependencies: brace-expansion: 1.1.12 - dev: false /minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} @@ -21391,6 +22749,11 @@ packages: engines: {node: '>=4'} dev: false + /mrmime@2.0.1: + resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==} + engines: {node: '>=10'} + dev: true + /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} @@ -21406,11 +22769,9 @@ packages: array-union: 2.1.0 arrify: 2.0.1 minimatch: 3.1.2 - dev: false /mute-stream@0.0.8: resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} - dev: false /mz@2.7.0: resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} @@ -21466,6 +22827,17 @@ packages: /natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + /needle@3.3.1: + resolution: {integrity: sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==} + engines: {node: '>= 4.4.x'} + hasBin: true + requiresBuild: true + dependencies: + iconv-lite: 0.6.3 + sax: 1.4.3 + dev: true + optional: true + /negotiator@0.6.3: resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} engines: {node: '>= 0.6'} @@ -21497,7 +22869,6 @@ packages: resolution: {integrity: sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==} dependencies: lodash: 4.17.21 - dev: false /node-fetch-native@1.6.6: resolution: {integrity: sha512-8Mc2HhqPdlIfedsuZoc3yioPuzp6b+L5jRCRY1QzuWZh2EGJVQrGppC6V6cF0bLdbW0+O2YpqCA25aF/1lvipQ==} @@ -21553,13 +22924,11 @@ packages: /normalize-url@4.5.1: resolution: {integrity: sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==} engines: {node: '>=8'} - dev: false /npm-bundled@1.1.2: resolution: {integrity: sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==} dependencies: npm-normalize-package-bin: 1.0.1 - dev: false /npm-check@6.0.1: resolution: {integrity: sha512-tlEhXU3689VLUHYEZTS/BC61vfeN2xSSZwoWDT6WLuenZTpDmGmNT5mtl15erTR0/A15ldK06/NEKg9jYJ9OTQ==} @@ -21586,7 +22955,7 @@ packages: pkg-dir: 5.0.0 preferred-pm: 3.1.4 rc-config-loader: 4.1.3 - semver: 7.5.4 + semver: 7.7.2 semver-diff: 3.1.1 strip-ansi: 6.0.1 text-table: 0.2.0 @@ -21595,11 +22964,9 @@ packages: xtend: 4.0.2 transitivePeerDependencies: - supports-color - dev: false /npm-normalize-package-bin@1.0.1: resolution: {integrity: sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==} - dev: false /npm-package-arg@6.1.1: resolution: {integrity: sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg==} @@ -21608,7 +22975,6 @@ packages: osenv: 0.1.5 semver: 5.7.2 validate-npm-package-name: 3.0.0 - dev: false /npm-packlist@2.1.5: resolution: {integrity: sha512-KCfK3Vi2F+PH1klYauoQzg81GQ8/GGjQRKYY6tRnpQUPKTs/1gBZSRWtTEd7jGdSn1LZL7gpAmJT+BcS55k2XQ==} @@ -21619,7 +22985,6 @@ packages: ignore-walk: 3.0.4 npm-bundled: 1.1.2 npm-normalize-package-bin: 1.0.1 - dev: false /npm-run-path@4.0.1: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} @@ -21756,6 +23121,10 @@ packages: define-properties: 1.2.1 es-object-atoms: 1.1.1 + /objectorarray@1.0.5: + resolution: {integrity: sha512-eJJDYkhJFFbBBAxeh8xW+weHlkI28n2ZdQV/J/DNfWfSKlGEf2xcfAbZTv3riEXHAhL9SVOTs2pRmXiSTf78xg==} + dev: true + /on-finished@2.4.1: resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} engines: {node: '>= 0.8'} @@ -21824,15 +23193,17 @@ packages: strip-ansi: 6.0.1 wcwidth: 1.0.1 + /os-browserify@0.3.0: + resolution: {integrity: sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==} + dev: true + /os-homedir@1.0.2: resolution: {integrity: sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==} engines: {node: '>=0.10.0'} - dev: false /os-tmpdir@1.0.2: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} engines: {node: '>=0.10.0'} - dev: false /osenv@0.1.5: resolution: {integrity: sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==} @@ -21840,7 +23211,6 @@ packages: dependencies: os-homedir: 1.0.2 os-tmpdir: 1.0.2 - dev: false /overlayscrollbars@2.11.4: resolution: {integrity: sha512-GKYQo3OZ1QWnppNjQVv5hfpn+glYUxc6+ufW+ivdXUyLWFNc01XoH2Z36KGM4I8e5pXYeA3ElNItcXiLvmUhnQ==} @@ -21857,12 +23227,10 @@ packages: /p-cancelable@1.1.0: resolution: {integrity: sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==} engines: {node: '>=6'} - dev: false /p-defer@1.0.0: resolution: {integrity: sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==} engines: {node: '>=4'} - dev: false /p-limit@1.3.0: resolution: {integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==} @@ -21883,6 +23251,13 @@ packages: dependencies: yocto-queue: 0.1.0 + /p-limit@4.0.0: + resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + yocto-queue: 1.2.1 + dev: true + /p-limit@6.2.0: resolution: {integrity: sha512-kuUqqHNUqoIWp/c467RI4X6mmyuojY5jGutNU0wVTmEOOfcuwLqyMVoAi9MKi2Ak+5i9+nhmrK4ufZE8069kHA==} engines: {node: '>=18'} @@ -21916,6 +23291,13 @@ packages: dependencies: p-limit: 3.1.0 + /p-locate@6.0.0: + resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + p-limit: 4.0.0 + dev: true + /p-map@4.0.0: resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} engines: {node: '>=10'} @@ -21926,7 +23308,6 @@ packages: /p-reflect@2.1.0: resolution: {integrity: sha512-paHV8NUz8zDHu5lhr/ngGWQiW067DK/+IbJ+RfZ4k+s8y4EKyYCz8pGYWjxCg35eHztpJAt+NUgvN4L+GCbPlg==} engines: {node: '>=8'} - dev: false /p-settle@4.1.1: resolution: {integrity: sha512-6THGh13mt3gypcNMm0ADqVNCcYa3BK6DWsuJWFCuEKP1rpY+OKGp7gaZwVmLspmic01+fsg/fN57MfvDzZ/PuQ==} @@ -21934,7 +23315,6 @@ packages: dependencies: p-limit: 2.3.0 p-reflect: 2.1.0 - dev: false /p-try@1.0.0: resolution: {integrity: sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==} @@ -21956,7 +23336,6 @@ packages: registry-auth-token: 4.2.2 registry-url: 5.1.0 semver: 6.3.1 - dev: false /package-manager-detector@1.3.0: resolution: {integrity: sha512-ZsEbbZORsyHuO00lY1kV3/t72yp6Ysay6Pd17ZAlNGuGwmWDLCJxFpRs0IzfXfj1o4icJOkUEioexFHzyPurSQ==} @@ -21978,12 +23357,30 @@ packages: resolution: {integrity: sha512-5QvjGxYVjxO59MGU2lHVYpRWBBtKHnlIAcSe1uNFCkkptUh63NFRj0FJQm7nR67puEruUci/ZkjmEFrjCAyP4A==} dev: false + /param-case@3.0.4: + resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} + dependencies: + dot-case: 3.0.4 + tslib: 2.8.1 + dev: true + /parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} dependencies: callsites: 3.1.0 + /parse-asn1@5.1.9: + resolution: {integrity: sha512-fIYNuZ/HastSb80baGOuPRo1O9cf4baWw5WsAp7dBuUzeTD/BoaG8sVTdlPFksBE2lF21dN+A1AnrpIjSWqHHg==} + engines: {node: '>= 0.10'} + dependencies: + asn1.js: 4.10.1 + browserify-aes: 1.2.0 + evp_bytestokey: 1.0.3 + pbkdf2: 3.1.5 + safe-buffer: 5.2.1 + dev: true + /parse-entities@1.2.2: resolution: {integrity: sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg==} dependencies: @@ -22024,10 +23421,14 @@ packages: json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 + /parse-node-version@1.0.1: + resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==} + engines: {node: '>= 0.10'} + dev: true + /parse-passwd@1.0.0: resolution: {integrity: sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==} engines: {node: '>=0.10.0'} - dev: false /parse-svg-path@0.1.2: resolution: {integrity: sha512-JyPSBnkTJ0AI8GGJLfMXvKq42cj5c006fnLz6fXy6zfoVjJizi8BNTpu8on8ziI1cKy9d9DGNuY17Ce7wuejpQ==} @@ -22044,6 +23445,13 @@ packages: engines: {node: '>= 0.8'} dev: true + /pascal-case@3.1.2: + resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} + dependencies: + no-case: 3.0.4 + tslib: 2.8.1 + dev: true + /pascalcase@0.1.1: resolution: {integrity: sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==} engines: {node: '>=0.10.0'} @@ -22069,6 +23477,11 @@ packages: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} + /path-exists@5.0.0: + resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + /path-is-absolute@1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} @@ -22129,6 +23542,18 @@ packages: resolve-protobuf-schema: 2.1.0 dev: false + /pbkdf2@3.1.5: + resolution: {integrity: sha512-Q3CG/cYvCO1ye4QKkuH7EXxs3VC/rI1/trd+qX2+PolbaKG0H+bgcZzrTt96mMyRtejk+JMCiLUn3y29W8qmFQ==} + engines: {node: '>= 0.10'} + dependencies: + create-hash: 1.2.0 + create-hmac: 1.1.7 + ripemd160: 2.0.3 + safe-buffer: 5.2.1 + sha.js: 2.4.12 + to-buffer: 1.2.2 + dev: true + /peek-stream@1.1.3: resolution: {integrity: sha512-FhJ+YbOSBb9/rIl2ZeE/QHEsWn7PqNYt8ARAY3kIgNGOk13g9FGyIY6JIl/xB/3TFRVoTv5as0l11weORrTekA==} dependencies: @@ -22173,12 +23598,10 @@ packages: engines: {node: '>=0.10.0'} dependencies: pinkie: 2.0.4 - dev: false /pinkie@2.0.4: resolution: {integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==} engines: {node: '>=0.10.0'} - dev: false /pirates@4.0.7: resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} @@ -22203,6 +23626,13 @@ packages: dependencies: find-up: 5.0.0 + /pkg-dir@7.0.0: + resolution: {integrity: sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==} + engines: {node: '>=14.16'} + dependencies: + find-up: 6.3.0 + dev: true + /pkg-types@1.3.1: resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} dependencies: @@ -22222,7 +23652,6 @@ packages: resolution: {integrity: sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==} dependencies: semver-compare: 1.0.0 - dev: false /pluralize@8.0.0: resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} @@ -22233,7 +23662,6 @@ packages: dependencies: '@pnpm/dependency-path': 2.1.8 yaml: 2.4.1 - dev: false /point-at-length@1.1.0: resolution: {integrity: sha512-nNHDk9rNEh/91o2Y8kHLzBLNpLf80RYd2gCun9ss+V0ytRSf6XhryBTx071fesktjbachRmGuUbId+JQmzhRXw==} @@ -22568,7 +23996,6 @@ packages: find-yarn-workspace-root2: 1.2.16 path-exists: 4.0.0 which-pm: 2.2.0 - dev: false /prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} @@ -22577,7 +24004,6 @@ packages: /prepend-http@2.0.0: resolution: {integrity: sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==} engines: {node: '>=4'} - dev: false /prettier-linter-helpers@1.0.0: resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} @@ -22697,6 +24123,22 @@ packages: /proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + + /prr@1.0.1: + resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} + requiresBuild: true + dev: true + optional: true + + /public-encrypt@4.0.3: + resolution: {integrity: sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==} + dependencies: + bn.js: 4.12.2 + browserify-rsa: 4.1.1 + create-hash: 1.2.0 + parse-asn1: 5.1.9 + randombytes: 2.1.0 + safe-buffer: 5.2.1 dev: true /pump@2.0.1: @@ -22720,6 +24162,10 @@ packages: pump: 2.0.1 dev: true + /punycode@1.4.1: + resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} + dev: true + /punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} @@ -22729,7 +24175,6 @@ packages: engines: {node: '>=8'} dependencies: escape-goat: 2.1.1 - dev: false /puppeteer-core@2.1.1: resolution: {integrity: sha512-n13AWriBMPYxnpbb6bnaY5YoY6rGj8vPLrz6CZF3o0qJNEwlcfJVxBzYZ0NJsQ21UbdJoijPCDrM++SUVEz7+w==} @@ -22780,6 +24225,11 @@ packages: split-on-first: 3.0.0 dev: false + /querystring-es3@0.2.1: + resolution: {integrity: sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==} + engines: {node: '>=0.4.x'} + dev: true + /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} @@ -22791,7 +24241,6 @@ packages: /quick-lru@4.0.1: resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} engines: {node: '>=8'} - dev: false /quick-lru@5.1.1: resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} @@ -22800,7 +24249,6 @@ packages: /ramda@0.27.2: resolution: {integrity: sha512-SbiLPU40JuJniHexQSAgad32hfwd+DRUdwF2PlVuI5RZD0/vahUco7R8vD86J/tcEKKF9vZrUVwgtmGCqlCKyA==} - dev: false /ramda@0.29.0: resolution: {integrity: sha512-BBea6L67bYLtdbOqfp8f58fPMqEwx0doL+pAi8TZyp2YWz8R9G8z9x75CZI8W+ftqhFHCpEX2cRnUUXK130iKA==} @@ -22811,6 +24259,13 @@ packages: dependencies: safe-buffer: 5.2.1 + /randomfill@1.0.4: + resolution: {integrity: sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==} + dependencies: + randombytes: 2.1.0 + safe-buffer: 5.2.1 + dev: true + /range-parser@1.2.1: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} engines: {node: '>= 0.6'} @@ -22834,7 +24289,7 @@ packages: dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.91.0 + webpack: 5.91.0(esbuild@0.18.20) dev: true /rc-config-loader@4.1.3: @@ -22846,7 +24301,6 @@ packages: require-from-string: 2.0.2 transitivePeerDependencies: - supports-color - dev: false /rc@1.2.8: resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} @@ -22856,7 +24310,6 @@ packages: ini: 1.3.8 minimist: 1.2.8 strip-json-comments: 2.0.1 - dev: false /re-resizable@6.9.18(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-4RgEES1iizvpaNtvcJz2fUOw5efuK5Jaix3+nY4yQvI6pxKKkFaoKZB1KtiXd8hawR2BGdcoJFS4NGDPketAYQ==} @@ -23128,8 +24581,8 @@ packages: use-sidecar: 1.1.3(@types/react@18.2.37)(react@18.2.0) dev: true - /react-resizable-panels@2.0.23(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-8ZKTwTU11t/FYwiwhMdtZYYyFxic5U5ysRu2YwfkAgDbUJXFvnWSJqhnzkSlW+mnDoNAzDCrJhdOSXBPA76wug==} + /react-resizable-panels@2.1.9(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-z77+X08YDIrgAes4jl8xhnUu1LNIRp4+E7cv4xHmLOxxUPO/ML7PSrE813b90vj7xvQ1lcf7g2uA9GeMZonjhQ==} peerDependencies: react: 18.2.0 react-dom: 18.2.0 @@ -23236,6 +24689,16 @@ packages: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + /react-virtuoso@4.17.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-od3pi2v13v31uzn5zPXC2u3ouISFCVhjFVFch2VvS2Cx7pWA2F1aJa3XhNTN2F07M3lhfnMnsmGeH+7wZICr7w==} + peerDependencies: + react: 18.2.0 + react-dom: 18.2.0 + dependencies: + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + /react-window@1.8.11(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-+SRbUVT2scadgFSWx+R1P754xHPEqvcfSfVX10QYg6POOz+WNgkN48pS+BtZNIMGiL1HYrSEiCkwsMS15QogEQ==} engines: {node: '>8.0.0'} @@ -23268,7 +24731,6 @@ packages: json-parse-even-better-errors: 2.3.1 normalize-package-data: 2.5.0 npm-normalize-package-bin: 1.0.1 - dev: false /read-package-tree@5.1.6: resolution: {integrity: sha512-FCX1aT3GWyY658wzDICef4p+n0dB+ENRct8E/Qyvppj6xVpOYerBHfUu7OP5Rt1/393Tdglguf5ju5DEX4wZNg==} @@ -23279,7 +24741,6 @@ packages: once: 1.4.0 read-package-json: 2.1.2 readdir-scoped-modules: 1.1.0 - dev: false /read-pkg-up@3.0.0: resolution: {integrity: sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==} @@ -23340,7 +24801,6 @@ packages: dependencies: js-yaml: 4.1.0 strip-bom: 4.0.0 - dev: false /readable-stream@1.1.14: resolution: {integrity: sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==} @@ -23370,6 +24830,17 @@ packages: string_decoder: 1.3.0 util-deprecate: 1.0.2 + /readable-stream@4.7.0: + resolution: {integrity: sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + abort-controller: 3.0.0 + buffer: 6.0.3 + events: 3.3.0 + process: 0.11.10 + string_decoder: 1.3.0 + dev: true + /readdir-scoped-modules@1.1.0: resolution: {integrity: sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==} deprecated: This functionality has been moved to @npmcli/fs @@ -23378,7 +24849,6 @@ packages: dezalgo: 1.0.4 graceful-fs: 4.2.11 once: 1.4.0 - dev: false /readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} @@ -23458,8 +24928,8 @@ packages: strip-indent: 4.0.0 dev: true - /reduce-configs@1.1.0: - resolution: {integrity: sha512-DQxy6liNadHfrLahZR7lMdc227NYVaQZhY5FMsxLEjX8X0SCuH+ESHSLCoz2yDZFq1/CLMDOAHdsEHwOEXKtvg==} + /reduce-configs@1.1.1: + resolution: {integrity: sha512-EYtsVGAQarE8daT54cnaY1PIknF2VB78ug6Zre2rs36EsJfC40EG6hmTU2A2P1ZuXnKAt2KI0fzOGHcX7wzdPw==} dev: true /redux-saga@1.3.0: @@ -23550,14 +25020,12 @@ packages: engines: {node: '>=6.0.0'} dependencies: rc: 1.2.8 - dev: false /registry-url@5.1.0: resolution: {integrity: sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==} engines: {node: '>=8'} dependencies: rc: 1.2.8 - dev: false /regjsgen@0.8.0: resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} @@ -23584,6 +25052,11 @@ packages: - supports-color dev: false + /relateurl@0.2.7: + resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==} + engines: {node: '>= 0.10'} + dev: true + /remark-external-links@8.0.0: resolution: {integrity: sha512-5vPSX0kHoSsqtdftSHhIYofVINC8qmp0nctkeU9YoJwV3YfiBRiI6cbFRJ0oI/1F9xS+bopXG0m2KS8VFscuKA==} dependencies: @@ -23737,7 +25210,6 @@ packages: /require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} - dev: false /require-from-string@2.0.2: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} @@ -23745,7 +25217,6 @@ packages: /require-package-name@2.0.1: resolution: {integrity: sha512-uuoJ1hU/k6M0779t3VMVIYpb2VMJk05cehCaABFhXaibcbvfgR8wKiozLjVFSzJPmQMRqIcO0HMyTFqfV09V6Q==} - dev: false /resize-observer-polyfill@1.5.1: resolution: {integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==} @@ -23756,7 +25227,6 @@ packages: dependencies: expand-tilde: 2.0.2 global-modules: 1.0.0 - dev: false /resolve-from@3.0.0: resolution: {integrity: sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==} @@ -23790,7 +25260,6 @@ packages: dependencies: is-core-module: 2.16.1 path-parse: 1.0.7 - dev: false /resolve@1.22.10: resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} @@ -23813,7 +25282,6 @@ packages: resolution: {integrity: sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==} dependencies: lowercase-keys: 1.0.1 - dev: false /restore-cursor@3.1.0: resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} @@ -23833,7 +25301,6 @@ packages: /rfc4648@1.5.4: resolution: {integrity: sha512-rRg/6Lb+IGfJqO05HZkN50UtY7K/JhxJag1kP23+zyMfrvoB0B7RWv06MbOzoc79RgCdNTiUaNsTT1AJZ7Z+cg==} - dev: false /rimraf@2.6.3: resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==} @@ -23859,6 +25326,14 @@ packages: glob: 7.2.3 dev: true + /ripemd160@2.0.3: + resolution: {integrity: sha512-5Di9UC0+8h1L6ZD2d7awM7E/T4uA1fJRlx6zk/NvdCCVEoAnFqvHmCuNeIKoCeIixBX/q8uM+6ycDvF8woqosA==} + engines: {node: '>= 0.8'} + dependencies: + hash-base: 3.1.2 + inherits: 2.0.4 + dev: true + /robust-predicates@3.0.2: resolution: {integrity: sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==} dev: false @@ -23921,10 +25396,66 @@ packages: resolution: {integrity: sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==} dev: false + /rsbuild-plugin-dts@0.11.2(@microsoft/api-extractor@7.43.0)(@rsbuild/core@1.4.16): + resolution: {integrity: sha512-D3sSqcrxRnuIbGaXZgmV8K/WLaJ6lBe0mD3SemWAexBXYezu4rj1ndqQeRwkDBji+XU6wLUA+w43GyWtY4E79g==} + engines: {node: '>=16.7.0'} + peerDependencies: + '@microsoft/api-extractor': ^7 + '@rsbuild/core': 1.x + typescript: 5.8.2 + peerDependenciesMeta: + '@microsoft/api-extractor': + optional: true + typescript: + optional: true + dependencies: + '@ast-grep/napi': 0.37.0 + '@microsoft/api-extractor': 7.43.0(@types/node@18.18.9) + '@rsbuild/core': 1.4.16 + magic-string: 0.30.17 + picocolors: 1.1.1 + tinyglobby: 0.2.14 + tsconfig-paths: 4.2.0 + dev: true + + /rsbuild-plugin-dts@0.11.2(@rsbuild/core@1.4.16)(typescript@5.8.2): + resolution: {integrity: sha512-D3sSqcrxRnuIbGaXZgmV8K/WLaJ6lBe0mD3SemWAexBXYezu4rj1ndqQeRwkDBji+XU6wLUA+w43GyWtY4E79g==} + engines: {node: '>=16.7.0'} + peerDependencies: + '@microsoft/api-extractor': ^7 + '@rsbuild/core': 1.x + typescript: 5.8.2 + peerDependenciesMeta: + '@microsoft/api-extractor': + optional: true + typescript: + optional: true + dependencies: + '@ast-grep/napi': 0.37.0 + '@rsbuild/core': 1.4.16 + magic-string: 0.30.17 + picocolors: 1.1.1 + tinyglobby: 0.2.14 + tsconfig-paths: 4.2.0 + typescript: 5.8.2 + dev: true + + /rsbuild-plugin-html-minifier-terser@1.1.2(@rsbuild/core@1.1.13): + resolution: {integrity: sha512-8RyDdz30TlwcHFMOL/2rEMlkffY8CVaxcj3jqZvNTlIZjr5rNLWPAN2h6dAe0Gp+dh94Sl192IACO/nwgtoOfQ==} + peerDependencies: + '@rsbuild/core': 1.x + peerDependenciesMeta: + '@rsbuild/core': + optional: true + dependencies: + '@rsbuild/core': 1.1.13 + '@types/html-minifier-terser': 7.0.2 + html-minifier-terser: 7.2.0 + dev: true + /run-async@2.4.1: resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} engines: {node: '>=0.12.0'} - dev: false /run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} @@ -23940,13 +25471,11 @@ packages: engines: {npm: '>=2.0.0'} dependencies: tslib: 1.14.1 - dev: false /rxjs@7.8.2: resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} dependencies: tslib: 2.8.1 - dev: true /sade@1.8.1: resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} @@ -24198,8 +25727,14 @@ packages: neo-async: 2.6.2 schema-utils: 3.3.0 semver: 7.7.2 - webpack: 5.91.0 + webpack: 5.91.0(esbuild@0.18.20) + dev: true + + /sax@1.4.3: + resolution: {integrity: sha512-yqYn1JhPczigF94DMS+shiDMjDowYO6y9+wB/4WgO0Y19jWYk0lQ4tuG5KI7kj4FTp1wxPj5IFfcrz/s1c3jjQ==} + requiresBuild: true dev: true + optional: true /saxes@6.0.0: resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} @@ -24251,14 +25786,12 @@ packages: /semver-compare@1.0.0: resolution: {integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==} - dev: false /semver-diff@3.1.1: resolution: {integrity: sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==} engines: {node: '>=8'} dependencies: semver: 6.3.1 - dev: false /semver@5.7.2: resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} @@ -24349,7 +25882,6 @@ packages: /set-immediate-shim@1.0.1: resolution: {integrity: sha512-Li5AOqrZWCVA2n5kryzEmqai6bKSIvpz5oUJHPVj6+dsbD3X1ixtsY5tEnsaNpH3pFAHmG8eIHUrtEtohrg+UQ==} engines: {node: '>=0.10.0'} - dev: false /set-proto@1.0.0: resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} @@ -24376,6 +25908,16 @@ packages: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} dev: true + /sha.js@2.4.12: + resolution: {integrity: sha512-8LzC5+bvI45BjpfXU8V5fdU2mfeKiQe1D1gIMn7XUlF3OTUrpdJpPPH4EMAnF0DsHHdSZqCdSss5qCmJKuiO3w==} + engines: {node: '>= 0.10'} + hasBin: true + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + to-buffer: 1.2.2 + dev: true + /shallow-clone@3.0.1: resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} engines: {node: '>=8'} @@ -24490,6 +26032,15 @@ packages: resolution: {integrity: sha512-ZEyrplkqgCqDlL7V8GbbYgTLlcnNF+MWWUdy8s8ZeJru50bnI71rDew/I+HG36QS2mPOYAq1ZjwNXxHJ8XOVBw==} dev: false + /sirv@2.0.4: + resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} + engines: {node: '>= 10'} + dependencies: + '@polka/url': 1.0.0-next.29 + mrmime: 2.0.1 + totalist: 3.0.1 + dev: true + /sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} dev: true @@ -24574,7 +26125,6 @@ packages: engines: {node: '>=8'} dependencies: is-plain-obj: 2.1.0 - dev: false /sort-object-keys@1.1.3: resolution: {integrity: sha512-855pvK+VkU7PaKYPc+Jjnmt4EzejQHyhhF33q31qG8x7maDzkeFhAAThdCYay11CISO+qAMwjOBP+fPZe0IPyg==} @@ -24703,7 +26253,6 @@ packages: engines: {node: '>= 8'} dependencies: minipass: 3.3.6 - dev: false /stable-hash@0.0.5: resolution: {integrity: sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==} @@ -24751,12 +26300,86 @@ packages: /stoppable@1.1.0: resolution: {integrity: sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==} engines: {node: '>=4', npm: '>=6'} - dev: false /store2@2.14.4: resolution: {integrity: sha512-srTItn1GOvyvOycgxjAnPA63FZNwy0PTyUBFMHRM+hVFltAeoh0LmNBz9SZqUS9mMqGk8rfyWyXn3GH5ReJ8Zw==} dev: true + /storybook-builder-rsbuild@0.1.10(@rsbuild/core@1.1.13)(@types/react@18.2.37)(storybook@7.6.20)(typescript@5.8.2): + resolution: {integrity: sha512-lTfDMxswJM80c/bj1RO4198S+h/WjXKfWffdotm6DsAykUz4kiyXy0/jO4O1Wz7WXX/yS7OMY08GPq4xjM7Jwg==} + peerDependencies: + '@rsbuild/core': ^1.0.1 + storybook: ^8.2.1 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@rsbuild/core': 1.1.13 + '@rsbuild/plugin-type-check': 1.3.2(@rsbuild/core@1.1.13)(typescript@5.8.2) + '@storybook/addon-docs': 8.6.14(@types/react@18.2.37)(storybook@7.6.20) + '@storybook/core-webpack': 8.6.14(storybook@7.6.20) + browser-assert: 1.2.1 + case-sensitive-paths-webpack-plugin: 2.4.0 + cjs-module-lexer: 1.4.3 + constants-browserify: 1.0.0 + es-module-lexer: 1.7.0 + find-cache-dir: 5.0.0 + fs-extra: 11.3.0 + magic-string: 0.30.17 + path-browserify: 1.0.1 + process: 0.11.10 + rsbuild-plugin-html-minifier-terser: 1.1.2(@rsbuild/core@1.1.13) + sirv: 2.0.4 + storybook: 7.6.20 + ts-dedent: 2.2.0 + typescript: 5.8.2 + url: 0.11.4 + util: 0.12.5 + util-deprecate: 1.0.2 + transitivePeerDependencies: + - '@rspack/core' + - '@types/react' + dev: true + + /storybook-react-rsbuild@0.1.10(@rsbuild/core@1.1.13)(@storybook/test@7.6.20)(@types/react@18.2.37)(react-dom@18.2.0)(react@18.2.0)(storybook@7.6.20)(typescript@5.8.2)(webpack@5.91.0): + resolution: {integrity: sha512-NOYj6a84f2+1BkkLmm12+ToaFH0bO8BoQi2YT063+ftR60NrMrKICNwjMjaQiftLy+BNIIeU3JQOA5asPPW/7A==} + engines: {node: '>=18.0.0'} + peerDependencies: + '@rsbuild/core': ^1.0.1 + react: 18.2.0 + react-dom: 18.2.0 + storybook: ^8.2.1 + typescript: 5.8.2 + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@rollup/pluginutils': 5.2.0 + '@rsbuild/core': 1.1.13 + '@storybook/react': 8.6.14(@storybook/test@7.6.20)(react-dom@18.2.0)(react@18.2.0)(storybook@7.6.20)(typescript@5.8.2) + '@storybook/react-docgen-typescript-plugin': 1.0.1(typescript@5.8.2)(webpack@5.91.0) + '@types/node': 18.18.9 + find-up: 5.0.0 + magic-string: 0.30.17 + react: 18.2.0 + react-docgen: 7.1.1 + react-docgen-typescript: 2.4.0(typescript@5.8.2) + react-dom: 18.2.0(react@18.2.0) + resolve: 1.22.10 + storybook: 7.6.20 + storybook-builder-rsbuild: 0.1.10(@rsbuild/core@1.1.13)(@types/react@18.2.37)(storybook@7.6.20)(typescript@5.8.2) + tsconfig-paths: 4.2.0 + typescript: 5.8.2 + transitivePeerDependencies: + - '@rspack/core' + - '@storybook/test' + - '@types/react' + - rollup + - supports-color + - webpack + dev: true + /storybook@7.6.20: resolution: {integrity: sha512-Wt04pPTO71pwmRmsgkyZhNo4Bvdb/1pBAMsIFb9nQLykEdzzpXjvingxFFvdOG4nIowzwgxD+CLlyRqVJqnATw==} hasBin: true @@ -24769,6 +26392,22 @@ packages: - utf-8-validate dev: true + /stream-browserify@3.0.0: + resolution: {integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==} + dependencies: + inherits: 2.0.4 + readable-stream: 3.6.2 + dev: true + + /stream-http@3.2.0: + resolution: {integrity: sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==} + dependencies: + builtin-status-codes: 3.0.0 + inherits: 2.0.4 + readable-stream: 3.6.2 + xtend: 4.0.2 + dev: true + /stream-shift@1.0.3: resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} dev: true @@ -24780,12 +26419,10 @@ packages: /strict-uri-encode@2.0.0: resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==} engines: {node: '>=4'} - dev: false /string-argv@0.3.2: resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} engines: {node: '>=0.6.19'} - dev: false /string-natural-compare@3.0.1: resolution: {integrity: sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==} @@ -24934,7 +26571,6 @@ packages: /strip-bom@4.0.0: resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} engines: {node: '>=8'} - dev: false /strip-final-newline@2.0.0: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} @@ -24961,7 +26597,6 @@ packages: /strip-json-comments@2.0.1: resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} engines: {node: '>=0.10.0'} - dev: false /strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} @@ -24969,7 +26604,6 @@ packages: /strnum@2.1.1: resolution: {integrity: sha512-7ZvoFTiCnGxBtDqJ//Cu6fWtZtc7Y3x+QOirG15wztbdngGSkht27o2pyGWrVy0b4WAy3jbKmnoK6g5VlVNUUw==} - dev: false /style-mod@4.1.2: resolution: {integrity: sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw==} @@ -25488,6 +27122,31 @@ packages: supports-hyperlinks: 2.3.0 dev: true + /terser-webpack-plugin@5.3.14(esbuild@0.18.20)(webpack@5.91.0): + resolution: {integrity: sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@swc/core': '*' + esbuild: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@swc/core': + optional: true + esbuild: + optional: true + uglify-js: + optional: true + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + esbuild: 0.18.20 + jest-worker: 27.5.1 + schema-utils: 4.3.2 + serialize-javascript: 6.0.2 + terser: 5.43.0 + webpack: 5.91.0(esbuild@0.18.20) + dev: true + /terser-webpack-plugin@5.3.14(webpack@5.89.0): resolution: {integrity: sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==} engines: {node: '>= 10.13.0'} @@ -25595,9 +27254,17 @@ packages: tslib: 2.8.1 dev: true + /thingies@2.5.0(tslib@2.8.1): + resolution: {integrity: sha512-s+2Bwztg6PhWUD7XMfeYm5qliDdSiZm7M7n8KjTkIsm3l/2lgVRc2/Gx/v+ZX8lT4FMA+i8aQvhcWylldc+ZNw==} + engines: {node: '>=10.18'} + peerDependencies: + tslib: ^2 + dependencies: + tslib: 2.8.1 + dev: true + /throat@6.0.2: resolution: {integrity: sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==} - dev: false /through2@2.0.5: resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} @@ -25608,7 +27275,13 @@ packages: /through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - dev: false + + /timers-browserify@2.0.12: + resolution: {integrity: sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==} + engines: {node: '>=0.6.0'} + dependencies: + setimmediate: 1.0.5 + dev: true /tiny-invariant@1.3.3: resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} @@ -25675,12 +27348,20 @@ packages: engines: {node: '>=0.6.0'} dependencies: os-tmpdir: 1.0.2 - dev: false /tmpl@1.0.5: resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} dev: true + /to-buffer@1.2.2: + resolution: {integrity: sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw==} + engines: {node: '>= 0.4'} + dependencies: + isarray: 2.0.5 + safe-buffer: 5.2.1 + typed-array-buffer: 1.0.3 + dev: true + /to-json-schema@0.2.5: resolution: {integrity: sha512-jP1ievOee8pec3tV9ncxLSS48Bnw7DIybgy112rhMCEhf3K4uyVNZZHr03iQQBzbV5v5Hos+dlZRRyk6YSMNDw==} dependencies: @@ -25702,7 +27383,6 @@ packages: /to-readable-stream@1.0.0: resolution: {integrity: sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==} engines: {node: '>=6'} - dev: false /to-regex-range@2.1.1: resolution: {integrity: sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==} @@ -25755,6 +27435,11 @@ packages: commander: 2.20.3 dev: false + /totalist@3.0.1: + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} + engines: {node: '>=6'} + dev: true + /tough-cookie@5.1.2: resolution: {integrity: sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==} engines: {node: '>=16'} @@ -25781,6 +27466,15 @@ packages: tslib: 2.8.1 dev: true + /tree-dump@1.1.0(tslib@2.8.1): + resolution: {integrity: sha512-rMuvhU4MCDbcbnleZTFezWsaZXRFemSqAM+7jPnzUl1fo9w3YEKOxAeui0fz3OI4EU4hf23iyA7uQRVko+UaBA==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + dependencies: + tslib: 2.8.1 + dev: true + /trigram-utils@2.0.1: resolution: {integrity: sha512-nfWIXHEaB+HdyslAfMxSqWKDdmqY9I32jS7GnqpdWQnLH89r6A5sdk3fDVYqGAZ0CrT8ovAFSAo6HRiWcWNIGQ==} dependencies: @@ -25800,7 +27494,6 @@ packages: /trim-newlines@3.0.1: resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} engines: {node: '>=8'} - dev: false /trim-newlines@4.1.1: resolution: {integrity: sha512-jRKj0n0jXWo6kh62nA5TEh3+4igKDXLvzBJcPpiizP7oOolUrYIxmVBG9TOtHYFHoddUk6YvAkGeGoSVTXfQXQ==} @@ -25826,7 +27519,6 @@ packages: /true-case-path@2.2.1: resolution: {integrity: sha512-0z3j8R7MCjy10kc/g+qg7Ln3alJTodw9aDuVWZa3uiWqfuBMKeAeP2ocWcxoyM3D73yz3Jt/Pu4qPr4wHSdB/Q==} - dev: false /ts-api-utils@1.4.3(typescript@5.8.2): resolution: {integrity: sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==} @@ -25844,6 +27536,25 @@ packages: dependencies: typescript: 5.8.2 + /ts-checker-rspack-plugin@1.2.1(typescript@5.8.2): + resolution: {integrity: sha512-f6+A094ECwwe8X3tszfrKI0vNk4Uf/6VZNJ2nyOyCTSAczjBBgx0qoPfoYGsoK0yJrOB6TmCtaKHQIXyFfQLmg==} + peerDependencies: + '@rspack/core': ^1.0.0 + typescript: 5.8.2 + peerDependenciesMeta: + '@rspack/core': + optional: true + dependencies: + '@babel/code-frame': 7.27.1 + '@rspack/lite-tapable': 1.1.0 + chokidar: 3.6.0 + is-glob: 4.0.3 + memfs: 4.51.1 + minimatch: 9.0.5 + picocolors: 1.1.1 + typescript: 5.8.2 + dev: true + /ts-dedent@2.2.0: resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} engines: {node: '>=6.10'} @@ -25917,6 +27628,15 @@ packages: strip-bom: 3.0.0 dev: true + /tsconfig-paths@4.2.0: + resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} + engines: {node: '>=6'} + dependencies: + json5: 2.2.3 + minimist: 1.2.8 + strip-bom: 3.0.0 + dev: true + /tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} @@ -25948,6 +27668,10 @@ packages: fsevents: 2.3.3 dev: true + /tty-browserify@0.0.1: + resolution: {integrity: sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==} + dev: true + /tween-functions@1.2.0: resolution: {integrity: sha512-PZBtLYcCLtEcjL14Fzb1gSxPBeL7nWvGhO5ZFPGqziCcr8uvHp0NDmdjBchp6KHL+tExcg0m3NISmKxhU394dA==} dev: true @@ -26020,7 +27744,6 @@ packages: resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} dependencies: is-typedarray: 1.0.0 - dev: false /typedarray@0.0.6: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} @@ -26385,10 +28108,9 @@ packages: is-yarn-global: 0.3.0 latest-version: 5.1.0 pupa: 2.1.1 - semver: 7.5.4 + semver: 7.7.2 semver-diff: 3.1.1 xdg-basedir: 4.0.0 - dev: false /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} @@ -26405,7 +28127,14 @@ packages: engines: {node: '>=4'} dependencies: prepend-http: 2.0.0 - dev: false + + /url@0.11.4: + resolution: {integrity: sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==} + engines: {node: '>= 0.4'} + dependencies: + punycode: 1.4.1 + qs: 6.14.0 + dev: true /use-callback-ref@1.3.3(@types/react@18.2.37)(react@18.2.0): resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==} @@ -26533,7 +28262,6 @@ packages: /uuid@8.3.2: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true - dev: false /uuid@9.0.1: resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} @@ -26565,12 +28293,35 @@ packages: resolution: {integrity: sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==} dependencies: builtins: 1.0.3 + + /validate.io-array@1.0.6: + resolution: {integrity: sha512-DeOy7CnPEziggrOO5CZhVKJw6S3Yi7e9e65R1Nl/RTN1vTQKnzjfvks0/8kQ40FP/dsjRAOd4hxmJ7uLa6vxkg==} + dev: false + + /validate.io-function@1.0.2: + resolution: {integrity: sha512-LlFybRJEriSuBnUhQyG5bwglhh50EpTL2ul23MPIuR1odjO7XaMLFV8vHGwp7AZciFxtYOeiSCT5st+XSPONiQ==} + dev: false + + /validate.io-integer-array@1.0.0: + resolution: {integrity: sha512-mTrMk/1ytQHtCY0oNO3dztafHYyGU88KL+jRxWuzfOmQb+4qqnWmI+gykvGp8usKZOM0H7keJHEbRaFiYA0VrA==} + dependencies: + validate.io-array: 1.0.6 + validate.io-integer: 1.0.5 + dev: false + + /validate.io-integer@1.0.5: + resolution: {integrity: sha512-22izsYSLojN/P6bppBqhgUDjCkr5RY2jd+N2a3DCAUey8ydvrZ/OkGvFPR7qfOpwR2LC5p4Ngzxz36g5Vgr/hQ==} + dependencies: + validate.io-number: 1.0.3 + dev: false + + /validate.io-number@1.0.3: + resolution: {integrity: sha512-kRAyotcbNaSYoDnXvb4MHg/0a1egJdLwS6oJ38TJY7aw9n93Fl/3blIXdyYvPOp55CNxywooG/3BcrwNrBpcSg==} dev: false /validator@13.15.15: resolution: {integrity: sha512-BgWVbCI72aIQy937xbawcs+hrVaN/CZ2UwutgaJ36hGqRrLNM+f5LUT/YPRbo8IV/ASeFzXszezV+y2+rq3l8A==} engines: {node: '>= 0.10'} - dev: false /varint@6.0.0: resolution: {integrity: sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==} @@ -26679,6 +28430,31 @@ packages: - yaml dev: true + /vite-node@3.0.9(less@4.4.2): + resolution: {integrity: sha512-w3Gdx7jDcuT9cNn9jExXgOyKmf5UOTb6WMHz8LGAm54eS1Elf5OuBhCxl6zJxGhEeIkgsE1WbHuoL0mj/UXqXg==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + dependencies: + cac: 6.7.14 + debug: 4.3.3 + es-module-lexer: 1.7.0 + pathe: 2.0.3 + vite: 6.3.5(less@4.4.2) + transitivePeerDependencies: + - '@types/node' + - jiti + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + dev: true + /vite-plugin-svgr@3.3.0(typescript@5.8.2)(vite@4.5.14): resolution: {integrity: sha512-vWZMCcGNdPqgziYFKQ3Y95XP0d0YGp28+MM3Dp9cTa/px5CKcHHrIoPl2Jw81rgVm6/ZUNONzjXbZQZ7Kw66og==} peerDependencies: @@ -26850,6 +28626,57 @@ packages: fsevents: 2.3.3 dev: true + /vite@6.3.5(less@4.4.2): + resolution: {integrity: sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + peerDependencies: + '@types/node': 18.18.9 + jiti: '>=1.21.0' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + dependencies: + esbuild: 0.25.5 + fdir: 6.4.6(picomatch@4.0.2) + less: 4.4.2 + picomatch: 4.0.2 + postcss: 8.5.6 + rollup: 4.43.0 + tinyglobby: 0.2.14 + optionalDependencies: + fsevents: 2.3.3 + dev: true + /vitest@3.0.9(@types/node@18.18.9)(happy-dom@20.0.10): resolution: {integrity: sha512-BbcFDqNyBlfSpATmTtXOAOj71RNKDDvjBM/uPfnxxVGrG+FSH2RQIwgeEngTaTkuU/h0ScFvf+tRcKfYXzBybQ==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} @@ -27107,6 +28934,73 @@ packages: - yaml dev: true + /vitest@3.0.9(less@4.4.2): + resolution: {integrity: sha512-BbcFDqNyBlfSpATmTtXOAOj71RNKDDvjBM/uPfnxxVGrG+FSH2RQIwgeEngTaTkuU/h0ScFvf+tRcKfYXzBybQ==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@types/debug': ^4.1.12 + '@types/node': 18.18.9 + '@vitest/browser': 3.0.9 + '@vitest/ui': 3.0.9 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/debug': + optional: true + '@types/node': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + dependencies: + '@vitest/expect': 3.0.9 + '@vitest/mocker': 3.0.9(vite@6.3.5) + '@vitest/pretty-format': 3.2.4 + '@vitest/runner': 3.0.9 + '@vitest/snapshot': 3.0.9 + '@vitest/spy': 3.0.9 + '@vitest/utils': 3.0.9 + chai: 5.2.0 + debug: 4.3.3 + expect-type: 1.2.1 + magic-string: 0.30.17 + pathe: 2.0.3 + std-env: 3.9.0 + tinybench: 2.9.0 + tinyexec: 0.3.2 + tinypool: 1.1.1 + tinyrainbow: 2.0.0 + vite: 6.3.5(less@4.4.2) + vite-node: 3.0.9(less@4.4.2) + why-is-node-running: 2.3.0 + transitivePeerDependencies: + - jiti + - less + - lightningcss + - msw + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + dev: true + + /vm-browserify@1.1.2: + resolution: {integrity: sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==} + dev: true + /vscode-json-languageservice@5.6.0: resolution: {integrity: sha512-w1dv0nEoFxaNDq0PlYleYnlM4sFYXtFNZxaGGYy9nsCidXqHMh4RFHqld6XkFOhxs7hRBpK1QuXlH9OFDkTyfg==} dependencies: @@ -27303,6 +29197,46 @@ packages: - esbuild - uglify-js + /webpack@5.91.0(esbuild@0.18.20): + resolution: {integrity: sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + dependencies: + '@types/eslint-scope': 3.7.7 + '@types/estree': 1.0.8 + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/wasm-edit': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + acorn: 8.15.0 + acorn-import-assertions: 1.9.0(acorn@8.15.0) + browserslist: 4.25.0 + chrome-trace-event: 1.0.4 + enhanced-resolve: 5.18.1 + es-module-lexer: 1.7.0 + eslint-scope: 5.1.1 + events: 3.3.0 + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + json-parse-even-better-errors: 2.3.1 + loader-runner: 4.3.0 + mime-types: 2.1.35 + neo-async: 2.6.2 + schema-utils: 3.3.0 + tapable: 2.2.2 + terser-webpack-plugin: 5.3.14(esbuild@0.18.20)(webpack@5.91.0) + watchpack: 2.4.4 + webpack-sources: 3.3.2 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + dev: true + /whatwg-encoding@3.1.1: resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} engines: {node: '>=18'} @@ -27377,7 +29311,6 @@ packages: dependencies: load-yaml-file: 0.2.0 path-exists: 4.0.0 - dev: false /which-typed-array@1.1.19: resolution: {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==} @@ -27422,7 +29355,6 @@ packages: engines: {node: '>=8'} dependencies: string-width: 4.2.3 - dev: false /wmf@1.0.2: resolution: {integrity: sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==} @@ -27476,7 +29408,6 @@ packages: is-typedarray: 1.0.0 signal-exit: 3.0.7 typedarray-to-buffer: 3.1.5 - dev: false /write-file-atomic@4.0.2: resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} @@ -27500,7 +29431,6 @@ packages: dependencies: js-yaml: 4.1.0 write-file-atomic: 3.0.3 - dev: false /write@1.0.3: resolution: {integrity: sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==} @@ -27534,7 +29464,6 @@ packages: /xdg-basedir@4.0.0: resolution: {integrity: sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==} engines: {node: '>=8'} - dev: false /xlsx@0.18.5: resolution: {integrity: sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==} @@ -27581,7 +29510,6 @@ packages: /y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} - dev: false /yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} @@ -27597,7 +29525,6 @@ packages: resolution: {integrity: sha512-pIXzoImaqmfOrL7teGUBt/T7ZDnyeGBWyXQBvOVhLkWLN37GXv8NMLK406UY6dS51JfcQHsmcW5cJ441bHg6Lg==} engines: {node: '>= 14'} hasBin: true - dev: false /yaml@2.8.0: resolution: {integrity: sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==} @@ -27625,7 +29552,6 @@ packages: string-width: 4.2.3 y18n: 5.0.8 yargs-parser: 20.2.9 - dev: false /yauzl@2.10.0: resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} @@ -27658,7 +29584,6 @@ packages: validator: 13.15.15 optionalDependencies: commander: 9.5.0 - dev: false /zod-validation-error@1.2.0(zod@3.22.4): resolution: {integrity: sha512-laJkD/ugwEh8CpuH+xXv5L9Z+RLz3lH8alNxolfaHZJck611OJj97R4Rb+ZqA7WNly2kNtTo4QwjdjXw9scpiw==} @@ -27678,8 +29603,21 @@ packages: zod: 3.22.4 dev: true + /zod-validation-error@1.3.1(zod@3.25.76): + resolution: {integrity: sha512-cNEXpla+tREtNdAnNKY4xKY1SGOn2yzyuZMu4O0RQylX9apRpUjNcPkEc3uHIAr5Ct7LenjZt6RzjEH6+JsqVQ==} + engines: {node: '>=16.0.0'} + peerDependencies: + zod: ^3.18.0 + dependencies: + zod: 3.25.76 + dev: true + /zod@3.22.4: resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} + dev: true + + /zod@3.25.76: + resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} /zustand@4.5.7(@types/react@18.2.37)(immer@10.1.1)(react@18.2.0): resolution: {integrity: sha512-CHOUy7mu3lbD6o6LJLfllpjkzhHXSBlX8B9+qPddUsIfeF5S/UZ5q0kmCsnRqT1UHFQZchNFDDzMbQsuesHWlw==} diff --git a/frontend/apps/cozeloop/package.json b/frontend/apps/cozeloop/package.json index 884fa9d1a..e70f1a690 100644 --- a/frontend/apps/cozeloop/package.json +++ b/frontend/apps/cozeloop/package.json @@ -31,16 +31,17 @@ "@cozeloop/account": "workspace:*", "@cozeloop/api-schema": "workspace:*", "@cozeloop/auth-pages": "workspace:*", - "@cozeloop/base-hooks": "workspace:*", "@cozeloop/biz-hooks-adapter": "workspace:*", "@cozeloop/components": "workspace:*", "@cozeloop/evaluate-pages": "workspace:*", "@cozeloop/guard": "workspace:*", + "@cozeloop/hooks": "workspace:*", "@cozeloop/i18n-adapter": "workspace:*", "@cozeloop/observation-pages": "workspace:*", "@cozeloop/prompt-pages": "workspace:*", "@cozeloop/stores": "workspace:*", "@cozeloop/tag-pages": "workspace:*", + "@cozeloop/tea-adapter": "workspace:*", "@cozeloop/toolkit": "workspace:*", "ahooks": "^3.7.8", "classnames": "^2.3.2", @@ -70,3 +71,4 @@ "vitest": "~3.0.5" } } + diff --git a/frontend/apps/cozeloop/src/app.tsx b/frontend/apps/cozeloop/src/app.tsx index 4d1f7b43f..ba5100fd2 100644 --- a/frontend/apps/cozeloop/src/app.tsx +++ b/frontend/apps/cozeloop/src/app.tsx @@ -3,7 +3,9 @@ import { RouterProvider, createBrowserRouter } from 'react-router-dom'; import { Suspense } from 'react'; -import { PageLoading } from '@cozeloop/components'; +import { sendEvent } from '@cozeloop/tea-adapter'; +import { I18n } from '@cozeloop/i18n-adapter'; +import { CozeLoopProvider, PageLoading } from '@cozeloop/components'; import { routeConfig } from './routes'; import { useSetupI18n } from './hooks'; @@ -17,10 +19,12 @@ export function App() { useSetupI18n(); return ( - }> - - - - + + }> + + + + + ); } diff --git a/frontend/apps/cozeloop/src/components/breadcrumb/index.tsx b/frontend/apps/cozeloop/src/components/breadcrumb/index.tsx index 321b879dc..65c63aae0 100644 --- a/frontend/apps/cozeloop/src/components/breadcrumb/index.tsx +++ b/frontend/apps/cozeloop/src/components/breadcrumb/index.tsx @@ -4,7 +4,7 @@ import { useEffect, useState } from 'react'; import { useShallow } from 'zustand/react/shallow'; import { useUIStore, type BreadcrumbItemConfig } from '@cozeloop/stores'; -import { useApp, useNavigateModule } from '@cozeloop/biz-hooks-adapter'; +import { useRouteInfo, useNavigateModule } from '@cozeloop/biz-hooks-adapter'; import { SwitchLang } from '@cozeloop/auth-pages'; import { Breadcrumb } from '@coze-arch/coze-design'; @@ -12,7 +12,7 @@ import { useMenuConfig } from '../navbar/menu-config'; import { getBreadcrumbMap } from './utils'; export function MainBreadcrumb() { - const { app, subModule } = useApp(); + const { app, subModule } = useRouteInfo(); const { breadcrumbConfig, setBreadcrumbConfig } = useUIStore( useShallow(store => ({ breadcrumbConfig: store.breadcrumbConfig, diff --git a/frontend/apps/cozeloop/src/components/navbar/index.tsx b/frontend/apps/cozeloop/src/components/navbar/index.tsx index 1a46b0edc..7178a80c9 100644 --- a/frontend/apps/cozeloop/src/components/navbar/index.tsx +++ b/frontend/apps/cozeloop/src/components/navbar/index.tsx @@ -1,16 +1,11 @@ // Copyright (c) 2025 coze-dev Authors // SPDX-License-Identifier: Apache-2.0 -import { useNavigate } from 'react-router-dom'; import { useEffect, useRef, useState } from 'react'; import classNames from 'classnames'; import { useHover } from 'ahooks'; -import { - useApp, - useBaseURL, - useNavigateModule, -} from '@cozeloop/biz-hooks-adapter'; -import { useNavbarCollapsed } from '@cozeloop/base-hooks'; +import { useNavbarCollapsed } from '@cozeloop/hooks'; +import { useRouteInfo, useNavigateModule } from '@cozeloop/biz-hooks-adapter'; import { IconCozSideNav } from '@coze-arch/coze-design/icons'; import { Nav, Divider } from '@coze-arch/coze-design'; @@ -25,10 +20,9 @@ import { FooterMenus } from './footer-menus'; import styles from './index.module.less'; export function Navbar() { - const navigate = useNavigate(); - const navigateModule = useNavigateModule(); + const navigate = useNavigateModule(); const { isCollapsed, toggleCollapsed } = useNavbarCollapsed(); - const { app, subModule } = useApp(); + const { app, subModule } = useRouteInfo(); /** 选中的导航栏 */ const [selectedKeys, setSelectedKeys] = useState(() => []); const menuConfig = useMenuConfig(); @@ -41,15 +35,17 @@ export function Navbar() { } }, [app, subModule]); - const { getBasePrefix } = useBaseURL(); - const handleSelect = (path: string) => { if (!path.startsWith('actions/')) { if (path.startsWith('enterprise-manage') || path.startsWith('open')) { - navigate(`${getBasePrefix()}/${path}`); + navigate(path, { + params: { + spaceID: undefined, + }, + }); return; } else { - navigateModule(path); + navigate(path); } } }; diff --git a/frontend/apps/cozeloop/src/components/user-info-section/settings-menu.tsx b/frontend/apps/cozeloop/src/components/user-info-section/settings-menu.tsx index 06fd8cff0..c00a2055f 100644 --- a/frontend/apps/cozeloop/src/components/user-info-section/settings-menu.tsx +++ b/frontend/apps/cozeloop/src/components/user-info-section/settings-menu.tsx @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 import classNames from 'classnames'; import { I18n } from '@cozeloop/i18n-adapter'; -import { useBaseURL } from '@cozeloop/biz-hooks-adapter'; +import { useOpenWindow } from '@cozeloop/biz-hooks-adapter'; import { PERSONAL_ENTERPRISE_ID } from '@cozeloop/account'; import { IconCozExit, IconCozSetting } from '@coze-arch/coze-design/icons'; import { Divider } from '@coze-arch/coze-design'; @@ -34,7 +34,7 @@ export function SettingsMenu({ onAction }: Props) { }, ]; - const { getBasePrefix } = useBaseURL(); + const { openSelf } = useOpenWindow(); return (
@@ -44,7 +44,7 @@ export function SettingsMenu({ onAction }: Props) {
{ - window.location.href = getBasePrefix({ + openSelf('', { enterpriseID: PERSONAL_ENTERPRISE_ID, }); }} diff --git a/frontend/apps/cozeloop/src/index.css b/frontend/apps/cozeloop/src/index.css index 45441d526..09e2afe24 100644 --- a/frontend/apps/cozeloop/src/index.css +++ b/frontend/apps/cozeloop/src/index.css @@ -412,16 +412,15 @@ body, background: var(--semi-color-fill-1); } - .styled-scrollbar::-webkit-scrollbar-thumb { - visibility: hidden; - } - - .styled-scrollbar:hover::-webkit-scrollbar-thumb { - visibility: visible; - } .styled-scrollbar { scrollbar-gutter: stable; + overflow: hidden; } + + .styled-scrollbar:hover { + overflow: auto; + } + } .api-error-toast { diff --git a/frontend/apps/cozeloop/src/index.tsx b/frontend/apps/cozeloop/src/index.tsx index 436d7f245..b47d72346 100644 --- a/frontend/apps/cozeloop/src/index.tsx +++ b/frontend/apps/cozeloop/src/index.tsx @@ -5,8 +5,6 @@ import { initIntl } from '@cozeloop/i18n-adapter'; import { dynamicImportMdBoxStyle } from '@coze-arch/bot-md-box-adapter/style'; import { pullFeatureFlags, type FEATURE_FLAGS } from '@coze-arch/bot-flags'; -import { App } from './app'; - export async function render() { await Promise.all([ initIntl({ @@ -22,6 +20,7 @@ export async function render() { const dom = document.getElementById('cozeloop-root'); if (dom) { + const { App } = await import('./app'); const root = createRoot(dom); root.render(); } diff --git a/frontend/apps/cozeloop/tailwind.config.ts b/frontend/apps/cozeloop/tailwind.config.ts index 2a85dd356..2f9f0976e 100644 --- a/frontend/apps/cozeloop/tailwind.config.ts +++ b/frontend/apps/cozeloop/tailwind.config.ts @@ -9,17 +9,16 @@ export default createTailwindcssConfig({ '@coze-arch/coze-design', '@cozeloop/components', '@cozeloop/auth-pages', + '@cozeloop/prompt-components', '@cozeloop/prompt-pages', '@cozeloop/evaluate-components', '@cozeloop/evaluate', '@cozeloop/evaluate-pages', '@cozeloop/observation-pages', - '@cozeloop/trace-struct-data', - '@cozeloop/trace-list', - '@cozeloop/observation-component-adapter', + '@cozeloop/observation-adapter', + '@cozeloop/observation-components', '@cozeloop/tag-pages', - '@cozeloop/observation-component', '@cozeloop/tag-components', - '@cozeloop/prompt-components', + '@cozeloop/prompt-components-v2', ], }) as TailwindConfig; diff --git a/frontend/apps/cozeloop/tsconfig.build.json b/frontend/apps/cozeloop/tsconfig.build.json index b3e1519ea..cd4ecb029 100644 --- a/frontend/apps/cozeloop/tsconfig.build.json +++ b/frontend/apps/cozeloop/tsconfig.build.json @@ -87,6 +87,9 @@ { "path": "../../packages/cozeloop/tailwind-config/tsconfig.build.json" }, + { + "path": "../../packages/cozeloop/tea/tsconfig.build.json" + }, { "path": "../../packages/cozeloop/toolkit/tsconfig.build.json" } diff --git a/frontend/infra/eslint-plugin/package.json b/frontend/infra/eslint-plugin/package.json index 102cae520..8d5537f0e 100644 --- a/frontend/infra/eslint-plugin/package.json +++ b/frontend/infra/eslint-plugin/package.json @@ -27,8 +27,8 @@ "devDependencies": { "@babel/eslint-parser": "~7.25.8", "@babel/eslint-plugin": "~7.25.7", - "@eslint/js": "~9.12.0", "@coze-arch/ts-config": "workspace:*", + "@eslint/js": "~9.12.0", "@types/eslint": "~9.6.1", "@types/estree": "^1.0.1", "@types/node": "^18", diff --git a/frontend/infra/eslint-plugin/src/index.ts b/frontend/infra/eslint-plugin/src/index.ts index 2592e90ef..b09f8abcb 100644 --- a/frontend/infra/eslint-plugin/src/index.ts +++ b/frontend/infra/eslint-plugin/src/index.ts @@ -10,6 +10,7 @@ import { useErrorInCatch } from './rules/use-error-in-catch'; import { noEmptyCatch } from './rules/no-empty-catch'; import { noPkgDirImport } from './rules/no-pkg-dir-import'; import { tsxNoLeakedRender } from './rules/tsx-no-leaked-render'; +import { noDestructuringUseRequestRule } from './rules/no-destructuring-use-request'; export const flowPreset = { rules: { @@ -24,6 +25,7 @@ export const flowPreset = { 'use-error-in-catch': useErrorInCatch, 'no-pkg-dir-import': noPkgDirImport, 'tsx-no-leaked-render': tsxNoLeakedRender, + 'no-destructuring-use-request': noDestructuringUseRequestRule, }, configs: { recommended: [ @@ -51,6 +53,7 @@ export const flowPreset = { '@coze-arch/no-batch-import-or-export': 'error', '@coze-arch/no-empty-catch': 'error', '@coze-arch/use-error-in-catch': 'warn', + '@coze-arch/no-destructuring-use-request': 'warn', }, }, { diff --git a/frontend/infra/eslint-plugin/src/rules/no-destructuring-use-request/index.test.ts b/frontend/infra/eslint-plugin/src/rules/no-destructuring-use-request/index.test.ts new file mode 100644 index 000000000..1da31abf2 --- /dev/null +++ b/frontend/infra/eslint-plugin/src/rules/no-destructuring-use-request/index.test.ts @@ -0,0 +1,62 @@ +import { RuleTester } from 'eslint'; +import { noDestructuringUseRequestRule } from './index'; + +const ruleTester = new RuleTester({}); + +ruleTester.run('no-destructuring-use-request', noDestructuringUseRequestRule, { + valid: [ + // 正确的使用方式 - 不解构 + { + code: 'const request = useRequest();', + }, + { + code: 'const myRequest = useRequest(config);', + }, + { + code: 'const apiRequest = useRequest({ url: "/api" });', + }, + // 其他 hook 的解构是允许的 + { + code: 'const { data, loading } = useState();', + }, + { + code: 'const [count, setCount] = useState(0);', + }, + // 非 useRequest 的函数调用解构 + { + code: 'const { result } = someOtherFunction();', + }, + // 变量声明但不是函数调用 + { + code: 'const { data } = props;', + }, + ], + invalid: [ + // 对象解构 useRequest + { + code: 'const { data, loading, error } = useRequest();', + errors: [ + { + messageId: 'noDestructuring', + }, + ], + }, + { + code: 'const { run, data } = useRequest(config);', + errors: [ + { + messageId: 'noDestructuring', + }, + ], + }, + // 带参数的 useRequest 解构 + { + code: 'const { data, loading, error, run } = useRequest({ url: "/api/users" });', + errors: [ + { + messageId: 'noDestructuring', + }, + ], + }, + ], +}); diff --git a/frontend/infra/eslint-plugin/src/rules/no-destructuring-use-request/index.ts b/frontend/infra/eslint-plugin/src/rules/no-destructuring-use-request/index.ts new file mode 100644 index 000000000..73c4cbf51 --- /dev/null +++ b/frontend/infra/eslint-plugin/src/rules/no-destructuring-use-request/index.ts @@ -0,0 +1,36 @@ +import { Rule } from 'eslint'; + +export const noDestructuringUseRequestRule: Rule.RuleModule = { + meta: { + type: 'suggestion', + docs: { + description: 'Should not destructure useRequest', + recommended: true, + }, + messages: { + noDestructuring: + 'Do not destructure useRequest return value. Use "const request = useRequest()" instead.', + }, + schema: [], + }, + + create(context) { + return { + VariableDeclarator(node) { + // 检查初始化表达式是否是 useRequest 调用 + if ( + node.init && + node.init.type === 'CallExpression' && + node.init.callee.type === 'Identifier' && + node.init.callee.name === 'useRequest' && + node.id.type === 'ObjectPattern' + ) { + context.report({ + node: node.id, + messageId: 'noDestructuring', + }); + } + }, + }; + }, +}; diff --git a/frontend/packages/cozeloop/account/src/services/space-service.ts b/frontend/packages/cozeloop/account/src/services/space-service.ts index 9d5247921..e47d82ac5 100644 --- a/frontend/packages/cozeloop/account/src/services/space-service.ts +++ b/frontend/packages/cozeloop/account/src/services/space-service.ts @@ -4,7 +4,7 @@ import { type ListUserSpaceRequest } from '@cozeloop/api-schema/foundation'; import { FoundationApi } from '@cozeloop/api-schema'; export const spaceService = (() => ({ - async getSpace(spaceId: number) { + async getSpace(spaceId: number, appId?: number) { const resp = await FoundationApi.GetSpace({ space_id: spaceId, }); diff --git a/frontend/packages/cozeloop/account/src/stores/space-store.ts b/frontend/packages/cozeloop/account/src/stores/space-store.ts index c5b4e080a..a4dc1c9f1 100644 --- a/frontend/packages/cozeloop/account/src/stores/space-store.ts +++ b/frontend/packages/cozeloop/account/src/stores/space-store.ts @@ -8,9 +8,10 @@ import { import { spaceService } from '../services/space-service'; +type SpaceType = Space & { space_role_type?: number }; interface SpaceState { - space?: Space; - spaces: Space[]; + space?: SpaceType; + spaces: SpaceType[]; total?: number; } diff --git a/frontend/packages/cozeloop/adapter-interfaces/package.json b/frontend/packages/cozeloop/adapter-interfaces/package.json index f8fe21272..1b1822513 100644 --- a/frontend/packages/cozeloop/adapter-interfaces/package.json +++ b/frontend/packages/cozeloop/adapter-interfaces/package.json @@ -11,6 +11,12 @@ ], "./evaluate": [ "./src/evaluate/index.ts" + ], + "./prompt": [ + "./src/prompt/index.ts" + ], + "./observation": [ + "./src/observation/index.ts" ] }, "main": "src/index.ts", @@ -21,6 +27,12 @@ ], "evaluate": [ "./src/evaluate/index.ts" + ], + "prompt": [ + "./src/prompt/index.ts" + ], + "observation": [ + "./src/observation/index.ts" ] } }, @@ -35,10 +47,12 @@ "@coze-arch/ts-config": "workspace:*", "@coze-arch/vitest-config": "workspace:*", "@cozeloop/api-schema": "workspace:*", + "@cozeloop/observation-components": "workspace:*", "@types/node": "^18", "@types/react": "18.2.37", "@types/react-dom": "18.2.15", "@vitest/coverage-v8": "~3.0.5", + "ahooks": "^3.7.8", "react": "~18.2.0", "vitest": "~3.0.5" }, diff --git a/frontend/packages/cozeloop/adapter-interfaces/src/evaluate/add-data-dropdown.ts b/frontend/packages/cozeloop/adapter-interfaces/src/evaluate/add-data-dropdown.ts new file mode 100644 index 000000000..1d2e308a9 --- /dev/null +++ b/frontend/packages/cozeloop/adapter-interfaces/src/evaluate/add-data-dropdown.ts @@ -0,0 +1,15 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 +import { type FC, type ReactNode } from 'react'; + +import { type EvaluationSet } from '@cozeloop/api-schema/evaluation'; + +export type AddDataDropdownType = FC<{ + /** 评测集详情 */ + evaluationSet?: EvaluationSet; + menuConfigs: Array<{ + label: string; + icon: ReactNode; + onClick: () => void; + }>; +}>; diff --git a/frontend/packages/cozeloop/adapter-interfaces/src/evaluate/detail-page-tab.ts b/frontend/packages/cozeloop/adapter-interfaces/src/evaluate/detail-page-tab.ts new file mode 100644 index 000000000..3cbac55bd --- /dev/null +++ b/frontend/packages/cozeloop/adapter-interfaces/src/evaluate/detail-page-tab.ts @@ -0,0 +1,29 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 +import { type FC, type ReactNode } from 'react'; + +import { type EvaluationSet } from '@cozeloop/api-schema/evaluation'; + +export enum EvaluationDetailPageTabKey { + EVAL = 'eval', + EXPERIMENT = 'experiment', +} + +/** + * 评测集详情页 tab 配置 + */ +export interface EvaluateDetailPageTabConfig { + /** 作为 Tabs.TabPane 的 `itemKey` */ + tabKey: EvaluationDetailPageTabKey; + /** 作为 Tabs.TabPane 的 `tab` */ + tabName: ReactNode; + /** 作为 Tabs.TabPane 的 `children` */ + children: ReactNode; +} + +export type EvaluationDetailPageTabsType = FC<{ + spaceId: string; + /** 评测集详情 */ + evaluationSet?: EvaluationSet; + tabConfigs: Array; +}>; diff --git a/frontend/packages/cozeloop/adapter-interfaces/src/evaluate/index.ts b/frontend/packages/cozeloop/adapter-interfaces/src/evaluate/index.ts index dfaf1eaa6..d14227f90 100644 --- a/frontend/packages/cozeloop/adapter-interfaces/src/evaluate/index.ts +++ b/frontend/packages/cozeloop/adapter-interfaces/src/evaluate/index.ts @@ -4,3 +4,9 @@ import { type EvaluateExperimentsAdapters } from './experiments'; export type EvaluateAdapters = EvaluateExperimentsAdapters; export { type EvaluateTargetPromptDynamicParamsProps } from './experiments'; + +export type { + EvaluateDetailPageTabConfig, + EvaluationDetailPageTabsType, +} from './detail-page-tab'; +export type { AddDataDropdownType } from './add-data-dropdown'; diff --git a/frontend/packages/cozeloop/adapter-interfaces/src/index.ts b/frontend/packages/cozeloop/adapter-interfaces/src/index.ts index e64dab2f2..34eefdc68 100644 --- a/frontend/packages/cozeloop/adapter-interfaces/src/index.ts +++ b/frontend/packages/cozeloop/adapter-interfaces/src/index.ts @@ -1,3 +1,8 @@ // Copyright (c) 2025 coze-dev Authors // SPDX-License-Identifier: Apache-2.0 export { type EvaluateAdapters } from './evaluate'; +export { type PromptAdapters } from './prompt'; +export { + type ObservationTraceAdapters, + type TraceDetailExtraProps, +} from './observation'; diff --git a/frontend/packages/cozeloop/adapter-interfaces/src/observation/index.ts b/frontend/packages/cozeloop/adapter-interfaces/src/observation/index.ts new file mode 100644 index 000000000..6aedbaf8a --- /dev/null +++ b/frontend/packages/cozeloop/adapter-interfaces/src/observation/index.ts @@ -0,0 +1,3 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 +export type { ObservationTraceAdapters, TraceDetailExtraProps } from './trace'; diff --git a/frontend/packages/cozeloop/adapter-interfaces/src/observation/trace.ts b/frontend/packages/cozeloop/adapter-interfaces/src/observation/trace.ts new file mode 100644 index 000000000..714f8a9e5 --- /dev/null +++ b/frontend/packages/cozeloop/adapter-interfaces/src/observation/trace.ts @@ -0,0 +1,103 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 +/* eslint-disable @typescript-eslint/no-explicit-any */ +import type { ReactElement } from 'react'; + +import { type useRequest } from 'ahooks'; +import { + type TraceSelectorProps, + type CozeloopTraceDetailPanelProps, + type TraceDetailContext, + type CozeloopTraceDetailProps, +} from '@cozeloop/observation-components'; +import type { PlatformType, span } from '@cozeloop/api-schema/observation'; +import { + type FieldSchema, + type ArgsSchema, +} from '@cozeloop/api-schema/evaluation'; + +type CozeloopTraceSelectorProps = Pick< + TraceSelectorProps, + | 'items' + | 'onChange' + | 'spanListTypeOptionList' + | 'platformTypeOptionList' + | 'datePickerOptions' + | 'fieldMetas' + | 'customParams' + | 'layoutMode' + | 'initValues' + | 'getFieldMetas' + | 'disabled' + | 'ignoreKeys' + | 'disabledRowKeys' + | 'disableFilterItemByFilterName' +>; + +export interface TraceDetailExtraProps { + traceID: string; + startTime?: string; + endTime?: string; + env?: string; +} +interface FieldMapping { + key: string; + json_path: string; +} + +type UseRequestReturn = ReturnType< + typeof useRequest +>; + +export interface ObservationTraceAdapters { + getAutoEvaluateFieldMappingConfig: (params: { + evaluatorInputSchemas: ArgsSchema[]; + sampleSpan: span.OutputSpan; + platformType: PlatformType; + spaceID: string; + }) => Promise<{ + success: boolean; + fieldMapping: Record; + }>; + + getDataReflowFieldMappingConfig: (params: { + evaluationSetSchema: FieldSchema[]; + sampleSpan: span.OutputSpan; + platformType: PlatformType; + spaceID: string; + }) => Promise<{ + success: boolean; + fieldMapping: Record; + fieldMappings?: FieldMapping[]; + }>; + + DatasetSelect: (props: { + pageSize?: number; + publishOption?: number; + showSecurityLevel?: boolean; + hiddenL4Dataset?: boolean; + [key: string]: unknown; + }) => ReactElement | null; + + useFetchSpanDetail: (params: { + spans: span.OutputSpan[]; + getStartTime: (startTime: number | string) => string; + getEndTime: (endTime: number | string, latency: number | string) => string; + platformType?: string | number; + }) => UseRequestReturn; + + CozeloopTraceSelector?: ( + props: Partial, + ) => ReactElement | null; + CozeloopTraceSelectorInitValues: Record; + TraceDetailPanel: ( + props: CozeloopTraceDetailPanelProps & + TraceDetailContext & + TraceDetailExtraProps, + ) => JSX.Element; + TraceDetail: ( + props: CozeloopTraceDetailProps & + TraceDetailContext & + TraceDetailExtraProps, + ) => JSX.Element; +} diff --git a/frontend/packages/cozeloop/observation/trace-struct-data/tailwind.config.ts b/frontend/packages/cozeloop/adapter-interfaces/src/prompt/index.ts similarity index 69% rename from frontend/packages/cozeloop/observation/trace-struct-data/tailwind.config.ts rename to frontend/packages/cozeloop/adapter-interfaces/src/prompt/index.ts index eac29e82c..b17f8b6fa 100644 --- a/frontend/packages/cozeloop/observation/trace-struct-data/tailwind.config.ts +++ b/frontend/packages/cozeloop/adapter-interfaces/src/prompt/index.ts @@ -1,3 +1,3 @@ // Copyright (c) 2025 coze-dev Authors // SPDX-License-Identifier: Apache-2.0 -export default {}; +export interface PromptAdapters {} diff --git a/frontend/packages/cozeloop/adapter-interfaces/tsconfig.build.json b/frontend/packages/cozeloop/adapter-interfaces/tsconfig.build.json index 258bd09ba..180c5d66b 100644 --- a/frontend/packages/cozeloop/adapter-interfaces/tsconfig.build.json +++ b/frontend/packages/cozeloop/adapter-interfaces/tsconfig.build.json @@ -23,6 +23,9 @@ }, { "path": "../../../config/vitest-config/tsconfig.build.json" + }, + { + "path": "../observation-components/tsconfig.build.json" } ] } diff --git a/frontend/packages/cozeloop/api-schema/README.md b/frontend/packages/cozeloop/api-schema/README.md index 4867338b4..89ac1e91a 100644 --- a/frontend/packages/cozeloop/api-schema/README.md +++ b/frontend/packages/cozeloop/api-schema/README.md @@ -1,16 +1,8 @@ # @cozeloop/api-schema -api schema for coze loop +Coze Loop 的 API Schema 定义包。 -## Overview - -This package is part of the Coze Loop monorepo and provides api & networking functionality. It includes api, evaluation, prompt. - -## Getting Started - -### Installation - -Add this package to your `package.json`: +## 安装 ```json { @@ -20,50 +12,31 @@ Add this package to your `package.json`: } ``` -Then run: - ```bash rush update ``` -### Usage +## 更新 API Schema -```typescript -import { /* exported functions/components */ } from '@cozeloop/api-schema'; +当后端 API 发生变更时,运行以下命令更新: -// Example usage -// TODO: Add specific usage examples +```bash +rushx update ``` -## Features - -- Api -- Evaluation -- Prompt - -## API Reference - -### Exports - -- `*` -- `*` -- `*` +### 指定分支 +默认从 `main` 分支拉取 IDL 定义。如需从其他分支更新,可以修改 [package.json](./package.json) 中 `prethrift` 脚本的 `--branch` 参数: -For detailed API documentation, please refer to the TypeScript definitions. - -## Development - -This package is built with: - -- TypeScript -- Modern JavaScript -- Vitest for testing -- ESLint for code quality - -## Contributing +```json +{ + "scripts": { + "prethrift": "bash ./scripts/download-thrift.sh --branch=your-branch" + } +} +``` -This package is part of the Coze Loop monorepo. Please follow the monorepo contribution guidelines. +然后执行 `rushx update` 即可从指定分支拉取最新的 API Schema。 ## License diff --git a/frontend/packages/cozeloop/api-schema/api.config.js b/frontend/packages/cozeloop/api-schema/api.config.js index 50b2d41b8..cceaa90ef 100644 --- a/frontend/packages/cozeloop/api-schema/api.config.js +++ b/frontend/packages/cozeloop/api-schema/api.config.js @@ -4,20 +4,27 @@ const path = require('path'); const config = [ { - idlRoot: path.resolve(__dirname, '../../../../idl/thrift/coze/loop'), // idl 根目录 + // idl 根目录 + idlRoot: path.resolve( + __dirname, + 'node_modules/.cache/coze-loop-idl/thrift/coze/loop', + ), genMock: false, entries: { promptDebug: './prompt/coze.loop.prompt.debug.thrift', promptManage: './prompt/coze.loop.prompt.manage.thrift', observabilityTrace: './observability/coze.loop.observability.trace.thrift', + observabilityTask: './observability/coze.loop.observability.task.thrift', + observabilityMetric: + './observability/coze.loop.observability.metric.thrift', evaluationEvalSet: './evaluation/coze.loop.evaluation.eval_set.thrift', evaluationEvalTarget: './evaluation/coze.loop.evaluation.eval_target.thrift', evaluationEvaluator: './evaluation/coze.loop.evaluation.evaluator.thrift', evaluationExpt: './evaluation/coze.loop.evaluation.expt.thrift', dataDataset: './data/coze.loop.data.dataset.thrift', - dataTag: './data/coze.loop.data.tag.thrift', + dateTag: './data/coze.loop.data.tag.thrift', llmManage: './llm/coze.loop.llm.manage.thrift', foundationUpload: './foundation/coze.loop.foundation.file.thrift', foundationUser: './foundation/coze.loop.foundation.user.thrift', diff --git a/frontend/packages/cozeloop/api-schema/build-with-transform.js b/frontend/packages/cozeloop/api-schema/build-with-transform.js new file mode 100755 index 000000000..93da07fcb --- /dev/null +++ b/frontend/packages/cozeloop/api-schema/build-with-transform.js @@ -0,0 +1,207 @@ +#!/usr/bin/env node + +const path = require('path'); +const fs = require('fs'); +const { execSync } = require('child_process'); + +class ExportTransformer { + constructor() { + this.modifiedFiles = []; + this.originalContents = new Map(); + } + + // 查找所有包含 "export * as" 的 TypeScript 文件 + findFilesWithExportStarAs(dir) { + const files = []; + + function scanDir(currentDir) { + const entries = fs.readdirSync(currentDir, { withFileTypes: true }); + + for (const entry of entries) { + const fullPath = path.join(currentDir, entry.name); + + if ( + entry.isDirectory() && + entry.name !== 'node_modules' && + entry.name !== 'dist' + ) { + scanDir(fullPath); + } else if (entry.isFile() && entry.name.endsWith('.ts')) { + const content = fs.readFileSync(fullPath, 'utf-8'); + if (content.includes('export * as ')) { + files.push(fullPath); + } + } + } + } + + scanDir(dir); + return files; + } + + // 转换 "export * as xxx" 为 "import * as xxx" + "export { xxx }" + transformExportStarAs(content) { + const lines = content.split('\n'); + const transformedLines = []; + const exportNames = []; + + for (const line of lines) { + const trimmedLine = line.trim(); + + // 匹配 export * as xxx from 'yyy' + const match = trimmedLine.match( + /^export\s+\*\s+as\s+(\w+)\s+from\s+['"]([^'"]+)['"];?$/, + ); + + if (match) { + const [, aliasName, modulePath] = match; + // 转换为 import * as xxx from 'yyy' + transformedLines.push(`import * as ${aliasName} from '${modulePath}';`); + exportNames.push(aliasName); + } else { + transformedLines.push(line); + } + } + + // 如果有转换,添加 export { xxx } 声明 + if (exportNames.length > 0) { + transformedLines.push(''); + transformedLines.push(`export { ${exportNames.join(', ')} };`); + } + + return transformedLines.join('\n'); + } + + // 备份并转换文件 + transformFiles() { + const srcDir = path.join(__dirname, 'src'); + const files = this.findFilesWithExportStarAs(srcDir); + + console.log(`找到 ${files.length} 个需要转换的文件:`); + + for (const filePath of files) { + console.log(`- ${path.relative(__dirname, filePath)}`); + + // 备份原始内容 + const originalContent = fs.readFileSync(filePath, 'utf-8'); + this.originalContents.set(filePath, originalContent); + + // 转换内容 + const transformedContent = this.transformExportStarAs(originalContent); + + // 写入转换后的内容 + fs.writeFileSync(filePath, transformedContent, 'utf-8'); + this.modifiedFiles.push(filePath); + } + + console.log(`已转换 ${this.modifiedFiles.length} 个文件\n`); + } + + // 恢复所有修改的文件 + restoreFiles() { + console.log('\n开始恢复文件...'); + + for (const filePath of this.modifiedFiles) { + const originalContent = this.originalContents.get(filePath); + if (originalContent) { + fs.writeFileSync(filePath, originalContent, 'utf-8'); + console.log(`已恢复: ${path.relative(__dirname, filePath)}`); + } + } + + console.log(`已恢复 ${this.modifiedFiles.length} 个文件`); + } + + // 使用 git 恢复文件 (备用方案) + restoreWithGit() { + console.log('\n使用 git 恢复文件...'); + + try { + // 检查是否有暂存的更改 + const status = execSync('git status --porcelain', { encoding: 'utf-8' }); + + if (status.trim()) { + // 恢复所有更改 + execSync('git checkout -- .', { stdio: 'inherit' }); + console.log('已使用 git 恢复所有文件'); + } else { + console.log('没有需要恢复的文件'); + } + } catch (error) { + console.error('Git 恢复失败:', error.message); + throw error; + } + } + + // 执行构建 + async build() { + console.log('开始执行构建...\n'); + + try { + // 1. 转换文件 + this.transformFiles(); + + // 2. 执行构建 + console.log('运行 rslib build...'); + execSync('npx rslib build', { + stdio: 'inherit', + cwd: __dirname, + }); + console.log('\n✅ 构建成功完成!'); + } catch (error) { + console.error('\n❌ 构建失败:', error.message); + throw error; + } finally { + // 3. 恢复文件 + try { + this.restoreFiles(); + console.log('\n✅ 文件恢复完成!'); + } catch { + console.error('\n⚠️ 文件恢复失败,尝试使用 git 恢复...'); + try { + this.restoreWithGit(); + console.log('\n✅ Git 恢复完成!'); + } catch (gitError) { + console.error('\n❌ Git 恢复也失败了:', gitError.message); + console.log('\n请手动恢复以下文件:'); + this.modifiedFiles.forEach(file => { + console.log(` - ${path.relative(__dirname, file)}`); + }); + } + } + } + } +} + +// 主执行函数 +async function main() { + const transformer = new ExportTransformer(); + + try { + await transformer.build(); + console.log('\n🎉 构建流程完成!'); + process.exit(0); + } catch (error) { + console.error('\n💥 构建流程失败:', error.message); + process.exit(1); + } +} + +// 处理中断信号 +process.on('SIGINT', () => { + console.log('\n\n⚠️ 收到中断信号,正在清理...'); + const transformer = new ExportTransformer(); + try { + transformer.restoreWithGit(); + } catch (error) { + console.error('清理失败:', error.message); + } + process.exit(1); +}); + +// 运行主函数 +if (require.main === module) { + main(); +} + +module.exports = ExportTransformer; diff --git a/frontend/packages/cozeloop/api-schema/package.json b/frontend/packages/cozeloop/api-schema/package.json index 239a2ca70..15d3af55d 100644 --- a/frontend/packages/cozeloop/api-schema/package.json +++ b/frontend/packages/cozeloop/api-schema/package.json @@ -44,26 +44,96 @@ ] } }, + "files": [ + "package.json", + "README.md", + "dist" + ], "scripts": { - "build": "exit 0", + "build-sdk": "node build-with-transform.js", + "build:direct": "rslib build", "lint": "eslint ./ --cache", "test": "vitest --run --passWithNoTests", "test:cov": "npm run test -- --coverage", - "update": "idl2ts gen ./" + "prethrift": "bash ./scripts/download-thrift.sh --branch=main", + "thrift": "idl2ts gen ./", + "update": "npm run thrift" }, "dependencies": { - "@coze-arch/idl2ts-runtime": "workspace:*", - "@coze-arch/logger": "workspace:*", "eventemitter3": "^5.0.1" }, "devDependencies": { "@coze-arch/eslint-config": "workspace:*", "@coze-arch/idl2ts-cli": "workspace:*", + "@coze-arch/idl2ts-runtime": "workspace:*", + "@coze-arch/logger": "workspace:*", "@coze-arch/ts-config": "workspace:*", "@coze-arch/vitest-config": "workspace:*", + "@microsoft/api-extractor": "7.43.0", + "@rsbuild/core": "~1.1.0", + "@rslib/core": "~0.11.0", "@types/node": "^18", "@vitest/coverage-v8": "~3.0.5", "sucrase": "^3.32.0", "vitest": "~3.0.5" + }, + "botPublishConfig": { + "exports": { + ".": { + "import": "./dist/es/index.mjs", + "types": "./dist/es/index.d.ts" + }, + "./observation": { + "import": "./dist/es/observation.mjs", + "types": "./dist/es/api/observability/index.d.ts" + }, + "./evaluation": { + "import": "./dist/es/evaluation.mjs", + "types": "./dist/es/api/evaluation/index.d.ts" + }, + "./data": { + "import": "./dist/es/data.mjs", + "types": "./dist/es/api/data/index.d.ts" + }, + "./llm-manage": { + "import": "./dist/es/llmManage.mjs", + "types": "./dist/es/api/llm-manage/index.d.ts" + }, + "./foundation": { + "import": "./dist/es/foundation.mjs", + "types": "./dist/es/api/foundation/index.d.ts" + }, + "./prompt": { + "import": "./dist/es/prompt.mjs", + "types": "./dist/es/api/prompt/index.d.ts" + } + }, + "main": "dist/es/index.mjs", + "typesVersions": { + "*": { + "*": [ + "./dist/es/index.d.ts" + ], + "observation": [ + "./dist/es/api/observability/index.d.ts" + ], + "evaluation": [ + "./dist/es/api/evaluation/index.d.ts" + ], + "data": [ + "./dist/es/api/data/index.d.ts" + ], + "llm-manage": [ + "./dist/es/api/llm-manage/index.d.ts" + ], + "foundation": [ + "./dist/es/api/foundation/index.d.ts" + ], + "prompt": [ + "./dist/es/api/prompt/index.d.ts" + ] + } + } } } + diff --git a/frontend/packages/cozeloop/api-schema/rslib.config.js b/frontend/packages/cozeloop/api-schema/rslib.config.js new file mode 100644 index 000000000..5766b3998 --- /dev/null +++ b/frontend/packages/cozeloop/api-schema/rslib.config.js @@ -0,0 +1,34 @@ +import path from 'path'; + +import { defineConfig } from '@rslib/core'; + +export default defineConfig({ + lib: [ + { + format: 'esm', + syntax: 'es6', + output: { + distPath: { + root: './dist/es', + }, + target: 'web', + }, + bundle: true, + dts: { + build: true, + }, + source: { + entry: { + index: './src/index.ts', + observation: './src/api/observability/index.ts', + evaluation: './src/api/evaluation/index.ts', + data: './src/api/data/index.ts', + llmManage: './src/api/llm-manage/index.ts', + foundation: './src/api/foundation/index.ts', + prompt: './src/api/prompt/index.ts', + }, + tsconfigPath: path.resolve(__dirname, 'tsconfig.build.json'), + }, + }, + ], +}); diff --git a/frontend/packages/cozeloop/api-schema/scripts/download-thrift.sh b/frontend/packages/cozeloop/api-schema/scripts/download-thrift.sh new file mode 100755 index 000000000..46c78c783 --- /dev/null +++ b/frontend/packages/cozeloop/api-schema/scripts/download-thrift.sh @@ -0,0 +1,139 @@ +#!/bin/bash + +# [AI-Generated Code Start] +# Download idl/thrift directory from coze-loop repository + +set -e + +REPO_URL="https://github.com/coze-dev/coze-loop.git" +DEFAULT_BRANCH="main" +CACHE_DIR="node_modules/.cache" +TARGET_DIR="coze-loop-idl" + +# Get script directory and repository root +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" + +# Check if current repository is coze-dev/coze-loop +is_coze_loop_repo() { + local remote_url + remote_url=$(git remote get-url origin 2>/dev/null || echo "") + if [[ "$remote_url" == *"coze-dev/coze-loop"* ]]; then + return 0 + fi + return 1 +} + +# Copy idl/thrift from local coze-loop repository +copy_from_local() { + echo "Detected coze-loop repository, copying from local idl/thrift..." + local REPO_ROOT="$(cd "$SCRIPT_DIR/../../../../.." && pwd)" + local LOCAL_IDL_DIR="$REPO_ROOT/idl/thrift" + + if [ -d "$LOCAL_IDL_DIR" ]; then + mkdir -p "$OUTPUT_DIR" + cp -r "$LOCAL_IDL_DIR" "$OUTPUT_DIR/" + echo "Done: $OUTPUT_DIR/thrift (copied from local repository)" + else + echo "Error: Local idl/thrift directory not found at $LOCAL_IDL_DIR" + exit 1 + fi +} + +# Download idl/thrift from remote coze-loop repository +download_from_remote() { + # Use default branch if not specified or empty + if [ -z "$BRANCH" ]; then + BRANCH="$DEFAULT_BRANCH" + fi + + echo "Downloading idl/thrift from coze-loop (branch: $BRANCH)..." + + # Create temp directory for sparse checkout + local TEMP_DIR + TEMP_DIR=$(mktemp -d) + trap "rm -rf $TEMP_DIR" EXIT + + echo "Initializing sparse checkout..." + + cd "$TEMP_DIR" + + # Initialize empty repository + git init -q + + # Add remote + git remote add origin "$REPO_URL" + + # Configure sparse checkout + git config core.sparseCheckout true + + # Only checkout idl/thrift directory + echo "idl/thrift" > .git/info/sparse-checkout + + # Fetch specified branch (shallow clone to reduce download size) + echo "Fetching branch $BRANCH..." + git fetch --depth=1 origin "$BRANCH" + git checkout FETCH_HEAD -q + + # Return to original directory + cd - > /dev/null + + # Copy idl/thrift to cache + if [ -d "$TEMP_DIR/idl/thrift" ]; then + mkdir -p "$OUTPUT_DIR" + cp -r "$TEMP_DIR/idl/thrift" "$OUTPUT_DIR/" + echo "Done: $OUTPUT_DIR/thrift" + else + echo "Error: idl/thrift directory not found" + exit 1 + fi +} + +# Parse command line arguments +BRANCH="" + +while [[ $# -gt 0 ]]; do + case $1 in + --branch) + BRANCH="$2" + shift 2 + ;; + --branch=*) + BRANCH="${1#*=}" + shift + ;; + -h|--help) + echo "Usage: $0 [--branch ]" + echo "" + echo "Options:" + echo " --branch Branch name to download (default: main)" + echo " -h, --help Show help" + exit 0 + ;; + *) + echo "Unknown argument: $1" + exit 1 + ;; + esac +done + +# Create cache directory +mkdir -p "$CACHE_DIR" + +# Output path +OUTPUT_DIR="$CACHE_DIR/$TARGET_DIR" + +# Remove existing directory if exists +if [ -d "$OUTPUT_DIR" ]; then + echo "Cleaning existing directory: $OUTPUT_DIR" + rm -rf "$OUTPUT_DIR" +fi + +# Check if we are in the coze-loop repository and execute accordingly +if is_coze_loop_repo; then + copy_from_local +else + download_from_remote +fi + +echo "Complete!" +# [AI-Generated Code End] diff --git a/frontend/packages/cozeloop/api-schema/scripts/publish.cjs b/frontend/packages/cozeloop/api-schema/scripts/publish.cjs new file mode 100644 index 000000000..72fe62d67 --- /dev/null +++ b/frontend/packages/cozeloop/api-schema/scripts/publish.cjs @@ -0,0 +1,113 @@ +const { performance } = require('perf_hooks'); +const path = require('path'); +const fs = require('fs'); +const { execSync } = require('child_process'); +const isBeta = process.argv.includes('--beta'); + +const pkgPath = path.resolve(__dirname, '..', 'package.json'); + +// 1. 备份 package.json +const backupPkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8')); + +// 2. 读取 package.json +const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8')); + +// 3. 获取线上最新版本 +let latestVersion = '0.0.0'; +let isFirstPublish = false; +try { + const result = execSync( + `npm view ${pkg.botPublishConfig.name} versions --json`, + { + encoding: 'utf-8', + }, + ); + console.log('获取线上版本成功', result); + const versions = JSON.parse(result); + latestVersion = versions.findLast(v => !v.includes('-beta')); +} catch (e) { + console.error('获取线上版本失败:', e); + console.warn( + '获取线上版本失败,可能是首次发布或网络问题,使用 0.0.0 作为基准', + ); + isFirstPublish = true; +} + +// 4. 计算新版本号(patch +1) +function bumpPatch(version) { + if (isBeta) { + console.warn('检测到 --beta 参数,版本号将不进行自动递增'); + return `${version}-beta-${performance.now()}`; // 如果是 beta 版本,不递增版本号 + } else { + console.log('检测到非 beta 发布,自动递增 patch 版本号'); + const parts = version.split('.').map(Number); + if (parts.length !== 3 || parts.some(isNaN)) { + return '0.0.1'; + } + + parts[2] += 1; + return parts.join('.'); + } +} +const newVersion = bumpPatch(latestVersion); +console.log('即将发布的新版本:', newVersion); + +// 5. 处理发布配置 +const botPublishConfig = pkg.botPublishConfig || {}; + +// 6. 替换 workspace:* 依赖为 latest +function replaceWorkspaceDeps(deps) { + if (!deps) { + return deps; + } + + const newDeps = {}; + for (const [pkgName, version] of Object.entries(deps)) { + if (version === 'workspace:*') { + newDeps[pkgName] = 'latest'; + console.log(`替换依赖 ${pkgName}: workspace:* -> latest`); + } else { + newDeps[pkgName] = version; + } + } + return newDeps; +} + +// 替换所有依赖类型中的 workspace:* +const newPkg = { ...pkg, ...botPublishConfig, version: newVersion }; +newPkg.dependencies = replaceWorkspaceDeps(newPkg.dependencies); + +delete newPkg.botPublishConfig; + +// 7. 写入临时 package.json +fs.writeFileSync(pkgPath, JSON.stringify(newPkg, null, 2)); + +// 8. 执行 build 和 publish +try { + execSync('npm run build-sdk', { + stdio: 'inherit', + }); + + const publishCommand = isFirstPublish + ? 'npm publish --access public' + : 'npm publish'; + console.log(`执行发布命令: ${publishCommand}`); + execSync(publishCommand, { stdio: 'inherit' }); +} catch (e) { + console.error('发布失败:', e); +} finally { + // 9. 还原 package.json + try { + fs.writeFileSync(pkgPath, JSON.stringify(backupPkg, null, 2)); + console.log('package.json 已还原'); + } catch (restoreError) { + console.error('还原 package.json 失败:', restoreError); + // 如果备份文件不存在,尝试从 git 恢复 + try { + execSync('git checkout -- package.json', { stdio: 'inherit' }); + console.log('已从 git 恢复 package.json'); + } catch (gitError) { + console.error('从 git 恢复也失败:', gitError); + } + } +} diff --git a/frontend/packages/cozeloop/api-schema/src/api/config.ts b/frontend/packages/cozeloop/api-schema/src/api/config.ts index 0f06d637d..1dd47dc2a 100644 --- a/frontend/packages/cozeloop/api-schema/src/api/config.ts +++ b/frontend/packages/cozeloop/api-schema/src/api/config.ts @@ -7,6 +7,7 @@ import { checkResponseData, checkFetchResponse, onClientError, + onClientBizError, } from '../notification'; export interface ApiOption { @@ -24,6 +25,15 @@ export interface ApiResponse { msg?: string; } +function getBaseUrl() { + try { + return process.env.API_SCHEMA_BASE_URL || ''; + // eslint-disable-next-line @coze-arch/use-error-in-catch -- no-catch + } catch { + return ''; + } +} + export function createAPI< T extends {}, K, @@ -32,12 +42,13 @@ export function createAPI< >(meta: IMeta, cancelable?: B) { return apiFactory(meta, cancelable, false, { config: { - clientFactory: _meta => async (uri, init, options) => { + clientFactory: _meta => async (url, init, options) => { const headers = { 'Agw-Js-Conv': 'str', // RESERVED HEADER FOR SERVER ...init.headers, ...(options?.headers ?? {}), }; + const uri = `${getBaseUrl()}${url}`; const opts = { ...init, headers }; try { @@ -53,6 +64,7 @@ export function createAPI< return data; } catch (e) { options.disableErrorToast || onClientError(uri, e); + onClientBizError(uri, e); throw e; } }, diff --git a/frontend/packages/cozeloop/api-schema/src/api/data/index.ts b/frontend/packages/cozeloop/api-schema/src/api/data/index.ts index 9f9f7b0ff..46ecffedc 100644 --- a/frontend/packages/cozeloop/api-schema/src/api/data/index.ts +++ b/frontend/packages/cozeloop/api-schema/src/api/data/index.ts @@ -4,4 +4,3 @@ export * from '../idl/data/domain/dataset'; export * from '../idl/data/domain/dataset_job'; export * from '../idl/data/coze.loop.data.dataset'; export * from '../idl/data/coze.loop.data.tag'; - diff --git a/frontend/packages/cozeloop/api-schema/src/api/evaluation/index.ts b/frontend/packages/cozeloop/api-schema/src/api/evaluation/index.ts index fe4c6843d..13d7089ab 100644 --- a/frontend/packages/cozeloop/api-schema/src/api/evaluation/index.ts +++ b/frontend/packages/cozeloop/api-schema/src/api/evaluation/index.ts @@ -10,19 +10,19 @@ export * from '../idl/evaluation/domain/evaluator'; export * from '../idl/evaluation/domain/common'; export * from '../idl/evaluation/domain/expt'; -export { CreateEvalTargetParam } from '../idl/evaluation/coze.loop.evaluation.eval_target'; -export { Turn } from '../idl/evaluation/domain/eval_set'; +export type { CreateEvalTargetParam } from '../idl/evaluation/coze.loop.evaluation.eval_target'; +export type { Turn } from '../idl/evaluation/domain/eval_set'; export { - EvalTargetRecord, + type EvalTargetRecord, EvalTargetType, - EvalTarget, + type EvalTarget, } from '../idl/evaluation/domain/eval_target'; export { - Evaluator, - EvaluatorRecord, - EvaluatorVersion, + type Evaluator, + type EvaluatorRecord, + type EvaluatorVersion, EvaluatorType, } from '../idl/evaluation/domain/evaluator'; -export { BaseInfo, OrderBy } from '../idl/evaluation/domain/common'; +export type { BaseInfo, OrderBy } from '../idl/evaluation/domain/common'; diff --git a/frontend/packages/cozeloop/api-schema/src/api/idl/_schemas.d.ts b/frontend/packages/cozeloop/api-schema/src/api/idl/_schemas.d.ts index 7e323456f..76b57fc5e 100644 --- a/frontend/packages/cozeloop/api-schema/src/api/idl/_schemas.d.ts +++ b/frontend/packages/cozeloop/api-schema/src/api/idl/_schemas.d.ts @@ -1,3 +1,5 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 declare const _schemas: any[]; export default _schemas; \ No newline at end of file diff --git a/frontend/packages/cozeloop/api-schema/src/api/idl/data/coze.loop.data.dataset.ts b/frontend/packages/cozeloop/api-schema/src/api/idl/data/coze.loop.data.dataset.ts index 79086e2ec..ee223c9e0 100644 --- a/frontend/packages/cozeloop/api-schema/src/api/idl/data/coze.loop.data.dataset.ts +++ b/frontend/packages/cozeloop/api-schema/src/api/idl/data/coze.loop.data.dataset.ts @@ -1,3 +1,5 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 import * as dataset_job from './domain/dataset_job'; export { dataset_job }; import * as dataset from './domain/dataset'; diff --git a/frontend/packages/cozeloop/api-schema/src/api/idl/data/coze.loop.data.tag.ts b/frontend/packages/cozeloop/api-schema/src/api/idl/data/coze.loop.data.tag.ts index 884d97bfa..5df45d5a7 100644 --- a/frontend/packages/cozeloop/api-schema/src/api/idl/data/coze.loop.data.tag.ts +++ b/frontend/packages/cozeloop/api-schema/src/api/idl/data/coze.loop.data.tag.ts @@ -1,3 +1,5 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 import * as dataset from './domain/dataset'; export { dataset }; import * as tag from './domain/tag'; @@ -112,7 +114,7 @@ export const CreateTag = /*#__PURE__*/createAPI({ @@ -126,7 +128,7 @@ export const UpdateTag = /*#__PURE__*/createAPI({ @@ -139,7 +141,7 @@ export const BatchUpdateTagStatus = /*#__PURE__*/createAPI({ @@ -152,7 +154,7 @@ export const SearchTags = /*#__PURE__*/createAPI({ @@ -166,7 +168,7 @@ export const GetTagDetail = /*#__PURE__*/createAPI({ @@ -179,7 +181,7 @@ export const GetTagSpec = /*#__PURE__*/createAPI({ @@ -192,7 +194,7 @@ export const BatchGetTags = /*#__PURE__*/createAPI({ @@ -206,5 +208,5 @@ export const ArchiveOptionTag = /*#__PURE__*/createAPI({ + "url": "/api/evaluation/v1/eval_targets/search_custom", + "method": "POST", + "name": "SearchCustomEvalTarget", + "reqType": "SearchCustomEvalTargetRequest", + "reqMapping": { + "body": ["workspace_id", "keyword", "application_id", "custom_rpc_server", "region", "env", "page_size", "page_token"] + }, + "resType": "SearchCustomEvalTargetResponse", + "schemaRoot": "api://schemas/evaluation_coze.loop.evaluation.eval_target", + "service": "evaluationEvalTarget" +}); /** 执行 */ export const ExecuteEvalTarget = /*#__PURE__*/createAPI({ "url": "/api/evaluation/v1/eval_targets/:eval_target_id/versions/:eval_target_version_id/execute", @@ -221,7 +304,7 @@ export const ExecuteEvalTarget = /*#__PURE__*/createAPI({ + "url": "/api/evaluation/v1/eval_targets/debug", + "method": "POST", + "name": "DebugEvalTarget", + "reqType": "DebugEvalTargetRequest", + "reqMapping": { + "body": ["workspace_id", "eval_target_type", "param", "target_runtime_param", "env", "custom_rpc_server"] + }, + "resType": "DebugEvalTargetResponse", + "schemaRoot": "api://schemas/evaluation_coze.loop.evaluation.eval_target", + "service": "evaluationEvalTarget" +}); +export const AsyncDebugEvalTarget = /*#__PURE__*/createAPI({ + "url": "/api/evaluation/v1/eval_targets/async_debug", + "method": "POST", + "name": "AsyncDebugEvalTarget", + "reqType": "AsyncDebugEvalTargetRequest", + "reqMapping": { + "body": ["workspace_id", "eval_target_type", "param", "target_runtime_param", "env", "custom_rpc_server"] + }, + "resType": "AsyncDebugEvalTargetResponse", + "schemaRoot": "api://schemas/evaluation_coze.loop.evaluation.eval_target", + "service": "evaluationEvalTarget" +}); /** mock输出数据 */ export const MockEvalTargetOutput = /*#__PURE__*/createAPI({ "url": "/api/evaluation/v1/eval_targets/mock_output", diff --git a/frontend/packages/cozeloop/api-schema/src/api/idl/evaluation/coze.loop.evaluation.evaluator.ts b/frontend/packages/cozeloop/api-schema/src/api/idl/evaluation/coze.loop.evaluation.evaluator.ts index 932f993fd..961638ccb 100644 --- a/frontend/packages/cozeloop/api-schema/src/api/idl/evaluation/coze.loop.evaluation.evaluator.ts +++ b/frontend/packages/cozeloop/api-schema/src/api/idl/evaluation/coze.loop.evaluation.evaluator.ts @@ -1,3 +1,5 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 import * as evaluator from './domain/evaluator'; export { evaluator }; import * as common from './domain/common'; @@ -11,6 +13,10 @@ export interface ListEvaluatorsRequest { creator_ids?: string[], evaluator_type?: evaluator.EvaluatorType[], with_version?: boolean, + /** 是否查询预置评估器 */ + builtin?: boolean, + /** 筛选器选项 */ + filter_option?: evaluator.EvaluatorFilterOption, page_size?: number, page_number?: number, order_bys?: common.OrderBy[], @@ -65,6 +71,11 @@ export interface UpdateEvaluatorRequest { name?: string, /** 描述 */ description?: string, + /** 是否预置评估器 */ + builtin?: boolean, + evaluator_info?: evaluator.EvaluatorInfo, + builtin_visible_version?: string, + box_type?: evaluator.EvaluatorBoxType, } export interface UpdateEvaluatorResponse {} export interface CloneEvaluatorRequest { @@ -91,6 +102,8 @@ export interface GetEvaluatorVersionRequest { evaluator_version_id: string, /** 是否查询已删除的评估器,默认不查询 */ include_deleted?: boolean, + /** 是否预置评估器 */ + builtin?: boolean, } export interface GetEvaluatorVersionResponse { evaluator?: evaluator.Evaluator @@ -241,6 +254,74 @@ export interface ValidateEvaluatorResponse { error_message?: string, evaluator_output_data?: evaluator.EvaluatorOutputData, } +export interface ListTemplatesV2Request { + /** 筛选器选项 */ + filter_option?: evaluator.EvaluatorFilterOption, + page_size?: number, + page_number?: number, + order_bys?: common.OrderBy[], +} +export interface ListTemplatesV2Response { + evaluator_templates?: evaluator.EvaluatorTemplate[], + total?: string, +} +export interface GetTemplateV2Request { + evaluator_template_id?: string, + /** 是否查询自定义code评估器模板,默认不查询 */ + custom_code?: boolean, +} +export interface GetTemplateV2Response { + evaluator_template?: evaluator.EvaluatorTemplate +} +export interface DebugBuiltinEvaluatorRequest { + evaluator_id: string, + input_data: evaluator.EvaluatorInputData, + /** 空间 id */ + workspace_id: string, +} +export interface DebugBuiltinEvaluatorResponse { + output_data: evaluator.EvaluatorOutputData +} +export interface UpdateBuiltinEvaluatorTagsRequest { + evaluator_id: string, + workspace_id?: string, + /** 评估器标签 */ + tags?: { + [key: string | number]: { + [key: string | number]: string[] + } + }, +} +export interface UpdateBuiltinEvaluatorTagsResponse { + evaluator: evaluator.Evaluator +} +export interface CreateEvaluatorTemplateRequest { + evaluator_template: evaluator.EvaluatorTemplate +} +export interface CreateEvaluatorTemplateResponse { + evaluator_template: evaluator.EvaluatorTemplate +} +export interface UpdateEvaluatorTemplateRequest { + evaluator_template_id: string, + evaluator_template: evaluator.EvaluatorTemplate, +} +export interface UpdateEvaluatorTemplateResponse { + evaluator_template: evaluator.EvaluatorTemplate +} +export interface DeleteEvaluatorTemplateRequest { + evaluator_template_id: string +} +export interface DeleteEvaluatorTemplateResponse {} +export interface ListEvaluatorTagsRequest { + /** 评估器标签类型,默认预置评估器 */ + tag_type?: evaluator.EvaluatorTagType +} +export interface ListEvaluatorTagsResponse { + /** 筛选器选项 */ + tags?: { + [key: string | number]: string[] + } +} /** * 评估器 * 按查询条件查询evaluator @@ -251,7 +332,7 @@ export const ListEvaluators = /*#__PURE__*/createAPI({ + "url": "/api/evaluation/v1/evaluator_template/list", + "method": "POST", + "name": "ListTemplatesV2", + "reqType": "ListTemplatesV2Request", + "reqMapping": { + "body": ["filter_option", "page_size", "page_number", "order_bys"] + }, + "resType": "ListTemplatesV2Response", + "schemaRoot": "api://schemas/evaluation_coze.loop.evaluation.evaluator", + "service": "evaluationEvaluator" +}); +export const GetTemplateV2 = /*#__PURE__*/createAPI({ + "url": "/api/evaluation/v1/evaluator_template/:evaluator_template_id", + "method": "GET", + "name": "GetTemplateV2", + "reqType": "GetTemplateV2Request", + "reqMapping": { + "path": ["evaluator_template_id"], + "query": ["custom_code"] + }, + "resType": "GetTemplateV2Response", + "schemaRoot": "api://schemas/evaluation_coze.loop.evaluation.evaluator", + "service": "evaluationEvaluator" +}); +/** 创建评估器模板 */ +export const CreateEvaluatorTemplate = /*#__PURE__*/createAPI({ + "url": "/api/evaluation/v1/evaluator_template", + "method": "POST", + "name": "CreateEvaluatorTemplate", + "reqType": "CreateEvaluatorTemplateRequest", + "reqMapping": { + "body": ["evaluator_template"] + }, + "resType": "CreateEvaluatorTemplateResponse", + "schemaRoot": "api://schemas/evaluation_coze.loop.evaluation.evaluator", + "service": "evaluationEvaluator" +}); +/** 更新评估器模板 */ +export const UpdateEvaluatorTemplate = /*#__PURE__*/createAPI({ + "url": "/api/evaluation/v1/evaluator_template/:evaluator_template_id", + "method": "PATCH", + "name": "UpdateEvaluatorTemplate", + "reqType": "UpdateEvaluatorTemplateRequest", + "reqMapping": { + "path": ["evaluator_template_id"], + "body": ["evaluator_template"] + }, + "resType": "UpdateEvaluatorTemplateResponse", + "schemaRoot": "api://schemas/evaluation_coze.loop.evaluation.evaluator", + "service": "evaluationEvaluator" +}); +/** 删除 */ +export const DeleteEvaluatorTemplate = /*#__PURE__*/createAPI({ + "url": "/api/evaluation/v1/evaluator_template/:evaluator_template_id", + "method": "DELETE", + "name": "DeleteEvaluatorTemplate", + "reqType": "DeleteEvaluatorTemplateRequest", + "reqMapping": { + "path": ["evaluator_template_id"] + }, + "resType": "DeleteEvaluatorTemplateResponse", + "schemaRoot": "api://schemas/evaluation_coze.loop.evaluation.evaluator", + "service": "evaluationEvaluator" +}); +/** + * 调试预置评估器 + * 调试预置评估器 +*/ +export const DebugBuiltinEvaluator = /*#__PURE__*/createAPI({ + "url": "/api/evaluation/v1/evaluators/debug_builtin", + "method": "POST", + "name": "DebugBuiltinEvaluator", + "reqType": "DebugBuiltinEvaluatorRequest", + "reqMapping": { + "body": ["evaluator_id", "input_data", "workspace_id"] + }, + "resType": "DebugBuiltinEvaluatorResponse", + "schemaRoot": "api://schemas/evaluation_coze.loop.evaluation.evaluator", + "service": "evaluationEvaluator" +}); +/** + * 更新预置评估器tag + * 更新预置评估器 +*/ +export const UpdateBuiltinEvaluatorTags = /*#__PURE__*/createAPI({ + "url": "/api/evaluation/v1/evaluators/:evaluator_id/update_builtin_tags", + "method": "PATCH", + "name": "UpdateBuiltinEvaluatorTags", + "reqType": "UpdateBuiltinEvaluatorTagsRequest", + "reqMapping": { + "path": ["evaluator_id"], + "body": ["workspace_id", "tags"] + }, + "resType": "UpdateBuiltinEvaluatorTagsResponse", + "schemaRoot": "api://schemas/evaluation_coze.loop.evaluation.evaluator", + "service": "evaluationEvaluator" +}); +/** 查询Tag */ +export const ListEvaluatorTags = /*#__PURE__*/createAPI({ + "url": "/api/evaluation/v1/evaluators/list_tags", + "method": "POST", + "name": "ListEvaluatorTags", + "reqType": "ListEvaluatorTagsRequest", + "reqMapping": { + "query": ["tag_type"] + }, + "resType": "ListEvaluatorTagsResponse", + "schemaRoot": "api://schemas/evaluation_coze.loop.evaluation.evaluator", + "service": "evaluationEvaluator" }); \ No newline at end of file diff --git a/frontend/packages/cozeloop/api-schema/src/api/idl/evaluation/coze.loop.evaluation.expt.ts b/frontend/packages/cozeloop/api-schema/src/api/idl/evaluation/coze.loop.evaluation.expt.ts index 82ca46397..f6174b99e 100644 --- a/frontend/packages/cozeloop/api-schema/src/api/idl/evaluation/coze.loop.evaluation.expt.ts +++ b/frontend/packages/cozeloop/api-schema/src/api/idl/evaluation/coze.loop.evaluation.expt.ts @@ -1,3 +1,7 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 +import * as evaluator from './domain/evaluator'; +export { evaluator }; import * as expt from './domain/expt'; export { expt }; import * as common from './domain/common'; @@ -54,6 +58,8 @@ export interface SubmitExperimentRequest { max_alive_time?: number, source_type?: expt.SourceType, source_id?: string, + /** 补充的评估器id+version关联评估器方式,和evaluator_version_ids共同使用,兼容老逻辑 */ + evaluator_id_version_list?: evaluator.EvaluatorIDVersionItem[], ext?: { [key: string | number]: string }, @@ -198,6 +204,7 @@ export interface InvokeExperimentResponse { [key: string | number]: number }, errors?: dataset.ItemErrorGroup[], + item_outputs?: dataset.CreateDatasetItemOutput[], } export interface FinishExperimentRequest { workspace_id?: number, @@ -376,7 +383,7 @@ export const SubmitExperiment = /*#__PURE__*/createAPI ext mapping */ + mime_type_ext_mapping?: { + [key: string | number]: string + }, +} +export interface UploadFileForServerRequest { + /** file mime type */ + mime_type: string, + /** file binary data */ + body: Blob, + /** workspace id */ + workspace_id: string, + /** upload options */ + option?: UploadFileOption, +} +export interface UploadFileForServerResponse { + code?: number, + msg?: string, + data?: FileData, +} export const SignUploadFile = /*#__PURE__*/createAPI({ "url": "/api/foundation/v1/sign_upload_files", "method": "POST", diff --git a/frontend/packages/cozeloop/api-schema/src/api/idl/foundation/coze.loop.foundation.openapi.ts b/frontend/packages/cozeloop/api-schema/src/api/idl/foundation/coze.loop.foundation.openapi.ts index 24f650a0b..3e8add12b 100644 --- a/frontend/packages/cozeloop/api-schema/src/api/idl/foundation/coze.loop.foundation.openapi.ts +++ b/frontend/packages/cozeloop/api-schema/src/api/idl/foundation/coze.loop.foundation.openapi.ts @@ -1,3 +1,5 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 import * as base from './../../../base'; export { base }; export interface UploadLoopFileRequest { diff --git a/frontend/packages/cozeloop/api-schema/src/api/idl/foundation/coze.loop.foundation.space.ts b/frontend/packages/cozeloop/api-schema/src/api/idl/foundation/coze.loop.foundation.space.ts index a8fbf48e1..fbf8e0717 100644 --- a/frontend/packages/cozeloop/api-schema/src/api/idl/foundation/coze.loop.foundation.space.ts +++ b/frontend/packages/cozeloop/api-schema/src/api/idl/foundation/coze.loop.foundation.space.ts @@ -1,3 +1,5 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 import * as space from './domain/space'; export { space }; import * as base from './../../../base'; diff --git a/frontend/packages/cozeloop/api-schema/src/api/idl/foundation/coze.loop.foundation.tag.ts b/frontend/packages/cozeloop/api-schema/src/api/idl/foundation/coze.loop.foundation.tag.ts new file mode 100644 index 000000000..5b10cd67c --- /dev/null +++ b/frontend/packages/cozeloop/api-schema/src/api/idl/foundation/coze.loop.foundation.tag.ts @@ -0,0 +1,189 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 +import * as dataset from './../data/domain/dataset'; +export { dataset }; +import * as tag from './domain/tag'; +export { tag }; +import * as base from './../../../base'; +export { base }; +import { createAPI } from './../../config'; +export interface CreateTagRequest { + workspace_id: string, + tag_key_name: string, + description?: string, + tag_content_spec?: tag.TagContentSpec, + tag_values?: tag.TagValue[], + tag_domain_types?: tag.TagDomainType[], + tag_content_type?: tag.TagContentType, + version?: string, +} +export interface CreateTagResponse { + tag_key_id?: string +} +export interface UpdateTagRequest { + workspace_id: string, + tag_key_id: string, + tag_key_name: string, + description?: string, + tag_content_spec?: tag.TagContentSpec, + tag_values?: tag.TagValue[], + tag_domain_types?: tag.TagDomainType[], + tag_content_type?: tag.TagContentType, + version?: string, +} +export interface UpdateTagResponse {} +export interface BatchUpdateTagStatusRequest { + workspace_id: string, + tag_key_ids: string[], + to_status: tag.TagStatus, +} +export interface BatchUpdateTagStatusResponse { + err_info?: { + [key: string | number]: string + } +} +export interface SearchTagsRequest { + workspace_id: string, + tag_key_name_like?: string, + created_bys?: string[], + domain_types?: tag.TagDomainType[], + content_types?: tag.TagContentType[], + /** pagination */ + page_number?: number, + page_size?: number, + page_token?: string, + order_by?: dataset.OrderBy, +} +export interface SearchTagsResponse { + tagInfos?: tag.TagInfo[], + next_page_token?: string, + total?: string, +} +export interface GetTagDetailRequest { + workspace_id: string, + tag_key_id: string, + /** pagination */ + page_number?: number, + page_size?: number, + page_token?: string, + order_by?: dataset.OrderBy, +} +export interface GetTagDetailResponse { + tags?: tag.TagInfo[], + next_page_token?: string, + total?: string, +} +export interface GetTagSpecRequest { + workspace_id: string +} +export interface GetTagSpecResponse { + /** 最大高度 */ + max_height?: number, + /** 最大宽度(一层最多有多少个) */ + max_width?: number, + /** 最多个数(各层加一起总数) */ + max_total?: number, +} +export interface BatchGetTagsRequest { + workspace_id: string, + tag_key_ids: string[], +} +export interface BatchGetTagsResponse { + tag_info_list?: tag.TagInfo[] +} +/** + * Tag + * 新增标签 +*/ +export const CreateTag = /*#__PURE__*/createAPI({ + "url": "/api/foundation/v1/tags", + "method": "POST", + "name": "CreateTag", + "reqType": "CreateTagRequest", + "reqMapping": { + "body": ["workspace_id", "tag_key_name", "description", "tag_content_spec", "tag_values", "tag_domain_types", "tag_content_type", "version"] + }, + "resType": "CreateTagResponse", + "schemaRoot": "api://schemas/foundation_coze.loop.foundation.tag", + "service": "dateTag" +}); +/** 更新标签 */ +export const UpdateTag = /*#__PURE__*/createAPI({ + "url": "/api/foundation/v1/tags/:tag_key_id", + "method": "PATCH", + "name": "UpdateTag", + "reqType": "UpdateTagRequest", + "reqMapping": { + "body": ["workspace_id", "tag_key_name", "description", "tag_content_spec", "tag_values", "tag_domain_types", "tag_content_type", "version"], + "path": ["tag_key_id"] + }, + "resType": "UpdateTagResponse", + "schemaRoot": "api://schemas/foundation_coze.loop.foundation.tag", + "service": "dateTag" +}); +/** 批量更新标签状态 */ +export const BatchUpdateTagStatus = /*#__PURE__*/createAPI({ + "url": "/api/foundation/v1/tags/batch_update_status", + "method": "POST", + "name": "BatchUpdateTagStatus", + "reqType": "BatchUpdateTagStatusRequest", + "reqMapping": { + "body": ["workspace_id", "tag_key_ids", "to_status"] + }, + "resType": "BatchUpdateTagStatusResponse", + "schemaRoot": "api://schemas/foundation_coze.loop.foundation.tag", + "service": "dateTag" +}); +/** 搜索标签 */ +export const SearchTags = /*#__PURE__*/createAPI({ + "url": "/api/foundation/v1/tags/search", + "method": "POST", + "name": "SearchTags", + "reqType": "SearchTagsRequest", + "reqMapping": { + "body": ["workspace_id", "tag_key_name_like", "created_bys", "domain_types", "content_types", "page_number", "page_size", "page_token", "order_by"] + }, + "resType": "SearchTagsResponse", + "schemaRoot": "api://schemas/foundation_coze.loop.foundation.tag", + "service": "dateTag" +}); +/** 标签详情 */ +export const GetTagDetail = /*#__PURE__*/createAPI({ + "url": "/api/foundation/v1/tags/:tag_key_id/detail", + "method": "POST", + "name": "GetTagDetail", + "reqType": "GetTagDetailRequest", + "reqMapping": { + "body": ["workspace_id", "page_number", "page_size", "page_token", "order_by"], + "path": ["tag_key_id"] + }, + "resType": "GetTagDetailResponse", + "schemaRoot": "api://schemas/foundation_coze.loop.foundation.tag", + "service": "dateTag" +}); +/** 获取标签限制 */ +export const GetTagSpec = /*#__PURE__*/createAPI({ + "url": "/api/foundation/v1/tag_spec", + "method": "GET", + "name": "GetTagSpec", + "reqType": "GetTagSpecRequest", + "reqMapping": { + "query": ["workspace_id"] + }, + "resType": "GetTagSpecResponse", + "schemaRoot": "api://schemas/foundation_coze.loop.foundation.tag", + "service": "dateTag" +}); +/** 批量获取标签 */ +export const BatchGetTags = /*#__PURE__*/createAPI({ + "url": "/api/foundation/v1/tags/batch_get", + "method": "POST", + "name": "BatchGetTags", + "reqType": "BatchGetTagsRequest", + "reqMapping": { + "body": ["workspace_id", "tag_key_ids"] + }, + "resType": "BatchGetTagsResponse", + "schemaRoot": "api://schemas/foundation_coze.loop.foundation.tag", + "service": "dateTag" +}); diff --git a/frontend/packages/cozeloop/api-schema/src/api/idl/foundation/coze.loop.foundation.user.ts b/frontend/packages/cozeloop/api-schema/src/api/idl/foundation/coze.loop.foundation.user.ts index 87d3836fc..d1355527d 100644 --- a/frontend/packages/cozeloop/api-schema/src/api/idl/foundation/coze.loop.foundation.user.ts +++ b/frontend/packages/cozeloop/api-schema/src/api/idl/foundation/coze.loop.foundation.user.ts @@ -1,3 +1,5 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 import * as user from './domain/user'; export { user }; import * as base from './../../../base'; diff --git a/frontend/packages/cozeloop/api-schema/src/api/idl/foundation/domain/authn.ts b/frontend/packages/cozeloop/api-schema/src/api/idl/foundation/domain/authn.ts index 76c1b6824..1225c0c43 100644 --- a/frontend/packages/cozeloop/api-schema/src/api/idl/foundation/domain/authn.ts +++ b/frontend/packages/cozeloop/api-schema/src/api/idl/foundation/domain/authn.ts @@ -1,3 +1,5 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 export interface PersonalAccessToken { id: string, name: string, diff --git a/frontend/packages/cozeloop/api-schema/src/api/idl/foundation/domain/space.ts b/frontend/packages/cozeloop/api-schema/src/api/idl/foundation/domain/space.ts index 39ed18671..a14bc949f 100644 --- a/frontend/packages/cozeloop/api-schema/src/api/idl/foundation/domain/space.ts +++ b/frontend/packages/cozeloop/api-schema/src/api/idl/foundation/domain/space.ts @@ -1,3 +1,5 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 /** 空间类型 */ export enum SpaceType { Undefined = 0, diff --git a/frontend/packages/cozeloop/api-schema/src/api/idl/foundation/domain/tag.ts b/frontend/packages/cozeloop/api-schema/src/api/idl/foundation/domain/tag.ts new file mode 100644 index 000000000..199730d77 --- /dev/null +++ b/frontend/packages/cozeloop/api-schema/src/api/idl/foundation/domain/tag.ts @@ -0,0 +1,147 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 +export enum TagStatus { + /** 标签状态 */ + Active = "active", + /** 启用 */ + Inactive = "inactive", + /** 禁用 */ + Deprecated = "deprecated", +} +/** 旧版本状态 */ +export enum TagType { + /** 标签类型 */ + Tag = "tag", + /** 标签 */ + Option = "option", +} +/** 单选类型,不在标签管理中 */ +export enum OperationType { + /** 操作类型 */ + Create = "create", + /** 创建 */ + Update = "update", + /** 更新 */ + Delete = "delete", +} +/** 删除 */ +export enum ChangeTargetType { + /** 变更对象 */ + Tag = "tag", + /** 标签 */ + TagName = "tag_name", + /** 标签名 */ + TagDescription = "tag_description", + /** 标签描述 */ + TagStatus = "tag_status", + /** 标签状态 */ + TagType = "tag_type", + /** 标签类型 */ + TagContentType = "tag_content_type", + /** 标签内容类型 */ + TagValueName = "tag_value_name", + /** 标签选项值 */ + TagValueStatus = "tag_value_status", +} +/** 标签选项状态 */ +export enum TagDomainType { + Data = "data", + /** 数据基座 */ + Observe = "observe", + /** 观测 */ + Evaluation = "evaluation", +} +/** 评测 */ +export enum TagContentType { + Categorical = "categorical", + /** 分类标签 */ + Boolean = "boolean", + /** 布尔标签 */ + ContinuousNumber = "continuous_number", + /** 连续分支类型 */ + FreeText = "free_text", +} +/** 自由文本 */ +export interface TagContentSpec { + continuous_number_spec?: ContinuousNumberSpec +} +export interface ContinuousNumberSpec { + min_value?: number, + min_value_description?: string, + max_value?: number, + max_value_description?: string, +} +export interface TagInfo { + id?: string, + appID?: number, + workspace_id?: string, + /** 数字版本号 */ + version_num?: number, + /** SemVer 三段式版本号 */ + version?: string, + /** tag key id */ + tag_key_id?: string, + /** tag key name */ + tag_key_name?: string, + /** 描述 */ + description?: string, + /** 状态,启用active、禁用inactive、弃用deprecated(最新版之前的版本的状态) */ + status?: TagStatus, + /** 类型: tag: 标签管理中的标签类型; option: 临时单选类型 */ + tag_type?: TagType, + parent_tag_key_id?: string, + /** 标签值 */ + tag_values?: TagValue[], + /** 变更历史 */ + change_logs?: ChangeLog[], + /** 内容类型 */ + content_type?: TagContentType, + /** 内容约束 */ + content_spec?: TagContentSpec, + /** 应用领域 */ + domain_type_list?: TagDomainType[], + created_by?: string, + created_at?: string, + updated_by?: string, + updated_at?: string, +} +export interface TagValue { + /** 主键 */ + id?: string, + app_id?: number, + workspace_id?: string, + /** tag_key_id */ + tag_key_id?: string, + /** tag_value_id */ + tag_value_id?: string, + /** 标签值 */ + tag_value_name?: string, + /** 描述 */ + description?: string, + /** 状态 */ + status?: TagStatus, + /** 数字版本号 */ + version_num?: number, + /** 父标签选项的ID */ + parent_tag_value_id?: string, + /** 子标签 */ + children?: TagValue[], + /** 是否是系统标签而非用户标签 */ + is_system?: boolean, + created_by?: string, + created_at?: string, + updated_by?: string, + updated_at?: string, +} +export interface ChangeLog { + /** 变更的属性 */ + target?: ChangeTargetType, + /** 变更类型: create, update, delete */ + operation?: OperationType, + /** 变更前的值 */ + before_value?: string, + /** 变更后的值 */ + after_value?: string, + /** 变更属性的值:如果是标签选项变更,该值为变更属选项值名字 */ + target_value?: string, +} diff --git a/frontend/packages/cozeloop/api-schema/src/api/idl/foundation/domain/user.ts b/frontend/packages/cozeloop/api-schema/src/api/idl/foundation/domain/user.ts index 707c74e36..0381f3ad8 100644 --- a/frontend/packages/cozeloop/api-schema/src/api/idl/foundation/domain/user.ts +++ b/frontend/packages/cozeloop/api-schema/src/api/idl/foundation/domain/user.ts @@ -1,3 +1,5 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 /** UserInfoDetail 用户详细信息,包含姓名、头像等 */ export interface UserInfoDetail { /** 唯一名称 */ diff --git a/frontend/packages/cozeloop/api-schema/src/api/idl/index.ts b/frontend/packages/cozeloop/api-schema/src/api/idl/index.ts index a712c0170..07b04cbe2 100644 --- a/frontend/packages/cozeloop/api-schema/src/api/idl/index.ts +++ b/frontend/packages/cozeloop/api-schema/src/api/idl/index.ts @@ -1,12 +1,16 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 export * as promptDebug from './prompt/coze.loop.prompt.debug'; export * as promptManage from './prompt/coze.loop.prompt.manage'; export * as observabilityTrace from './observability/coze.loop.observability.trace'; +export * as observabilityTask from './observability/coze.loop.observability.task'; +export * as observabilityMetric from './observability/coze.loop.observability.metric'; export * as evaluationEvalSet from './evaluation/coze.loop.evaluation.eval_set'; export * as evaluationEvalTarget from './evaluation/coze.loop.evaluation.eval_target'; export * as evaluationEvaluator from './evaluation/coze.loop.evaluation.evaluator'; export * as evaluationExpt from './evaluation/coze.loop.evaluation.expt'; export * as dataDataset from './data/coze.loop.data.dataset'; -export * as dataTag from './data/coze.loop.data.tag'; +export * as dateTag from './data/coze.loop.data.tag'; export * as llmManage from './llm/coze.loop.llm.manage'; export * as foundationUpload from './foundation/coze.loop.foundation.file'; export * as foundationUser from './foundation/coze.loop.foundation.user'; diff --git a/frontend/packages/cozeloop/api-schema/src/api/idl/llm/coze.loop.llm.manage.ts b/frontend/packages/cozeloop/api-schema/src/api/idl/llm/coze.loop.llm.manage.ts index 35b0b97b9..f30a79f0b 100644 --- a/frontend/packages/cozeloop/api-schema/src/api/idl/llm/coze.loop.llm.manage.ts +++ b/frontend/packages/cozeloop/api-schema/src/api/idl/llm/coze.loop.llm.manage.ts @@ -1,3 +1,5 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 import * as common from './domain/common'; export { common }; import * as manage from './domain/manage'; diff --git a/frontend/packages/cozeloop/api-schema/src/api/idl/llm/domain/common.ts b/frontend/packages/cozeloop/api-schema/src/api/idl/llm/domain/common.ts index a8e400ace..58e14b58e 100644 --- a/frontend/packages/cozeloop/api-schema/src/api/idl/llm/domain/common.ts +++ b/frontend/packages/cozeloop/api-schema/src/api/idl/llm/domain/common.ts @@ -1,7 +1,10 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 export enum Scenario { scenario_default = "default", scenario_prompt_debug = "prompt_debug", scenario_prompt_as_a_service = "prompt_as_a_service", scenario_eval_target = "eval_target", scenario_evaluator = "evaluator", + scenario_data_synthesis = "data_synthesis", } \ No newline at end of file diff --git a/frontend/packages/cozeloop/api-schema/src/api/idl/llm/domain/manage.ts b/frontend/packages/cozeloop/api-schema/src/api/idl/llm/domain/manage.ts index 95b784787..d6cec9a8b 100644 --- a/frontend/packages/cozeloop/api-schema/src/api/idl/llm/domain/manage.ts +++ b/frontend/packages/cozeloop/api-schema/src/api/idl/llm/domain/manage.ts @@ -1,3 +1,5 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 import * as common from './common'; export { common }; export interface Model { @@ -25,12 +27,20 @@ export interface Ability { export interface AbilityMultiModal { image?: boolean, ability_image?: AbilityImage, + video?: boolean, + ability_video?: AbilityVideo, } export interface AbilityImage { url_enabled?: boolean, binary_enabled?: boolean, max_image_size?: string, max_image_count?: string, + image_gen_enabled?: boolean, +} +export interface AbilityVideo { + /** the size limit of single video */ + max_video_size_in_mb?: number, + supported_video_formats?: VideoFormat[], } export interface ProtocolConfig { base_url?: string, @@ -154,4 +164,21 @@ export enum ParamType { param_type_int = "int", param_type_boolean = "boolean", param_type_string = "string", +} +export enum VideoFormat { + video_format_undefined = "undefined", + video_format_mp4 = "mp4", + video_format_avi = "avi", + video_format_mov = "mov", + video_format_mpg = "mpg", + video_format_webm = "webm", + video_format_rvmb = "rvmb", + video_format_wmv = "wmv", + video_format_mkv = "mkv", + video_format_t3gp = "t3gp", + video_format_flv = "flv", + video_format_mpeg = "mpeg", + video_format_ts = "ts", + video_format_rm = "rm", + video_format_m4v = "m4v", } \ No newline at end of file diff --git a/frontend/packages/cozeloop/api-schema/src/api/idl/llm/domain/runtime.ts b/frontend/packages/cozeloop/api-schema/src/api/idl/llm/domain/runtime.ts index c4471581d..949b095db 100644 --- a/frontend/packages/cozeloop/api-schema/src/api/idl/llm/domain/runtime.ts +++ b/frontend/packages/cozeloop/api-schema/src/api/idl/llm/domain/runtime.ts @@ -1,3 +1,7 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 +import * as manage from './manage'; +export { manage }; import * as common from './common'; export { common }; export interface ModelConfig { @@ -13,6 +17,16 @@ export interface ModelConfig { top_k?: number, presence_penalty?: number, frequency_penalty?: number, + /** 与ParamSchema对应 */ + param_config_values?: ParamConfigValue[], +} +export interface ParamConfigValue { + /** 传给下游模型的key,与ParamSchema.name对齐 */ + name?: string, + /** 展示名称 */ + label?: string, + /** 传给下游模型的value,与ParamSchema.options对齐 */ + value?: manage.ParamOption, } export interface Message { role: Role, @@ -33,12 +47,20 @@ export interface Message { export interface ChatMessagePart { type?: ChatMessagePartType, text?: string, + image_url?: ChatMessageImageURL, /** * 4: optional ChatMessageAudioURL audio_url 占位,暂不支持 - * 5: optional ChatMessageVideoURL video_url 占位,暂不支持 * 6: optional ChatMessageFileURL file_url 占位,暂不支持 */ - image_url?: ChatMessageImageURL, + video_url?: ChatMessageVideoURL, +} +export interface ChatMessageVideoURL { + url?: string, + detail?: VideoURLDetail, + mime_type?: string, +} +export interface VideoURLDetail { + fps?: number } export interface ChatMessageImageURL { url?: string, @@ -110,14 +132,16 @@ export enum ToolType { export enum ChatMessagePartType { chat_message_part_type_text = "text", chat_message_part_type_image_url = "image_url", + /** const ChatMessagePartType chat_message_part_type_audio_url = "audio_url" */ + chat_message_part_type_video_url = "video_url", } -/** - * const ChatMessagePartType chat_message_part_type_audio_url = "audio_url" - * const ChatMessagePartType chat_message_part_type_video_url = "video_url" - * const ChatMessagePartType chat_message_part_type_file_url = "file_url" -*/ +/** const ChatMessagePartType chat_message_part_type_file_url = "file_url" */ export enum ImageURLDetail { image_url_detail_auto = "auto", image_url_detail_low = "low", image_url_detail_high = "high", +} +export enum MimeTypePrefix { + mime_prefix_image = "image/", + mime_prefix_video = "video/", } \ No newline at end of file diff --git a/frontend/packages/cozeloop/api-schema/src/api/idl/observability/coze.loop.observability.metric.ts b/frontend/packages/cozeloop/api-schema/src/api/idl/observability/coze.loop.observability.metric.ts new file mode 100644 index 000000000..4f823a275 --- /dev/null +++ b/frontend/packages/cozeloop/api-schema/src/api/idl/observability/coze.loop.observability.metric.ts @@ -0,0 +1,69 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 +import * as metric from './domain/metric'; +export { metric }; +import * as common from './domain/common'; +export { common }; +import * as filter from './domain/filter'; +export { filter }; +import * as base from './../../../base'; +export { base }; +import { createAPI } from './../../config'; +export interface GetMetricsRequest { + workspace_id: string, + start_time: string, + end_time: string, + metric_names: string[], + granularity?: string, + filters?: filter.FilterFields, + platform_type?: common.PlatformType, + drill_down_fields?: filter.FilterField[], + compare?: metric.Compare, +} +export interface GetMetricsResponse { + metrics?: { + [key: string | number]: metric.Metric + }, + compared_metrics?: { + [key: string | number]: metric.Metric + }, +} +export interface GetDrillDownValuesRequest { + workspace_id: string, + start_time: string, + end_time: string, + filters?: filter.FilterFields, + platform_type?: common.PlatformType, + drill_down_value_type: metric.DrillDownValueType, +} +export interface DrillDownValue { + value: string, + display_name?: string, +} +export interface GetDrillDownValuesResponse { + drill_down_values?: DrillDownValue[] +} +export const GetMetrics = /*#__PURE__*/createAPI({ + "url": "/api/observability/v1/metrics/list", + "method": "POST", + "name": "GetMetrics", + "reqType": "GetMetricsRequest", + "reqMapping": { + "body": ["workspace_id", "start_time", "end_time", "metric_names", "granularity", "filters", "platform_type", "drill_down_fields", "compare"] + }, + "resType": "GetMetricsResponse", + "schemaRoot": "api://schemas/observability_coze.loop.observability.metric", + "service": "observabilityMetric" +}); +export const GetDrillDownValues = /*#__PURE__*/createAPI({ + "url": "/api/observability/v1/metrics/drill_down_values", + "method": "POST", + "name": "GetDrillDownValues", + "reqType": "GetDrillDownValuesRequest", + "reqMapping": { + "body": ["workspace_id", "start_time", "end_time", "filters", "platform_type", "drill_down_value_type"] + }, + "resType": "GetDrillDownValuesResponse", + "schemaRoot": "api://schemas/observability_coze.loop.observability.metric", + "service": "observabilityMetric" +}); \ No newline at end of file diff --git a/frontend/packages/cozeloop/api-schema/src/api/idl/observability/coze.loop.observability.task.ts b/frontend/packages/cozeloop/api-schema/src/api/idl/observability/coze.loop.observability.task.ts new file mode 100644 index 000000000..f6d1371fa --- /dev/null +++ b/frontend/packages/cozeloop/api-schema/src/api/idl/observability/coze.loop.observability.task.ts @@ -0,0 +1,117 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 +import * as common from './domain/common'; +export { common }; +import * as task from './domain/task'; +export { task }; +import * as filter from './domain/filter'; +export { filter }; +import * as base from './../../../base'; +export { base }; +import { createAPI } from './../../config'; +export interface CreateTaskRequest { + task: task.Task, + session?: common.Session, +} +export interface CreateTaskResponse { + task_id?: string +} +export interface UpdateTaskRequest { + task_id: string, + workspace_id: string, + task_status?: task.TaskStatus, + description?: string, + effective_time?: task.EffectiveTime, + sample_rate?: number, + session?: common.Session, +} +export interface UpdateTaskResponse {} +export interface ListTasksRequest { + workspace_id: string, + task_filters?: filter.TaskFilterFields, + /** default 20 max 200 */ + limit?: number, + offset?: number, + order_by?: common.OrderBy, +} +export interface ListTasksResponse { + tasks?: task.Task[], + total?: string, +} +export interface GetTaskRequest { + task_id: string, + workspace_id: string, +} +export interface GetTaskResponse { + task?: task.Task +} +export interface CheckTaskNameRequest { + workspace_id: string, + name: string, +} +export interface CheckTaskNameResponse { + pass?: boolean, + message?: string, +} +export const CheckTaskName = /*#__PURE__*/createAPI({ + "url": "/api/observability/v1/tasks/check_name", + "method": "POST", + "name": "CheckTaskName", + "reqType": "CheckTaskNameRequest", + "reqMapping": { + "body": ["workspace_id", "name"] + }, + "resType": "CheckTaskNameResponse", + "schemaRoot": "api://schemas/observability_coze.loop.observability.task", + "service": "observabilityTask" +}); +export const CreateTask = /*#__PURE__*/createAPI({ + "url": "/api/observability/v1/tasks", + "method": "POST", + "name": "CreateTask", + "reqType": "CreateTaskRequest", + "reqMapping": { + "body": ["task", "session"] + }, + "resType": "CreateTaskResponse", + "schemaRoot": "api://schemas/observability_coze.loop.observability.task", + "service": "observabilityTask" +}); +export const UpdateTask = /*#__PURE__*/createAPI({ + "url": "/api/observability/v1/tasks/:task_id", + "method": "PUT", + "name": "UpdateTask", + "reqType": "UpdateTaskRequest", + "reqMapping": { + "path": ["task_id"], + "body": ["workspace_id", "task_status", "description", "effective_time", "sample_rate", "session"] + }, + "resType": "UpdateTaskResponse", + "schemaRoot": "api://schemas/observability_coze.loop.observability.task", + "service": "observabilityTask" +}); +export const ListTasks = /*#__PURE__*/createAPI({ + "url": "/api/observability/v1/tasks/list", + "method": "POST", + "name": "ListTasks", + "reqType": "ListTasksRequest", + "reqMapping": { + "body": ["workspace_id", "task_filters", "limit", "offset", "order_by"] + }, + "resType": "ListTasksResponse", + "schemaRoot": "api://schemas/observability_coze.loop.observability.task", + "service": "observabilityTask" +}); +export const GetTask = /*#__PURE__*/createAPI({ + "url": "/api/observability/v1/tasks/:task_id", + "method": "GET", + "name": "GetTask", + "reqType": "GetTaskRequest", + "reqMapping": { + "path": ["task_id"], + "query": ["workspace_id"] + }, + "resType": "GetTaskResponse", + "schemaRoot": "api://schemas/observability_coze.loop.observability.task", + "service": "observabilityTask" +}); \ No newline at end of file diff --git a/frontend/packages/cozeloop/api-schema/src/api/idl/observability/coze.loop.observability.trace.ts b/frontend/packages/cozeloop/api-schema/src/api/idl/observability/coze.loop.observability.trace.ts index 7272c5097..fccce03ad 100644 --- a/frontend/packages/cozeloop/api-schema/src/api/idl/observability/coze.loop.observability.trace.ts +++ b/frontend/packages/cozeloop/api-schema/src/api/idl/observability/coze.loop.observability.trace.ts @@ -1,3 +1,7 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 +import * as task from './domain/task'; +export { task }; import * as export_dataset from './domain/export_dataset'; export { export_dataset }; import * as annotation from './domain/annotation'; @@ -34,6 +38,18 @@ export interface ListSpansResponse { next_page_token: string, has_more: boolean, } +export interface ListPreSpanRequest { + workspace_id: string, + trace_id: string, + /** ms */ + start_time: string, + span_id?: string, + previous_response_id?: string, + platform_type?: common.PlatformType, +} +export interface ListPreSpanResponse { + spans: span.OutputSpan[] +} export interface TokenCost { input: string, output: string, @@ -56,6 +72,20 @@ export interface GetTraceResponse { spans: span.OutputSpan[], traces_advance_info?: TraceAdvanceInfo, } +export interface SearchTraceTreeRequest { + workspace_id: string, + trace_id: string, + /** ms */ + start_time: string, + /** ms */ + end_time: string, + platform_type?: common.PlatformType, + filters?: filter.FilterFields, +} +export interface SearchTraceTreeResponse { + spans: span.OutputSpan[], + traces_advance_info?: TraceAdvanceInfo, +} export interface TraceQueryParams { trace_id: string, start_time: string, @@ -91,7 +121,8 @@ export interface GetTracesMetaInfoRequest { export interface GetTracesMetaInfoResponse { field_metas: { [key: string | number]: FieldMeta - } + }, + key_span_type?: string[], } export interface CreateViewRequest { enterprise_id?: string, @@ -222,6 +253,40 @@ export interface PreviewExportTracesToDatasetResponse { /** 仅供http请求使用; 内部RPC不予使用,统一通过BaseResp获取Code和Msg */ msg?: string, } +export interface ChangeEvaluatorScoreRequest { + workspace_id: string, + annotation_id: string, + span_id: string, + start_time: string, + correction: annotation.Correction, + platform_type?: common.PlatformType, +} +export interface ChangeEvaluatorScoreResponse { + annotation: annotation.Annotation +} +export interface ListAnnotationEvaluatorsRequest { + workspace_id: string, + name?: string, +} +export interface ListAnnotationEvaluatorsResponse { + evaluators: annotation.AnnotationEvaluator[] +} +export interface ExtractSpanInfoRequest { + workspace_id: string, + trace_id: string, + span_ids: string[], + start_time?: string, + end_time?: string, + platform_type?: common.PlatformType, + field_mappings?: export_dataset.FieldMapping[], +} +export interface SpanInfo { + span_id: string, + field_list: export_dataset.FieldData[], +} +export interface ExtractSpanInfoResponse { + span_infos: SpanInfo[] +} export const ListSpans = /*#__PURE__*/createAPI({ "url": "/api/observability/v1/spans/list", "method": "POST", @@ -234,6 +299,18 @@ export const ListSpans = /*#__PURE__*/createAPI({ + "url": "/api/observability/v1/spans/pre_list", + "method": "POST", + "name": "ListPreSpan", + "reqType": "ListPreSpanRequest", + "reqMapping": { + "body": ["workspace_id", "trace_id", "start_time", "span_id", "previous_response_id", "platform_type"] + }, + "resType": "ListPreSpanResponse", + "schemaRoot": "api://schemas/observability_coze.loop.observability.trace", + "service": "observabilityTrace" +}); export const GetTrace = /*#__PURE__*/createAPI({ "url": "/api/observability/v1/traces/:trace_id", "method": "GET", @@ -247,6 +324,18 @@ export const GetTrace = /*#__PURE__*/createAPI({ + "url": "/api/observability/v1/traces/search_tree", + "method": "POST", + "name": "SearchTraceTree", + "reqType": "SearchTraceTreeRequest", + "reqMapping": { + "body": ["workspace_id", "trace_id", "start_time", "end_time", "platform_type", "filters"] + }, + "resType": "SearchTraceTreeResponse", + "schemaRoot": "api://schemas/observability_coze.loop.observability.trace", + "service": "observabilityTrace" +}); export const BatchGetTracesAdvanceInfo = /*#__PURE__*/createAPI({ "url": "/api/observability/v1/traces/batch_get_advance_info", "method": "POST", @@ -394,4 +483,40 @@ export const PreviewExportTracesToDataset = /*#__PURE__*/createAPI({ + "url": "/api/observability/v1/traces/change_eval_score", + "method": "POST", + "name": "ChangeEvaluatorScore", + "reqType": "ChangeEvaluatorScoreRequest", + "reqMapping": { + "body": ["workspace_id", "annotation_id", "span_id", "start_time", "correction", "platform_type"] + }, + "resType": "ChangeEvaluatorScoreResponse", + "schemaRoot": "api://schemas/observability_coze.loop.observability.trace", + "service": "observabilityTrace" +}); +export const ListAnnotationEvaluators = /*#__PURE__*/createAPI({ + "url": "/api/observability/v1/annotation/list_evaluators", + "method": "GET", + "name": "ListAnnotationEvaluators", + "reqType": "ListAnnotationEvaluatorsRequest", + "reqMapping": { + "query": ["workspace_id", "name"] + }, + "resType": "ListAnnotationEvaluatorsResponse", + "schemaRoot": "api://schemas/observability_coze.loop.observability.trace", + "service": "observabilityTrace" +}); +export const ExtractSpanInfo = /*#__PURE__*/createAPI({ + "url": "/api/observability/v1/trace/extract_span_info", + "method": "POST", + "name": "ExtractSpanInfo", + "reqType": "ExtractSpanInfoRequest", + "reqMapping": { + "body": ["workspace_id", "trace_id", "span_ids", "start_time", "end_time", "platform_type", "field_mappings"] + }, + "resType": "ExtractSpanInfoResponse", + "schemaRoot": "api://schemas/observability_coze.loop.observability.trace", + "service": "observabilityTrace" }); \ No newline at end of file diff --git a/frontend/packages/cozeloop/api-schema/src/api/idl/observability/domain/annotation.ts b/frontend/packages/cozeloop/api-schema/src/api/idl/observability/domain/annotation.ts index 93993205e..e8612797b 100644 --- a/frontend/packages/cozeloop/api-schema/src/api/idl/observability/domain/annotation.ts +++ b/frontend/packages/cozeloop/api-schema/src/api/idl/observability/domain/annotation.ts @@ -1,3 +1,5 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 import * as common from './common'; export { common }; export enum AnnotationType { @@ -5,9 +7,12 @@ export enum AnnotationType { EvaluationSet = "manual_evaluation_set", ManualFeedback = "manual_feedback", CozeFeedback = "coze_feedback", + OpenAPIFeedback = "openapi_feedback", } export enum ValueType { String = "string", + Category = "category", + Number = "number", Long = "long", Double = "double", Bool = "bool", @@ -51,4 +56,9 @@ export interface Annotation { base_info?: common.BaseInfo, auto_evaluate?: AutoEvaluate, manual_feedback?: ManualFeedback, +} +export interface AnnotationEvaluator { + evaluator_version_id: number, + evaluator_name: string, + evaluator_version: string, } \ No newline at end of file diff --git a/frontend/packages/cozeloop/api-schema/src/api/idl/observability/domain/common.ts b/frontend/packages/cozeloop/api-schema/src/api/idl/observability/domain/common.ts index ed51842ff..bc8b9177c 100644 --- a/frontend/packages/cozeloop/api-schema/src/api/idl/observability/domain/common.ts +++ b/frontend/packages/cozeloop/api-schema/src/api/idl/observability/domain/common.ts @@ -1,3 +1,5 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 export enum PlatformType { Cozeloop = "cozeloop", Prompt = "prompt", @@ -8,6 +10,7 @@ export enum PlatformType { Workflow = "coze_workflow", Ark = "ark", VeADK = "veadk", + VeAgentkit = "ve_agentkit", LoopAll = "loop_all", InnerCozeloop = "inner_cozeloop", InnerDoubao = "inner_doubao", @@ -45,4 +48,7 @@ export enum ContentType { Image = "Image", Audio = "Audio", MultiPart = "MultiPart", +} +export interface Session { + user_id?: string } \ No newline at end of file diff --git a/frontend/packages/cozeloop/api-schema/src/api/idl/observability/domain/export_dataset.ts b/frontend/packages/cozeloop/api-schema/src/api/idl/observability/domain/export_dataset.ts index 621f6b6ca..062c827c8 100644 --- a/frontend/packages/cozeloop/api-schema/src/api/idl/observability/domain/export_dataset.ts +++ b/frontend/packages/cozeloop/api-schema/src/api/idl/observability/domain/export_dataset.ts @@ -1,3 +1,5 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 import * as common from './common'; export { common }; import * as dataset from './../../data/domain/dataset'; diff --git a/frontend/packages/cozeloop/api-schema/src/api/idl/observability/domain/filter.ts b/frontend/packages/cozeloop/api-schema/src/api/idl/observability/domain/filter.ts index e0935b20f..58d56481d 100644 --- a/frontend/packages/cozeloop/api-schema/src/api/idl/observability/domain/filter.ts +++ b/frontend/packages/cozeloop/api-schema/src/api/idl/observability/domain/filter.ts @@ -1,3 +1,7 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 +import * as common from './common'; +export { common }; export enum QueryType { Match = "match", Eq = "eq", @@ -22,6 +26,12 @@ export enum FieldType { Double = "double", Bool = "bool", } +export type TaskFieldName = string; +export const TaskFieldName_TaskStatus = "task_status"; +export const TaskFieldName_TaskName = "task_name"; +export const TaskFieldName_TaskType = "task_type"; +export const TaskFieldName_SampleRate = "sample_rate"; +export const TaskFieldName_CreatedBy = "created_by"; export interface FilterFields { query_and_or?: QueryRelation, filter_fields: FilterField[], @@ -33,9 +43,33 @@ export interface FilterField { query_type?: QueryType, query_and_or?: QueryRelation, sub_filter?: FilterFields, + is_custom?: boolean, + extra_info?: { + [key: string | number]: string + }, } export interface FieldOptions { i64_list?: string[], f64_list?: number[], string_list?: string[], +} +export interface TaskFilterFields { + query_and_or?: QueryRelation, + filter_fields: TaskFilterField[], +} +export interface TaskFilterField { + field_name?: TaskFieldName, + field_type?: FieldType, + values?: string[], + query_type?: QueryType, + query_and_or?: QueryRelation, + sub_filter?: TaskFilterField, +} +export interface SpanFilterFields { + /** Span 过滤条件 */ + filters?: FilterFields, + /** 平台类型,不填默认是fornax */ + platform_type?: common.PlatformType, + /** 查询的 span 标签页类型,不填默认是 root span */ + span_list_type?: common.SpanListType, } \ No newline at end of file diff --git a/frontend/packages/cozeloop/api-schema/src/api/idl/observability/domain/metric.ts b/frontend/packages/cozeloop/api-schema/src/api/idl/observability/domain/metric.ts new file mode 100644 index 000000000..7f2f75a75 --- /dev/null +++ b/frontend/packages/cozeloop/api-schema/src/api/idl/observability/domain/metric.ts @@ -0,0 +1,29 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 +export enum CompareType { + YoY = "yoy", + /** 同比 */ + MoM = "mom", +} +/** 环比 */ +export enum DrillDownValueType { + ModelName = "model_name", + ToolName = "tool_name", +} +export interface Metric { + summary?: string, + pie?: { + [key: string | number]: string + }, + time_series?: { + [key: string | number]: MetricPoint[] + }, +} +export interface MetricPoint { + timestamp?: string, + value?: string, +} +export interface Compare { + compare_type?: CompareType, + shift_seconds?: string, +} \ No newline at end of file diff --git a/frontend/packages/cozeloop/api-schema/src/api/idl/observability/domain/span.ts b/frontend/packages/cozeloop/api-schema/src/api/idl/observability/domain/span.ts index ef93a8522..902bba030 100644 --- a/frontend/packages/cozeloop/api-schema/src/api/idl/observability/domain/span.ts +++ b/frontend/packages/cozeloop/api-schema/src/api/idl/observability/domain/span.ts @@ -1,3 +1,5 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 import * as annotation from './annotation'; export { annotation }; export enum SpanStatus { @@ -46,6 +48,31 @@ export interface OutputSpan { logic_delete_date?: string, service_name?: string, logid?: string, + system_tags_string?: { + [key: string | number]: string + }, + system_tags_long?: { + [key: string | number]: string + }, + system_tags_double?: { + [key: string | number]: number + }, + tags_string?: { + [key: string | number]: string + }, + tags_long?: { + [key: string | number]: string + }, + tags_double?: { + [key: string | number]: number + }, + tags_bool?: { + [key: string | number]: boolean + }, + tags_bytes?: { + [key: string | number]: string + }, + call_type?: string, custom_tags?: { [key: string | number]: string }, diff --git a/frontend/packages/cozeloop/api-schema/src/api/idl/observability/domain/task.ts b/frontend/packages/cozeloop/api-schema/src/api/idl/observability/domain/task.ts new file mode 100644 index 000000000..52fa66f77 --- /dev/null +++ b/frontend/packages/cozeloop/api-schema/src/api/idl/observability/domain/task.ts @@ -0,0 +1,200 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 +import * as export_dataset from './export_dataset'; +export { export_dataset }; +import * as filter from './filter'; +export { filter }; +import * as common from './common'; +export { common }; +export enum TimeUnit { + Day = "day", + Week = "week", + Null = "null", +} +export enum TaskType { + AutoEval = "auto_evaluate", + /** 自动评测 */ + AutoDataReflow = "auto_data_reflow", +} +/** 数据回流 */ +export enum TaskRunType { + BackFill = "back_fill", + /** 历史数据回填 */ + NewData = "new_data", +} +/** 新数据 */ +export enum TaskStatus { + Unstarted = "unstarted", + /** 未启动 */ + Running = "running", + /** 正在运行 */ + Failed = "failed", + /** 失败 */ + Success = "success", + /** 成功 */ + Pending = "pending", + /** 中止 */ + Disabled = "disabled", +} +/** 禁用 */ +export enum RunStatus { + Running = "running", + /** 正在运行 */ + Done = "done", +} +/** 完成运行 */ +export enum TaskSource { + User = "user", + /** 用户创建 */ + Workflow = "workflow", +} +/** + * 工作流创建 + * Task +*/ +export interface Task { + /** 任务 id */ + id?: string, + /** 名称 */ + name: string, + /** 描述 */ + description?: string, + /** 所在空间 */ + workspace_id?: string, + /** 类型 */ + task_type: TaskType, + /** 状态 */ + task_status?: TaskStatus, + /** 规则 */ + rule?: Rule, + /** 配置 */ + task_config?: TaskConfig, + /** 任务状态详情 */ + task_detail?: RunDetail, + /** 任务历史数据执行详情 */ + backfill_task_detail?: RunDetail, + /** 创建来源 */ + task_source?: TaskSource, + /** 基础信息 */ + base_info?: common.BaseInfo, +} +/** Rule */ +export interface Rule { + /** Span 过滤条件 */ + span_filters?: filter.SpanFilterFields, + /** 采样配置 */ + sampler?: Sampler, + /** 生效时间窗口 */ + effective_time?: EffectiveTime, + /** 历史数据生效时间窗口 */ + backfill_effective_time?: EffectiveTime, +} +export interface Sampler { + /** 采样率 */ + sample_rate?: number, + /** 采样上限 */ + sample_size?: number, + /** 是否启动任务循环 */ + is_cycle?: boolean, + /** 采样单次上限 */ + cycle_count?: number, + /** 循环间隔 */ + cycle_interval?: number, + /** 循环时间单位 */ + cycle_time_unit?: TimeUnit, +} +export interface EffectiveTime { + /** ms timestamp */ + start_at?: string, + /** ms timestamp */ + end_at?: string, +} +/** TaskConfig */ +export interface TaskConfig { + /** 配置的评测规则信息 */ + auto_evaluate_configs?: AutoEvaluateConfig[], + /** 配置的数据回流的数据集信息 */ + data_reflow_config?: DataReflowConfig[], +} +export interface DataReflowConfig { + /** 数据集id,新增数据集时可为空 */ + dataset_id?: string, + /** 数据集名称 */ + dataset_name?: string, + /** 数据集列数据schema */ + dataset_schema?: export_dataset.DatasetSchema, + field_mappings?: export_dataset.FieldMapping[], +} +export interface AutoEvaluateConfig { + evaluator_version_id: string, + evaluator_id: string, + field_mappings: EvaluateFieldMapping[], +} +/** RunDetail */ +export interface RunDetail { + success_count?: number, + failed_count?: number, + total_count?: number, +} +export interface BackfillDetail { + success_count?: number, + failed_count?: number, + total_count?: number, + backfill_status?: RunStatus, + last_span_page_token?: string, +} +export interface EvaluateFieldMapping { + /** 数据集字段约束 */ + field_schema: export_dataset.FieldSchema, + trace_field_key: string, + trace_field_jsonpath: string, + eval_set_name?: string, +} +/** TaskRun */ +export interface TaskRun { + /** 任务 run id */ + id: string, + /** 所在空间 */ + workspace_id: string, + /** 任务 id */ + task_id: string, + /** 类型 */ + task_type: TaskRunType, + /** 状态 */ + run_status: RunStatus, + /** 任务状态详情 */ + run_detail?: RunDetail, + /** 任务历史数据执行详情 */ + backfill_run_detail?: BackfillDetail, + run_start_at: string, + run_end_at: string, + /** 配置 */ + task_run_config?: TaskRunConfig, + /** 基础信息 */ + base_info?: common.BaseInfo, +} +export interface TaskRunConfig { + /** 自动评测对应的运行配置信息 */ + auto_evaluate_run_config?: AutoEvaluateRunConfig, + /** 数据回流对应的运行配置信息 */ + data_reflow_run_config?: DataReflowRunConfig, +} +export interface AutoEvaluateRunConfig { + expt_id: string, + expt_run_id: string, + eval_id: string, + schema_id: string, + schema?: string, + end_at: string, + cycle_start_at: string, + cycle_end_at: string, + status: string, +} +export interface DataReflowRunConfig { + dataset_id: string, + dataset_run_id: string, + end_at: string, + cycle_start_at: string, + cycle_end_at: string, + status: string, +} \ No newline at end of file diff --git a/frontend/packages/cozeloop/api-schema/src/api/idl/observability/domain/view.ts b/frontend/packages/cozeloop/api-schema/src/api/idl/observability/domain/view.ts index de92129c3..fb161d4d4 100644 --- a/frontend/packages/cozeloop/api-schema/src/api/idl/observability/domain/view.ts +++ b/frontend/packages/cozeloop/api-schema/src/api/idl/observability/domain/view.ts @@ -1,3 +1,5 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 import * as common from './common'; export { common }; export interface View { diff --git a/frontend/packages/cozeloop/api-schema/src/api/idl/prompt/coze.loop.prompt.debug.ts b/frontend/packages/cozeloop/api-schema/src/api/idl/prompt/coze.loop.prompt.debug.ts index a1c2e7488..408013ab8 100644 --- a/frontend/packages/cozeloop/api-schema/src/api/idl/prompt/coze.loop.prompt.debug.ts +++ b/frontend/packages/cozeloop/api-schema/src/api/idl/prompt/coze.loop.prompt.debug.ts @@ -1,3 +1,5 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 import * as prompt from './domain/prompt'; export { prompt }; import * as base from './../../../base'; diff --git a/frontend/packages/cozeloop/api-schema/src/api/idl/prompt/coze.loop.prompt.manage.ts b/frontend/packages/cozeloop/api-schema/src/api/idl/prompt/coze.loop.prompt.manage.ts index 02ca2dd38..50c109433 100644 --- a/frontend/packages/cozeloop/api-schema/src/api/idl/prompt/coze.loop.prompt.manage.ts +++ b/frontend/packages/cozeloop/api-schema/src/api/idl/prompt/coze.loop.prompt.manage.ts @@ -1,3 +1,5 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 import * as user from './domain/user'; export { user }; import * as prompt from './domain/prompt'; @@ -15,7 +17,7 @@ export const CreatePrompt = /*#__PURE__*/createAPI({ + "url": "/api/prompt/v1/prompts/list_parent", + "method": "POST", + "name": "ListParentPrompt", + "reqType": "ListParentPromptRequest", + "reqMapping": { + "body": ["workspace_id", "prompt_id", "commit_versions"] + }, + "resType": "ListParentPromptResponse", + "schemaRoot": "api://schemas/prompt_coze.loop.prompt.manage", + "service": "promptManage" +}); /** 改 */ export const UpdatePrompt = /*#__PURE__*/createAPI({ "url": "/api/prompt/v1/prompts/:prompt_id", @@ -148,6 +163,7 @@ export const ListCommit = /*#__PURE__*/createAPI(); +class ApiError extends Error { + code: string | number; + + constructor(code: string | number, message: string) { + super(message); + this.code = code; + this.name = 'ApiError'; + } +} + // eslint-disable-next-line @typescript-eslint/no-explicit-any -- skip export function checkResponseData(uri: string, data: any) { logger.info({ @@ -20,7 +36,7 @@ export function checkResponseData(uri: string, data: any) { if (typeof data.code === 'number' && data.code !== 0) { const msg = data.msg || data.message || 'Unknown error'; - throw new Error(msg); + throw new ApiError(data.code, msg); } } @@ -66,3 +82,11 @@ export function onClientError(uri: string, e: unknown) { $notification.emit('apiError', error); } + +export function onClientBizError(url: string, error: unknown) { + $notification.emit('apiBizError', { + url, + code: error instanceof ApiError ? Number(error.code) : -1, + msg: error instanceof Error ? error.message : 'Unknown error', + }); +} diff --git a/frontend/packages/cozeloop/base-hooks/README.md b/frontend/packages/cozeloop/base-hooks/README.md index 0f22966ca..879419daf 100644 --- a/frontend/packages/cozeloop/base-hooks/README.md +++ b/frontend/packages/cozeloop/base-hooks/README.md @@ -1,4 +1,4 @@ -# @cozeloop/base-hooks +# @cozeloop/hooks Hooks for CozeLoop @@ -15,7 +15,7 @@ Add this package to your `package.json`: ```json { "dependencies": { - "@cozeloop/base-hooks": "workspace:*" + "@cozeloop/hooks": "workspace:*" } } ``` @@ -29,7 +29,7 @@ rush update ### Usage ```typescript -import { /* exported functions/components */ } from '@cozeloop/base-hooks'; +import { /* exported functions/components */ } from '@cozeloop/hooks'; // Example usage // TODO: Add specific usage examples diff --git a/frontend/packages/cozeloop/base-hooks/package.json b/frontend/packages/cozeloop/base-hooks/package.json index 2b147c3c7..389ddf470 100644 --- a/frontend/packages/cozeloop/base-hooks/package.json +++ b/frontend/packages/cozeloop/base-hooks/package.json @@ -1,5 +1,5 @@ { - "name": "@cozeloop/base-hooks", + "name": "@cozeloop/hooks", "version": "0.0.1", "description": "Hooks for CozeLoop", "author": "qihai@bytedance.com", @@ -11,6 +11,7 @@ "test:cov": "npm run test -- --coverage" }, "dependencies": { + "@cozeloop/i18n-adapter": "workspace:*", "@cozeloop/stores": "workspace:*", "zustand": "^4.4.7" }, @@ -28,3 +29,4 @@ "react": "~18.2.0" } } + diff --git a/frontend/packages/cozeloop/base-hooks/src/assistant/user-assistant.ts b/frontend/packages/cozeloop/base-hooks/src/assistant/user-assistant.ts new file mode 100644 index 000000000..51a6dadf3 --- /dev/null +++ b/frontend/packages/cozeloop/base-hooks/src/assistant/user-assistant.ts @@ -0,0 +1,73 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 +const OPEN_ASSISTANT_EVENT = 'ai_assistant_open'; + +const CLOSE_ASSISTANT_EVENT = 'ai_assistant_close'; + +const SEND_MESSAGE_EVENT = 'ai_assistant_send_message'; + +const emitter = new EventTarget(); + +function emit(eventName: string, detail?: unknown) { + emitter.dispatchEvent(new CustomEvent(eventName, { detail })); +} + +function on(eventName: string, callback: (e: Event) => void) { + emitter.addEventListener(eventName, callback); +} +function off(eventName: string, callback: (e: Event) => void) { + emitter.removeEventListener(eventName, callback); +} + +class Assistant { + /** 是否启用助手 */ + isEnable = false; + /** 启用助手 */ + enableAssistant = () => { + if (this.isEnable) { + return; + } + this.isEnable = true; + }; + /** 打开助手 */ + open = (params?: { from: string }) => { + emit(OPEN_ASSISTANT_EVENT, params); + }; + /** 监听助手打开事件, 返回取消监听函数 */ + onOpen = (callback: (params?: { from: string }) => void) => { + const cb = (e?: Event) => { + callback((e as CustomEvent).detail); + }; + on(OPEN_ASSISTANT_EVENT, cb); + return () => { + off(OPEN_ASSISTANT_EVENT, cb); + }; + }; + /** 关闭助手 */ + close = () => { + emit(CLOSE_ASSISTANT_EVENT); + }; + /** 监听助手关闭事件,返回取消监听函数 */ + onClose = (callback: () => void) => { + on(CLOSE_ASSISTANT_EVENT, callback); + return () => { + off(CLOSE_ASSISTANT_EVENT, callback); + }; + }; + sendMessage = (params: { query: string }) => { + emit(SEND_MESSAGE_EVENT, params); + }; + /** 监听助手发送消息事件, 返回取消监听函数 */ + onSendMessage = (callback: (params: { query: string }) => void) => { + const cb = (e?: Event) => { + callback((e as CustomEvent).detail); + }; + on(SEND_MESSAGE_EVENT, cb); + return () => { + off(SEND_MESSAGE_EVENT, cb); + }; + }; +} + +/** 用户助手 */ +export const userAssistant = new Assistant(); diff --git a/frontend/packages/cozeloop/base-hooks/src/index.ts b/frontend/packages/cozeloop/base-hooks/src/index.ts index b4fbecc2b..c9ded1bbf 100644 --- a/frontend/packages/cozeloop/base-hooks/src/index.ts +++ b/frontend/packages/cozeloop/base-hooks/src/index.ts @@ -5,3 +5,5 @@ export { useModalData } from './use-modal-data'; export { useMouseDownOffset } from './dom/use-mouse-down-offset'; export { useBreadcrumb } from './use-breadcrumb'; export { useNavbarCollapsed } from './use-navbar-collapsed'; +export { useSwipeInterceptor } from './use-swipe-interceptor'; +export { userAssistant } from './assistant/user-assistant'; diff --git a/frontend/packages/cozeloop/base-hooks/src/use-breadcrumb.ts b/frontend/packages/cozeloop/base-hooks/src/use-breadcrumb.ts index 64bba1de0..4fd83396a 100644 --- a/frontend/packages/cozeloop/base-hooks/src/use-breadcrumb.ts +++ b/frontend/packages/cozeloop/base-hooks/src/use-breadcrumb.ts @@ -5,7 +5,9 @@ import { useEffect } from 'react'; import { useShallow } from 'zustand/react/shallow'; import { useUIStore, type BreadcrumbItemConfig } from '@cozeloop/stores'; -export function useBreadcrumb(config: BreadcrumbItemConfig) { +export function useBreadcrumb( + config: BreadcrumbItemConfig | BreadcrumbItemConfig[], +) { const { pushBreadcrumb, popBreadcrumb } = useUIStore( useShallow(store => ({ pushBreadcrumb: store.pushBreadcrumb, @@ -14,9 +16,22 @@ export function useBreadcrumb(config: BreadcrumbItemConfig) { ); useEffect(() => { - pushBreadcrumb(config); + if (Array.isArray(config)) { + config.forEach(item => { + pushBreadcrumb(item); + }); + } else { + pushBreadcrumb(config); + } + return () => { - popBreadcrumb(); + if (Array.isArray(config)) { + config.forEach(() => { + popBreadcrumb(); + }); + } else { + popBreadcrumb(); + } }; }, [config]); } diff --git a/frontend/packages/cozeloop/base-hooks/src/use-swipe-interceptor.ts b/frontend/packages/cozeloop/base-hooks/src/use-swipe-interceptor.ts new file mode 100644 index 000000000..2318a17b5 --- /dev/null +++ b/frontend/packages/cozeloop/base-hooks/src/use-swipe-interceptor.ts @@ -0,0 +1,86 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 +/* eslint-disable @typescript-eslint/no-explicit-any */ + +import { useEffect, useRef } from 'react'; + +import { useLatest } from 'ahooks'; + +// 通用滑动拦截 hook +interface UseSwipeInterceptorOptions { + onSwipeDetected: () => Promise; // 检测到滑动时的回调 + deps?: any; // 是否启用拦截 + createSuccess?: boolean; + pageName?: string; +} + +export function useSwipeInterceptor({ + onSwipeDetected, + deps, + createSuccess, + pageName, +}: UseSwipeInterceptorOptions) { + const createSuccessRef = useLatest(createSuccess); + // 滑动拦截相关状态 + const isProcessingNavigation = useRef(false); + const currentHistoryIndex = useRef(0); + + // 初始化历史记录状态 + useEffect(() => { + // 记录当前历史记录位置 + currentHistoryIndex.current = window.history.length; + + // 添加一个历史记录条目,防止直接后退 + window.history.pushState( + { page: pageName || '' }, + '', + window.location.href, + ); + + return () => { + // 清理时移除添加的历史记录 + if (window.history.length > 1 && !createSuccessRef.current) { + window.history.back(); + } + }; + }, []); + + // 拦截浏览器历史记录变化 + const handlePopState = (event: PopStateEvent) => { + if (isProcessingNavigation.current || createSuccessRef.current) { + return; + } + + // 阻止默认的历史记录变化 + event.preventDefault(); + + // 立即添加一个新的历史记录条目来阻止跳转 + window.history.pushState( + { page: 'optimization-create' }, + '', + window.location.href, + ); + + isProcessingNavigation.current = true; + + // 触发提示 + console.log('handlePopState'); + onSwipeDetected() + .finally(() => { + isProcessingNavigation.current = false; + }) + .catch(() => { + isProcessingNavigation.current = false; + }); + }; + + // 添加事件监听器 + useEffect(() => { + // 添加 popstate 事件监听器(拦截浏览器历史记录变化) + window.addEventListener('popstate', handlePopState); + + return () => { + window.removeEventListener('popstate', handlePopState); + }; + }, [deps]); +} diff --git a/frontend/packages/cozeloop/base-hooks/tsconfig.build.json b/frontend/packages/cozeloop/base-hooks/tsconfig.build.json index 1f5a462cb..57f3e9f0a 100644 --- a/frontend/packages/cozeloop/base-hooks/tsconfig.build.json +++ b/frontend/packages/cozeloop/base-hooks/tsconfig.build.json @@ -20,6 +20,9 @@ { "path": "../../../config/vitest-config/tsconfig.build.json" }, + { + "path": "../i18n/tsconfig.build.json" + }, { "path": "../stores/tsconfig.build.json" } diff --git a/frontend/packages/cozeloop/biz-components/package.json b/frontend/packages/cozeloop/biz-components/package.json index caa7a735b..7a703eda0 100644 --- a/frontend/packages/cozeloop/biz-components/package.json +++ b/frontend/packages/cozeloop/biz-components/package.json @@ -15,15 +15,18 @@ "@cozeloop/biz-hooks-adapter": "workspace:*", "@cozeloop/components": "workspace:*", "@cozeloop/i18n-adapter": "workspace:*", + "@cozeloop/tea-adapter": "workspace:*", "classnames": "^2.3.2", - "nanoid": "^4.0.2" + "nanoid": "^4.0.2", + "zustand": "^4.4.7" }, "devDependencies": { + "@coze-arch/bot-typings": "workspace:*", "@coze-arch/eslint-config": "workspace:*", "@coze-arch/stylelint-config": "workspace:*", "@coze-arch/ts-config": "workspace:*", "@coze-arch/vitest-config": "workspace:*", - "@types/node": "^18", + "@types/node": "18.18.9", "@types/react": "18.2.37", "@types/react-dom": "18.2.15", "@vitest/coverage-v8": "~3.0.5", @@ -38,3 +41,4 @@ "react-dom": ">=18.2.0" } } + diff --git a/frontend/packages/cozeloop/biz-components/src/editor-tools/index.tsx b/frontend/packages/cozeloop/biz-components/src/editor-tools/index.tsx deleted file mode 100644 index e7881d48d..000000000 --- a/frontend/packages/cozeloop/biz-components/src/editor-tools/index.tsx +++ /dev/null @@ -1,84 +0,0 @@ -// Copyright (c) 2025 coze-dev Authors -// SPDX-License-Identifier: Apache-2.0 -import { I18n } from '@cozeloop/i18n-adapter'; -import { handleCopy } from '@cozeloop/components'; -import { - type Message, - type Role, - type Prompt, - ContentType, -} from '@cozeloop/api-schema/prompt'; -import { IconCozCopy, IconCozTrashCan } from '@coze-arch/coze-design/icons'; -import { IconButton, Popconfirm, Space } from '@coze-arch/coze-design'; - -export type PromptMessage = Omit & { - role?: R; - id?: string; - key?: string; - optimize_key?: string; -}; - -interface EditorToolsProps { - onDelete?: (id?: string | number) => void; - message?: PromptMessage; - disabled?: boolean; - promptInfo?: Prompt; - optimizeBtnHidden?: boolean; - onMessageChange?: (message: PromptMessage) => void; -} - -export function EditorTools({ - onDelete, - message, - disabled, -}: EditorToolsProps) { - const handleInfo = () => { - if (message?.parts?.length) { - return message?.parts - ?.map(it => { - if (it.type === ContentType.MultiPartVariable && it?.text) { - return `${it.text}`; - } - return it.text; - }) - .join(''); - } - return message?.content; - }; - return ( - - } - color="secondary" - size="mini" - onClick={() => { - const info = handleInfo() ?? ''; - handleCopy(info); - }} - /> - {!onDelete ? null : disabled ? ( - } - color="secondary" - size="mini" - disabled={disabled} - /> - ) : ( - onDelete?.(`${message?.key || message?.id || ''}`)} - > - } - color="secondary" - size="mini" - /> - - )} - - ); -} diff --git a/frontend/packages/cozeloop/biz-components/src/global.d.ts b/frontend/packages/cozeloop/biz-components/src/global.d.ts deleted file mode 100644 index f052f32af..000000000 --- a/frontend/packages/cozeloop/biz-components/src/global.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright (c) 2025 coze-dev Authors -// SPDX-License-Identifier: Apache-2.0 -declare module '*.module.less' { - const classes: { readonly [key: string]: string }; - export default classes; -} diff --git a/frontend/packages/cozeloop/biz-components/src/index.ts b/frontend/packages/cozeloop/biz-components/src/index.ts index f49dfd533..3d1cb4aab 100644 --- a/frontend/packages/cozeloop/biz-components/src/index.ts +++ b/frontend/packages/cozeloop/biz-components/src/index.ts @@ -7,7 +7,3 @@ export { BenefitBannerScene, } from './benefit'; export { UserSelect } from './user-select'; - -export { EditorTools } from './editor-tools'; - -export { MessageToolBtns } from './message-tool-btns'; diff --git a/frontend/packages/cozeloop/biz-components/src/message-tool-btns/index.module.less b/frontend/packages/cozeloop/biz-components/src/message-tool-btns/index.module.less deleted file mode 100644 index f02cf4fc7..000000000 --- a/frontend/packages/cozeloop/biz-components/src/message-tool-btns/index.module.less +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright (c) 2025 coze-dev Authors -// SPDX-License-Identifier: Apache-2.0 -.tool-btns { - display: flex; - gap: 4px; - align-items: center; - justify-content: flex-end; - - margin-left: -4px; - - - .icon-button { - background: transparent; - - &:hover { - color: var(--semi-color-primary); - } - - &-active{ - background-color:rgba(var(--coze-bg-6), var(--coze-bg-6-alpha))!important; - } - } - - :global { - .semi-button-disabled { - color: var(--semi-color-disabled-text) !important; - } - } -} diff --git a/frontend/packages/cozeloop/observation/trace-struct-data/src/typings.d.ts b/frontend/packages/cozeloop/biz-components/src/types.d.ts similarity index 54% rename from frontend/packages/cozeloop/observation/trace-struct-data/src/typings.d.ts rename to frontend/packages/cozeloop/biz-components/src/types.d.ts index aaca1e197..b2a3eeebc 100644 --- a/frontend/packages/cozeloop/observation/trace-struct-data/src/typings.d.ts +++ b/frontend/packages/cozeloop/biz-components/src/types.d.ts @@ -1,3 +1,9 @@ // Copyright (c) 2025 coze-dev Authors // SPDX-License-Identifier: Apache-2.0 /// + +interface Window { + optimizeEditorMap?: Record; +} + +declare type Int64 = string | number; diff --git a/frontend/packages/cozeloop/biz-components/src/user-select/index.tsx b/frontend/packages/cozeloop/biz-components/src/user-select/index.tsx index 66cf696d4..9bcda4f57 100644 --- a/frontend/packages/cozeloop/biz-components/src/user-select/index.tsx +++ b/frontend/packages/cozeloop/biz-components/src/user-select/index.tsx @@ -8,9 +8,11 @@ import { Select, type SelectProps, Tag } from '@coze-arch/coze-design'; interface UserSelectProps { value?: string[]; - onChange?: (value: string[]) => void; + onChange?: (value?: string[]) => void; placeholder?: string; className?: string; + labelProps?: string; + valueProps?: 'user_id' | 'email_prefix'; } export const UserSelect = ({ @@ -18,8 +20,10 @@ export const UserSelect = ({ onChange, placeholder, className = '', + valueProps = 'user_id', + labelProps = 'screen_name', ...rest -}: UserSelectProps & SelectProps) => { +}: UserSelectProps & Omit) => { const userInfo = useUserInfo(); const DefaultOption = [ { @@ -27,12 +31,13 @@ export const UserSelect = ({ ), + value: userInfo?.user_id_str || '', data: { - user_name: userInfo?.screen_name || userInfo.name, + user_name: userInfo?.[labelProps], avatar_url: userInfo?.avatar_url, }, }, @@ -53,6 +58,7 @@ export const UserSelect = ({ /> ); + return { isRenderInTag: false, content, diff --git a/frontend/packages/cozeloop/biz-components/tsconfig.build.json b/frontend/packages/cozeloop/biz-components/tsconfig.build.json index 0117ef718..62b027c70 100644 --- a/frontend/packages/cozeloop/biz-components/tsconfig.build.json +++ b/frontend/packages/cozeloop/biz-components/tsconfig.build.json @@ -14,6 +14,9 @@ { "path": "../api-schema/tsconfig.build.json" }, + { + "path": "../../arch/bot-typings/tsconfig.build.json" + }, { "path": "../biz-hooks/tsconfig.build.json" }, @@ -34,6 +37,9 @@ }, { "path": "../i18n/tsconfig.build.json" + }, + { + "path": "../tea/tsconfig.build.json" } ] } diff --git a/frontend/packages/cozeloop/biz-config/package.json b/frontend/packages/cozeloop/biz-config/package.json index ff55ddf6d..c6ee5d000 100644 --- a/frontend/packages/cozeloop/biz-config/package.json +++ b/frontend/packages/cozeloop/biz-config/package.json @@ -10,6 +10,9 @@ "test": "NODE_OPTIONS='--max_old_space_size=2048' NODE_ENV=test vitest --run --passWithNoTests", "test:cov": "npm run test -- --coverage" }, + "dependencies": { + "@cozeloop/i18n-adapter": "workspace:*" + }, "devDependencies": { "@coze-arch/eslint-config": "workspace:*", "@coze-arch/ts-config": "workspace:*", diff --git a/frontend/packages/cozeloop/biz-config/src/index.ts b/frontend/packages/cozeloop/biz-config/src/index.ts index ed0c82038..885a17c0f 100644 --- a/frontend/packages/cozeloop/biz-config/src/index.ts +++ b/frontend/packages/cozeloop/biz-config/src/index.ts @@ -4,3 +4,7 @@ * 评估实验并发数最大配置 */ export const EVAL_EXPERIMENT_CONCUR_COUNT_MAX = 20; +/** 是否禁用多模态评测 */ +export const IS_DISABLED_MULTI_MODEL_EVAL = true as boolean; +/** 是否隐藏实验详情筛选中的评测集模糊筛选,由于服务端不支持,临时配置 */ +export const IS_HIDDEN_EXPERIMENT_DETAIL_FILTER = true as boolean; diff --git a/frontend/packages/cozeloop/biz-config/tsconfig.build.json b/frontend/packages/cozeloop/biz-config/tsconfig.build.json index 809d3e750..35ca2cab1 100644 --- a/frontend/packages/cozeloop/biz-config/tsconfig.build.json +++ b/frontend/packages/cozeloop/biz-config/tsconfig.build.json @@ -19,6 +19,9 @@ }, { "path": "../../../config/vitest-config/tsconfig.build.json" + }, + { + "path": "../i18n/tsconfig.build.json" } ], "$schema": "https://json.schemastore.org/tsconfig" diff --git a/frontend/packages/cozeloop/biz-hooks/README.md b/frontend/packages/cozeloop/biz-hooks/README.md index 2ddfee7ae..5e3087aa5 100644 --- a/frontend/packages/cozeloop/biz-hooks/README.md +++ b/frontend/packages/cozeloop/biz-hooks/README.md @@ -47,10 +47,10 @@ import { /* exported functions/components */ } from '@cozeloop/biz-hooks-adapter - `useSpace` - `useUserInfo` -- `useNavigateModule, - useBaseURL, - useCozeLocation,` -- `useApp` +- `useNavigateModule` +- `useOpenWindow` +- `useRouteInfo` +- `useCozeLocation` - `useBenefit, type BenefitConfig` - `useFetchUserBenefit` - `useDemoSpace` diff --git a/frontend/packages/cozeloop/biz-hooks/package.json b/frontend/packages/cozeloop/biz-hooks/package.json index 584f0b994..673def0b8 100644 --- a/frontend/packages/cozeloop/biz-hooks/package.json +++ b/frontend/packages/cozeloop/biz-hooks/package.json @@ -13,6 +13,7 @@ "dependencies": { "@cozeloop/account": "workspace:*", "@cozeloop/api-schema": "workspace:*", + "@cozeloop/i18n-adapter": "workspace:*", "@cozeloop/route-base": "workspace:*", "ahooks": "^3.7.8", "zustand": "^4.4.7" @@ -21,7 +22,6 @@ "@coze-arch/eslint-config": "workspace:*", "@coze-arch/ts-config": "workspace:*", "@coze-arch/vitest-config": "workspace:*", - "@types/node": "^18", "@types/react": "18.2.37", "@vitest/coverage-v8": "~3.0.5", "react-router-dom": "^6.22.0", @@ -34,3 +34,4 @@ "react-router-dom": "^6.22.0" } } + diff --git a/frontend/packages/cozeloop/biz-hooks/src/auto-task/index.ts b/frontend/packages/cozeloop/biz-hooks/src/auto-task/index.ts new file mode 100644 index 000000000..1002e963d --- /dev/null +++ b/frontend/packages/cozeloop/biz-hooks/src/auto-task/index.ts @@ -0,0 +1,4 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 +/** Fornax 自动化任务路由特化处理,其他环境可以不实现,使用默认路由 */ +export const getAutoTaskUrlPath: (() => string) | undefined = undefined; diff --git a/frontend/packages/cozeloop/biz-hooks/src/constants/index.ts b/frontend/packages/cozeloop/biz-hooks/src/constants/index.ts index ca2faa15a..42fcb0b12 100644 --- a/frontend/packages/cozeloop/biz-hooks/src/constants/index.ts +++ b/frontend/packages/cozeloop/biz-hooks/src/constants/index.ts @@ -1,5 +1,7 @@ // Copyright (c) 2025 coze-dev Authors // SPDX-License-Identifier: Apache-2.0 +import { I18n } from '@cozeloop/i18n-adapter'; + import DemoSpaceIcon from '../assets/demo-space-icon.svg'; const BOE_DEMO_SPACE_ID = '7476830560543850540'; @@ -11,11 +13,6 @@ export const DEMO_SPACE_ID = IS_RELEASE_VERSION export const demoSpace = { id: DEMO_SPACE_ID, - name: 'Demo 空间', + name: I18n.t('demo_space'), icon_url: DemoSpaceIcon, }; - -/** 是否禁用多模态评测 */ -export const IS_DISABLED_MULTI_MODEL_EVAL = true as boolean; -/** 是否隐藏实验详情筛选, 临时 */ -export const IS_HIDDEN_EXPERIMENT_DETAIL_FILTER = true as boolean; diff --git a/frontend/packages/cozeloop/biz-hooks/src/evaluate/use-resource-page-jump.ts b/frontend/packages/cozeloop/biz-hooks/src/evaluate/use-resource-page-jump.ts index d4ef34067..afe7300a6 100644 --- a/frontend/packages/cozeloop/biz-hooks/src/evaluate/use-resource-page-jump.ts +++ b/frontend/packages/cozeloop/biz-hooks/src/evaluate/use-resource-page-jump.ts @@ -1,22 +1,14 @@ // Copyright (c) 2025 coze-dev Authors // SPDX-License-Identifier: Apache-2.0 -import { useBaseURL } from '../use-navigate-module'; - export function useResourcePageJump() { - const { baseURL } = useBaseURL(); const getPromptDetailURL = (promptID: string, version?: string) => { - const url = `${baseURL}/pe/prompts/${promptID}${version ? `?version=${version}` : ''}`; + const url = `pe/prompts/${promptID}${version ? `?version=${version}` : ''}`; return url; }; - const getTagDetailURL = (tagID: string) => { - const url = `${baseURL}/tag/tag/${tagID}`; - return url; - }; + const getTagDetailURL = (tagID: string) => `tag/tag/${tagID}`; + + const getTagCreateURL = () => 'tag/tag/create'; - const getTagCreateURL = () => { - const url = `${baseURL}/tag/tag/create`; - return url; - }; return { getPromptDetailURL, getTagDetailURL, getTagCreateURL }; } diff --git a/frontend/packages/cozeloop/biz-hooks/src/index.ts b/frontend/packages/cozeloop/biz-hooks/src/index.ts index 545d4fdea..839d0b542 100644 --- a/frontend/packages/cozeloop/biz-hooks/src/index.ts +++ b/frontend/packages/cozeloop/biz-hooks/src/index.ts @@ -3,21 +3,18 @@ export { useSpace } from './use-space'; export { useUserInfo } from './use-user-info'; export { + useOpenWindow, useNavigateModule, - useBaseURL, + useRouteInfo, useCozeLocation, -} from './use-navigate-module'; -export { useApp } from './use-app'; +} from './route'; export { useBenefit, type BenefitConfig } from './benefit/use-benefit'; export { useFetchUserBenefit } from './benefit/use-fetch-user-benefit'; -export { - IS_DISABLED_MULTI_MODEL_EVAL, - IS_HIDDEN_EXPERIMENT_DETAIL_FILTER, -} from './constants'; export { useDemoSpace } from './use-demo-space'; export { useUserListApi } from './user-select'; export { useResourcePageJump } from './evaluate/use-resource-page-jump'; +export { getAutoTaskUrlPath } from './auto-task'; export { useDataImportApi } from './data-import/use-data-import-api'; export { useCurrentEnterpriseId } from './use-current-enterprise-id'; @@ -31,5 +28,3 @@ export { type ListDatasetImportTemplateReq, type ListDatasetImportTemplateResp, } from './dataset-template-download'; - -export { useOpenWindow } from './route'; diff --git a/frontend/packages/cozeloop/biz-hooks/src/route/index.ts b/frontend/packages/cozeloop/biz-hooks/src/route/index.ts index b76c5273c..f4844774d 100644 --- a/frontend/packages/cozeloop/biz-hooks/src/route/index.ts +++ b/frontend/packages/cozeloop/biz-hooks/src/route/index.ts @@ -1,6 +1,5 @@ // Copyright (c) 2025 coze-dev Authors // SPDX-License-Identifier: Apache-2.0 - export { useOpenWindow } from './use-open-window'; export { useNavigateModule } from './use-navigate-module'; export { useRouteInfo } from './use-route-info'; diff --git a/frontend/packages/cozeloop/biz-hooks/src/route/use-coze-location.ts b/frontend/packages/cozeloop/biz-hooks/src/route/use-coze-location.ts index dfd5f8727..e0e3ed4ea 100644 --- a/frontend/packages/cozeloop/biz-hooks/src/route/use-coze-location.ts +++ b/frontend/packages/cozeloop/biz-hooks/src/route/use-coze-location.ts @@ -1,6 +1,5 @@ // Copyright (c) 2025 coze-dev Authors // SPDX-License-Identifier: Apache-2.0 - /** * 获取coze 相关地址信息 * @returns diff --git a/frontend/packages/cozeloop/biz-hooks/src/route/use-navigate-module.ts b/frontend/packages/cozeloop/biz-hooks/src/route/use-navigate-module.ts index 26cea8c55..fb200c783 100644 --- a/frontend/packages/cozeloop/biz-hooks/src/route/use-navigate-module.ts +++ b/frontend/packages/cozeloop/biz-hooks/src/route/use-navigate-module.ts @@ -1,6 +1,5 @@ // Copyright (c) 2025 coze-dev Authors // SPDX-License-Identifier: Apache-2.0 - import { createUseNavigateModule } from '@cozeloop/route-base'; import { useRouteInfo } from './use-route-info'; diff --git a/frontend/packages/cozeloop/biz-hooks/src/route/use-open-window.ts b/frontend/packages/cozeloop/biz-hooks/src/route/use-open-window.ts index 32070334d..c54304f10 100644 --- a/frontend/packages/cozeloop/biz-hooks/src/route/use-open-window.ts +++ b/frontend/packages/cozeloop/biz-hooks/src/route/use-open-window.ts @@ -1,6 +1,5 @@ // Copyright (c) 2025 coze-dev Authors // SPDX-License-Identifier: Apache-2.0 - import { createUseOpenWindow, type UseOpenWindow } from '@cozeloop/route-base'; import { useRouteInfo } from './use-route-info'; diff --git a/frontend/packages/cozeloop/biz-hooks/src/route/use-route-info.ts b/frontend/packages/cozeloop/biz-hooks/src/route/use-route-info.ts index c443f6921..2f577eb2c 100644 --- a/frontend/packages/cozeloop/biz-hooks/src/route/use-route-info.ts +++ b/frontend/packages/cozeloop/biz-hooks/src/route/use-route-info.ts @@ -1,6 +1,5 @@ // Copyright (c) 2025 coze-dev Authors // SPDX-License-Identifier: Apache-2.0 - import { useParams } from 'react-router-dom'; import { useCallback, useMemo } from 'react'; @@ -18,8 +17,8 @@ const getBaseURLBase = (params: RouteInfoURLParams) => { if (params.enterpriseID) { baseURL += `/enterprise/${params.enterpriseID}`; } - if (params.organizeID) { - baseURL += `/organize/${params.organizeID}`; + if (params.organizationID) { + baseURL += `/organization/${params.organizationID}`; } if (params.spaceID) { baseURL += `/space/${params.spaceID}`; @@ -29,10 +28,10 @@ const getBaseURLBase = (params: RouteInfoURLParams) => { }; export const useRouteInfo: UseRouteInfo = () => { - const { enterpriseID, organizeID, spaceID } = useParams<{ + const { enterpriseID, organizationID, spaceID } = useParams<{ enterpriseID: string; spaceID: string; - organizeID: string; + organizationID: string; }>(); const { pathname } = window.location ?? {}; @@ -40,7 +39,7 @@ export const useRouteInfo: UseRouteInfo = () => { const routeInfo = useMemo(() => { const baseURL = getBaseURLBase({ enterpriseID, - organizeID, + organizationID, spaceID, }); @@ -54,22 +53,22 @@ export const useRouteInfo: UseRouteInfo = () => { subModule, detail, }; - }, [pathname, enterpriseID, organizeID, spaceID]); + }, [pathname, enterpriseID, organizationID, spaceID]); const getBaseURL: RouteInfo['getBaseURL'] = useCallback( params => getBaseURLBase({ enterpriseID, - organizeID, + organizationID, spaceID, ...params, }), - [enterpriseID, organizeID, spaceID], + [enterpriseID, organizationID, spaceID], ); return { enterpriseID, - organizeID, + organizationID, spaceID, getBaseURL, ...routeInfo, diff --git a/frontend/packages/cozeloop/biz-hooks/src/use-app.ts b/frontend/packages/cozeloop/biz-hooks/src/use-app.ts deleted file mode 100644 index f60a6575b..000000000 --- a/frontend/packages/cozeloop/biz-hooks/src/use-app.ts +++ /dev/null @@ -1,63 +0,0 @@ -// Copyright (c) 2025 coze-dev Authors -// SPDX-License-Identifier: Apache-2.0 -import { useMatch, useParams } from 'react-router-dom'; - -export type AppType = - | 'pe' - | 'evaluation' - | 'observation' - | 'model' - | 'enterprise-manage' - | 'open'; - -export function useApp() { - const { enterpriseID: enterpriseIDFromURL, spaceID: spaceIDFromURL } = - useParams<{ - enterpriseID: string; - spaceID: string; - }>(); - - const enterpriseSpace = useMatch( - '/console/enterprise/:enterpriseID/space/:spaceID/:app/:subModule/:detail?/*', - ); - - const enterpriseCommon = useMatch( - '/console/enterprise/:enterpriseID/:app/:subModule/:detail?/*', - ); - - let app = ''; - let subModule = ''; - let detail = ''; - if (enterpriseSpace) { - app = enterpriseSpace.params.app || ''; - subModule = enterpriseSpace.params.subModule || ''; - detail = enterpriseSpace.params.detail || ''; - } else if (enterpriseCommon) { - if ( - enterpriseCommon.params.app === 'enterprise-manage' || - enterpriseCommon.params.app === 'open' - ) { - app = enterpriseCommon.params.app || ''; - subModule = enterpriseCommon.params.subModule || ''; - detail = enterpriseCommon.params.detail || ''; - } - } - - /** - * 路径规范 /console/enterprise/:enterpriseID/space/:spaceID/:app/:subModule/:other - * 路径规范2 /console/enterprise/:enterpriseID/enterprise-manage/:subModule - * other 可能是创建页面,也可能是详情页 - */ - - return { - spaceIDFromURL, - enterpriseIDFromURL, - app: app as AppType, - subModule, - // 是否在模块一级页面 - isTopLevel: !detail, - // 如果是数字的话,则认为在详情页 - isDetail: /^\d+$/.test(detail), - inSpace: !!enterpriseSpace, - }; -} diff --git a/frontend/packages/cozeloop/biz-hooks/src/use-navigate-module.ts b/frontend/packages/cozeloop/biz-hooks/src/use-navigate-module.ts deleted file mode 100644 index a09556784..000000000 --- a/frontend/packages/cozeloop/biz-hooks/src/use-navigate-module.ts +++ /dev/null @@ -1,102 +0,0 @@ -// Copyright (c) 2025 coze-dev Authors -// SPDX-License-Identifier: Apache-2.0 -import { - useNavigate, - type NavigateOptions, - type To, - type NavigateFunction, - useParams, -} from 'react-router-dom'; -import { useCallback } from 'react'; - -import { useSpace } from './use-space'; - -/** - * 基于模块的 navigate,会在路径前自动拼接 /console/space/:spaceID/ 或者 /console/enterprise/:enterpriseID/space/:spaceID/ - * 需要在空间模块内使用 - * @example - * const navigate = useNavigateModule(); - * //跳转到 /console/space/:spaceID/pe - * navigate("pe") - * @returns - */ -export function useNavigateModule(): NavigateFunction { - const navigate = useNavigate(); - const { baseURL } = useBaseURL(); - return useCallback( - (to: To | number, options?: NavigateOptions) => { - if (typeof to === 'number') { - navigate(to); - } else { - if (typeof to === 'string') { - navigate(`${baseURL}/${to}`, options); - } else { - navigate( - { - ...to, - pathname: `${baseURL}/${to.pathname}`, - }, - options, - ); - } - } - }, - [baseURL], - ); -} - -interface BaseURLProps { - /** 默认的企业 ID */ - enterpriseID?: string; - /** 默认的空间 ID */ - spaceID?: string; -} - -/** - * 基于模块的 navigate,会在路径前自动拼接 /console/space/:spaceID 或者 /console/enterprise/:enterpriseID/space/:spaceID - * 需要在空间模块内使用 - */ -export function useBaseURL() { - const { enterpriseID: enterpriseIDFromParams, spaceID: spaceIDFromParams } = - useParams<{ - enterpriseID: string; - spaceID: string; - }>(); - - const { space } = useSpace(); - - const getBaseURL = useCallback( - (params: BaseURLProps = {}) => { - const enterpriseID = params.enterpriseID ?? enterpriseIDFromParams; - const spaceID = params.spaceID ?? spaceIDFromParams ?? space?.id; - - return `/console${enterpriseID ? `/enterprise/${enterpriseID}` : ''}/space/${spaceID}`; - }, - [enterpriseIDFromParams, spaceIDFromParams, space?.id], - ); - - const getBasePrefix = useCallback( - (params: BaseURLProps = {}) => { - const enterpriseID = params.enterpriseID ?? enterpriseIDFromParams; - return `/console${enterpriseID ? `/enterprise/${enterpriseID}` : ''}`; - }, - [enterpriseIDFromParams], - ); - return { - getBaseURL, - baseURL: getBaseURL(), - getBasePrefix, - }; -} - -/** - * 获取coze 相关地址信息 - * @returns - */ -export function useCozeLocation() { - const cozeOrigin = window.location.origin.replace('loop.', ''); - - return { - origin: cozeOrigin, - }; -} diff --git a/frontend/packages/cozeloop/biz-hooks/src/use-space.ts b/frontend/packages/cozeloop/biz-hooks/src/use-space.ts index 70b06a6a7..4b06e12b0 100644 --- a/frontend/packages/cozeloop/biz-hooks/src/use-space.ts +++ b/frontend/packages/cozeloop/biz-hooks/src/use-space.ts @@ -17,6 +17,7 @@ export function useSpace() { id: space?.id, name: space?.name, icon_url: DemoSpaceIcon, + space_role_type: space?.space_role_type, }, spaceID: space?.id ?? spaceID, spaceIDWhenDemoSpaceItsPersonal: space?.id ?? spaceID, diff --git a/frontend/packages/cozeloop/biz-hooks/tsconfig.build.json b/frontend/packages/cozeloop/biz-hooks/tsconfig.build.json index 6f0862c0b..549b79fa7 100644 --- a/frontend/packages/cozeloop/biz-hooks/tsconfig.build.json +++ b/frontend/packages/cozeloop/biz-hooks/tsconfig.build.json @@ -25,6 +25,12 @@ }, { "path": "../../../config/vitest-config/tsconfig.build.json" + }, + { + "path": "../i18n/tsconfig.build.json" + }, + { + "path": "../route/tsconfig.build.json" } ], "$schema": "https://json.schemastore.org/tsconfig" diff --git a/frontend/packages/cozeloop/components-with-adapter/OWNERS b/frontend/packages/cozeloop/components-with-adapter/OWNERS new file mode 100644 index 000000000..c8dd1fdfe --- /dev/null +++ b/frontend/packages/cozeloop/components-with-adapter/OWNERS @@ -0,0 +1,5 @@ +reviewers: + - houtao.zzj + - qihai + - zhangchi.zhc +approvals_required: 1 diff --git a/frontend/packages/cozeloop/observation/trace-detail/README.md b/frontend/packages/cozeloop/components-with-adapter/README.md similarity index 56% rename from frontend/packages/cozeloop/observation/trace-detail/README.md rename to frontend/packages/cozeloop/components-with-adapter/README.md index 1e5608338..4f88a7866 100644 --- a/frontend/packages/cozeloop/observation/trace-detail/README.md +++ b/frontend/packages/cozeloop/components-with-adapter/README.md @@ -1,6 +1,6 @@ -# @cozeloop/observation-component-adapter +# @cozeloop/components -Analytics Components +common components for cozeloop ## Overview @@ -15,7 +15,7 @@ Add this package to your `package.json`: ```json { "dependencies": { - "@cozeloop/observation-component-adapter": "workspace:*" + "@cozeloop/components": "workspace:*" } } ``` @@ -29,7 +29,7 @@ rush update ### Usage ```typescript -import { /* exported functions/components */ } from '@cozeloop/observation-component-adapter'; +import { /* exported functions/components */ } from '@cozeloop/components'; // Example usage // TODO: Add specific usage examples @@ -43,7 +43,28 @@ import { /* exported functions/components */ } from '@cozeloop/observation-compo ## API Reference -Please refer to the TypeScript definitions for detailed API documentation. +### Exports + +- `ColumnSelector, type ColumnItem` +- `TooltipWhenDisabled` +- `LoopTable` +- `TableWithPagination, + DEFAULT_PAGE_SIZE, + PAGE_SIZE_OPTIONS,` +- `PageError, + PageLoading, + PageNoAuth, + PageNoContent, + PageNotFound,` +- `TableColActions` +- `LoopTabs` +- `LargeTxtRender` +- `InputSlider` +- `handleCopy, sleep` + +*And more...* + +For detailed API documentation, please refer to the TypeScript definitions. ## Development diff --git a/frontend/packages/cozeloop/components-with-adapter/config/rush-project.json b/frontend/packages/cozeloop/components-with-adapter/config/rush-project.json new file mode 100644 index 000000000..00f4b4f5d --- /dev/null +++ b/frontend/packages/cozeloop/components-with-adapter/config/rush-project.json @@ -0,0 +1,8 @@ +{ + "operationSettings": [ + { + "operationName": "ts-check", + "outputFolderNames": ["./dist"] + } + ] +} diff --git a/frontend/packages/cozeloop/observation/trace-detail/eslint.config.js b/frontend/packages/cozeloop/components-with-adapter/eslint.config.js similarity index 100% rename from frontend/packages/cozeloop/observation/trace-detail/eslint.config.js rename to frontend/packages/cozeloop/components-with-adapter/eslint.config.js diff --git a/frontend/packages/cozeloop/components-with-adapter/package.json b/frontend/packages/cozeloop/components-with-adapter/package.json new file mode 100644 index 000000000..33c714194 --- /dev/null +++ b/frontend/packages/cozeloop/components-with-adapter/package.json @@ -0,0 +1,39 @@ +{ + "name": "@cozeloop/base-with-adapter-components", + "version": "0.0.1", + "description": "common components with adapter for cozeloop", + "author": "houtao.zzj@bytedance.com", + "main": "./src/index.ts", + "types": "./src/index.ts", + "scripts": { + "build": "exit 0", + "lint": "eslint ./ --cache", + "test": "exit 0", + "test:cov": "exit 0" + }, + "dependencies": { + "@coze-arch/coze-design": "0.0.7-alpha.985c0d", + "@cozeloop/biz-hooks-adapter": "workspace:*", + "@cozeloop/i18n-adapter": "workspace:*" + }, + "devDependencies": { + "@coze-arch/bot-typings": "workspace:*", + "@coze-arch/eslint-config": "workspace:*", + "@coze-arch/ts-config": "workspace:*", + "@cozeloop/tailwind-config": "workspace:*", + "@types/lodash-es": "^4.17.10", + "@types/react": "18.2.37", + "@types/react-dom": "18.2.15", + "@vitest/coverage-v8": "~3.0.5", + "happy-dom": "^20.0.10", + "react": "~18.2.0", + "react-dom": "~18.2.0", + "react-router-dom": "^6.22.0", + "tsconfig-paths": "4.1.0", + "vite": "^4.3.9", + "vite-plugin-svgr": "~3.3.0", + "vitest": "~3.0.5" + }, + "peerDependencies": {} +} + diff --git a/frontend/packages/cozeloop/components-with-adapter/src/form/handle-form-cancel.ts b/frontend/packages/cozeloop/components-with-adapter/src/form/handle-form-cancel.ts new file mode 100644 index 000000000..de1185be1 --- /dev/null +++ b/frontend/packages/cozeloop/components-with-adapter/src/form/handle-form-cancel.ts @@ -0,0 +1,18 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 +import { I18n } from '@cozeloop/i18n-adapter'; +import { Modal } from '@coze-arch/coze-design'; + +export const handleFormCancel = (changed?: boolean, onCancel?: () => void) => { + if (changed) { + Modal.confirm({ + title: I18n.t('form_leave_title'), + content: I18n.t('form_leave_desc'), + onOk: onCancel, + okText: I18n.t('confirm'), + cancelText: I18n.t('cancel'), + }); + } else { + onCancel?.(); + } +}; diff --git a/frontend/packages/cozeloop/components-with-adapter/src/form/rules.ts b/frontend/packages/cozeloop/components-with-adapter/src/form/rules.ts new file mode 100644 index 000000000..2ea32ffba --- /dev/null +++ b/frontend/packages/cozeloop/components-with-adapter/src/form/rules.ts @@ -0,0 +1,10 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 +import { I18n } from '@cozeloop/i18n-adapter'; + +export function getRequiredRule(): { required?: boolean; message?: string } { + return { + required: true, + message: I18n.t('fornax_base_required_error'), + }; +} diff --git a/frontend/packages/cozeloop/components-with-adapter/src/index.ts b/frontend/packages/cozeloop/components-with-adapter/src/index.ts new file mode 100644 index 000000000..e85391e30 --- /dev/null +++ b/frontend/packages/cozeloop/components-with-adapter/src/index.ts @@ -0,0 +1,9 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 +export { + RouteBackAction, + type RouteBackActionProps, +} from './route/route-back-action'; + +export { handleFormCancel } from './form/handle-form-cancel'; +export { getRequiredRule } from './form/rules'; diff --git a/frontend/packages/cozeloop/components/src/route/route-back-action.tsx b/frontend/packages/cozeloop/components-with-adapter/src/route/route-back-action.tsx similarity index 87% rename from frontend/packages/cozeloop/components/src/route/route-back-action.tsx rename to frontend/packages/cozeloop/components-with-adapter/src/route/route-back-action.tsx index ebf4ceafe..b2329ab27 100644 --- a/frontend/packages/cozeloop/components/src/route/route-back-action.tsx +++ b/frontend/packages/cozeloop/components-with-adapter/src/route/route-back-action.tsx @@ -20,19 +20,21 @@ function getBackRoute(defaultRoute: string, location: Location) { return isNewNavigation ? defaultRoute : -1; } -interface RouteBackActionProps { +export interface RouteBackActionProps { + btnClassName?: string; onBack?: () => void; defaultModuleRoute?: string; } -export default function RouteBackAction({ +export function RouteBackAction({ onBack, defaultModuleRoute, + btnClassName = '', }: RouteBackActionProps) { const navigateModule = useNavigateModule(); const location = useLocation(); return ( -
@@ -228,7 +232,7 @@ export const ColumnSelector = ({ onClick={handleReset} > - {resetButtonText} + {resetButtonText || I18n.t('reset_to_default')} )} diff --git a/frontend/packages/cozeloop/components/src/edit-icon-button/index.tsx b/frontend/packages/cozeloop/components/src/edit-icon-button/index.tsx index 9dd5cf16c..3d5bf4009 100644 --- a/frontend/packages/cozeloop/components/src/edit-icon-button/index.tsx +++ b/frontend/packages/cozeloop/components/src/edit-icon-button/index.tsx @@ -5,15 +5,21 @@ import { type MouseEvent } from 'react'; import classNames from 'classnames'; import { IconCozPencil } from '@coze-arch/coze-design/icons'; -interface Props { +interface Props extends React.HTMLAttributes { className?: string; disabled?: boolean; onClick?: (e: MouseEvent) => void; } -export function EditIconButton({ disabled, className, onClick }: Props) { +export function EditIconButton({ + disabled, + className, + onClick, + ...rest +}: Props) { return ( + + +
+ ); +} diff --git a/frontend/packages/cozeloop/components/src/hooks/use-infinite-scroll.ts b/frontend/packages/cozeloop/components/src/hooks/use-infinite-scroll.ts index a667f37f2..492670beb 100644 --- a/frontend/packages/cozeloop/components/src/hooks/use-infinite-scroll.ts +++ b/frontend/packages/cozeloop/components/src/hooks/use-infinite-scroll.ts @@ -16,8 +16,11 @@ import { useRequest, useUpdateEffect, } from 'ahooks'; - -import { getClientHeight, getScrollHeight, getScrollTop } from '../utils/rect'; +import { + getClientHeight, + getScrollHeight, + getScrollTop, +} from '@cozeloop/toolkit'; /** * ahook的实现,在刷新列表时会出现以下两个问题 diff --git a/frontend/packages/cozeloop/components/src/hooks/use-unsave-leave-warning.ts b/frontend/packages/cozeloop/components/src/hooks/use-unsave-leave-warning.ts new file mode 100644 index 000000000..41c345710 --- /dev/null +++ b/frontend/packages/cozeloop/components/src/hooks/use-unsave-leave-warning.ts @@ -0,0 +1,51 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 +import { useBlocker } from 'react-router-dom'; +import { useEffect } from 'react'; + +import { useI18n } from '../provider'; + +interface UnsaveLeaveWarningProps { + /** 是否阻塞 */ + block: boolean; + /** 自定义提示消息*/ + message?: string; +} + +/** + * 离开页面时的警告 + * 触发时机:关闭浏览器、关闭浏览器标签页、刷新页面、导航回退离开等 + */ +export const useUnsaveLeaveWarning = ({ + block, + message, +}: UnsaveLeaveWarningProps) => { + const i18n = useI18n(); + const warnMessage = + message || i18n.t('unsave_leave_confirm_warning') || 'Close confirm'; + + useEffect(() => { + const handleBeforeUnload = (event: BeforeUnloadEvent) => { + if (block) { + event.preventDefault(); + event.returnValue = warnMessage; // 显示自定义消息(部分浏览器可能不支持) + } + }; + + // 监听浏览器关闭标签页或刷新事件 + window.addEventListener('beforeunload', handleBeforeUnload); + + return () => { + window.removeEventListener('beforeunload', handleBeforeUnload); + }; + }, [block, warnMessage]); + + // 处理 React Router 导航离开 + useBlocker(() => { + if (block) { + // 弹出确认框 + return !window.confirm(warnMessage); + } + return true; + }); +}; diff --git a/frontend/packages/cozeloop/components/src/id-render/icon-button-container.tsx b/frontend/packages/cozeloop/components/src/id-render/icon-button-container.tsx index 885c85e7a..1b4d2f4d3 100644 --- a/frontend/packages/cozeloop/components/src/id-render/icon-button-container.tsx +++ b/frontend/packages/cozeloop/components/src/id-render/icon-button-container.tsx @@ -4,7 +4,7 @@ import { type DOMAttributes } from 'react'; import cls from 'classnames'; -export default function IconButtonContainer({ +export function IconButtonContainer({ icon, className, style, diff --git a/frontend/packages/cozeloop/components/src/id-render/index.tsx b/frontend/packages/cozeloop/components/src/id-render/index.tsx index 651cd42ba..82e470d65 100644 --- a/frontend/packages/cozeloop/components/src/id-render/index.tsx +++ b/frontend/packages/cozeloop/components/src/id-render/index.tsx @@ -4,7 +4,9 @@ import classNames from 'classnames'; import { IconCozCopy } from '@coze-arch/coze-design/icons'; import { Toast, Tooltip } from '@coze-arch/coze-design'; -import IconButtonContainer from './icon-button-container'; +import { useI18n } from '@/provider'; + +import { IconButtonContainer } from './icon-button-container'; export function IDRender({ id, @@ -19,6 +21,7 @@ export function IDRender({ useTag?: boolean; defaultShowCopyBtn?: boolean; }) { + const I18n = useI18n(); const idString = id?.toString() ?? ''; const suffix = idString.slice( Math.max(idString.length - showSuffixLength, 0), @@ -39,7 +42,7 @@ export function IDRender({ )} {enableCopy ? ( - +
diff --git a/frontend/packages/cozeloop/components/src/index-controller/record-navigation.tsx b/frontend/packages/cozeloop/components/src/index-controller/record-navigation.tsx new file mode 100644 index 000000000..dcddf1420 --- /dev/null +++ b/frontend/packages/cozeloop/components/src/index-controller/record-navigation.tsx @@ -0,0 +1,62 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 +import { + IconCozArrowLeft, + IconCozArrowRight, +} from '@coze-arch/coze-design/icons'; +import { Space, Button, Tooltip } from '@coze-arch/coze-design'; + +import { useI18n } from '@/provider'; + +import { type IndexControllerStore } from './use-item-index-controller'; + +/** 控制上一个下一个记录的控制器组件 */ +export function IndexControllerView({ + indexControllerStore, + className, +}: { + indexControllerStore: IndexControllerStore; + className?: string; +}) { + const I18n = useI18n(); + const { + hasPrevious, + hasNext, + currentIndex, + total, + loading, + goToPrevious, + goToNext, + } = indexControllerStore ?? {}; + return ( + + +
+
+
+ + {currentIndex + 1} / {total} + + +
+
+
+
+ ); +} diff --git a/frontend/packages/cozeloop/components/src/index-controller/use-item-index-controller.ts b/frontend/packages/cozeloop/components/src/index-controller/use-item-index-controller.ts new file mode 100644 index 000000000..4f5986f6a --- /dev/null +++ b/frontend/packages/cozeloop/components/src/index-controller/use-item-index-controller.ts @@ -0,0 +1,199 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 +/* eslint-disable @coze-arch/no-destructuring-use-request */ +import { useState, useCallback, useEffect, useRef } from 'react'; + +import { useLatest, useRequest } from 'ahooks'; + +type FetchRecordItemsFn = (params: { + pageSize: number; + pageIndex: number; +}) => Promise<{ list: RecordItem[]; total: number }>; + +/** + * 索引控制器参数 + */ +export interface IndexControllerOptions> { + /** 默认选中的记录索引 */ + defaultIndex: number; + /** 刷新记录列表 */ + fetchRecordItems: FetchRecordItemsFn; + /** 批量获取记录数据的个数 */ + batchSize?: number; + /** 获取记录详情 */ + fetchRecordItem: (record: RecordItem) => Promise; + /** 切换记录的回调 */ + onRecordChange?: (record: RecordItem) => void; +} + +/** + * 索引控制器状态&API + */ +export interface IndexControllerStore { + /** 是否有上一条 */ + hasPrevious: boolean; + /** 是否有下一条 */ + hasNext: boolean; + /** 当前记录在列表中的位置信息 */ + currentIndex: number; + /** 总记录数 */ + total: number; + /** 切换到上一条 */ + goToPrevious: () => void; + /** 切换到下一条 */ + goToNext: () => void; + /** 加载状态 */ + loading: boolean; +} + +async function batchFetchRecordItems({ + currentIndex = 0, + batchSize, + total, + fetchRecordItems, +}: { + currentIndex: number; + total?: number; + batchSize: number; + fetchRecordItems: FetchRecordItemsFn; +}) { + const pageIndex = Math.floor(currentIndex / batchSize) + 1; + // index所在区间的前一个区间 + const prevPromise = + pageIndex > 1 + ? fetchRecordItems({ + pageSize: batchSize, + pageIndex: pageIndex - 1, + }) + : Promise.resolve({ list: [], total: 0 }); + + const nextPromise = + typeof total !== 'number' || currentIndex + batchSize < total + ? fetchRecordItems({ + pageSize: batchSize, + pageIndex: pageIndex + 1, + }) + : Promise.resolve({ list: [], total: 0 }); + const res = await Promise.all([ + // index所在区间的前一个区间 + prevPromise, + // index所在区间 + fetchRecordItems({ + pageSize: batchSize, + pageIndex, + }), + // index所在区间的后一个区间 + nextPromise, + ]); + const allList = res.flatMap(item => item.list || []); + // 计算当前index所在区间的前一个区间的起始index + const prevStartIndex = Math.max( + 0, + currentIndex - (currentIndex % batchSize) - batchSize, + ); + const allItems: (RecordItem | undefined)[] = []; + const list = allList || []; + for (let i = 0; i < list.length; i++) { + allItems[prevStartIndex + i] = list[i]; + } + return { list: allItems, total: res?.[1]?.total || 0 }; +} + +/** + * 索引控制器 + * 用于在详情抽屉中实现上一条、下一条功能 + */ +export function useItemIndexController>({ + defaultIndex, + onRecordChange, + fetchRecordItem, + fetchRecordItems, + batchSize = 50, +}: IndexControllerOptions): IndexControllerStore { + const [allRecords, setAllRecords] = useState<(RecordItem | undefined)[]>([]); + const [currentIndex, setCurrentIndex] = useState(defaultIndex); + const [total, setTotalCount] = useState(0); + const totalRef = useLatest(total); + // 上一次触发请求的index + const lastCurrentIndexRef = useRef(-1); + + // 列表请求,根据 currentIndex 所在位置的前后各自获取batchSize个数量 + const { loading: listLoading, run: updateList } = useRequest(async () => { + const res = await batchFetchRecordItems({ + currentIndex, + total: total || undefined, + batchSize, + fetchRecordItems, + }); + setTotalCount(res.total); + setAllRecords(res.list); + lastCurrentIndexRef.current = currentIndex; + }); + + // 详情请求 + const { runAsync: fetchRecordItemAsync, loading: itemLoading } = useRequest( + async (record: RecordItem) => { + const res = await fetchRecordItem(record); + return res; + }, + { manual: true }, + ); + + // 切换到上一条记录 + const goToPrevious = useCallback(async () => { + try { + const record = allRecords[currentIndex - 1]; + if (currentIndex > 0 && record) { + const previousRecord = await fetchRecordItemAsync(record); + if (previousRecord) { + onRecordChange?.(previousRecord); + setCurrentIndex(currentIndex - 1); + } + } + } catch (e) { + console.warn(e); + } + }, [currentIndex, fetchRecordItemAsync, allRecords, onRecordChange]); + + // 切换到下一条记录 + const goToNext = useCallback(async () => { + try { + const record = allRecords[currentIndex + 1]; + if (currentIndex < totalRef.current - 1 && record) { + const nextRecord = await fetchRecordItemAsync(record); + if (nextRecord) { + onRecordChange?.(nextRecord); + setCurrentIndex(currentIndex + 1); + } + } + } catch (e) { + console.warn(e); + } + }, [ + currentIndex, + totalRef, + fetchRecordItemAsync, + allRecords, + onRecordChange, + ]); + + useEffect(() => { + // fetchRecordItems 会根据 currentIndex 是否超过上次触发请求的list范围来判断是否需要触发请求 + if ( + lastCurrentIndexRef.current !== -1 && + Math.abs(currentIndex - lastCurrentIndexRef.current) >= batchSize + ) { + updateList(); + } + }, [currentIndex]); + + return { + hasPrevious: currentIndex > 0, + hasNext: currentIndex < total - 1, + currentIndex, + total, + goToPrevious, + goToNext, + loading: listLoading || itemLoading, + }; +} diff --git a/frontend/packages/cozeloop/components/src/index.ts b/frontend/packages/cozeloop/components/src/index.ts index c448415ba..e26bc5359 100644 --- a/frontend/packages/cozeloop/components/src/index.ts +++ b/frontend/packages/cozeloop/components/src/index.ts @@ -1,7 +1,10 @@ // Copyright (c) 2025 coze-dev Authors // SPDX-License-Identifier: Apache-2.0 export { ColumnSelector, type ColumnItem } from './columns-select'; -export { TooltipWhenDisabled } from './tooltip-when-disabled'; +export { + TooltipWhenDisabled, + type TooltipWhenDisabledProps, +} from './tooltip-when-disabled'; export { TooltipWithDisabled } from './tooltip-with-disabled'; export { LoopTable } from './table'; @@ -10,6 +13,7 @@ export { DEFAULT_PAGE_SIZE, PAGE_SIZE_OPTIONS, getStoragePageSize, + type TableWithPaginationProps, } from './table/table-with-pagination'; export { PageError, @@ -27,7 +31,7 @@ export { LargeTxtRender } from './large-txt-render'; export { InputSlider, formateDecimalPlacesString } from './input-slider'; -export { handleCopy, getBaseUrl } from './utils/basic'; +export { handleCopy, sleep } from './utils/basic'; export { uploadFile } from './upload'; export { default as VersionList } from './version-list/version-list'; export { default as VersionItem } from './version-list/version-item'; @@ -36,7 +40,8 @@ export { default as VersionSwitchPanel } from './version-list/version-switch-pan export { TextWithCopy } from './text-with-copy'; export { InfoTooltip } from './info-tooltip'; export { IDRender } from './id-render'; -export { default as IconButtonContainer } from './id-render/icon-button-container'; +export { IconButtonContainer } from './id-render/icon-button-container'; +export { JumpIconButton } from './jump-button/jump-icon-button'; export { UserProfile } from './user-profile'; export { getColumnManageStorage, @@ -45,24 +50,43 @@ export { } from './column-manage-storage'; export { PrimaryPage } from './primary-page'; +export { PrimaryTitle } from './primary-title'; export { ResizeSidesheet } from './resize-sidesheet'; +export { useUnsaveLeaveWarning } from './hooks/use-unsave-leave-warning'; + export { InfiniteScrollTable, type InfiniteScrollTableRef, } from './infinite-scroll-table'; export { TableHeader, type TableHeaderProps } from './table-header'; +export { + TableColsConfig, + type TableColsConfigProps, + type ColumnPropsPro, + type ColKey, +} from './table-cols-config'; // import { TableHeaderProps } from './table-header'; // export const a = {} as unknown as TableHeaderProps; export { TableWithoutPagination } from './table/table-without-pagniation'; +export { TableBatchOperate } from './table-batch-operate/table-batch-operation'; +export { + useBatchOperate, + type BatchOperateStore, +} from './table-batch-operate/use-batch-operate'; + +export { useItemIndexController } from './index-controller/use-item-index-controller'; +export { IndexControllerView } from './index-controller/record-navigation'; + export { BaseSearchSelect, BaseSearchFormSelect, type BaseSelectProps, + type LoadOptionByIds, } from './base-search-select'; export { OpenDetailButton } from './open-detail-button'; @@ -85,6 +109,20 @@ export { LogicExpr, } from './logic-expr'; +// #region 输入控件 +export { + RadioButton, + type RadioButtonProps, +} from './input-components/radio-button'; + +export { + LogicEditor, + type LogicDataType, + type LogicField, + type LogicFilter, + type LogicSetter, +} from './logic-editor'; + export { CodeEditor, DiffEditor, @@ -92,10 +130,81 @@ export { type MonacoDiffEditor, type editor, } from './code-editor'; - -export { default as JumpIconButton } from './jump-button/jump-icon-button'; - -export { default as RouteBackAction } from './route/route-back-action'; +// #endregion 输入控件 export { BasicCard } from './basic-card'; export { MultipartEditor } from './multi-part-editor'; + +export { ChipSelect } from './chip-select'; +export { ImageItemRenderer } from './multi-part-editor/components/image-item-renderer'; +export { VideoItemRenderer } from './multi-part-editor/components/video-item-renderer'; +export { + ImageStatus as MultipartRenderStatus, + type FileItemStatus, + type ContentPartLoop, +} from './multi-part-editor/type'; +export { + DEFAULT_FILE_SIZE, + DEFAULT_FILE_COUNT, + DEFAULT_PART_COUNT, + DEFAULT_SUPPORTED_FORMATS, + DEFAULT_VIDEO_SUPPORTED_FORMATS, +} from './multi-part-editor/utils'; + +export { + UploadButton, + type UploadButtonRef, +} from './multi-part-editor/upload-button'; +export { MultiPartRender } from './multi-part-editor/multi-part-render'; +export { StepNav } from './step-nav'; + +export { LazyLoadComponent } from './lazy-load-component'; +export { TextAreaPro, type Props as TextAreaProProps } from './text-area-pro'; +export { InputWithCount } from './input-with-count'; +export { LoopRadioGroup } from './loop-radio-group'; + +// Migrated components from fornax +export { UsageItem, SupportedLang } from './code-usage'; +export { Layout } from './layout'; +export { + SearchForm, + type SearchFormRef, + type SearchFormFilterRecord, +} from './search-form'; +export { TitleWithSub } from './title-with-sub'; + +// Provider +export { + CozeLoopProvider, + useI18n, + useCozeLoopContext, + useReportEvent, + type I18nFunction, +} from './provider'; + +export { FooterActions } from './footer-actions'; +export { TableEmpty } from './table-empty'; +export { CardPane } from './card-pane'; + +export { + SemiSchemaForm, + type SemiSchemaFormInstance, + schemaValidators, +} from './semi-schema-form'; + +export { ResizableSideSheet } from './resizable-side-sheet'; + +export { + SentinelForm, + type SentinelFormRef, + type SentinelFormApi, +} from './sentinel-form'; + +export { + CodeMirrorCodeEditor, + CodeMirrorTextEditor, + CodeMirrorJsonEditor, + CodeMirrorRawTextEditor, +} from './codemirror-editor'; + +export { SchemaEditor } from './schema-editor'; diff --git a/frontend/packages/cozeloop/components/src/infinite-scroll-table/index.tsx b/frontend/packages/cozeloop/components/src/infinite-scroll-table/index.tsx index c7153198d..63ca565e2 100644 --- a/frontend/packages/cozeloop/components/src/infinite-scroll-table/index.tsx +++ b/frontend/packages/cozeloop/components/src/infinite-scroll-table/index.tsx @@ -17,7 +17,9 @@ import { useSize, useInfiniteScroll } from 'ahooks'; import { IconCozIllusEmpty } from '@coze-arch/coze-design/illustrations'; import { EmptyState, type TableProps } from '@coze-arch/coze-design'; -import { LoopTable } from '@/table'; +import { useI18n } from '@/provider'; + +import { LoopTable } from '../table'; interface ExpandData extends Data { hasMore?: boolean; @@ -43,6 +45,7 @@ export const InfiniteScrollTable: ( { service, options, className, ...restTableProps }: Props, ref: ForwardedRef, ): JSX.Element => { + const I18n = useI18n(); const containerRef = useRef(null); const hookRes = useInfiniteScroll(d => service?.(d), { @@ -82,7 +85,7 @@ export const InfiniteScrollTable: ( } - title="暂无数据" + title={I18n.t('no_data')} /> ) } diff --git a/frontend/packages/cozeloop/components/src/info-tooltip/index.tsx b/frontend/packages/cozeloop/components/src/info-tooltip/index.tsx index b8939ad07..f78c0c5b5 100644 --- a/frontend/packages/cozeloop/components/src/info-tooltip/index.tsx +++ b/frontend/packages/cozeloop/components/src/info-tooltip/index.tsx @@ -1,18 +1,43 @@ // Copyright (c) 2025 coze-dev Authors // SPDX-License-Identifier: Apache-2.0 import classNames from 'classnames'; -import { IconCozInfoCircle } from '@coze-arch/coze-design/icons'; +import { + IconCozInfoCircle, + IconCozQuestionMarkCircle, +} from '@coze-arch/coze-design/icons'; import { Tooltip } from '@coze-arch/coze-design'; interface Props { - content: string; + content: string | React.ReactNode; className?: string; + tooltipClassName?: string; + icon?: React.ReactNode; + useQuestion?: boolean; } -export const InfoTooltip = ({ content, className }: Props) => ( - -
- -
-
-); +export const InfoTooltip = ({ + content, + className, + tooltipClassName, + icon, + useQuestion = false, +}: Props) => { + const defaultIcon = useQuestion ? ( + + ) : ( + + ); + return ( + {content}
+ } + theme="dark" + className={tooltipClassName} + > +
+ {icon ?? defaultIcon} +
+
+ ); +}; diff --git a/frontend/packages/cozeloop/components/src/input-components/radio-button.tsx b/frontend/packages/cozeloop/components/src/input-components/radio-button.tsx new file mode 100644 index 000000000..f4e247d0a --- /dev/null +++ b/frontend/packages/cozeloop/components/src/input-components/radio-button.tsx @@ -0,0 +1,65 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 +import cls from 'classnames'; +import { Tooltip } from '@coze-arch/coze-design'; + +export interface RadioButtonProps { + value?: T; + onChange?: (value: T) => void; + disabled?: boolean; + options: Array<{ + value: T; + label: React.ReactNode; + disabled?: boolean; + tooltip?: string; + }>; + className?: string; +} + +/** coze design 的 SegmentTab 和 Radio 的 advanced + pureCard 模式均有样式问题,不得不自行造轮子 */ +export function RadioButton({ + value, + onChange, + options, + disabled, + className, +}: RadioButtonProps) { + return ( +
+ {options.map(option => { + const selected = value === option.value; + const optionDisabled = option.disabled || disabled; + return ( + +
{ + if (optionDisabled) { + return; + } + onChange?.(option.value); + }} + > + {option.label} +
+
+ ); + })} +
+ ); +} diff --git a/frontend/packages/cozeloop/components/src/input-slider/index.tsx b/frontend/packages/cozeloop/components/src/input-slider/index.tsx index 01195ddb6..8fd2274a3 100644 --- a/frontend/packages/cozeloop/components/src/input-slider/index.tsx +++ b/frontend/packages/cozeloop/components/src/input-slider/index.tsx @@ -149,7 +149,9 @@ export const InputSlider: React.FC = ({ className={styles['input-number']} value={value} disabled={disabled} - formatter={inputValue => formateDecimalPlacesString(inputValue, value)} + formatter={inputValue => + formateDecimalPlacesString(inputValue, value, decimalPlaces) + } onNumberChange={onNumberChange} max={max} min={min} diff --git a/frontend/packages/cozeloop/components/src/input-with-count/index.tsx b/frontend/packages/cozeloop/components/src/input-with-count/index.tsx new file mode 100644 index 000000000..d900a14c6 --- /dev/null +++ b/frontend/packages/cozeloop/components/src/input-with-count/index.tsx @@ -0,0 +1,33 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 +import React from 'react'; + +import { Input, type InputProps } from '@coze-arch/coze-design'; + +interface LimitCountProps { + maxLen: number; + len: number; +} +const LimitCount = ({ maxLen, len }: LimitCountProps) => ( + + {len} + / + {maxLen} + +); + +export function InputWithCount(props: InputProps) { + return ( + + ) + } + /> + ); +} diff --git a/frontend/packages/cozeloop/components/src/jump-button/jump-icon-button.tsx b/frontend/packages/cozeloop/components/src/jump-button/jump-icon-button.tsx index 3a1bb0fff..005bc7a55 100644 --- a/frontend/packages/cozeloop/components/src/jump-button/jump-icon-button.tsx +++ b/frontend/packages/cozeloop/components/src/jump-button/jump-icon-button.tsx @@ -2,9 +2,9 @@ // SPDX-License-Identifier: Apache-2.0 import { IconCozLongArrowTopRight } from '@coze-arch/coze-design/icons'; -import IconButtonContainer from '../id-render/icon-button-container'; +import { IconButtonContainer } from '../id-render/icon-button-container'; -export default function JumpIconButton( +export function JumpIconButton( props: { className?: string; style?: React.CSSProperties; diff --git a/frontend/packages/cozeloop/components/src/layout/content.tsx b/frontend/packages/cozeloop/components/src/layout/content.tsx new file mode 100644 index 000000000..bfb221aa1 --- /dev/null +++ b/frontend/packages/cozeloop/components/src/layout/content.tsx @@ -0,0 +1,30 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 +import React, { forwardRef, type CSSProperties, type ReactNode } from 'react'; + +import classNames from 'classnames'; + +export const Content = forwardRef< + HTMLDivElement, + { + children?: ReactNode; + style?: CSSProperties; + className?: string; + top?: ReactNode; + } +>(({ children, style, className, top }, ref) => ( +
+ {top} +
+ {children} +
+ {/*
*/} +
+)); diff --git a/frontend/packages/cozeloop/components/src/layout/header.tsx b/frontend/packages/cozeloop/components/src/layout/header.tsx new file mode 100644 index 000000000..0af9ba720 --- /dev/null +++ b/frontend/packages/cozeloop/components/src/layout/header.tsx @@ -0,0 +1,17 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 +import React, { type ReactNode } from 'react'; + +import classNames from 'classnames'; + +interface Props { + children?: ReactNode; + className?: string; +} +export function Header({ children, className }: Props) { + return ( +
+ {children} +
+ ); +} diff --git a/frontend/packages/cozeloop/components/src/layout/index.module.less b/frontend/packages/cozeloop/components/src/layout/index.module.less new file mode 100644 index 000000000..6a82a1a1b --- /dev/null +++ b/frontend/packages/cozeloop/components/src/layout/index.module.less @@ -0,0 +1,30 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 +.tabs { + position: relative; + top: -14px; + + height: 100%; + display: flex; + flex-direction: column; + + :global { + .semi-tabs-bar{ + flex-shrink: 0; + } + .semi-tabs-content { + flex-grow: 1; + flex-shrink: 1; + min-height: 0; + padding: 16px 0 0 0; + } + + .semi-tabs-pane { + height: 100%; + } + + .semi-tabs-pane-motion-overlay { + height: 100%; + } + } +} \ No newline at end of file diff --git a/frontend/packages/cozeloop/components/src/layout/index.tsx b/frontend/packages/cozeloop/components/src/layout/index.tsx new file mode 100644 index 000000000..1a03d186f --- /dev/null +++ b/frontend/packages/cozeloop/components/src/layout/index.tsx @@ -0,0 +1,11 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 +import { Tabs } from './tabs'; +import { Header } from './header'; +import { Content } from './content'; + +export const Layout = { + Header, + Content, + Tabs, +}; diff --git a/frontend/packages/cozeloop/components/src/layout/tabs.tsx b/frontend/packages/cozeloop/components/src/layout/tabs.tsx new file mode 100644 index 000000000..8cb489abe --- /dev/null +++ b/frontend/packages/cozeloop/components/src/layout/tabs.tsx @@ -0,0 +1,13 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 +import classNames from 'classnames'; +import { type TabsProps, Tabs as SemiTabs } from '@coze-arch/coze-design'; + +import styles from './index.module.less'; + +export function Tabs({ className, ...props }: TabsProps) { + return ; +} + +Tabs.TabPane = SemiTabs.TabPane; +Tabs.TabItem = SemiTabs.TabItem; diff --git a/frontend/packages/cozeloop/components/src/lazy-load-component/index.tsx b/frontend/packages/cozeloop/components/src/lazy-load-component/index.tsx new file mode 100644 index 000000000..471f6df6a --- /dev/null +++ b/frontend/packages/cozeloop/components/src/lazy-load-component/index.tsx @@ -0,0 +1,57 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 +import React, { useState, useEffect, useRef } from 'react'; + +import { Skeleton } from '@coze-arch/coze-design'; + +export const LazyLoadComponent = ({ + children, + placeholder, +}: { + children: React.ReactNode; + placeholder?: React.ReactNode; +}) => { + const [isVisible, setIsVisible] = useState(false); + const domRef = useRef(null); + + useEffect(() => { + if ('IntersectionObserver' in window) { + if (!domRef.current) { + return; + } + // 使用 Intersection Observer + const observer = new IntersectionObserver(entries => { + entries.forEach(entry => { + if (entry.isIntersecting) { + setIsVisible(true); + observer.unobserve(domRef.current as Element); + } + }); + }); + + observer.observe(domRef.current); + return () => observer.disconnect(); + } else { + // 回退到 scroll 事件监听 + const handleScroll = () => { + if (domRef.current) { + const rect = domRef.current.getBoundingClientRect(); + if (rect.top <= window.innerHeight && rect.bottom >= 0) { + setIsVisible(true); + window.removeEventListener('scroll', handleScroll); + } + } + }; + + handleScroll(); // 初始化检查 + document.addEventListener('scroll', handleScroll); + return () => document.removeEventListener('scroll', handleScroll); + } + }, []); + + return ( +
+ {isVisible ? children : } +
+ ); +}; diff --git a/frontend/packages/cozeloop/components/src/logic-editor/index.ts b/frontend/packages/cozeloop/components/src/logic-editor/index.ts new file mode 100644 index 000000000..e79a29bf1 --- /dev/null +++ b/frontend/packages/cozeloop/components/src/logic-editor/index.ts @@ -0,0 +1,5 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 +export { LogicEditor } from './logic-editor'; +export type { LogicDataType, LogicField, LogicFilter } from './logic-types'; +export { baseOperations, type LogicSetter } from './logic-types'; diff --git a/frontend/packages/cozeloop/components/src/logic-editor/logic-editor.module.less b/frontend/packages/cozeloop/components/src/logic-editor/logic-editor.module.less new file mode 100644 index 000000000..db0d0595e --- /dev/null +++ b/frontend/packages/cozeloop/components/src/logic-editor/logic-editor.module.less @@ -0,0 +1,15 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 +/* stylelint-disable selector-class-pattern */ +/* stylelint-disable declaration-no-important */ +.expr-logic-editor { + :global { + .expr-render-del-btn { + background-color: #0000 !important; + } + + .expr-render-del-btn:hover { + background-color: rgba(var(--coze-bg-5), var(--coze-bg-5-alpha)) !important; + } + } +} diff --git a/frontend/packages/cozeloop/components/src/logic-editor/logic-editor.tsx b/frontend/packages/cozeloop/components/src/logic-editor/logic-editor.tsx new file mode 100644 index 000000000..7da69159d --- /dev/null +++ b/frontend/packages/cozeloop/components/src/logic-editor/logic-editor.tsx @@ -0,0 +1,205 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 +import { useEffect, useState } from 'react'; + +import classNames from 'classnames'; +import { IconCozFilter, IconCozInfoCircle } from '@coze-arch/coze-design/icons'; +import { + Button, + Divider, + Popover, + Tooltip, + type PopoverProps, +} from '@coze-arch/coze-design'; + +import { useI18n } from '@/provider'; + +import { LogicExpr } from '../logic-expr'; +import { type LogicFilter, type LogicField } from './logic-types'; +import RightRender from './logic-right-render'; +import OperatorRender from './logic-operator-render'; +import LeftRender from './logic-left-render'; + +import styles from './logic-editor.module.less'; + +const getValidFilterFields = (value?: LogicFilter) => { + if (!value?.exprs) { + return { + exprs: [], + }; + } + + const isEmpty = (val: string | undefined | null | string[]) => + val === undefined || + val === '' || + val === null || + (Array.isArray(val) && val.length === 0); + + // 左中右 三元都存在才有效 + const validArray = value.exprs.filter( + // 由于暂时不包含为空不为空的case,所以这里的判断条件要求左中右都必须存在 + exp => !isEmpty(exp.left) && !isEmpty(exp.operator) && !isEmpty(exp.right), + ); + + return { + exprs: validArray, + }; +}; + +/** 逻辑筛选器 */ +// eslint-disable-next-line @coze-arch/max-line-per-function, complexity +export function LogicEditor({ + fields = [], + disabled = false, + value, + popoverProps = {}, + tooltip, + clearEmptyCondition = true, + enableCascadeMode = false, + onChange, + onConfirm, + onClose, +}: { + fields: LogicField[]; + disabled?: boolean; + value?: LogicFilter | undefined; + popoverProps?: PopoverProps; + tooltip?: React.ReactNode; + /** 是否过滤空条件 */ clearEmptyCondition?: boolean; + /** 字段选择开启级联模式 */ enableCascadeMode?: boolean; + onChange?: (val?: LogicFilter) => void; + onConfirm?: (val?: LogicFilter) => void; + onClose?: () => void; +}) { + const I18n = useI18n(); + const [logicFilter, setLogicFilter] = useState( + value, + ); + const [visible, setVisible] = useState(false); + + useEffect(() => { + setLogicFilter(value); + }, [value]); + + const logicExpr = ( + { + setLogicFilter(val); + onChange?.(val); + }} + leftRender={renderProps => ( + + )} + operatorRender={renderProps => ( + + )} + rightRender={renderProps => ( + + )} + allowLogicOperators={['and']} + logicToggleReadonly={true} + maxNestingDepth={1} + /> + ); + + const hasMultiExpr = + Array.isArray(logicFilter?.exprs) && logicFilter.exprs.length > 1; + const popoverContentConatienr = ( +
+
+
{I18n.t('filter')}
+ {tooltip ? ( + + + + ) : null} +
{ + setLogicFilter(undefined); + onChange?.(undefined); + }} + > + {I18n.t('clear_filter')} +
+
+
+
{logicExpr}
+
+ +
+ +
+
+ ); + + const count = value?.exprs?.length ?? 0; + return ( + { + setVisible(newVisible); + if (!newVisible) { + // 关闭时放弃本次变更,恢复为上层设置的 value + setLogicFilter(value); + onClose?.(); + } + }} + > + + + ); +} diff --git a/frontend/packages/cozeloop/components/src/logic-editor/logic-left-render.tsx b/frontend/packages/cozeloop/components/src/logic-editor/logic-left-render.tsx new file mode 100644 index 000000000..74ac3d2a2 --- /dev/null +++ b/frontend/packages/cozeloop/components/src/logic-editor/logic-left-render.tsx @@ -0,0 +1,108 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 +import { Cascader, Select } from '@coze-arch/coze-design'; + +import { useI18n } from '@/provider'; + +import { type LeftRenderProps } from '../logic-expr'; +import { findFieldByPath } from './utils'; +import { + useDataTypeList, + type LogicOperation, + type RenderProps, + type LogicField, + type LogicFilterLeft, +} from './logic-types'; + +function fieldsToOptions(fields: LogicField[]) { + return fields.map(field => ({ + label: field.title, + value: field.name, + children: field.children?.length + ? fieldsToOptions(field.children) + : undefined, + })); +} + +export default function LeftRender( + props: LeftRenderProps & + RenderProps, +) { + const I18n = useI18n(); + const { expr, onExprChange, fields, disabled, enableCascadeMode } = props; + + const dataTypeList = useDataTypeList(); + + if (enableCascadeMode) { + return ( +
+ { + if (!Array.isArray(cascadeVal)) { + return; + } + const fieldPaths = cascadeVal as string[]; + const field = findFieldByPath(fields, fieldPaths); + const { disabledOperations = [], customOperations } = field ?? {}; + const dataType = dataTypeList.find( + item => item.type === field?.type, + ); + let operations = dataType?.operations ?? []; + if (Array.isArray(customOperations)) { + operations = customOperations; + } else if (disabledOperations.length > 0) { + operations = operations.filter( + item => !disabledOperations.includes(item.value), + ); + } + onExprChange?.({ + left: [...fieldPaths], + operator: operations?.find(e => e.value === expr.operator) + ? expr.operator + : operations?.[0]?.value, + right: undefined, + }); + }} + /> +
+ ); + } + return ( +
+ { + onExprChange?.({ + ...expr, + operator: val as string | undefined, + }); + }} + /> +
+ ); +} diff --git a/frontend/packages/cozeloop/components/src/logic-editor/logic-right-render.tsx b/frontend/packages/cozeloop/components/src/logic-editor/logic-right-render.tsx new file mode 100644 index 000000000..9050f5737 --- /dev/null +++ b/frontend/packages/cozeloop/components/src/logic-editor/logic-right-render.tsx @@ -0,0 +1,54 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 +import { type Expr, type RightRenderProps } from '../logic-expr'; +import { findFieldByPath } from './utils'; +import { + useDataTypeList, + type LogicFilterLeft, + type RenderProps, +} from './logic-types'; + +export default function RightRender( + props: RightRenderProps< + LogicFilterLeft, + string, + string | number | undefined + > & + RenderProps, +) { + const { expr, onExprChange, fields, disabled = false } = props; + const field = findFieldByPath(fields, expr.left); + if (!field) { + return null; + } + if (expr.operator === 'is-empty' || expr.operator === 'is-not-empty') { + return null; + } + + const dataTypeList = useDataTypeList(); + const Setter = + field?.setter || + dataTypeList.find(dataType => dataType.type === field.type)?.setter; + + if (!Setter) { + return null; + } + + return ( +
+ } + field={field} + disabled={disabled} + value={expr.right as string} + onChange={val => { + onExprChange?.({ + ...expr, + right: val as string | undefined, + }); + }} + /> +
+ ); +} diff --git a/frontend/packages/cozeloop/components/src/logic-editor/logic-types.tsx b/frontend/packages/cozeloop/components/src/logic-editor/logic-types.tsx new file mode 100644 index 000000000..fd566aa35 --- /dev/null +++ b/frontend/packages/cozeloop/components/src/logic-editor/logic-types.tsx @@ -0,0 +1,278 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 +import { useState } from 'react'; + +import { + CozInputNumber, + DatePicker, + Input, + Select, + TextArea, +} from '@coze-arch/coze-design'; + +import { useI18n, type I18nType } from '@/provider'; + +import { type Expr, type ExprGroup } from '../logic-expr'; + +export interface LogicOperation { + label: string; + value: string; +} + +export type LogicFilterLeft = string | string[]; + +// eslint-disable-next-line @typescript-eslint/no-explicit-any +export type LogicFilter = ExprGroup; + +export interface RenderProps { + disabled?: boolean; + fields: LogicField[]; + /** 开启级联模式,佐治会变成数组 */ + enableCascadeMode?: boolean; +} + +/** 逻辑编辑器的字段 */ +export interface LogicField { + /** 字段标题 */ + title: React.ReactNode; + /** 字段名称 */ + name: string; + /** 字段类型 */ + type: 'string' | 'number' | 'options' | 'custom'; + /* 自定义操作符右边的输入编辑器的属性,例如给下拉框传递optionList */ + setterProps?: Record; + /** 自定义操作符右边的输入编辑器 */ + setter?: LogicSetter; + /** 禁用操作符列表 */ + disabledOperations?: string[]; + /** operator 自定义属性 */ + operatorProps?: Record; + /** 自定义操作符列表,会覆盖原有列表 */ + customOperations?: LogicOperation[]; + /** 子字段 */ + children?: LogicField[]; +} + +// eslint-disable-next-line @typescript-eslint/no-explicit-any +export interface DataTypeSetterProps { + [key: string]: unknown; + value: T; + expr: Expr | undefined; + field: LogicField; + disabled: boolean; + onChange: (val: T) => void; +} + +export type LogicSetter = (props: DataTypeSetterProps) => JSX.Element | null; + +export interface LogicDataType { + type: 'string' | 'number' | 'date' | 'options'; + operations: LogicOperation[]; + setter: LogicSetter; +} + +export const baseOperations = (i18n: I18nType): LogicOperation[] => [ + { + label: i18n.t('contain'), + value: 'contains', + }, + { + label: i18n.t('not_contain'), + value: 'not-contains', + }, + { + label: i18n.t('equal_to'), + value: 'equals', + }, + { + label: i18n.t('not_equal_to'), + value: 'not-equals', + }, +]; + +export const stringOperations = (i18n: I18nType): LogicOperation[] => [ + // 注意:字符串类型的包含不包含和选项类的包含不包含枚举值不同,需要like模式 + { + label: i18n.t('contain'), + value: 'like', + }, + { + label: i18n.t('not_contain'), + value: 'not-like', + }, + { + label: i18n.t('equal_to'), + value: 'equals', + }, + { + label: i18n.t('not_equal_to'), + value: 'not-equals', + }, +]; + +export const numberOperations = (i18n: I18nType): LogicOperation[] => [ + { + label: i18n.t('equal_to'), + value: 'equals', + }, + { + label: i18n.t('not_equal_to'), + value: 'not-equals', + }, + { + label: i18n.t('greater_than'), + value: 'greater-than', + }, + { + label: i18n.t('task_filter_gte'), + value: 'greater-than-equals', + }, + { + label: i18n.t('less_than'), + value: 'less-than', + }, + { + label: i18n.t('task_filter_lte'), + value: 'less-than-equals', + }, +]; + +export const dateOperations = (i18n: I18nType): LogicOperation[] => [ + { + label: i18n.t('equal_to'), + value: 'equals', + }, + { + label: i18n.t('not_equal_to'), + value: 'not-equals', + }, + { + label: i18n.t('later_than'), + value: 'greater-than', + }, + { + label: i18n.t('earlier_than'), + value: 'less-than', + }, +]; + +export const selectOperations = (i18n: I18nType): LogicOperation[] => [ + { + label: i18n.t('contain'), + value: 'contains', + }, + { + label: i18n.t('not_contain'), + value: 'not-contains', + }, +]; + +function StringSetter({ + /** 默认为多行文本模式 */ + textAreaMode = true, + ...props +}: DataTypeSetterProps & { textAreaMode?: boolean }) { + const I18n = useI18n(); + if (textAreaMode === false) { + return ; + } + return