feat(embed): versioned loader with postMessage whitelist

packages/embed-loader:手写零依赖加载器(esbuild bundle+minify→dist/v1/loader.js,
IIFE target es2018 4.7KB)。自发现 EMBED_ORIGIN(currentScript 兜底扫描)、
data-slot 必填缺失静默 no-op、__photoliveEmbedV1 标记去重+同槽去重、
窄屏 <480px 强制 sm+默认收起、postMessage 双向白名单(source+origin 严格
校验,resize 夹取 60-640)、sessionStorage 收起记忆、零全局零 console
全静默。sync 脚本携 sha256 校验拷贝至 viewer publicDir(两份产物入库);
src/params.js 为 loader/单测共用参数源(11 vitest 用例)。

Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
浅念
2026-09-20 22:31:40 +08:00
parent aee4b7ac46
commit ddb4c8175f
10 changed files with 637 additions and 0 deletions
+6
View File
@@ -1,5 +1,11 @@
node_modules/
dist/
# embed-loader 发布物即 dist 文件本身(viewer 同步副本也提交):白名单放行,
# 其余 dist/ 仍忽略(git 不允许重包含被排除目录的子路径,故逐层放行到 v1/)。
!packages/embed-loader/dist/
packages/embed-loader/dist/*
!packages/embed-loader/dist/v1/
!packages/embed-loader/dist/v1/loader.js
.turbo/
# @photo/db-ov Prisma client 工件(自定义 generator output;db-cn 走 node_modules 默认位)
packages/db-ov/generated/