* build(core): import Markdown with unplugin-raw Core inlined ?raw imports with a hand-written Rolldown plugin that also turned plain .md imports into strings, which nothing in Core uses. unplugin-raw already does this for the Vue SDK and design-jsx; use it here too and drop the unused *.md module declaration. * refactor(pen): use the scene-graph color parser pen/src/color.ts duplicated parseColor from @open-pencil/scene-graph/color line for line. Import it instead, which also drops pen's direct culori dependency. * fix(figma-api): validate effects like Figma The effects setter stored whatever a script passed, so scripts that Figma rejects ran here and malformed effects reached rendering and .fig export. Validate against Figma's effect shapes with Valibot, recorded from live Figma: strict objects, required shadow fields, radius >= 0, RGBA channels within 0..1, and no shadow fields on blurs. The getter now returns Figma's shape so node.effects = node.effects keeps working. Closes #786 * fix(figma-api): reject infinite numbers in effects Figma rejects Infinity in every effect number ("Number must be finite"), but v.number() accepts it, so infinite radii, offsets, and spreads reached the scene graph. * fix(figma-api): store PASS_THROUGH shadow blend as NORMAL PASS_THROUGH is a layer blend mode. Live Figma accepts it on drop and inner shadows but reads NORMAL back, so do the same instead of storing it.
17 lines
359 B
JSON
17 lines
359 B
JSON
{
|
|
"extends": "../tsconfig.json",
|
|
"compilerOptions": {
|
|
"lib": ["ESNext", "DOM", "DOM.Iterable"],
|
|
"types": ["bun", "node"],
|
|
"noEmit": true
|
|
},
|
|
"include": [
|
|
"*/*/src/**/*.ts",
|
|
"*/*/tests/**/*.ts",
|
|
"../src/global.d.ts",
|
|
"../src/markdown.d.ts",
|
|
"../packages/core/src/global.d.ts",
|
|
"../packages/vue/src/global.d.ts"
|
|
]
|
|
}
|