@ai-matrx/alchemy 0.12.3 → 0.14.0

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 (105) hide show
  1. package/CHANGELOG.md +46 -0
  2. package/dist/actions.cjs.map +1 -1
  3. package/dist/actions.d.cts +19 -24
  4. package/dist/actions.d.ts +19 -24
  5. package/dist/actions.js.map +1 -1
  6. package/dist/checks.d.cts +2 -0
  7. package/dist/checks.d.ts +2 -0
  8. package/dist/core.cjs +4 -4
  9. package/dist/core.cjs.map +1 -1
  10. package/dist/core.d.cts +8 -58
  11. package/dist/core.d.ts +8 -58
  12. package/dist/core.js +4 -4
  13. package/dist/core.js.map +1 -1
  14. package/dist/declare/schema.json +3 -0
  15. package/dist/declare.cjs +1 -1
  16. package/dist/declare.cjs.map +1 -1
  17. package/dist/declare.d.cts +26 -1
  18. package/dist/declare.d.ts +26 -1
  19. package/dist/declare.js +1 -1
  20. package/dist/declare.js.map +1 -1
  21. package/dist/index.cjs +4 -4
  22. package/dist/index.cjs.map +1 -1
  23. package/dist/index.d.cts +8 -58
  24. package/dist/index.d.ts +8 -58
  25. package/dist/index.js +4 -4
  26. package/dist/index.js.map +1 -1
  27. package/dist/menu.d.cts +17 -22
  28. package/dist/menu.d.ts +17 -22
  29. package/dist/operate-document.cjs +2 -2
  30. package/dist/operate-document.cjs.map +1 -1
  31. package/dist/operate-document.d.cts +4 -42
  32. package/dist/operate-document.d.ts +4 -42
  33. package/dist/operate-document.js +2 -2
  34. package/dist/operate-document.js.map +1 -1
  35. package/dist/operate-rich-html.cjs +1 -1
  36. package/dist/operate-rich-html.cjs.map +1 -1
  37. package/dist/operate-rich-html.d.cts +3 -42
  38. package/dist/operate-rich-html.d.ts +3 -42
  39. package/dist/operate-rich-html.js +1 -1
  40. package/dist/operate-rich-html.js.map +1 -1
  41. package/dist/operate-server.cjs +1 -1
  42. package/dist/operate-server.cjs.map +1 -1
  43. package/dist/operate-server.d.cts +8 -46
  44. package/dist/operate-server.d.ts +8 -46
  45. package/dist/operate-server.js +1 -1
  46. package/dist/operate-server.js.map +1 -1
  47. package/dist/operate-xlsx.cjs +2 -2
  48. package/dist/operate-xlsx.cjs.map +1 -1
  49. package/dist/operate-xlsx.d.cts +4 -42
  50. package/dist/operate-xlsx.d.ts +4 -42
  51. package/dist/operate-xlsx.js +2 -2
  52. package/dist/operate-xlsx.js.map +1 -1
  53. package/dist/operate.cjs +4 -4
  54. package/dist/operate.cjs.map +1 -1
  55. package/dist/operate.d.cts +8 -58
  56. package/dist/operate.d.ts +8 -58
  57. package/dist/operate.js +4 -4
  58. package/dist/operate.js.map +1 -1
  59. package/dist/ports.d.cts +11 -15
  60. package/dist/ports.d.ts +11 -15
  61. package/dist/react-bar.cjs.map +1 -1
  62. package/dist/react-bar.d.cts +3 -1
  63. package/dist/react-bar.d.ts +3 -1
  64. package/dist/react-bar.js.map +1 -1
  65. package/dist/react-host.d.cts +17 -22
  66. package/dist/react-host.d.ts +17 -22
  67. package/dist/react-menu.cjs.map +1 -1
  68. package/dist/react-menu.d.cts +3 -1
  69. package/dist/react-menu.d.ts +3 -1
  70. package/dist/react-menu.js.map +1 -1
  71. package/dist/react-overflow.cjs.map +1 -1
  72. package/dist/react-overflow.d.cts +17 -22
  73. package/dist/react-overflow.d.ts +17 -22
  74. package/dist/react-overflow.js.map +1 -1
  75. package/dist/react-palette.cjs.map +1 -1
  76. package/dist/react-palette.d.cts +3 -1
  77. package/dist/react-palette.d.ts +3 -1
  78. package/dist/react-palette.js.map +1 -1
  79. package/dist/react-selection.cjs.map +1 -1
  80. package/dist/react-selection.d.cts +3 -1
  81. package/dist/react-selection.d.ts +3 -1
  82. package/dist/react-selection.js.map +1 -1
  83. package/dist/react-sheet.cjs.map +1 -1
  84. package/dist/react-sheet.d.cts +3 -1
  85. package/dist/react-sheet.d.ts +3 -1
  86. package/dist/react-sheet.js.map +1 -1
  87. package/dist/react-workspace.cjs +7 -0
  88. package/dist/react-workspace.cjs.map +1 -0
  89. package/dist/react-workspace.d.cts +441 -0
  90. package/dist/react-workspace.d.ts +441 -0
  91. package/dist/react-workspace.js +7 -0
  92. package/dist/react-workspace.js.map +1 -0
  93. package/dist/react.cjs +1 -1
  94. package/dist/react.cjs.map +1 -1
  95. package/dist/react.d.cts +2 -2
  96. package/dist/react.d.ts +2 -2
  97. package/dist/react.js +1 -1
  98. package/dist/react.js.map +1 -1
  99. package/dist/surface.cjs +1 -1
  100. package/dist/surface.cjs.map +1 -1
  101. package/dist/surface.d.cts +222 -16
  102. package/dist/surface.d.ts +222 -16
  103. package/dist/surface.js +1 -1
  104. package/dist/surface.js.map +1 -1
  105. package/package.json +14 -4
@@ -1,3 +1,5 @@
1
+ import { Payload } from '@ai-matrx/kit/transfer-json';
2
+
1
3
  interface AssetResolverPort {
2
4
  resolve(url: string, signal: AbortSignal): Promise<{
3
5
  url: string;
@@ -6,49 +8,9 @@ interface AssetResolverPort {
6
8
 
7
9
  /**
8
10
  * Framework-neutral transfer contracts (Alchemy Operate, CONTRACT §2.3). All data crossing this boundary is JSON.
9
- * Moved from `@ai-matrx/kit/content-transfer` in ALC-16; the format-adapter contract lives in `./contract`.
11
+ * Moved in ALC-16; `Json`/`Payload`/`Column` now live in `@ai-matrx/kit/transfer-json`; the format-adapter contract lives in `./contract`.
10
12
  */
11
- type Json = null | boolean | number | string | Json[] | {
12
- [key: string]: Json;
13
- };
14
- type Payload =
15
- /** A text payload may name its language (code blocks): downloads take its extension, Markdown fences it. */
16
- {
17
- kind: "text";
18
- text: string;
19
- language?: string;
20
- } | {
21
- kind: "markdown";
22
- text: string;
23
- } | {
24
- kind: "json";
25
- value: Json;
26
- } | {
27
- kind: "rows";
28
- rows: Record<string, Json>[];
29
- columns: Column[];
30
- } | {
31
- kind: "registered";
32
- format: string;
33
- value: Json;
34
- };
35
- type Column = {
36
- id: string;
37
- label: string;
38
- path: string;
39
- visible: boolean;
40
- exportable?: boolean;
41
- classification?: "ordinary" | "secret" | "credential";
42
- /** Declared field shape suitable for a projected table-schema export. */
43
- schema?: {
44
- dataType?: string;
45
- order?: number;
46
- required?: boolean;
47
- defaultValue?: Json;
48
- validation?: Json;
49
- metadata?: Json;
50
- };
51
- };
13
+
52
14
  type Omission = {
53
15
  path: string;
54
16
  reason: "excluded" | "filtered" | "truncated" | "unsupported" | "escaped" | "duplicate";
@@ -1,3 +1,5 @@
1
+ import { Payload } from '@ai-matrx/kit/transfer-json';
2
+
1
3
  interface AssetResolverPort {
2
4
  resolve(url: string, signal: AbortSignal): Promise<{
3
5
  url: string;
@@ -6,49 +8,9 @@ interface AssetResolverPort {
6
8
 
7
9
  /**
8
10
  * Framework-neutral transfer contracts (Alchemy Operate, CONTRACT §2.3). All data crossing this boundary is JSON.
9
- * Moved from `@ai-matrx/kit/content-transfer` in ALC-16; the format-adapter contract lives in `./contract`.
11
+ * Moved in ALC-16; `Json`/`Payload`/`Column` now live in `@ai-matrx/kit/transfer-json`; the format-adapter contract lives in `./contract`.
10
12
  */
11
- type Json = null | boolean | number | string | Json[] | {
12
- [key: string]: Json;
13
- };
14
- type Payload =
15
- /** A text payload may name its language (code blocks): downloads take its extension, Markdown fences it. */
16
- {
17
- kind: "text";
18
- text: string;
19
- language?: string;
20
- } | {
21
- kind: "markdown";
22
- text: string;
23
- } | {
24
- kind: "json";
25
- value: Json;
26
- } | {
27
- kind: "rows";
28
- rows: Record<string, Json>[];
29
- columns: Column[];
30
- } | {
31
- kind: "registered";
32
- format: string;
33
- value: Json;
34
- };
35
- type Column = {
36
- id: string;
37
- label: string;
38
- path: string;
39
- visible: boolean;
40
- exportable?: boolean;
41
- classification?: "ordinary" | "secret" | "credential";
42
- /** Declared field shape suitable for a projected table-schema export. */
43
- schema?: {
44
- dataType?: string;
45
- order?: number;
46
- required?: boolean;
47
- defaultValue?: Json;
48
- validation?: Json;
49
- metadata?: Json;
50
- };
51
- };
13
+
52
14
  type Omission = {
53
15
  path: string;
54
16
  reason: "excluded" | "filtered" | "truncated" | "unsupported" | "escaped" | "duplicate";
@@ -138,9 +138,9 @@ EOD`}return{to_workbook:dif_to_workbook,to_sheet:dif_to_sheet,from_sheet:sheet_t
138
138
  </table:calculation-settings>
139
139
  `);for(var i=0;i!=wb.SheetNames.length;++i)o.push(write_ws(wb.Sheets[wb.SheetNames[i]],wb,i,opts,nfs,((wb.Workbook||{}).WBProps||{}).date1904));return(wb.Workbook||{}).Names&&o.push(write_names_ods(wb.Workbook.Names,wb.SheetNames,-1)),o.push(` </office:spreadsheet>
140
140
  `),o.push(` </office:body>
141
- `),opts.bookType=="fods"?o.push("</office:document>"):o.push("</office:document-content>"),o.join("")}})();subarray=(function(){try{return typeof Uint8Array>"u"||typeof Uint8Array.prototype.subarray>"u"?"slice":typeof Buffer<"u"?typeof Buffer.prototype.subarray>"u"?"slice":(typeof Buffer.from=="function"?Buffer.from([72,62]):new Buffer([72,62]))instanceof Uint8Array?"subarray":"slice":"subarray"}catch{return"slice"}})();numbers_lut_new=function(){return{sst:[],rsst:[],ofmt:[],nfmt:[],fmla:[],ferr:[],cmnt:[]}};USE_WIDE_ROWS=!0;qreg=/"/g;utils={encode_col,encode_row,encode_cell,encode_range,decode_col,decode_row,split_cell,decode_cell,decode_range,format_cell,sheet_new,sheet_add_aoa,sheet_add_json,sheet_add_dom,aoa_to_sheet,json_to_sheet,table_to_sheet:parse_dom_table,table_to_book,sheet_to_csv,sheet_to_txt,sheet_to_json,sheet_to_html,sheet_to_formulae,sheet_to_row_object_array:sheet_to_json,sheet_get_cell:ws_get_cell_stub,book_new,book_append_sheet,book_set_sheet_visibility,cell_set_number_format,cell_set_hyperlink,cell_set_internal_link,cell_add_comment,sheet_set_array_formula,consts:{SHEET_VISIBLE:0,SHEET_HIDDEN:1,SHEET_VERY_HIDDEN:2}};__stream={to_json:write_json_stream,to_html:write_html_stream,to_csv:write_csv_stream,to_xlml:write_xlml_stream,set_readable},version=XLSX.version,xlsx_default={parse_xlscfb,parse_zip,read:readSync,readFile:readFileSync,readFileSync,write:writeSync,writeFile:writeFileSync,writeFileSync,writeFileAsync,writeXLSX:writeSyncXLSX,writeFileXLSX:writeFileSyncXLSX,utils,set_fs,set_cptable,stream:__stream,SSF,CFB}}});import{stringifyJson}from"@ai-matrx/kit/json-format";import{escapeHtml}from"@ai-matrx/kit/html-escape";var TRANSFER_ERROR=Symbol.for("ai-matrx.alchemy.operate.transfer-error"),ContentTransferError=class extends Error{code;path;constructor(code,message,path){super(message),this.code=code,this.path=path,this[TRANSFER_ERROR]=!0}static[Symbol.hasInstance](value){return typeof value=="object"&&value!==null&&value[TRANSFER_ERROR]===!0}};var enc=x=>x.replace(/~/g,"~0").replace(/\//g,"~1"),dec=x=>x.replace(/~1/g,"/").replace(/~0/g,"~");function deepFreeze(v){if(ArrayBuffer.isView(v))return v;if(v&&typeof v=="object"&&!Object.isFrozen(v)){Object.freeze(v);for(let x of Object.values(v))deepFreeze(x)}return v}function at(v,path){if(validatePointer(path),path==="")return v;if(!path.startsWith("/"))throw new ContentTransferError("invalid-path","Expected RFC 6901 pointer",path);let cur=v;for(let part of path.slice(1).split("/").map(dec))if(Array.isArray(cur))cur=cur[Number(part)];else if(cur&&typeof cur=="object")cur=Object.hasOwn(cur,part)?cur[part]:void 0;else return;return cur}function validatePointer(path){if(path!==""&&!path.startsWith("/")||/~(?![01])/u.test(path))throw new ContentTransferError("invalid-path","Expected an RFC 6901 JSON pointer",path)}function readTransferCell(row,column){return at(row,column.path)}var textValue=value=>value==null?"":typeof value=="string"?value:stringifyJson(value,{style:"compact"});function sealTransferArtifact(artifact){if(!artifact.file)return deepFreeze({...artifact,omissions:artifact.omissions.map(o=>({...o}))});let bytes=artifact.file.bytes.slice(),file={filename:artifact.file.filename,mime:artifact.file.mime,get bytes(){return bytes.slice()}};return deepFreeze({...artifact,file,omissions:artifact.omissions.map(o=>({...o}))})}function exportedColumns(columns){return columns.filter(c=>c.visible&&c.exportable!==!1&&c.classification!=="secret"&&c.classification!=="credential")}function serialize(draft,format,options={}){let payload=draft.payload,omissions=draft.omissions.map(o=>({...o})),plainText="",html,mime="text/plain;charset=utf-8",extension="txt",columnCell=(row,column)=>textValue(readTransferCell(row,column));if((format==="csv"||format==="tsv")&&payload.kind!=="rows")throw new ContentTransferError("unsupported-format",`${format.toUpperCase()} requires tabular data`);if(format==="json"||format==="compact-json"){let value=payload.kind==="rows"?payload.rows:payload.kind==="text"||payload.kind==="markdown"?payload.text:payload.value;plainText=stringifyJson(value,{style:format==="json"?"pretty":"compact"}),mime="application/json;charset=utf-8",extension="json"}else if(payload.kind==="rows"){let columns=exportedColumns(payload.columns);if(format==="markdown"){let escapeCell=value=>escapeHtml(value).replace(/\\/g,"\\\\").replace(/\|/g,"\\|").replace(/\r\n|\r|\n/g,"<br>");plainText=[`| ${columns.map(c=>escapeCell(c.label)).join(" | ")} |`,`| ${columns.map(()=>"---").join(" | ")} |`,...payload.rows.map(row=>`| ${columns.map(c=>escapeCell(columnCell(row,c))).join(" | ")} |`)].join(`
141
+ `),opts.bookType=="fods"?o.push("</office:document>"):o.push("</office:document-content>"),o.join("")}})();subarray=(function(){try{return typeof Uint8Array>"u"||typeof Uint8Array.prototype.subarray>"u"?"slice":typeof Buffer<"u"?typeof Buffer.prototype.subarray>"u"?"slice":(typeof Buffer.from=="function"?Buffer.from([72,62]):new Buffer([72,62]))instanceof Uint8Array?"subarray":"slice":"subarray"}catch{return"slice"}})();numbers_lut_new=function(){return{sst:[],rsst:[],ofmt:[],nfmt:[],fmla:[],ferr:[],cmnt:[]}};USE_WIDE_ROWS=!0;qreg=/"/g;utils={encode_col,encode_row,encode_cell,encode_range,decode_col,decode_row,split_cell,decode_cell,decode_range,format_cell,sheet_new,sheet_add_aoa,sheet_add_json,sheet_add_dom,aoa_to_sheet,json_to_sheet,table_to_sheet:parse_dom_table,table_to_book,sheet_to_csv,sheet_to_txt,sheet_to_json,sheet_to_html,sheet_to_formulae,sheet_to_row_object_array:sheet_to_json,sheet_get_cell:ws_get_cell_stub,book_new,book_append_sheet,book_set_sheet_visibility,cell_set_number_format,cell_set_hyperlink,cell_set_internal_link,cell_add_comment,sheet_set_array_formula,consts:{SHEET_VISIBLE:0,SHEET_HIDDEN:1,SHEET_VERY_HIDDEN:2}};__stream={to_json:write_json_stream,to_html:write_html_stream,to_csv:write_csv_stream,to_xlml:write_xlml_stream,set_readable},version=XLSX.version,xlsx_default={parse_xlscfb,parse_zip,read:readSync,readFile:readFileSync,readFileSync,write:writeSync,writeFile:writeFileSync,writeFileSync,writeFileAsync,writeXLSX:writeSyncXLSX,writeFileXLSX:writeFileSyncXLSX,utils,set_fs,set_cptable,stream:__stream,SSF,CFB}}});import{stringifyJson}from"@ai-matrx/kit/json-format";import{escapeHtml}from"@ai-matrx/kit/html-escape";import{ContentTransferError,cloneTransferJson,normalizeTransferJsonAtPath}from"@ai-matrx/kit/transfer-json";import{ContentTransferError as ContentTransferError2,normalizeTransferJson as normalizeTransferJson2}from"@ai-matrx/kit/transfer-json";var enc=x=>x.replace(/~/g,"~0").replace(/\//g,"~1"),dec=x=>x.replace(/~1/g,"/").replace(/~0/g,"~");function deepFreeze(v){if(ArrayBuffer.isView(v))return v;if(v&&typeof v=="object"&&!Object.isFrozen(v)){Object.freeze(v);for(let x of Object.values(v))deepFreeze(x)}return v}function at(v,path){if(validatePointer(path),path==="")return v;if(!path.startsWith("/"))throw new ContentTransferError("invalid-path","Expected RFC 6901 pointer",path);let cur=v;for(let part of path.slice(1).split("/").map(dec))if(Array.isArray(cur))cur=cur[Number(part)];else if(cur&&typeof cur=="object")cur=Object.hasOwn(cur,part)?cur[part]:void 0;else return;return cur}function validatePointer(path){if(path!==""&&!path.startsWith("/")||/~(?![01])/u.test(path))throw new ContentTransferError("invalid-path","Expected an RFC 6901 JSON pointer",path)}function readTransferCell(row,column){return at(row,column.path)}var textValue=value=>value==null?"":typeof value=="string"?value:stringifyJson(value,{style:"compact"});function sealTransferArtifact(artifact){if(!artifact.file)return deepFreeze({...artifact,omissions:artifact.omissions.map(o=>({...o}))});let bytes=artifact.file.bytes.slice(),file={filename:artifact.file.filename,mime:artifact.file.mime,get bytes(){return bytes.slice()}};return deepFreeze({...artifact,file,omissions:artifact.omissions.map(o=>({...o}))})}function exportedColumns(columns){return columns.filter(c=>c.visible&&c.exportable!==!1&&c.classification!=="secret"&&c.classification!=="credential")}function serialize(draft,format,options={}){let payload=draft.payload,omissions=draft.omissions.map(o=>({...o})),plainText="",html,mime="text/plain;charset=utf-8",extension="txt",columnCell=(row,column)=>textValue(readTransferCell(row,column));if((format==="csv"||format==="tsv")&&payload.kind!=="rows")throw new ContentTransferError("unsupported-format",`${format.toUpperCase()} requires tabular data`);if(format==="json"||format==="compact-json"){let value=payload.kind==="rows"?payload.rows:payload.kind==="text"||payload.kind==="markdown"?payload.text:payload.value;plainText=stringifyJson(value,{style:format==="json"?"pretty":"compact"}),mime="application/json;charset=utf-8",extension="json"}else if(payload.kind==="rows"){let columns=exportedColumns(payload.columns);if(format==="markdown"){let escapeCell=value=>escapeHtml(value).replace(/\\/g,"\\\\").replace(/\|/g,"\\|").replace(/\r\n|\r|\n/g,"<br>");plainText=[`| ${columns.map(c=>escapeCell(c.label)).join(" | ")} |`,`| ${columns.map(()=>"---").join(" | ")} |`,...payload.rows.map(row=>`| ${columns.map(c=>escapeCell(columnCell(row,c))).join(" | ")} |`)].join(`
142
142
  `),mime="text/markdown;charset=utf-8",extension="md"}else{let delimiter=format==="csv"?",":" ",safe=options.spreadsheetSafe??format==="tsv",encode=(value,path,isString=!0)=>{let text=value;return safe&&isString&&/^[\t\r\n ]*[=+\-@]/.test(text)&&(text=`'${text}`,omissions.push({path,reason:"escaped",count:1})),text.includes(delimiter)||/["\n\r]/.test(text)?`"${text.replace(/"/g,'""')}"`:text};plainText=[columns.map(c=>encode(c.label,`/columns/${enc(c.id)}`)).join(delimiter),...payload.rows.map((row,index)=>columns.map(c=>encode(columnCell(row,c),`/rows/${index}${c.path}`,typeof readTransferCell(row,c)=="string")).join(delimiter))].join(`
143
- `),format==="csv"&&(mime="text/csv;charset=utf-8",extension="csv"),format==="tsv"&&(mime="text/tab-separated-values;charset=utf-8",extension="tsv")}format==="html"&&(html=`<table><thead><tr>${columns.map(c=>`<th>${escapeHtml(c.label)}</th>`).join("")}</tr></thead><tbody>${payload.rows.map(row=>`<tr>${columns.map(c=>`<td>${escapeHtml(columnCell(row,c)).replace(/\r\n|\r|\n/g,"<br>")}</td>`).join("")}</tr>`).join("")}</tbody></table>`)}else plainText=payload.kind==="text"||payload.kind==="markdown"?payload.text:stringifyJson(payload.value,{style:"pretty"}),format==="markdown"&&(mime="text/markdown;charset=utf-8",extension="md"),format==="html"&&(html=`<pre>${escapeHtml(plainText)}</pre>`);return format==="html"&&(mime="text/html;charset=utf-8",extension="html"),sealTransferArtifact({snapshotId:draft.snapshotId,draftRevision:draft.revision,format,plainText,...html===void 0?{}:{html},file:{filename:options.filename??`export.${extension}`,mime,bytes:new TextEncoder().encode(format==="html"?html??plainText:plainText)},omissions})}var cell=value=>value==null?null:typeof value=="string"||typeof value=="number"||typeof value=="boolean"?value:JSON.stringify(value),xlsxEngine={async build(draft,options,signal){if(signal.aborted)throw new DOMException("Cancelled","AbortError");let p=draft.payload;if(p.kind!=="rows")throw new ContentTransferError("unsupported-format","An Excel workbook needs table rows. Download it as CSV or JSON instead.");let columns=p.columns.filter(c=>c.visible&&c.exportable!==!1&&c.classification!=="secret"&&c.classification!=="credential"),XLSX2=await Promise.resolve().then(()=>(init_xlsx(),xlsx_exports));if(signal.aborted)throw new DOMException("Cancelled","AbortError");let sheet=XLSX2.utils.aoa_to_sheet([columns.map(c=>c.label),...p.rows.map(row=>columns.map(c=>cell(readTransferCell(row,c))))]),book=XLSX2.utils.book_new(),filename=options.filename??"export.xlsx",sheetName=filename.replace(/\.xlsx$/i,"").replace(/[\\/?*[\]:]/g," ").trim().slice(0,31)||"Data";XLSX2.utils.book_append_sheet(book,sheet,sheetName);let written=XLSX2.write(book,{type:"array",bookType:"xlsx",compression:!0});return sealTransferArtifact({snapshotId:draft.snapshotId,draftRevision:draft.revision,format:"xlsx",plainText:serialize(draft,"tsv",{spreadsheetSafe:!0}).plainText,file:{filename,mime:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",bytes:written instanceof Uint8Array?written:new Uint8Array(written)},omissions:draft.omissions.map(o=>({...o}))})}};export{xlsxEngine};
143
+ `),format==="csv"&&(mime="text/csv;charset=utf-8",extension="csv"),format==="tsv"&&(mime="text/tab-separated-values;charset=utf-8",extension="tsv")}format==="html"&&(html=`<table><thead><tr>${columns.map(c=>`<th>${escapeHtml(c.label)}</th>`).join("")}</tr></thead><tbody>${payload.rows.map(row=>`<tr>${columns.map(c=>`<td>${escapeHtml(columnCell(row,c)).replace(/\r\n|\r|\n/g,"<br>")}</td>`).join("")}</tr>`).join("")}</tbody></table>`)}else plainText=payload.kind==="text"||payload.kind==="markdown"?payload.text:stringifyJson(payload.value,{style:"pretty"}),format==="markdown"&&(mime="text/markdown;charset=utf-8",extension="md"),format==="html"&&(html=`<pre>${escapeHtml(plainText)}</pre>`);return format==="html"&&(mime="text/html;charset=utf-8",extension="html"),sealTransferArtifact({snapshotId:draft.snapshotId,draftRevision:draft.revision,format,plainText,...html===void 0?{}:{html},file:{filename:options.filename??`export.${extension}`,mime,bytes:new TextEncoder().encode(format==="html"?html??plainText:plainText)},omissions})}var cell=value=>value==null?null:typeof value=="string"||typeof value=="number"||typeof value=="boolean"?value:JSON.stringify(value),xlsxEngine={async build(draft,options,signal){if(signal.aborted)throw new DOMException("Cancelled","AbortError");let p=draft.payload;if(p.kind!=="rows")throw new ContentTransferError2("unsupported-format","An Excel workbook needs table rows. Download it as CSV or JSON instead.");let columns=p.columns.filter(c=>c.visible&&c.exportable!==!1&&c.classification!=="secret"&&c.classification!=="credential"),XLSX2=await Promise.resolve().then(()=>(init_xlsx(),xlsx_exports));if(signal.aborted)throw new DOMException("Cancelled","AbortError");let sheet=XLSX2.utils.aoa_to_sheet([columns.map(c=>c.label),...p.rows.map(row=>columns.map(c=>cell(readTransferCell(row,c))))]),book=XLSX2.utils.book_new(),filename=options.filename??"export.xlsx",sheetName=filename.replace(/\.xlsx$/i,"").replace(/[\\/?*[\]:]/g," ").trim().slice(0,31)||"Data";XLSX2.utils.book_append_sheet(book,sheet,sheetName);let written=XLSX2.write(book,{type:"array",bookType:"xlsx",compression:!0});return sealTransferArtifact({snapshotId:draft.snapshotId,draftRevision:draft.revision,format:"xlsx",plainText:serialize(draft,"tsv",{spreadsheetSafe:!0}).plainText,file:{filename,mime:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",bytes:written instanceof Uint8Array?written:new Uint8Array(written)},omissions:draft.omissions.map(o=>({...o}))})}};export{xlsxEngine};
144
144
  /*! Bundled license information:
145
145
 
146
146
  xlsx/xlsx.mjs: