// 票 33 离线闸门的 'cesium' 桩(配合 t33-jitter-diff.mjs 的 module.register 使用)。 // 只替换裸 'cesium':引擎层用到的最小面(常量 + 两个坐标类 + 颜色 + 数据源), // 被测模块 cesiumPipeLayer / 领域层 modeLayerPlan 一律保持真实。 // 实体集合的 add/remove/removeAll 是行为桩:add 保留 spec 的**对象引用**, // 「属性有没有被重赋值」靠比对引用身份判定——这是零重赋值断言的牙。 const STUB = ` function makeEntityCollection() { const values = [] return { values, add(spec) { const entity = { ...spec }; values.push(entity); return entity }, remove(entity) { const i = values.indexOf(entity); if (i === -1) return false; values.splice(i, 1); return true }, removeAll() { values.length = 0 }, } } export class Cartesian2 { constructor(x = 0, y = 0) { this.x = x; this.y = y } } export class Cartesian3 { static fromDegrees(lon, lat) { return { lon, lat } } static fromDegreesArray(flat) { return flat } static fromRadians(lon, lat, h) { return { lon, lat, h } } } export class Color { static fromCssColorString(css) { return { css, withAlpha: (alpha) => ({ css, alpha }) } } } export class CustomDataSource { constructor(name) { this.name = name; this.entities = makeEntityCollection() } } export const HeightReference = { CLAMP_TO_GROUND: 'CLAMP_TO_GROUND' } export const LabelStyle = { FILL_AND_OUTLINE: 'FILL_AND_OUTLINE' } export const VerticalOrigin = { CENTER: 'CENTER', BOTTOM: 'BOTTOM' } ` export async function resolve(specifier, context, nextResolve) { if (specifier === 'cesium') { return { url: 'data:text/javascript,' + encodeURIComponent(STUB), shortCircuit: true } } return nextResolve(specifier, context) }