Skip to content

fix(console): emit maplibre's sibling worker beside its chunk (#3297) - #3304

Merged
xuyushun441-sys merged 2 commits into
mainfrom
claude/issue-3297-maplibre-worker-asset
Aug 3, 2026
Merged

fix(console): emit maplibre's sibling worker beside its chunk (#3297)#3304
xuyushun441-sys merged 2 commits into
mainfrom
claude/issue-3297-maplibre-worker-asset

Conversation

@xuyushun441-sys

Copy link
Copy Markdown
Contributor

Closes #3297

问题

maplibre-gl 把 worker 当作自身脚本 URL 的兄弟文件来解析,而不是 import 它,所以打包器看不到这条边(issue 中已给出构建产物摘录):

// maplibre-gl/dist/maplibre-gl.mjs
let e = import.meta.url;
let t = e.endsWith(`-dev.mjs`) ? `maplibre-gl-worker-dev.mjs` : `maplibre-gl-worker.mjs`;
return new URL(`./${t}`, e).href;

vite 把 maplibre 打成 assets/maplibre-gl-[hash].js 后旁边什么都不产出,于是运行时算出的
/_console/assets/maplibre-gl-worker.mjs所有部署里都是 404。

改动

新增 scripts/vite-maplibre-worker.ts(放在 scripts/ 里,与既有的 vite-crypto-stub.ts 同一处),
apps/console/vite.config.ts 里接入。

1. issue 只说了一半 —— worker 自己还有一个兄弟依赖。 maplibre 的 worker 是 module worker
第一行就 import "./maplibre-gl-shared.mjs"(479 KB)。只拷 worker 只会把 404 往里挪一跳,
所以本 PR 拷的是 worker 的兄弟闭包:读 worker 源码,跟着它的相对 import 递归收集,
一并 emit 进 assetsDir。maplibre 以后拆出更多兄弟文件也会自动跟上。

2. 落点。 文件名不可哈希、不可换目录 —— 运行时算的是字面量兄弟路径。
源文件目录取自 rollup 本次真的打进去的那个模块 idtransform 钩子),
所以拷出来的 worker 与主线程代码天然同版本,不存在二次解析选到另一份 hoist 副本的可能。

3. 构建断言(参照 scripts/build-console.shCONSOLE_BUNDLE_CANARY 姿势)。
三道,全部让构建而不是运行时 404:

断言 触发条件
dist 文件缺失 maplibre 升级改名/改布局,要拷的文件不在了
引用漂移审计 产物 chunk 里请求的 worker 名不在本次 emit 的集合中
写盘后 canary emit 被后续插件/配置吃掉,文件没真正落到 dist/assets

dev 模式(本单要求核对的第三点)

结论:dev 原本也是坏的,同一机制、隔壁目录,已一并修。

optimizeDeps 会把 maplibre 预打包到 node_modules/.vite/deps/maplibre-gl-[hash].js
import.meta.url 未被改写,于是兄弟 URL 变成 /node_modules/.vite/deps/maplibre-gl-worker.mjs
—— 同样不存在。实测(修复前,console dev server):

GET /node_modules/.vite/deps/maplibre-gl-ByR7Wvy-.js   200
GET /node_modules/.vite/deps/maplibre-gl-worker.mjs    404
GET /node_modules/.vite/deps/maplibre-gl-shared.mjs    404

因此插件同时挂了一个 dev 中间件,把这些请求用 maplibre 真实 dist 里的文件应答。
它只会应答确实存在于 maplibre dist 里的文件名,其余一律 next()。修复后:

GET /node_modules/.vite/deps/maplibre-gl-worker.mjs    200  text/javascript; charset=utf-8  19108
GET /node_modules/.vite/deps/maplibre-gl-shared.mjs    200  text/javascript; charset=utf-8  479327
GET /node_modules/.vite/deps/maplibre-gl-nope.mjs      404   ← 不会凭空造文件

验证

构建产物pnpm --filter @object-ui/console build,绿):

assets/maplibre-gl-DXuUDjK2.js     ← issue 里那个 chunk,hash 一致
assets/maplibre-gl-shared.mjs
assets/maplibre-gl-worker.mjs

按 maplibre 自己的逻辑复算 URL(从 preview 实际下发的 chunk 里正则取出那个三目表达式再算一遍):

ternary found in served chunk: [ 'maplibre-gl-worker-dev.mjs', 'maplibre-gl-worker.mjs' ]
runtime-computed worker URL:   http://localhost:5399/assets/maplibre-gl-worker.mjs   -> 200, 19108 B
worker -> sibling import:      http://localhost:5399/assets/maplibre-gl-shared.mjs   -> 200, 479055 B

issue 里那条一模一样的 URLvite preview --base /_console/):

GET /_console/assets/maplibre-gl-worker.mjs  ->  HTTP=200  Content-Type=text/javascript  bytes=19108
GET /_console/assets/maplibre-gl-shared.mjs  ->  HTTP=200  Content-Type=text/javascript  bytes=479327

sabotage(三道断言逐条验红,均 EXIT=1)

  1. 把 worker 名改成 maplibre 没有的文件 →
    maplibre dist file 'maplibre-gl-worker-v7.mjs' does not exist (required by maplibre's runtime worker URL).
  2. 改成拷一个存在但产物并不请求的文件 →
    Built chunks request maplibre worker(s) this build does not emit: maplibre-gl-worker.mjs. Emitted: maplibre-gl-shared.mjs.
  3. 直接禁掉拷贝步骤 →
    maplibre worker asset(s) missing from the build output: maplibre-gl-worker.mjs, maplibre-gl-shared.mjs.

测试 / 类型 / lint

vitest --project unit           359 files / 4933 passed        (含新增 20 条)
@object-ui/console test          20 files /  183 passed
@object-ui/console type-check    tsc --noEmit, 0 error
@object-ui/plugin-map type-check tsc --noEmit, 0 error
eslint(三个改动文件)             0 problem

新增的 20 条单测钉住了漂移审计的各个分支,并且会读真实安装的 maplibre:升级后
worker 改名或不再是兄弟约定,pnpm test 直接红,不用等到浏览器里才发现。

⚠️ 验证边界(如实标注)

  • tile 实际渲染未验证。 本环境 egress 受限(demotiles.maplibre.org 打不通),
    容器内也没有可用浏览器(playwright 装了但没下载 browser),所以无法真的把地图画出来。
    验证到的是「产物存在 + 运行时算出的 URL 200 + MIME 正确 + worker 自身依赖也 200」。
  • 因此 issue 里那个严重度问题仍未确认:worker 404 时 maplibre 究竟是主线程回退(只是慢)
    还是彻底不出图。有外网环境时值得复看一眼。不过这不影响本 PR 的正确性 ——
    第一方资产在自家产物里缺失,无论如何都该补。

changeset

未加,依据两条:AGENTS.md「纯 bug 修复不需要 changeset」;以及仓库现行做法 ——
近期 fix(console): 三个 PR 均未附 changeset,而改动发布库包的
fix(components)/fix(fields)/fix(app-shell) 都附了。console 进部署走的是 framework 侧
.objectui-sha pin + scripts/build-console.sh 重新构建,不依赖 npm 版本号。
若维护者希望本次走版本发布,我再补一个(按仓规标 minor,绝不标 major)。


Generated by Claude Code

maplibre-gl resolves its worker as a sibling of its own script URL
(`new URL('./maplibre-gl-worker.mjs', import.meta.url)`) instead of
importing it, so no bundler can see the edge. Vite bundled maplibre into
`assets/maplibre-gl-<hash>.js` and emitted nothing beside it, leaving
`/_console/assets/maplibre-gl-worker.mjs` a 404 in every deployment.

Copy the worker into `assetsDir` at build time — plus the sibling module
the worker itself imports (`maplibre-gl-shared.mjs`), without which the
404 would only move one hop deeper — and serve the same files in dev,
where `optimizeDeps` puts the identical hole under `.vite/deps/`.

The copy is guarded so it cannot drift silently, in the spirit of
`scripts/build-console.sh`'s CONSOLE_BUNDLE_CANARY: the build fails if
maplibre's dist no longer holds the files, if the bundle asks for a
worker name the build does not emit, or if the emitted files are missing
from disk after the write.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NVPjPzmmAJ2Ngtvgg5MSRa
@vercel

vercel Bot commented Aug 3, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
objectui Ignored Ignored Aug 3, 2026 2:36pm

Request Review

@github-actions

github-actions Bot commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

✅ Console Performance Budget

Metric Value Budget
Main entry (gzip) 28.1 KB 350 KB
Entry file index-5Pv_tAnY.js
Status PASS

📦 Bundle Size Report

Package Size Gzipped
app-shell (index.js) 8.47KB 3.09KB
app-shell (runtime-config.js) 7.42KB 2.32KB
app-shell (types.js) 0.01KB 0.04KB
app-shell (urlParams.js) 7.57KB 2.97KB
auth (AuthContext.js) 0.31KB 0.24KB
auth (AuthGuard.js) 1.17KB 0.53KB
auth (AuthProvider.js) 22.10KB 4.37KB
auth (AuthShell.js) 3.49KB 1.40KB
auth (ForgotPasswordForm.js) 12.21KB 3.45KB
auth (LoginForm.js) 18.13KB 5.39KB
auth (PreviewBanner.js) 0.90KB 0.50KB
auth (RegisterForm.js) 6.64KB 2.21KB
auth (SocialSignInButtons.js) 9.60KB 3.89KB
auth (UserMenu.js) 3.40KB 1.22KB
auth (auth-gate-events.js) 1.29KB 0.66KB
auth (authStyles.js) 5.04KB 1.72KB
auth (createAuthClient.js) 35.76KB 9.11KB
auth (createAuthenticatedFetch.js) 4.37KB 1.69KB
auth (index.js) 2.35KB 1.07KB
auth (org-roles.js) 6.66KB 2.78KB
auth (phone-identifier.js) 1.11KB 0.66KB
auth (types.js) 0.59KB 0.35KB
auth (useAuth.js) 4.91KB 0.87KB
auth (useIsWorkspaceAdmin.js) 1.61KB 0.85KB
collaboration (CommentThread.js) 18.38KB 4.49KB
collaboration (LiveCursors.js) 3.17KB 1.27KB
collaboration (PresenceAvatars.js) 3.65KB 1.42KB
collaboration (PresenceProvider.js) 2.79KB 1.13KB
collaboration (index.js) 1.25KB 0.53KB
collaboration (useCommentSearch.js) 1.98KB 0.88KB
collaboration (useConflictResolution.js) 7.75KB 1.86KB
collaboration (useMentionNotifications.js) 1.81KB 0.68KB
collaboration (usePresence.js) 6.33KB 1.84KB
collaboration (useRealtimeSubscription.js) 7.91KB 2.01KB
components (index.js) 476.66KB 104.69KB
core (index.js) 2.25KB 0.80KB
create-plugin (index.js) 9.28KB 2.98KB
data-objectstack (index.js) 136.23KB 34.75KB
fields (index.js) 223.38KB 54.73KB
i18n (LocalizationContext.js) 1.76KB 0.96KB
i18n (currency.js) 1.22KB 0.64KB
i18n (i18n.js) 4.32KB 1.77KB
i18n (index.js) 2.46KB 0.96KB
i18n (pickLocalized.js) 1.70KB 0.83KB
i18n (provider.js) 5.37KB 1.72KB
i18n (useObjectLabel.js) 26.14KB 6.07KB
i18n (useSafeTranslation.js) 3.26KB 1.44KB
layout (index.js) 37.96KB 10.54KB
mobile (MobileProvider.js) 0.92KB 0.49KB
mobile (ResponsiveContainer.js) 0.94KB 0.38KB
mobile (breakpoints.js) 1.51KB 0.70KB
mobile (createOfflineDataSource.js) 5.61KB 1.74KB
mobile (index.js) 1.50KB 0.62KB
mobile (offlineQueue.js) 3.91KB 1.35KB
mobile (pwa.js) 0.97KB 0.49KB
mobile (serviceWorker.js) 1.48KB 0.62KB
mobile (serviceWorkerSource.js) 3.41KB 1.48KB
mobile (useBreakpoint.js) 1.54KB 0.65KB
mobile (useGesture.js) 6.96KB 1.98KB
mobile (useOfflineSync.js) 1.99KB 0.72KB
mobile (usePullToRefresh.js) 2.53KB 0.85KB
mobile (useResponsive.js) 0.71KB 0.42KB
mobile (useResponsiveConfig.js) 1.36KB 0.63KB
mobile (useSpecGesture.js) 4.05KB 1.53KB
mobile (useTouchTarget.js) 1.01KB 0.54KB
permissions (MePermissionsProvider.js) 8.75KB 3.06KB
permissions (PermissionContext.js) 0.31KB 0.25KB
permissions (PermissionGuard.js) 0.89KB 0.45KB
permissions (PermissionProvider.js) 3.67KB 1.12KB
permissions (evaluator.js) 4.41KB 1.44KB
permissions (index.js) 0.91KB 0.41KB
permissions (store.js) 0.91KB 0.42KB
permissions (useFieldPermissions.js) 1.28KB 0.52KB
permissions (usePermissions.js) 1.55KB 0.71KB
plugin-ai (index.js) 15.71KB 3.79KB
plugin-calendar (index.js) 44.98KB 12.37KB
plugin-charts (index.js) 60.54KB 17.13KB
plugin-chatbot (index.js) 180.09KB 42.72KB
plugin-dashboard (index.js) 112.01KB 28.86KB
plugin-designer (index.js) 210.51KB 42.51KB
plugin-detail (index.js) 230.56KB 56.80KB
plugin-editor (index.js) 2.46KB 1.10KB
plugin-form (index.js) 111.57KB 26.98KB
plugin-gantt (index.js) 162.25KB 39.55KB
plugin-grid (index.js) 185.08KB 49.04KB
plugin-kanban (index.js) 47.89KB 13.18KB
plugin-list (index.js) 104.94KB 25.32KB
plugin-map (index.js) 16.81KB 5.24KB
plugin-markdown (index.js) 13.72KB 4.69KB
plugin-report (index.js) 40.55KB 10.59KB
plugin-timeline (index.js) 25.76KB 7.33KB
plugin-tree (index.js) 8.34KB 2.82KB
plugin-view (index.js) 83.67KB 20.43KB
providers (DataSourceProvider.js) 0.75KB 0.39KB
providers (MetadataProvider.js) 1.37KB 0.59KB
providers (ThemeProvider.js) 1.90KB 0.85KB
providers (UploadProvider.js) 11.71KB 3.53KB
providers (index.js) 0.44KB 0.22KB
providers (types.js) 0.01KB 0.04KB
react-runtime (index.js) 5.67KB 2.37KB
react (LazyPluginLoader.js) 3.77KB 1.33KB
react (SchemaRenderer.js) 19.28KB 6.38KB
react (data-invalidation.js) 5.05KB 2.08KB
react (index.js) 1.02KB 0.55KB
react (spec-input.js) 0.20KB 0.18KB
sdui-parser (codegen.js) 4.09KB 1.74KB
sdui-parser (index.js) 4.47KB 2.03KB
sdui-parser (parse.js) 10.04KB 2.82KB
sdui-parser (types.js) 0.29KB 0.24KB
sdui-parser (validate.js) 4.69KB 1.48KB
types (ai.js) 0.20KB 0.17KB
types (api-types.js) 0.20KB 0.18KB
types (app.js) 2.87KB 0.99KB
types (base.js) 0.20KB 0.18KB
types (blocks.js) 0.20KB 0.18KB
types (complex.js) 0.20KB 0.18KB
types (crud.js) 0.20KB 0.18KB
types (data-display.js) 0.20KB 0.18KB
types (data-protocol.js) 0.20KB 0.19KB
types (data.js) 0.20KB 0.18KB
types (designer.js) 1.87KB 0.85KB
types (disclosure.js) 0.20KB 0.18KB
types (error-code.js) 1.54KB 0.88KB
types (feedback.js) 0.20KB 0.18KB
types (field-types.js) 0.20KB 0.18KB
types (form.js) 0.20KB 0.18KB
types (http-retry.js) 4.32KB 2.02KB
types (index.js) 2.46KB 1.21KB
types (layout.js) 0.20KB 0.18KB
types (managed-by.js) 0.19KB 0.18KB
types (mobile.js) 0.20KB 0.18KB
types (navigation.js) 0.20KB 0.18KB
types (objectql.js) 0.20KB 0.18KB
types (overlay.js) 0.20KB 0.18KB
types (permissions.js) 0.20KB 0.18KB
types (plugin-scope.js) 0.20KB 0.18KB
types (record-components.js) 0.20KB 0.19KB
types (record-semantics.js) 1.28KB 0.67KB
types (registry.js) 0.20KB 0.18KB
types (reports.js) 0.20KB 0.18KB
types (spec-report.js) 5.05KB 1.93KB
types (system-fields.js) 3.33KB 1.54KB
types (theme.js) 0.20KB 0.18KB
types (ui-action.js) 3.40KB 1.71KB
types (views.js) 0.20KB 0.18KB
types (widget.js) 0.20KB 0.18KB

Size Limits

  • ✅ Core packages should be < 50KB gzipped
  • ✅ Component packages should be < 100KB gzipped
  • ⚠️ Plugin packages should be < 150KB gzipped

… plugin

The comment described the earlier `this.resolve` approach. The actual
reason is plugin ordering: once Vite's core resolver answers a specifier,
later plugins' resolveId hooks never see it.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NVPjPzmmAJ2Ngtvgg5MSRa
@github-actions

github-actions Bot commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

✅ Console Performance Budget

Metric Value Budget
Main entry (gzip) 28.1 KB 350 KB
Entry file index-5Pv_tAnY.js
Status PASS

📦 Bundle Size Report

Package Size Gzipped
app-shell (index.js) 8.47KB 3.09KB
app-shell (runtime-config.js) 7.42KB 2.32KB
app-shell (types.js) 0.01KB 0.04KB
app-shell (urlParams.js) 7.57KB 2.97KB
auth (AuthContext.js) 0.31KB 0.24KB
auth (AuthGuard.js) 1.17KB 0.53KB
auth (AuthProvider.js) 22.10KB 4.37KB
auth (AuthShell.js) 3.49KB 1.40KB
auth (ForgotPasswordForm.js) 12.21KB 3.45KB
auth (LoginForm.js) 18.13KB 5.39KB
auth (PreviewBanner.js) 0.90KB 0.50KB
auth (RegisterForm.js) 6.64KB 2.21KB
auth (SocialSignInButtons.js) 9.60KB 3.89KB
auth (UserMenu.js) 3.40KB 1.22KB
auth (auth-gate-events.js) 1.29KB 0.66KB
auth (authStyles.js) 5.04KB 1.72KB
auth (createAuthClient.js) 35.76KB 9.11KB
auth (createAuthenticatedFetch.js) 4.37KB 1.69KB
auth (index.js) 2.35KB 1.07KB
auth (org-roles.js) 6.66KB 2.78KB
auth (phone-identifier.js) 1.11KB 0.66KB
auth (types.js) 0.59KB 0.35KB
auth (useAuth.js) 4.91KB 0.87KB
auth (useIsWorkspaceAdmin.js) 1.61KB 0.85KB
collaboration (CommentThread.js) 18.38KB 4.49KB
collaboration (LiveCursors.js) 3.17KB 1.27KB
collaboration (PresenceAvatars.js) 3.65KB 1.42KB
collaboration (PresenceProvider.js) 2.79KB 1.13KB
collaboration (index.js) 1.25KB 0.53KB
collaboration (useCommentSearch.js) 1.98KB 0.88KB
collaboration (useConflictResolution.js) 7.75KB 1.86KB
collaboration (useMentionNotifications.js) 1.81KB 0.68KB
collaboration (usePresence.js) 6.33KB 1.84KB
collaboration (useRealtimeSubscription.js) 7.91KB 2.01KB
components (index.js) 476.66KB 104.69KB
core (index.js) 2.25KB 0.80KB
create-plugin (index.js) 9.28KB 2.98KB
data-objectstack (index.js) 136.23KB 34.75KB
fields (index.js) 223.38KB 54.73KB
i18n (LocalizationContext.js) 1.76KB 0.96KB
i18n (currency.js) 1.22KB 0.64KB
i18n (i18n.js) 4.32KB 1.77KB
i18n (index.js) 2.46KB 0.96KB
i18n (pickLocalized.js) 1.70KB 0.83KB
i18n (provider.js) 5.37KB 1.72KB
i18n (useObjectLabel.js) 26.14KB 6.07KB
i18n (useSafeTranslation.js) 3.26KB 1.44KB
layout (index.js) 37.96KB 10.54KB
mobile (MobileProvider.js) 0.92KB 0.49KB
mobile (ResponsiveContainer.js) 0.94KB 0.38KB
mobile (breakpoints.js) 1.51KB 0.70KB
mobile (createOfflineDataSource.js) 5.61KB 1.74KB
mobile (index.js) 1.50KB 0.62KB
mobile (offlineQueue.js) 3.91KB 1.35KB
mobile (pwa.js) 0.97KB 0.49KB
mobile (serviceWorker.js) 1.48KB 0.62KB
mobile (serviceWorkerSource.js) 3.41KB 1.48KB
mobile (useBreakpoint.js) 1.54KB 0.65KB
mobile (useGesture.js) 6.96KB 1.98KB
mobile (useOfflineSync.js) 1.99KB 0.72KB
mobile (usePullToRefresh.js) 2.53KB 0.85KB
mobile (useResponsive.js) 0.71KB 0.42KB
mobile (useResponsiveConfig.js) 1.36KB 0.63KB
mobile (useSpecGesture.js) 4.05KB 1.53KB
mobile (useTouchTarget.js) 1.01KB 0.54KB
permissions (MePermissionsProvider.js) 8.75KB 3.06KB
permissions (PermissionContext.js) 0.31KB 0.25KB
permissions (PermissionGuard.js) 0.89KB 0.45KB
permissions (PermissionProvider.js) 3.67KB 1.12KB
permissions (evaluator.js) 4.41KB 1.44KB
permissions (index.js) 0.91KB 0.41KB
permissions (store.js) 0.91KB 0.42KB
permissions (useFieldPermissions.js) 1.28KB 0.52KB
permissions (usePermissions.js) 1.55KB 0.71KB
plugin-ai (index.js) 15.71KB 3.79KB
plugin-calendar (index.js) 44.98KB 12.37KB
plugin-charts (index.js) 60.54KB 17.13KB
plugin-chatbot (index.js) 180.09KB 42.72KB
plugin-dashboard (index.js) 112.01KB 28.86KB
plugin-designer (index.js) 210.51KB 42.51KB
plugin-detail (index.js) 230.56KB 56.80KB
plugin-editor (index.js) 2.46KB 1.10KB
plugin-form (index.js) 111.57KB 26.98KB
plugin-gantt (index.js) 162.25KB 39.55KB
plugin-grid (index.js) 185.08KB 49.04KB
plugin-kanban (index.js) 47.89KB 13.18KB
plugin-list (index.js) 104.94KB 25.32KB
plugin-map (index.js) 16.81KB 5.24KB
plugin-markdown (index.js) 13.72KB 4.69KB
plugin-report (index.js) 40.55KB 10.59KB
plugin-timeline (index.js) 25.76KB 7.33KB
plugin-tree (index.js) 8.34KB 2.82KB
plugin-view (index.js) 83.67KB 20.43KB
providers (DataSourceProvider.js) 0.75KB 0.39KB
providers (MetadataProvider.js) 1.37KB 0.59KB
providers (ThemeProvider.js) 1.90KB 0.85KB
providers (UploadProvider.js) 11.71KB 3.53KB
providers (index.js) 0.44KB 0.22KB
providers (types.js) 0.01KB 0.04KB
react-runtime (index.js) 5.67KB 2.37KB
react (LazyPluginLoader.js) 3.77KB 1.33KB
react (SchemaRenderer.js) 19.28KB 6.38KB
react (data-invalidation.js) 5.05KB 2.08KB
react (index.js) 1.02KB 0.55KB
react (spec-input.js) 0.20KB 0.18KB
sdui-parser (codegen.js) 4.09KB 1.74KB
sdui-parser (index.js) 4.47KB 2.03KB
sdui-parser (parse.js) 10.04KB 2.82KB
sdui-parser (types.js) 0.29KB 0.24KB
sdui-parser (validate.js) 4.69KB 1.48KB
types (ai.js) 0.20KB 0.17KB
types (api-types.js) 0.20KB 0.18KB
types (app.js) 2.87KB 0.99KB
types (base.js) 0.20KB 0.18KB
types (blocks.js) 0.20KB 0.18KB
types (complex.js) 0.20KB 0.18KB
types (crud.js) 0.20KB 0.18KB
types (data-display.js) 0.20KB 0.18KB
types (data-protocol.js) 0.20KB 0.19KB
types (data.js) 0.20KB 0.18KB
types (designer.js) 1.87KB 0.85KB
types (disclosure.js) 0.20KB 0.18KB
types (error-code.js) 1.54KB 0.88KB
types (feedback.js) 0.20KB 0.18KB
types (field-types.js) 0.20KB 0.18KB
types (form.js) 0.20KB 0.18KB
types (http-retry.js) 4.32KB 2.02KB
types (index.js) 2.46KB 1.21KB
types (layout.js) 0.20KB 0.18KB
types (managed-by.js) 0.19KB 0.18KB
types (mobile.js) 0.20KB 0.18KB
types (navigation.js) 0.20KB 0.18KB
types (objectql.js) 0.20KB 0.18KB
types (overlay.js) 0.20KB 0.18KB
types (permissions.js) 0.20KB 0.18KB
types (plugin-scope.js) 0.20KB 0.18KB
types (record-components.js) 0.20KB 0.19KB
types (record-semantics.js) 1.28KB 0.67KB
types (registry.js) 0.20KB 0.18KB
types (reports.js) 0.20KB 0.18KB
types (spec-report.js) 5.05KB 1.93KB
types (system-fields.js) 3.33KB 1.54KB
types (theme.js) 0.20KB 0.18KB
types (ui-action.js) 3.40KB 1.71KB
types (views.js) 0.20KB 0.18KB
types (widget.js) 0.20KB 0.18KB

Size Limits

  • ✅ Core packages should be < 50KB gzipped
  • ✅ Component packages should be < 100KB gzipped
  • ⚠️ Plugin packages should be < 150KB gzipped

@xuyushun441-sys
xuyushun441-sys marked this pull request as ready for review August 3, 2026 14:44
@xuyushun441-sys
xuyushun441-sys added this pull request to the merge queue Aug 3, 2026
Merged via the queue into main with commit 91757a7 Aug 3, 2026
16 checks passed
@xuyushun441-sys
xuyushun441-sys deleted the claude/issue-3297-maplibre-worker-asset branch August 3, 2026 14:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Console build never emits maplibre's sibling worker — /_console/assets/maplibre-gl-worker.mjs 404s on every map page

2 participants