@pdfme/schemas 5.5.9 → 5.5.10-dev.125

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (398) hide show
  1. package/package.json +45 -61
  2. package/src/barcodes/helper.ts +2 -2
  3. package/src/barcodes/types.ts +2 -2
  4. package/src/builtins.ts +8 -0
  5. package/src/date/helper.ts +118 -70
  6. package/src/graphics/image.ts +3 -3
  7. package/src/graphics/signature.ts +136 -0
  8. package/src/index.ts +4 -4
  9. package/src/multiVariableText/propPanel.ts +23 -14
  10. package/src/multiVariableText/types.ts +2 -2
  11. package/src/multiVariableText/uiRender.ts +18 -31
  12. package/src/multiVariableText/variables.ts +63 -0
  13. package/src/tables/tableHelper.ts +3 -2
  14. package/src/tables/types.ts +2 -2
  15. package/src/tables/uiRender.ts +1 -1
  16. package/src/tables.ts +1 -0
  17. package/src/text/helper.ts +27 -4
  18. package/src/text/pdfRender.ts +2 -1
  19. package/src/text/types.ts +2 -2
  20. package/src/utils.ts +87 -14
  21. package/tsconfig.build.json +14 -0
  22. package/tsconfig.json +14 -4
  23. package/vite.config.mts +51 -0
  24. package/dist/cjs/__tests__/barcode.test.js +0 -354
  25. package/dist/cjs/__tests__/barcode.test.js.map +0 -1
  26. package/dist/cjs/__tests__/multiVariableText.test.js +0 -102
  27. package/dist/cjs/__tests__/multiVariableText.test.js.map +0 -1
  28. package/dist/cjs/__tests__/text.test.js +0 -419
  29. package/dist/cjs/__tests__/text.test.js.map +0 -1
  30. package/dist/cjs/__tests__/utils.test.js +0 -193
  31. package/dist/cjs/__tests__/utils.test.js.map +0 -1
  32. package/dist/cjs/src/barcodes/constants.js +0 -21
  33. package/dist/cjs/src/barcodes/constants.js.map +0 -1
  34. package/dist/cjs/src/barcodes/helper.js +0 -161
  35. package/dist/cjs/src/barcodes/helper.js.map +0 -1
  36. package/dist/cjs/src/barcodes/index.js +0 -18
  37. package/dist/cjs/src/barcodes/index.js.map +0 -1
  38. package/dist/cjs/src/barcodes/pdfRender.js +0 -29
  39. package/dist/cjs/src/barcodes/pdfRender.js.map +0 -1
  40. package/dist/cjs/src/barcodes/propPanel.js +0 -241
  41. package/dist/cjs/src/barcodes/propPanel.js.map +0 -1
  42. package/dist/cjs/src/barcodes/types.js +0 -3
  43. package/dist/cjs/src/barcodes/types.js.map +0 -1
  44. package/dist/cjs/src/barcodes/uiRender.js +0 -91
  45. package/dist/cjs/src/barcodes/uiRender.js.map +0 -1
  46. package/dist/cjs/src/checkbox/index.js +0 -62
  47. package/dist/cjs/src/checkbox/index.js.map +0 -1
  48. package/dist/cjs/src/constants.js +0 -6
  49. package/dist/cjs/src/constants.js.map +0 -1
  50. package/dist/cjs/src/date/date.js +0 -9
  51. package/dist/cjs/src/date/date.js.map +0 -1
  52. package/dist/cjs/src/date/dateTime.js +0 -9
  53. package/dist/cjs/src/date/dateTime.js.map +0 -1
  54. package/dist/cjs/src/date/helper.js +0 -462
  55. package/dist/cjs/src/date/helper.js.map +0 -1
  56. package/dist/cjs/src/date/time.js +0 -9
  57. package/dist/cjs/src/date/time.js.map +0 -1
  58. package/dist/cjs/src/date/types.js +0 -3
  59. package/dist/cjs/src/date/types.js.map +0 -1
  60. package/dist/cjs/src/graphics/image.js +0 -172
  61. package/dist/cjs/src/graphics/image.js.map +0 -1
  62. package/dist/cjs/src/graphics/imagehelper.js +0 -124
  63. package/dist/cjs/src/graphics/imagehelper.js.map +0 -1
  64. package/dist/cjs/src/graphics/svg.js +0 -112
  65. package/dist/cjs/src/graphics/svg.js.map +0 -1
  66. package/dist/cjs/src/index.js +0 -41
  67. package/dist/cjs/src/index.js.map +0 -1
  68. package/dist/cjs/src/multiVariableText/helper.js +0 -55
  69. package/dist/cjs/src/multiVariableText/helper.js.map +0 -1
  70. package/dist/cjs/src/multiVariableText/index.js +0 -16
  71. package/dist/cjs/src/multiVariableText/index.js.map +0 -1
  72. package/dist/cjs/src/multiVariableText/pdfRender.js +0 -20
  73. package/dist/cjs/src/multiVariableText/pdfRender.js.map +0 -1
  74. package/dist/cjs/src/multiVariableText/propPanel.js +0 -148
  75. package/dist/cjs/src/multiVariableText/propPanel.js.map +0 -1
  76. package/dist/cjs/src/multiVariableText/types.js +0 -3
  77. package/dist/cjs/src/multiVariableText/types.js.map +0 -1
  78. package/dist/cjs/src/multiVariableText/uiRender.js +0 -146
  79. package/dist/cjs/src/multiVariableText/uiRender.js.map +0 -1
  80. package/dist/cjs/src/radioGroup/index.js +0 -93
  81. package/dist/cjs/src/radioGroup/index.js.map +0 -1
  82. package/dist/cjs/src/sanitize.js +0 -57
  83. package/dist/cjs/src/sanitize.js.map +0 -1
  84. package/dist/cjs/src/select/index.js +0 -175
  85. package/dist/cjs/src/select/index.js.map +0 -1
  86. package/dist/cjs/src/shapes/line.js +0 -76
  87. package/dist/cjs/src/shapes/line.js.map +0 -1
  88. package/dist/cjs/src/shapes/rectAndEllipse.js +0 -140
  89. package/dist/cjs/src/shapes/rectAndEllipse.js.map +0 -1
  90. package/dist/cjs/src/tables/cell.js +0 -126
  91. package/dist/cjs/src/tables/cell.js.map +0 -1
  92. package/dist/cjs/src/tables/classes.js +0 -467
  93. package/dist/cjs/src/tables/classes.js.map +0 -1
  94. package/dist/cjs/src/tables/dynamicTemplate.js +0 -66
  95. package/dist/cjs/src/tables/dynamicTemplate.js.map +0 -1
  96. package/dist/cjs/src/tables/helper.js +0 -189
  97. package/dist/cjs/src/tables/helper.js.map +0 -1
  98. package/dist/cjs/src/tables/index.js +0 -15
  99. package/dist/cjs/src/tables/index.js.map +0 -1
  100. package/dist/cjs/src/tables/pdfRender.js +0 -109
  101. package/dist/cjs/src/tables/pdfRender.js.map +0 -1
  102. package/dist/cjs/src/tables/propPanel.js +0 -108
  103. package/dist/cjs/src/tables/propPanel.js.map +0 -1
  104. package/dist/cjs/src/tables/tableHelper.js +0 -200
  105. package/dist/cjs/src/tables/tableHelper.js.map +0 -1
  106. package/dist/cjs/src/tables/types.js +0 -3
  107. package/dist/cjs/src/tables/types.js.map +0 -1
  108. package/dist/cjs/src/tables/uiRender.js +0 -368
  109. package/dist/cjs/src/tables/uiRender.js.map +0 -1
  110. package/dist/cjs/src/text/constants.js +0 -97
  111. package/dist/cjs/src/text/constants.js.map +0 -1
  112. package/dist/cjs/src/text/extraFormatter.js +0 -49
  113. package/dist/cjs/src/text/extraFormatter.js.map +0 -1
  114. package/dist/cjs/src/text/helper.js +0 -498
  115. package/dist/cjs/src/text/helper.js.map +0 -1
  116. package/dist/cjs/src/text/icons/index.js +0 -16
  117. package/dist/cjs/src/text/icons/index.js.map +0 -1
  118. package/dist/cjs/src/text/index.js +0 -15
  119. package/dist/cjs/src/text/index.js.map +0 -1
  120. package/dist/cjs/src/text/pdfRender.js +0 -167
  121. package/dist/cjs/src/text/pdfRender.js.map +0 -1
  122. package/dist/cjs/src/text/propPanel.js +0 -161
  123. package/dist/cjs/src/text/propPanel.js.map +0 -1
  124. package/dist/cjs/src/text/types.js +0 -3
  125. package/dist/cjs/src/text/types.js.map +0 -1
  126. package/dist/cjs/src/text/uiRender.js +0 -231
  127. package/dist/cjs/src/text/uiRender.js.map +0 -1
  128. package/dist/cjs/src/utils.js +0 -230
  129. package/dist/cjs/src/utils.js.map +0 -1
  130. package/dist/esm/__tests__/barcode.test.js +0 -349
  131. package/dist/esm/__tests__/barcode.test.js.map +0 -1
  132. package/dist/esm/__tests__/multiVariableText.test.js +0 -100
  133. package/dist/esm/__tests__/multiVariableText.test.js.map +0 -1
  134. package/dist/esm/__tests__/text.test.js +0 -384
  135. package/dist/esm/__tests__/text.test.js.map +0 -1
  136. package/dist/esm/__tests__/utils.test.js +0 -191
  137. package/dist/esm/__tests__/utils.test.js.map +0 -1
  138. package/dist/esm/src/barcodes/constants.js +0 -18
  139. package/dist/esm/src/barcodes/constants.js.map +0 -1
  140. package/dist/esm/src/barcodes/helper.js +0 -151
  141. package/dist/esm/src/barcodes/helper.js.map +0 -1
  142. package/dist/esm/src/barcodes/index.js +0 -16
  143. package/dist/esm/src/barcodes/index.js.map +0 -1
  144. package/dist/esm/src/barcodes/pdfRender.js +0 -25
  145. package/dist/esm/src/barcodes/pdfRender.js.map +0 -1
  146. package/dist/esm/src/barcodes/propPanel.js +0 -237
  147. package/dist/esm/src/barcodes/propPanel.js.map +0 -1
  148. package/dist/esm/src/barcodes/types.js +0 -2
  149. package/dist/esm/src/barcodes/types.js.map +0 -1
  150. package/dist/esm/src/barcodes/uiRender.js +0 -87
  151. package/dist/esm/src/barcodes/uiRender.js.map +0 -1
  152. package/dist/esm/src/checkbox/index.js +0 -57
  153. package/dist/esm/src/checkbox/index.js.map +0 -1
  154. package/dist/esm/src/constants.js +0 -3
  155. package/dist/esm/src/constants.js.map +0 -1
  156. package/dist/esm/src/date/date.js +0 -7
  157. package/dist/esm/src/date/date.js.map +0 -1
  158. package/dist/esm/src/date/dateTime.js +0 -7
  159. package/dist/esm/src/date/dateTime.js.map +0 -1
  160. package/dist/esm/src/date/helper.js +0 -422
  161. package/dist/esm/src/date/helper.js.map +0 -1
  162. package/dist/esm/src/date/time.js +0 -7
  163. package/dist/esm/src/date/time.js.map +0 -1
  164. package/dist/esm/src/date/types.js +0 -2
  165. package/dist/esm/src/date/types.js.map +0 -1
  166. package/dist/esm/src/graphics/image.js +0 -170
  167. package/dist/esm/src/graphics/image.js.map +0 -1
  168. package/dist/esm/src/graphics/imagehelper.js +0 -120
  169. package/dist/esm/src/graphics/imagehelper.js.map +0 -1
  170. package/dist/esm/src/graphics/svg.js +0 -110
  171. package/dist/esm/src/graphics/svg.js.map +0 -1
  172. package/dist/esm/src/index.js +0 -21
  173. package/dist/esm/src/index.js.map +0 -1
  174. package/dist/esm/src/multiVariableText/helper.js +0 -50
  175. package/dist/esm/src/multiVariableText/helper.js.map +0 -1
  176. package/dist/esm/src/multiVariableText/index.js +0 -14
  177. package/dist/esm/src/multiVariableText/index.js.map +0 -1
  178. package/dist/esm/src/multiVariableText/pdfRender.js +0 -16
  179. package/dist/esm/src/multiVariableText/pdfRender.js.map +0 -1
  180. package/dist/esm/src/multiVariableText/propPanel.js +0 -145
  181. package/dist/esm/src/multiVariableText/propPanel.js.map +0 -1
  182. package/dist/esm/src/multiVariableText/types.js +0 -2
  183. package/dist/esm/src/multiVariableText/types.js.map +0 -1
  184. package/dist/esm/src/multiVariableText/uiRender.js +0 -142
  185. package/dist/esm/src/multiVariableText/uiRender.js.map +0 -1
  186. package/dist/esm/src/radioGroup/index.js +0 -88
  187. package/dist/esm/src/radioGroup/index.js.map +0 -1
  188. package/dist/esm/src/sanitize.js +0 -50
  189. package/dist/esm/src/sanitize.js.map +0 -1
  190. package/dist/esm/src/select/index.js +0 -170
  191. package/dist/esm/src/select/index.js.map +0 -1
  192. package/dist/esm/src/shapes/line.js +0 -74
  193. package/dist/esm/src/shapes/line.js.map +0 -1
  194. package/dist/esm/src/shapes/rectAndEllipse.js +0 -137
  195. package/dist/esm/src/shapes/rectAndEllipse.js.map +0 -1
  196. package/dist/esm/src/tables/cell.js +0 -121
  197. package/dist/esm/src/tables/cell.js.map +0 -1
  198. package/dist/esm/src/tables/classes.js +0 -460
  199. package/dist/esm/src/tables/classes.js.map +0 -1
  200. package/dist/esm/src/tables/dynamicTemplate.js +0 -62
  201. package/dist/esm/src/tables/dynamicTemplate.js.map +0 -1
  202. package/dist/esm/src/tables/helper.js +0 -181
  203. package/dist/esm/src/tables/helper.js.map +0 -1
  204. package/dist/esm/src/tables/index.js +0 -13
  205. package/dist/esm/src/tables/index.js.map +0 -1
  206. package/dist/esm/src/tables/pdfRender.js +0 -102
  207. package/dist/esm/src/tables/pdfRender.js.map +0 -1
  208. package/dist/esm/src/tables/propPanel.js +0 -105
  209. package/dist/esm/src/tables/propPanel.js.map +0 -1
  210. package/dist/esm/src/tables/tableHelper.js +0 -197
  211. package/dist/esm/src/tables/tableHelper.js.map +0 -1
  212. package/dist/esm/src/tables/types.js +0 -2
  213. package/dist/esm/src/tables/types.js.map +0 -1
  214. package/dist/esm/src/tables/uiRender.js +0 -361
  215. package/dist/esm/src/tables/uiRender.js.map +0 -1
  216. package/dist/esm/src/text/constants.js +0 -94
  217. package/dist/esm/src/text/constants.js.map +0 -1
  218. package/dist/esm/src/text/extraFormatter.js +0 -45
  219. package/dist/esm/src/text/extraFormatter.js.map +0 -1
  220. package/dist/esm/src/text/helper.js +0 -451
  221. package/dist/esm/src/text/helper.js.map +0 -1
  222. package/dist/esm/src/text/icons/index.js +0 -13
  223. package/dist/esm/src/text/icons/index.js.map +0 -1
  224. package/dist/esm/src/text/index.js +0 -13
  225. package/dist/esm/src/text/index.js.map +0 -1
  226. package/dist/esm/src/text/pdfRender.js +0 -163
  227. package/dist/esm/src/text/pdfRender.js.map +0 -1
  228. package/dist/esm/src/text/propPanel.js +0 -158
  229. package/dist/esm/src/text/propPanel.js.map +0 -1
  230. package/dist/esm/src/text/types.js +0 -2
  231. package/dist/esm/src/text/types.js.map +0 -1
  232. package/dist/esm/src/text/uiRender.js +0 -224
  233. package/dist/esm/src/text/uiRender.js.map +0 -1
  234. package/dist/esm/src/utils.js +0 -218
  235. package/dist/esm/src/utils.js.map +0 -1
  236. package/dist/node/__tests__/barcode.test.js +0 -354
  237. package/dist/node/__tests__/barcode.test.js.map +0 -1
  238. package/dist/node/__tests__/multiVariableText.test.js +0 -102
  239. package/dist/node/__tests__/multiVariableText.test.js.map +0 -1
  240. package/dist/node/__tests__/text.test.js +0 -419
  241. package/dist/node/__tests__/text.test.js.map +0 -1
  242. package/dist/node/__tests__/utils.test.js +0 -193
  243. package/dist/node/__tests__/utils.test.js.map +0 -1
  244. package/dist/node/src/barcodes/constants.js +0 -21
  245. package/dist/node/src/barcodes/constants.js.map +0 -1
  246. package/dist/node/src/barcodes/helper.js +0 -161
  247. package/dist/node/src/barcodes/helper.js.map +0 -1
  248. package/dist/node/src/barcodes/index.js +0 -18
  249. package/dist/node/src/barcodes/index.js.map +0 -1
  250. package/dist/node/src/barcodes/pdfRender.js +0 -29
  251. package/dist/node/src/barcodes/pdfRender.js.map +0 -1
  252. package/dist/node/src/barcodes/propPanel.js +0 -241
  253. package/dist/node/src/barcodes/propPanel.js.map +0 -1
  254. package/dist/node/src/barcodes/types.js +0 -3
  255. package/dist/node/src/barcodes/types.js.map +0 -1
  256. package/dist/node/src/barcodes/uiRender.js +0 -91
  257. package/dist/node/src/barcodes/uiRender.js.map +0 -1
  258. package/dist/node/src/checkbox/index.js +0 -62
  259. package/dist/node/src/checkbox/index.js.map +0 -1
  260. package/dist/node/src/constants.js +0 -6
  261. package/dist/node/src/constants.js.map +0 -1
  262. package/dist/node/src/date/date.js +0 -9
  263. package/dist/node/src/date/date.js.map +0 -1
  264. package/dist/node/src/date/dateTime.js +0 -9
  265. package/dist/node/src/date/dateTime.js.map +0 -1
  266. package/dist/node/src/date/helper.js +0 -462
  267. package/dist/node/src/date/helper.js.map +0 -1
  268. package/dist/node/src/date/time.js +0 -9
  269. package/dist/node/src/date/time.js.map +0 -1
  270. package/dist/node/src/date/types.js +0 -3
  271. package/dist/node/src/date/types.js.map +0 -1
  272. package/dist/node/src/graphics/image.js +0 -172
  273. package/dist/node/src/graphics/image.js.map +0 -1
  274. package/dist/node/src/graphics/imagehelper.js +0 -124
  275. package/dist/node/src/graphics/imagehelper.js.map +0 -1
  276. package/dist/node/src/graphics/svg.js +0 -112
  277. package/dist/node/src/graphics/svg.js.map +0 -1
  278. package/dist/node/src/index.js +0 -41
  279. package/dist/node/src/index.js.map +0 -1
  280. package/dist/node/src/multiVariableText/helper.js +0 -55
  281. package/dist/node/src/multiVariableText/helper.js.map +0 -1
  282. package/dist/node/src/multiVariableText/index.js +0 -16
  283. package/dist/node/src/multiVariableText/index.js.map +0 -1
  284. package/dist/node/src/multiVariableText/pdfRender.js +0 -20
  285. package/dist/node/src/multiVariableText/pdfRender.js.map +0 -1
  286. package/dist/node/src/multiVariableText/propPanel.js +0 -148
  287. package/dist/node/src/multiVariableText/propPanel.js.map +0 -1
  288. package/dist/node/src/multiVariableText/types.js +0 -3
  289. package/dist/node/src/multiVariableText/types.js.map +0 -1
  290. package/dist/node/src/multiVariableText/uiRender.js +0 -146
  291. package/dist/node/src/multiVariableText/uiRender.js.map +0 -1
  292. package/dist/node/src/radioGroup/index.js +0 -93
  293. package/dist/node/src/radioGroup/index.js.map +0 -1
  294. package/dist/node/src/sanitize.js +0 -57
  295. package/dist/node/src/sanitize.js.map +0 -1
  296. package/dist/node/src/select/index.js +0 -175
  297. package/dist/node/src/select/index.js.map +0 -1
  298. package/dist/node/src/shapes/line.js +0 -76
  299. package/dist/node/src/shapes/line.js.map +0 -1
  300. package/dist/node/src/shapes/rectAndEllipse.js +0 -140
  301. package/dist/node/src/shapes/rectAndEllipse.js.map +0 -1
  302. package/dist/node/src/tables/cell.js +0 -126
  303. package/dist/node/src/tables/cell.js.map +0 -1
  304. package/dist/node/src/tables/classes.js +0 -467
  305. package/dist/node/src/tables/classes.js.map +0 -1
  306. package/dist/node/src/tables/dynamicTemplate.js +0 -66
  307. package/dist/node/src/tables/dynamicTemplate.js.map +0 -1
  308. package/dist/node/src/tables/helper.js +0 -189
  309. package/dist/node/src/tables/helper.js.map +0 -1
  310. package/dist/node/src/tables/index.js +0 -15
  311. package/dist/node/src/tables/index.js.map +0 -1
  312. package/dist/node/src/tables/pdfRender.js +0 -109
  313. package/dist/node/src/tables/pdfRender.js.map +0 -1
  314. package/dist/node/src/tables/propPanel.js +0 -108
  315. package/dist/node/src/tables/propPanel.js.map +0 -1
  316. package/dist/node/src/tables/tableHelper.js +0 -200
  317. package/dist/node/src/tables/tableHelper.js.map +0 -1
  318. package/dist/node/src/tables/types.js +0 -3
  319. package/dist/node/src/tables/types.js.map +0 -1
  320. package/dist/node/src/tables/uiRender.js +0 -368
  321. package/dist/node/src/tables/uiRender.js.map +0 -1
  322. package/dist/node/src/text/constants.js +0 -97
  323. package/dist/node/src/text/constants.js.map +0 -1
  324. package/dist/node/src/text/extraFormatter.js +0 -49
  325. package/dist/node/src/text/extraFormatter.js.map +0 -1
  326. package/dist/node/src/text/helper.js +0 -498
  327. package/dist/node/src/text/helper.js.map +0 -1
  328. package/dist/node/src/text/icons/index.js +0 -16
  329. package/dist/node/src/text/icons/index.js.map +0 -1
  330. package/dist/node/src/text/index.js +0 -15
  331. package/dist/node/src/text/index.js.map +0 -1
  332. package/dist/node/src/text/pdfRender.js +0 -167
  333. package/dist/node/src/text/pdfRender.js.map +0 -1
  334. package/dist/node/src/text/propPanel.js +0 -161
  335. package/dist/node/src/text/propPanel.js.map +0 -1
  336. package/dist/node/src/text/types.js +0 -3
  337. package/dist/node/src/text/types.js.map +0 -1
  338. package/dist/node/src/text/uiRender.js +0 -231
  339. package/dist/node/src/text/uiRender.js.map +0 -1
  340. package/dist/node/src/utils.js +0 -230
  341. package/dist/node/src/utils.js.map +0 -1
  342. package/dist/types/__tests__/barcode.test.d.ts +0 -1
  343. package/dist/types/__tests__/multiVariableText.test.d.ts +0 -1
  344. package/dist/types/__tests__/text.test.d.ts +0 -1
  345. package/dist/types/__tests__/utils.test.d.ts +0 -1
  346. package/dist/types/src/barcodes/constants.d.ts +0 -4
  347. package/dist/types/src/barcodes/helper.d.ts +0 -21
  348. package/dist/types/src/barcodes/index.d.ts +0 -4
  349. package/dist/types/src/barcodes/pdfRender.d.ts +0 -3
  350. package/dist/types/src/barcodes/propPanel.d.ts +0 -3
  351. package/dist/types/src/barcodes/types.d.ts +0 -10
  352. package/dist/types/src/barcodes/uiRender.d.ts +0 -3
  353. package/dist/types/src/checkbox/index.d.ts +0 -6
  354. package/dist/types/src/constants.d.ts +0 -2
  355. package/dist/types/src/date/date.d.ts +0 -2
  356. package/dist/types/src/date/dateTime.d.ts +0 -2
  357. package/dist/types/src/date/helper.d.ts +0 -8
  358. package/dist/types/src/date/time.d.ts +0 -2
  359. package/dist/types/src/date/types.d.ts +0 -17
  360. package/dist/types/src/graphics/image.d.ts +0 -5
  361. package/dist/types/src/graphics/imagehelper.d.ts +0 -4
  362. package/dist/types/src/graphics/svg.d.ts +0 -4
  363. package/dist/types/src/index.d.ts +0 -19
  364. package/dist/types/src/multiVariableText/helper.d.ts +0 -3
  365. package/dist/types/src/multiVariableText/index.d.ts +0 -4
  366. package/dist/types/src/multiVariableText/pdfRender.d.ts +0 -3
  367. package/dist/types/src/multiVariableText/propPanel.d.ts +0 -3
  368. package/dist/types/src/multiVariableText/types.d.ts +0 -5
  369. package/dist/types/src/multiVariableText/uiRender.d.ts +0 -3
  370. package/dist/types/src/radioGroup/index.d.ts +0 -7
  371. package/dist/types/src/sanitize.d.ts +0 -1
  372. package/dist/types/src/select/index.d.ts +0 -7
  373. package/dist/types/src/shapes/line.d.ts +0 -6
  374. package/dist/types/src/shapes/rectAndEllipse.d.ts +0 -175
  375. package/dist/types/src/tables/cell.d.ts +0 -4
  376. package/dist/types/src/tables/classes.d.ts +0 -69
  377. package/dist/types/src/tables/dynamicTemplate.d.ts +0 -7
  378. package/dist/types/src/tables/helper.d.ts +0 -265
  379. package/dist/types/src/tables/index.d.ts +0 -4
  380. package/dist/types/src/tables/pdfRender.d.ts +0 -3
  381. package/dist/types/src/tables/propPanel.d.ts +0 -3
  382. package/dist/types/src/tables/tableHelper.d.ts +0 -10
  383. package/dist/types/src/tables/types.d.ts +0 -88
  384. package/dist/types/src/tables/uiRender.d.ts +0 -3
  385. package/dist/types/src/text/constants.d.ts +0 -23
  386. package/dist/types/src/text/extraFormatter.d.ts +0 -25
  387. package/dist/types/src/text/helper.d.ts +0 -39
  388. package/dist/types/src/text/icons/index.d.ts +0 -9
  389. package/dist/types/src/text/index.d.ts +0 -4
  390. package/dist/types/src/text/pdfRender.d.ts +0 -3
  391. package/dist/types/src/text/propPanel.d.ts +0 -3
  392. package/dist/types/src/text/types.d.ts +0 -28
  393. package/dist/types/src/text/uiRender.d.ts +0 -11
  394. package/dist/types/src/utils.d.ts +0 -40
  395. package/eslint.config.mjs +0 -22
  396. package/tsconfig.cjs.json +0 -10
  397. package/tsconfig.esm.json +0 -11
  398. package/tsconfig.node.json +0 -11
@@ -1,13 +1,22 @@
1
1
  import { propPanel as parentPropPanel } from '../text/propPanel.js';
2
2
  import { PropPanel, PropPanelWidgetProps } from '@pdfme/common';
3
3
  import { MultiVariableTextSchema } from './types.js';
4
+ import { getVariableNames } from './variables.js';
4
5
 
5
6
  const mapDynamicVariables = (props: PropPanelWidgetProps) => {
6
7
  const { rootElement, changeSchemas, activeSchema, i18n, options } = props;
7
8
 
8
9
  const mvtSchema = activeSchema as unknown as MultiVariableTextSchema;
9
10
  const text = mvtSchema.text || '';
10
- const variables = JSON.parse(mvtSchema.content || '{}') as Record<string, string>;
11
+ let variables: Record<string, string> = {};
12
+ try {
13
+ const parsed = JSON.parse(mvtSchema.content || '{}');
14
+ if (parsed && typeof parsed === 'object' && !Array.isArray(parsed)) {
15
+ variables = parsed as Record<string, string>;
16
+ }
17
+ } catch {
18
+ // content is not valid JSON (e.g. a plain string value) — start fresh
19
+ }
11
20
  const variablesChanged = updateVariablesFromText(text, variables);
12
21
  const varNames = Object.keys(variables);
13
22
 
@@ -61,14 +70,14 @@ const mapDynamicVariables = (props: PropPanelWidgetProps) => {
61
70
  /^(rgb|hsl)a?\(\s*([+-]?\d+%?\s*,\s*){2,3}[+-]?\d+%?\s*\)$/i.test(colorValue);
62
71
  const safeColorValue = isValidColor ? colorValue : '#168fe3';
63
72
 
64
- // Use safe string concatenation for innerHTML
65
73
  const typingInstructions = i18n('schemas.mvt.typingInstructions');
66
74
  const sampleField = i18n('schemas.mvt.sampleField');
67
- para.innerHTML =
68
- typingInstructions +
69
- ` <code style="color:${safeColorValue}; font-weight:bold;">{` +
70
- sampleField +
71
- '}</code>';
75
+ para.appendChild(document.createTextNode(typingInstructions + ' '));
76
+ const codeEl = document.createElement('code');
77
+ codeEl.style.color = safeColorValue;
78
+ codeEl.style.fontWeight = 'bold';
79
+ codeEl.textContent = `{${sampleField}}`;
80
+ para.appendChild(codeEl);
72
81
  rootElement.appendChild(para);
73
82
  }
74
83
  };
@@ -113,7 +122,7 @@ export const propPanel: PropPanel<MultiVariableTextSchema> = {
113
122
  },
114
123
  };
115
124
  },
116
- widgets: { ...(parentPropPanel.widgets || {}), mapDynamicVariables },
125
+ widgets: { ...parentPropPanel.widgets, mapDynamicVariables },
117
126
  defaultSchema: {
118
127
  ...parentPropPanel.defaultSchema,
119
128
  readOnly: false,
@@ -127,14 +136,14 @@ export const propPanel: PropPanel<MultiVariableTextSchema> = {
127
136
  };
128
137
 
129
138
  const updateVariablesFromText = (text: string, variables: Record<string, string>): boolean => {
130
- const regex = /\{([^{}]+)}/g;
131
- const matches = text.match(regex);
139
+ const matches = getVariableNames(text);
132
140
  let changed = false;
133
141
 
134
- if (matches) {
142
+ if (matches.length > 0) {
143
+ const uniqueMatches = new Set(matches);
144
+
135
145
  // Add any new variables
136
- for (const match of matches) {
137
- const variableName = match.replace('{', '').replace('}', '');
146
+ for (const variableName of uniqueMatches) {
138
147
  if (!(variableName in variables)) {
139
148
  // NOTE: We upper case the variable name as the default value
140
149
  variables[variableName] = variableName.toUpperCase();
@@ -143,7 +152,7 @@ const updateVariablesFromText = (text: string, variables: Record<string, string>
143
152
  }
144
153
  // Remove any that no longer exist
145
154
  Object.keys(variables).forEach((variableName) => {
146
- if (!matches.includes('{' + variableName + '}')) {
155
+ if (!uniqueMatches.has(variableName)) {
147
156
  delete variables[variableName];
148
157
  changed = true;
149
158
  }
@@ -1,6 +1,6 @@
1
1
  import type { TextSchema } from '../text/types.js';
2
2
 
3
- export interface MultiVariableTextSchema extends TextSchema {
3
+ export type MultiVariableTextSchema = TextSchema & {
4
4
  text: string;
5
5
  variables: string[];
6
- }
6
+ };
@@ -8,6 +8,7 @@ import {
8
8
  import { isEditable } from '../utils.js';
9
9
  import { getFontKitFont } from '../text/helper.js';
10
10
  import { substituteVariables } from './helper.js';
11
+ import { countUniqueVariableNames, getVariableIndices } from './variables.js';
11
12
 
12
13
  export const uiRender = async (arg: UIRenderProps<MultiVariableTextSchema>) => {
13
14
  const { value, schema, rootElement, mode, onChange, ...rest } = arg;
@@ -68,9 +69,17 @@ const formUiRender = async (arg: UIRenderProps<MultiVariableTextSchema>) => {
68
69
  rootElement.parentElement.style.outline = '';
69
70
  }
70
71
 
71
- const variables: Record<string, string> = value
72
- ? (JSON.parse(value) as Record<string, string>) || {}
73
- : {};
72
+ let variables: Record<string, string> = {};
73
+ if (value) {
74
+ try {
75
+ const parsed = JSON.parse(value);
76
+ if (parsed && typeof parsed === 'object' && !Array.isArray(parsed)) {
77
+ variables = parsed as Record<string, string>;
78
+ }
79
+ } catch {
80
+ // value is not valid JSON — use empty variables
81
+ }
82
+ }
74
83
  const variableIndices = getVariableIndices(rawText);
75
84
  const substitutedText = substituteVariables(rawText, variables);
76
85
  const font = options?.font || getDefaultFont();
@@ -86,16 +95,18 @@ const formUiRender = async (arg: UIRenderProps<MultiVariableTextSchema>) => {
86
95
  let inVarString = false;
87
96
 
88
97
  for (let i = 0; i < rawText.length; i++) {
89
- if (variableIndices[i]) {
98
+ const variableName = variableIndices.get(i);
99
+
100
+ if (variableName) {
90
101
  inVarString = true;
91
102
  let span = document.createElement('span');
92
103
  span.style.outline = `${theme.colorPrimary} dashed 1px`;
93
104
  makeElementPlainTextContentEditable(span);
94
- span.textContent = variables[variableIndices[i]];
105
+ span.textContent = variables[variableName];
95
106
  span.addEventListener('blur', (e: Event) => {
96
107
  const newValue = (e.target as HTMLSpanElement).textContent || '';
97
- if (newValue !== variables[variableIndices[i]]) {
98
- variables[variableIndices[i]] = newValue;
108
+ if (newValue !== variables[variableName]) {
109
+ variables[variableName] = newValue;
99
110
  if (onChange) onChange({ key: 'content', value: JSON.stringify(variables) });
100
111
  if (stopEditing) stopEditing();
101
112
  }
@@ -114,30 +125,6 @@ const formUiRender = async (arg: UIRenderProps<MultiVariableTextSchema>) => {
114
125
  }
115
126
  };
116
127
 
117
- const getVariableIndices = (content: string) => {
118
- const regex = /\{([^}]+)}/g;
119
- const indices = [];
120
- let match;
121
-
122
- while ((match = regex.exec(content)) !== null) {
123
- indices[match.index] = match[1];
124
- }
125
-
126
- return indices;
127
- };
128
-
129
- const countUniqueVariableNames = (content: string) => {
130
- const regex = /\{([^}]+)}/g;
131
- const uniqueMatchesSet = new Set();
132
- let match;
133
-
134
- while ((match = regex.exec(content)) !== null) {
135
- uniqueMatchesSet.add(match[1]);
136
- }
137
-
138
- return uniqueMatchesSet.size;
139
- };
140
-
141
128
  /**
142
129
  * An optimisation to try to minimise jank while typing.
143
130
  * Only check whether variables were modified based on certain key presses.
@@ -0,0 +1,63 @@
1
+ export type VariableMatch = {
2
+ name: string;
3
+ startIndex: number;
4
+ endIndex: number;
5
+ };
6
+
7
+ export type VariableIndices = Map<number, string>;
8
+
9
+ export const visitVariables = (
10
+ content: string,
11
+ visitor: (match: VariableMatch) => void,
12
+ ): void => {
13
+ let startIndex = -1;
14
+
15
+ for (let i = 0; i < content.length; i++) {
16
+ const char = content[i];
17
+
18
+ if (char === '{') {
19
+ // Restart from the latest opener so malformed input behaves like /{([^{}]+)}/g
20
+ // without requiring backtracking.
21
+ startIndex = i;
22
+ continue;
23
+ }
24
+
25
+ if (char === '}' && startIndex !== -1) {
26
+ const name = content.slice(startIndex + 1, i);
27
+ if (name.length > 0) {
28
+ visitor({ name, startIndex, endIndex: i });
29
+ }
30
+ startIndex = -1;
31
+ }
32
+ }
33
+ };
34
+
35
+ export const getVariableIndices = (content: string): VariableIndices => {
36
+ const indices: VariableIndices = new Map();
37
+
38
+ visitVariables(content, ({ name, startIndex }) => {
39
+ indices.set(startIndex, name);
40
+ });
41
+
42
+ return indices;
43
+ };
44
+
45
+ export const countUniqueVariableNames = (content: string): number => {
46
+ const variableNames = new Set<string>();
47
+
48
+ visitVariables(content, ({ name }) => {
49
+ variableNames.add(name);
50
+ });
51
+
52
+ return variableNames.size;
53
+ };
54
+
55
+ export const getVariableNames = (content: string): string[] => {
56
+ const variableNames: string[] = [];
57
+
58
+ visitVariables(content, ({ name }) => {
59
+ variableNames.push(name);
60
+ });
61
+
62
+ return variableNames;
63
+ };
@@ -123,7 +123,7 @@ function cellStyles(
123
123
  }
124
124
  const otherStyles = Object.assign({}, styles.styles, sectionStyles);
125
125
 
126
- const colStyles = styles.columnStyles[column.index] || styles.columnStyles[column.index] || {};
126
+ const colStyles = styles.columnStyles[column.index] || {};
127
127
 
128
128
  const rowStyles =
129
129
  sectionName === 'body' && rowIndex % 2 === 0
@@ -269,7 +269,8 @@ export function createSingleTable(body: string[][], args: CreateTableArgs) {
269
269
  schema.bodyStyles.alternateBackgroundColor = schema.bodyStyles.backgroundColor;
270
270
  schema.bodyStyles.backgroundColor = alternateBackgroundColor;
271
271
  }
272
- schema.showHead = schema.showHead === false ? false : (!schema.__isSplit || schema.repeatHead === true);
272
+ schema.showHead =
273
+ schema.showHead === false ? false : !schema.__isSplit || schema.repeatHead === true;
273
274
 
274
275
  const input = parseInput(schema, body);
275
276
 
@@ -21,7 +21,7 @@ export interface CellStyle {
21
21
 
22
22
  export type CellSchema = Schema & CellStyle;
23
23
 
24
- export interface TableSchema extends Schema {
24
+ export type TableSchema = Schema & {
25
25
  showHead: boolean;
26
26
  head: string[];
27
27
  headWidthPercentages: number[];
@@ -36,7 +36,7 @@ export interface TableSchema extends Schema {
36
36
  columnStyles: {
37
37
  alignment?: { [colIndex: number]: ALIGNMENT };
38
38
  };
39
- }
39
+ };
40
40
 
41
41
  export interface Styles {
42
42
  fontName: string | undefined;
@@ -203,7 +203,7 @@ const resetEditingPosition = () => {
203
203
  };
204
204
 
205
205
  export const uiRender = async (arg: UIRenderProps<TableSchema>) => {
206
- const { rootElement, onChange, schema, value, mode, scale} = arg;
206
+ const { rootElement, onChange, schema, value, mode, scale } = arg;
207
207
  const body = getBody(value);
208
208
  const bodyWidthRange = getBodyWithRange(value, schema.__bodyRange);
209
209
  const table = await createSingleTable(bodyWidthRange, arg);
package/src/tables.ts ADDED
@@ -0,0 +1 @@
1
+ export { getDynamicHeightsForTable } from './tables/dynamicTemplate.js';
@@ -9,6 +9,7 @@ import {
9
9
  getFallbackFontName,
10
10
  getDefaultFont,
11
11
  DEFAULT_FONT_NAME,
12
+ isUrlSafeToFetch,
12
13
  } from '@pdfme/common';
13
14
  import { Buffer } from 'buffer';
14
15
  import type { TextSchema, FontWidthCalcValues } from './types.js';
@@ -109,6 +110,26 @@ const getFallbackFont = (font: Font) => {
109
110
 
110
111
  const getCacheKey = (fontName: string) => `getFontKitFont-${fontName}`;
111
112
 
113
+ export const fetchRemoteFontData = async (url: string): Promise<ArrayBuffer> => {
114
+ if (!isUrlSafeToFetch(url)) {
115
+ throw Error(
116
+ '[@pdfme/schemas] Invalid or unsafe URL for font data. Only http: and https: URLs pointing to public hosts are allowed.',
117
+ );
118
+ }
119
+
120
+ try {
121
+ const response = await fetch(url);
122
+ if (!response.ok) {
123
+ throw new Error(`HTTP ${response.status}`);
124
+ }
125
+
126
+ return await response.arrayBuffer();
127
+ } catch (error) {
128
+ const reason = error instanceof Error ? error.message : String(error);
129
+ throw Error(`[@pdfme/schemas] Failed to fetch remote font data from ${url}. ${reason}`);
130
+ }
131
+ };
132
+
112
133
  export const getFontKitFont = async (
113
134
  fontName: string | undefined,
114
135
  font: Font,
@@ -123,9 +144,11 @@ export const getFontKitFont = async (
123
144
  const currentFont = font[fntNm] || getFallbackFont(font) || getDefaultFont()[DEFAULT_FONT_NAME];
124
145
  let fontData = currentFont.data;
125
146
  if (typeof fontData === 'string') {
126
- fontData = fontData.startsWith('http')
127
- ? await fetch(fontData).then((res) => res.arrayBuffer())
128
- : b64toUint8Array(fontData);
147
+ if (fontData.startsWith('http')) {
148
+ fontData = await fetchRemoteFontData(fontData);
149
+ } else {
150
+ fontData = b64toUint8Array(fontData);
151
+ }
129
152
  }
130
153
 
131
154
  // Convert fontData to Buffer if it's not already a Buffer
@@ -367,7 +390,7 @@ export const splitTextToSize = (arg: {
367
390
  boxWidthInPt,
368
391
  };
369
392
  let lines: string[] = [];
370
- value.split(/\r\n|\r|\n|\f|\u000B/g).forEach((line: string) => {
393
+ value.split(/\r\n|\r|\n|\f|\v/g).forEach((line: string) => {
371
394
  lines = lines.concat(getSplittedLinesBySegmenter(line, fontWidthCalcValues));
372
395
  });
373
396
  return lines;
@@ -25,6 +25,7 @@ import {
25
25
  heightOfFontAtSize,
26
26
  getFontDescentInPt,
27
27
  getFontKitFont,
28
+ fetchRemoteFontData,
28
29
  widthOfTextAtSize,
29
30
  splitTextToSize,
30
31
  } from './helper.js';
@@ -44,7 +45,7 @@ const embedAndGetFontObj = async (arg: {
44
45
  Object.values(font).map(async (v) => {
45
46
  let fontData = v.data;
46
47
  if (typeof fontData === 'string' && fontData.startsWith('http')) {
47
- fontData = await fetch(fontData).then((res) => res.arrayBuffer());
48
+ fontData = await fetchRemoteFontData(fontData);
48
49
  }
49
50
  return pdfDoc.embedFont(fontData, {
50
51
  subset: typeof v.subset === 'undefined' ? true : v.subset,
package/src/text/types.ts CHANGED
@@ -11,7 +11,7 @@ export type FontWidthCalcValues = {
11
11
  characterSpacing: number;
12
12
  boxWidthInPt: number;
13
13
  };
14
- export interface TextSchema extends Schema {
14
+ export type TextSchema = Schema & {
15
15
  fontName?: string;
16
16
  alignment: ALIGNMENT;
17
17
  verticalAlignment: VERTICAL_ALIGNMENT;
@@ -27,4 +27,4 @@ export interface TextSchema extends Schema {
27
27
  };
28
28
  fontColor: string;
29
29
  backgroundColor: string;
30
- }
30
+ };
package/src/utils.ts CHANGED
@@ -213,9 +213,90 @@ export const createSvgStr = (icon: IconNode, attrs?: Record<string, string>): st
213
213
  // In lucide 0.475.0, the icon is an array of elements, not a single SVG element
214
214
  // We need to create an SVG wrapper and add the elements as children
215
215
 
216
+ const safeTagNames = new Set([
217
+ 'svg',
218
+ 'circle',
219
+ 'ellipse',
220
+ 'g',
221
+ 'line',
222
+ 'path',
223
+ 'polygon',
224
+ 'polyline',
225
+ 'rect',
226
+ ]);
227
+ const safeAttributeNames = new Set([
228
+ 'aria-hidden',
229
+ 'aria-label',
230
+ 'class',
231
+ 'clip-rule',
232
+ 'cx',
233
+ 'cy',
234
+ 'd',
235
+ 'fill',
236
+ 'fill-opacity',
237
+ 'fill-rule',
238
+ 'focusable',
239
+ 'height',
240
+ 'id',
241
+ 'opacity',
242
+ 'points',
243
+ 'preserveAspectRatio',
244
+ 'r',
245
+ 'role',
246
+ 'rx',
247
+ 'ry',
248
+ 'stroke',
249
+ 'stroke-dasharray',
250
+ 'stroke-dashoffset',
251
+ 'stroke-linecap',
252
+ 'stroke-linejoin',
253
+ 'stroke-miterlimit',
254
+ 'stroke-opacity',
255
+ 'stroke-width',
256
+ 'transform',
257
+ 'vector-effect',
258
+ 'viewBox',
259
+ 'width',
260
+ 'x',
261
+ 'x1',
262
+ 'x2',
263
+ 'xmlns',
264
+ 'xmlns:xlink',
265
+ 'y',
266
+ 'y1',
267
+ 'y2',
268
+ ]);
269
+ const escapeHtmlAttribute = (value: string): string =>
270
+ value
271
+ .replaceAll('&', '&amp;')
272
+ .replaceAll('"', '&quot;')
273
+ .replaceAll("'", '&#39;')
274
+ .replaceAll('<', '&lt;')
275
+ .replaceAll('>', '&gt;');
276
+ const escapeHtmlText = (value: string): string =>
277
+ value.replaceAll('&', '&amp;').replaceAll('<', '&lt;').replaceAll('>', '&gt;');
278
+ const toSafeAttributeString = (attributes: Record<string, string>): string =>
279
+ Object.entries(attributes)
280
+ .filter(
281
+ ([key, value]) =>
282
+ safeAttributeNames.has(key) &&
283
+ value !== undefined &&
284
+ value !== null &&
285
+ !key.toLowerCase().startsWith('on'),
286
+ )
287
+ .map(([key, value]) => `${key}="${escapeHtmlAttribute(String(value))}"`)
288
+ .join(' ');
289
+ const toSafeTagName = (tag: unknown): string => {
290
+ const tagName = String(tag);
291
+ if (!safeTagNames.has(tagName)) {
292
+ throw new Error(`Invalid SVG tag name: ${tagName}`);
293
+ }
294
+ return tagName;
295
+ };
296
+
216
297
  // Handle non-array input
217
298
  if (!Array.isArray(icon)) {
218
- return String(icon);
299
+ return escapeHtmlText(String(icon));
219
300
  }
220
301
 
221
302
  // Create default SVG attributes
@@ -229,18 +310,14 @@ export const createSvgStr = (icon: IconNode, attrs?: Record<string, string>): st
229
310
  'stroke-width': '2',
230
311
  'stroke-linecap': 'round',
231
312
  'stroke-linejoin': 'round',
232
- ...(attrs || {}),
313
+ ...attrs,
233
314
  };
234
-
235
- // Format SVG attributes string
236
- const svgAttrString = Object.entries(svgAttrs)
237
- .map(([key, value]) => `${key}="${value}"`)
238
- .join(' ');
315
+ const svgAttrString = toSafeAttributeString(svgAttrs);
239
316
 
240
317
  // Helper function to process a single element
241
318
  const processElement = (element: unknown): string => {
242
319
  if (!Array.isArray(element)) {
243
- return String(element);
320
+ return escapeHtmlText(String(element));
244
321
  }
245
322
 
246
323
  const [tag, attributes = {}, children = []] = element as [
@@ -248,12 +325,8 @@ export const createSvgStr = (icon: IconNode, attrs?: Record<string, string>): st
248
325
  Record<string, string>,
249
326
  unknown[],
250
327
  ];
251
- const tagName = String(tag);
252
-
253
- // Format attributes string
254
- const attrString = Object.entries(attributes)
255
- .map(([key, value]) => `${key}="${value}"`)
256
- .join(' ');
328
+ const tagName = toSafeTagName(tag);
329
+ const attrString = toSafeAttributeString(attributes);
257
330
 
258
331
  // Process children recursively
259
332
  let childrenString = '';
@@ -0,0 +1,14 @@
1
+ {
2
+ "extends": "../../tsconfig.build.base.json",
3
+ "compilerOptions": {
4
+ "declaration": true,
5
+ "declarationDir": "./dist",
6
+ "emitDeclarationOnly": true,
7
+ "module": "ESNext",
8
+ "moduleResolution": "bundler",
9
+ "outDir": "./dist",
10
+ "rootDir": "./src",
11
+ "skipLibCheck": true
12
+ },
13
+ "include": ["src/**/*.ts"]
14
+ }
package/tsconfig.json CHANGED
@@ -1,6 +1,16 @@
1
1
  {
2
- "extends": "./tsconfig.esm",
2
+ "extends": "../../tsconfig.base.json",
3
3
  "compilerOptions": {
4
- "outDir": "./dist",
5
- }
6
- }
4
+ "composite": true,
5
+ "declaration": true,
6
+ "declarationDir": "./dist/typecheck",
7
+ "emitDeclarationOnly": true,
8
+ "module": "ESNext",
9
+ "moduleResolution": "bundler",
10
+ "outDir": "./dist/typecheck",
11
+ "tsBuildInfoFile": "./dist/typecheck/tsconfig.tsbuildinfo",
12
+ "skipLibCheck": true
13
+ },
14
+ "include": ["src/**/*.ts"],
15
+ "references": [{ "path": "../common" }, { "path": "../pdf-lib" }]
16
+ }
@@ -0,0 +1,51 @@
1
+ import { readFileSync } from 'node:fs';
2
+ import { builtinModules } from 'node:module';
3
+ import { dirname, resolve } from 'node:path';
4
+ import { fileURLToPath } from 'node:url';
5
+ import { defineConfig } from 'vite';
6
+
7
+ const __dirname = dirname(fileURLToPath(import.meta.url));
8
+ const packageJson = JSON.parse(readFileSync(resolve(__dirname, 'package.json'), 'utf8')) as {
9
+ dependencies?: Record<string, string>;
10
+ peerDependencies?: Record<string, string>;
11
+ };
12
+
13
+ const builtinModuleSet = new Set([
14
+ ...builtinModules,
15
+ ...builtinModules.map((moduleName) => `node:${moduleName}`),
16
+ ]);
17
+ const packageDependencies = [
18
+ ...Object.keys(packageJson.dependencies ?? {}),
19
+ ...Object.keys(packageJson.peerDependencies ?? {}),
20
+ ];
21
+
22
+ const isExternal = (id: string) => {
23
+ if (id.startsWith('air-datepicker/locale/')) {
24
+ return false;
25
+ }
26
+
27
+ return (
28
+ builtinModuleSet.has(id) ||
29
+ packageDependencies.some((dependency) => id === dependency || id.startsWith(`${dependency}/`))
30
+ );
31
+ };
32
+
33
+ export default defineConfig({
34
+ build: {
35
+ lib: {
36
+ entry: {
37
+ builtins: resolve(__dirname, 'src/builtins.ts'),
38
+ index: resolve(__dirname, 'src/index.ts'),
39
+ tables: resolve(__dirname, 'src/tables.ts'),
40
+ utils: resolve(__dirname, 'src/utils.ts'),
41
+ },
42
+ fileName: (_, entryName) => `${entryName}.js`,
43
+ formats: ['es'],
44
+ },
45
+ minify: false,
46
+ outDir: 'dist',
47
+ rollupOptions: { external: isExternal },
48
+ sourcemap: true,
49
+ target: 'es2020',
50
+ },
51
+ });