@graphty/graph-io 0.3.25 → 0.3.26
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.
- package/README.md +49 -414
- package/dist/chunks/children-CL3Cy0ez.js.map +1 -1
- package/dist/chunks/choose-BbJI55dx.js +56 -0
- package/dist/chunks/choose-BbJI55dx.js.map +1 -0
- package/dist/chunks/constants-BCsFsMj4.js +231 -0
- package/dist/chunks/constants-BCsFsMj4.js.map +1 -0
- package/dist/chunks/{escape-B-tkk_Cl.js → escape-D0g6NNUy.js} +382 -92
- package/dist/chunks/escape-D0g6NNUy.js.map +1 -0
- package/dist/chunks/export-BTI4yQgy.js +4333 -0
- package/dist/chunks/export-BTI4yQgy.js.map +1 -0
- package/dist/chunks/exporter-BMqk5oxW.js +3465 -0
- package/dist/chunks/exporter-BMqk5oxW.js.map +1 -0
- package/dist/chunks/{importer-eUREhBGj.js → exporter-Cra2GYcN.js} +4969 -3201
- package/dist/chunks/exporter-Cra2GYcN.js.map +1 -0
- package/dist/chunks/{exporter-BGrsWamJ.js → exporter-Dxh231ZF.js} +38 -229
- package/dist/chunks/exporter-Dxh231ZF.js.map +1 -0
- package/dist/chunks/{exporter-DIeGJXAZ.js → exporter-tne475KK.js} +22 -20
- package/dist/chunks/exporter-tne475KK.js.map +1 -0
- package/dist/chunks/importer-90YWhJoF.js +2811 -0
- package/dist/chunks/importer-90YWhJoF.js.map +1 -0
- package/dist/chunks/{importer-D_e7e7LX.js → importer-Bcl1d4xH.js} +398 -145
- package/dist/chunks/importer-Bcl1d4xH.js.map +1 -0
- package/dist/chunks/{importer-BWY2FFc5.js → importer-BfIsp1f9.js} +255 -77
- package/dist/chunks/importer-BfIsp1f9.js.map +1 -0
- package/dist/chunks/{importer-zGLo8Dg_.js → importer-C_TEA1zJ.js} +484 -157
- package/dist/chunks/importer-C_TEA1zJ.js.map +1 -0
- package/dist/chunks/{importer-DET1tg6s.js → importer-DCjOvO7U.js} +1687 -310
- package/dist/chunks/importer-DCjOvO7U.js.map +1 -0
- package/dist/chunks/{importer-vi3bSdtw.js → importer-DfVu6j59.js} +509 -76
- package/dist/chunks/importer-DfVu6j59.js.map +1 -0
- package/dist/chunks/{importer-DIrbbnAf.js → importer-Dku_VAIY.js} +585 -226
- package/dist/chunks/importer-Dku_VAIY.js.map +1 -0
- package/dist/chunks/json-elements-3tnyt5uZ.js +1225 -0
- package/dist/chunks/json-elements-3tnyt5uZ.js.map +1 -0
- package/dist/chunks/ontology-export-B9Tcf37D.js +357 -0
- package/dist/chunks/ontology-export-B9Tcf37D.js.map +1 -0
- package/dist/chunks/{records-dbRkxwaq.js → records-CQXT__mY.js} +298 -114
- package/dist/chunks/records-CQXT__mY.js.map +1 -0
- package/dist/chunks/{text-Dr0Ifpag.js → text-DmcUs5_Q.js} +29 -11
- package/dist/chunks/text-DmcUs5_Q.js.map +1 -0
- package/dist/chunks/{writer-C7flM-Ih.js → writer-DxjgHwSe.js} +19 -1
- package/dist/chunks/writer-DxjgHwSe.js.map +1 -0
- package/dist/csv.js +951 -261
- package/dist/csv.js.map +1 -1
- package/dist/cx.js +6 -3
- package/dist/cx2.js +2 -2
- package/dist/cys.js +6 -3
- package/dist/dot.js +1 -1
- package/dist/gexf.js +554 -122
- package/dist/gexf.js.map +1 -1
- package/dist/gml.js +342 -85
- package/dist/gml.js.map +1 -1
- package/dist/graph-io.js +1105 -213
- package/dist/graph-io.js.map +1 -1
- package/dist/graphml.js +3 -2
- package/dist/graphml.js.map +1 -1
- package/dist/json.js +3 -2
- package/dist/neo4j.js +564 -157
- package/dist/neo4j.js.map +1 -1
- package/dist/obo.js +6 -3
- package/dist/pajek.js +1 -1
- package/dist/src/children.d.ts +18 -6
- package/dist/src/children.d.ts.map +1 -1
- package/dist/src/children.js +6 -3
- package/dist/src/children.js.map +1 -1
- package/dist/src/common/attributes.d.ts +29 -11
- package/dist/src/common/attributes.d.ts.map +1 -1
- package/dist/src/common/attributes.js +25 -7
- package/dist/src/common/attributes.js.map +1 -1
- package/dist/src/common/cell-budget.d.ts +9 -2
- package/dist/src/common/cell-budget.d.ts.map +1 -1
- package/dist/src/common/cell-budget.js +11 -3
- package/dist/src/common/cell-budget.js.map +1 -1
- package/dist/src/common/choose.d.ts +19 -0
- package/dist/src/common/choose.d.ts.map +1 -0
- package/dist/src/common/choose.js +72 -0
- package/dist/src/common/choose.js.map +1 -0
- package/dist/src/common/codes.d.ts +456 -66
- package/dist/src/common/codes.d.ts.map +1 -1
- package/dist/src/common/codes.js +458 -66
- package/dist/src/common/codes.js.map +1 -1
- package/dist/src/common/compare.d.ts +81 -0
- package/dist/src/common/compare.d.ts.map +1 -0
- package/dist/src/common/compare.js +394 -0
- package/dist/src/common/compare.js.map +1 -0
- package/dist/src/common/cx-export.d.ts +123 -0
- package/dist/src/common/cx-export.d.ts.map +1 -0
- package/dist/src/common/cx-export.js +334 -0
- package/dist/src/common/cx-export.js.map +1 -0
- package/dist/src/common/declared-types.d.ts +22 -2
- package/dist/src/common/declared-types.d.ts.map +1 -1
- package/dist/src/common/declared-types.js +19 -1
- package/dist/src/common/declared-types.js.map +1 -1
- package/dist/src/common/direction.d.ts +74 -50
- package/dist/src/common/direction.d.ts.map +1 -1
- package/dist/src/common/direction.js +47 -27
- package/dist/src/common/direction.js.map +1 -1
- package/dist/src/common/escape.d.ts +21 -9
- package/dist/src/common/escape.d.ts.map +1 -1
- package/dist/src/common/escape.js +33 -17
- package/dist/src/common/escape.js.map +1 -1
- package/dist/src/common/export.d.ts +144 -32
- package/dist/src/common/export.d.ts.map +1 -1
- package/dist/src/common/export.js +216 -42
- package/dist/src/common/export.js.map +1 -1
- package/dist/src/common/format.d.ts +23 -1
- package/dist/src/common/format.d.ts.map +1 -1
- package/dist/src/common/format.js +26 -1
- package/dist/src/common/format.js.map +1 -1
- package/dist/src/common/ids.d.ts +9 -2
- package/dist/src/common/ids.d.ts.map +1 -1
- package/dist/src/common/ids.js +6 -2
- package/dist/src/common/ids.js.map +1 -1
- package/dist/src/common/input.d.ts +122 -28
- package/dist/src/common/input.d.ts.map +1 -1
- package/dist/src/common/input.js +890 -124
- package/dist/src/common/input.js.map +1 -1
- package/dist/src/common/json-elements.d.ts +144 -20
- package/dist/src/common/json-elements.d.ts.map +1 -1
- package/dist/src/common/json-elements.js +868 -188
- package/dist/src/common/json-elements.js.map +1 -1
- package/dist/src/common/line-format.d.ts +90 -0
- package/dist/src/common/line-format.d.ts.map +1 -0
- package/dist/src/common/line-format.js +185 -0
- package/dist/src/common/line-format.js.map +1 -0
- package/dist/src/common/lists.d.ts +6 -1
- package/dist/src/common/lists.d.ts.map +1 -1
- package/dist/src/common/lists.js +2 -0
- package/dist/src/common/lists.js.map +1 -1
- package/dist/src/common/ontology-export.d.ts +167 -0
- package/dist/src/common/ontology-export.d.ts.map +1 -0
- package/dist/src/common/ontology-export.js +359 -0
- package/dist/src/common/ontology-export.js.map +1 -0
- package/dist/src/common/ontology.d.ts +25 -3
- package/dist/src/common/ontology.d.ts.map +1 -1
- package/dist/src/common/ontology.js +30 -9
- package/dist/src/common/ontology.js.map +1 -1
- package/dist/src/common/options.d.ts +62 -12
- package/dist/src/common/options.d.ts.map +1 -1
- package/dist/src/common/options.js +89 -11
- package/dist/src/common/options.js.map +1 -1
- package/dist/src/common/plural.d.ts +31 -0
- package/dist/src/common/plural.d.ts.map +1 -0
- package/dist/src/common/plural.js +46 -0
- package/dist/src/common/plural.js.map +1 -0
- package/dist/src/common/report.d.ts +72 -14
- package/dist/src/common/report.d.ts.map +1 -1
- package/dist/src/common/report.js +146 -22
- package/dist/src/common/report.js.map +1 -1
- package/dist/src/common/temporal.d.ts +22 -5
- package/dist/src/common/temporal.d.ts.map +1 -1
- package/dist/src/common/temporal.js +13 -2
- package/dist/src/common/temporal.js.map +1 -1
- package/dist/src/common/text.d.ts +39 -23
- package/dist/src/common/text.d.ts.map +1 -1
- package/dist/src/common/text.js +51 -21
- package/dist/src/common/text.js.map +1 -1
- package/dist/src/common/weights.d.ts +37 -4
- package/dist/src/common/weights.d.ts.map +1 -1
- package/dist/src/common/weights.js +61 -2
- package/dist/src/common/weights.js.map +1 -1
- package/dist/src/common/writer.d.ts +19 -3
- package/dist/src/common/writer.d.ts.map +1 -1
- package/dist/src/common/writer.js +30 -2
- package/dist/src/common/writer.js.map +1 -1
- package/dist/src/common/xml.d.ts +125 -9
- package/dist/src/common/xml.d.ts.map +1 -1
- package/dist/src/common/xml.js +400 -83
- package/dist/src/common/xml.js.map +1 -1
- package/dist/src/common/zip.d.ts +44 -4
- package/dist/src/common/zip.d.ts.map +1 -1
- package/dist/src/common/zip.js +134 -5
- package/dist/src/common/zip.js.map +1 -1
- package/dist/src/formats/csv/exporter.d.ts +80 -24
- package/dist/src/formats/csv/exporter.d.ts.map +1 -1
- package/dist/src/formats/csv/exporter.js +145 -32
- package/dist/src/formats/csv/exporter.js.map +1 -1
- package/dist/src/formats/csv/header.d.ts +38 -9
- package/dist/src/formats/csv/header.d.ts.map +1 -1
- package/dist/src/formats/csv/header.js +46 -10
- package/dist/src/formats/csv/header.js.map +1 -1
- package/dist/src/formats/csv/importer.d.ts +187 -37
- package/dist/src/formats/csv/importer.d.ts.map +1 -1
- package/dist/src/formats/csv/importer.js +835 -204
- package/dist/src/formats/csv/importer.js.map +1 -1
- package/dist/src/formats/csv/index.d.ts +100 -19
- package/dist/src/formats/csv/index.d.ts.map +1 -1
- package/dist/src/formats/csv/index.js +94 -21
- package/dist/src/formats/csv/index.js.map +1 -1
- package/dist/src/formats/csv/records.d.ts +95 -10
- package/dist/src/formats/csv/records.d.ts.map +1 -1
- package/dist/src/formats/csv/records.js +333 -122
- package/dist/src/formats/csv/records.js.map +1 -1
- package/dist/src/formats/csv/values.d.ts +1 -0
- package/dist/src/formats/csv/values.d.ts.map +1 -1
- package/dist/src/formats/csv/values.js +1 -0
- package/dist/src/formats/csv/values.js.map +1 -1
- package/dist/src/formats/cx/exporter.d.ts +102 -0
- package/dist/src/formats/cx/exporter.d.ts.map +1 -0
- package/dist/src/formats/cx/exporter.js +1217 -0
- package/dist/src/formats/cx/exporter.js.map +1 -0
- package/dist/src/formats/cx/importer.d.ts +79 -32
- package/dist/src/formats/cx/importer.d.ts.map +1 -1
- package/dist/src/formats/cx/importer.js +680 -285
- package/dist/src/formats/cx/importer.js.map +1 -1
- package/dist/src/formats/cx/index.d.ts +4 -3
- package/dist/src/formats/cx/index.d.ts.map +1 -1
- package/dist/src/formats/cx/index.js +4 -3
- package/dist/src/formats/cx/index.js.map +1 -1
- package/dist/src/formats/cx2/exporter.d.ts +29 -11
- package/dist/src/formats/cx2/exporter.d.ts.map +1 -1
- package/dist/src/formats/cx2/exporter.js +39 -268
- package/dist/src/formats/cx2/exporter.js.map +1 -1
- package/dist/src/formats/cx2/importer.d.ts +78 -28
- package/dist/src/formats/cx2/importer.d.ts.map +1 -1
- package/dist/src/formats/cx2/importer.js +226 -79
- package/dist/src/formats/cx2/importer.js.map +1 -1
- package/dist/src/formats/cx2/index.d.ts +2 -1
- package/dist/src/formats/cx2/index.d.ts.map +1 -1
- package/dist/src/formats/cx2/index.js +2 -1
- package/dist/src/formats/cx2/index.js.map +1 -1
- package/dist/src/formats/cys/constants.d.ts +66 -17
- package/dist/src/formats/cys/constants.d.ts.map +1 -1
- package/dist/src/formats/cys/constants.js +59 -18
- package/dist/src/formats/cys/constants.js.map +1 -1
- package/dist/src/formats/cys/exporter.d.ts +118 -0
- package/dist/src/formats/cys/exporter.d.ts.map +1 -0
- package/dist/src/formats/cys/exporter.js +1072 -0
- package/dist/src/formats/cys/exporter.js.map +1 -0
- package/dist/src/formats/cys/importer.d.ts +22 -8
- package/dist/src/formats/cys/importer.d.ts.map +1 -1
- package/dist/src/formats/cys/importer.js +510 -149
- package/dist/src/formats/cys/importer.js.map +1 -1
- package/dist/src/formats/cys/index.d.ts +4 -2
- package/dist/src/formats/cys/index.d.ts.map +1 -1
- package/dist/src/formats/cys/index.js +4 -2
- package/dist/src/formats/cys/index.js.map +1 -1
- package/dist/src/formats/cys/session.d.ts +46 -7
- package/dist/src/formats/cys/session.d.ts.map +1 -1
- package/dist/src/formats/cys/session.js +98 -24
- package/dist/src/formats/cys/session.js.map +1 -1
- package/dist/src/formats/cys/tables.d.ts +9 -2
- package/dist/src/formats/cys/tables.d.ts.map +1 -1
- package/dist/src/formats/cys/tables.js +29 -7
- package/dist/src/formats/cys/tables.js.map +1 -1
- package/dist/src/formats/dot/exporter.d.ts +42 -14
- package/dist/src/formats/dot/exporter.d.ts.map +1 -1
- package/dist/src/formats/dot/exporter.js +56 -29
- package/dist/src/formats/dot/exporter.js.map +1 -1
- package/dist/src/formats/dot/importer.d.ts +91 -29
- package/dist/src/formats/dot/importer.d.ts.map +1 -1
- package/dist/src/formats/dot/importer.js +190 -39
- package/dist/src/formats/dot/importer.js.map +1 -1
- package/dist/src/formats/dot/index.d.ts +2 -1
- package/dist/src/formats/dot/index.d.ts.map +1 -1
- package/dist/src/formats/dot/index.js +2 -1
- package/dist/src/formats/dot/index.js.map +1 -1
- package/dist/src/formats/dot/names.d.ts +44 -11
- package/dist/src/formats/dot/names.d.ts.map +1 -1
- package/dist/src/formats/dot/names.js +44 -11
- package/dist/src/formats/dot/names.js.map +1 -1
- package/dist/src/formats/dot/tokenizer.d.ts +9 -2
- package/dist/src/formats/dot/tokenizer.d.ts.map +1 -1
- package/dist/src/formats/dot/tokenizer.js +20 -5
- package/dist/src/formats/dot/tokenizer.js.map +1 -1
- package/dist/src/formats/gexf/exporter.d.ts +46 -15
- package/dist/src/formats/gexf/exporter.d.ts.map +1 -1
- package/dist/src/formats/gexf/exporter.js +45 -15
- package/dist/src/formats/gexf/exporter.js.map +1 -1
- package/dist/src/formats/gexf/importer.d.ts +87 -23
- package/dist/src/formats/gexf/importer.d.ts.map +1 -1
- package/dist/src/formats/gexf/importer.js +471 -90
- package/dist/src/formats/gexf/importer.js.map +1 -1
- package/dist/src/formats/gexf/index.d.ts +84 -21
- package/dist/src/formats/gexf/index.d.ts.map +1 -1
- package/dist/src/formats/gexf/index.js +80 -23
- package/dist/src/formats/gexf/index.js.map +1 -1
- package/dist/src/formats/gexf/schema.d.ts +67 -15
- package/dist/src/formats/gexf/schema.d.ts.map +1 -1
- package/dist/src/formats/gexf/schema.js +59 -13
- package/dist/src/formats/gexf/schema.js.map +1 -1
- package/dist/src/formats/gml/exporter.d.ts +69 -21
- package/dist/src/formats/gml/exporter.d.ts.map +1 -1
- package/dist/src/formats/gml/exporter.js +74 -29
- package/dist/src/formats/gml/exporter.js.map +1 -1
- package/dist/src/formats/gml/importer.d.ts +116 -25
- package/dist/src/formats/gml/importer.d.ts.map +1 -1
- package/dist/src/formats/gml/importer.js +290 -61
- package/dist/src/formats/gml/importer.js.map +1 -1
- package/dist/src/formats/gml/index.d.ts +87 -24
- package/dist/src/formats/gml/index.d.ts.map +1 -1
- package/dist/src/formats/gml/index.js +79 -26
- package/dist/src/formats/gml/index.js.map +1 -1
- package/dist/src/formats/gml/syntax.d.ts +67 -18
- package/dist/src/formats/gml/syntax.d.ts.map +1 -1
- package/dist/src/formats/gml/syntax.js +108 -26
- package/dist/src/formats/gml/syntax.js.map +1 -1
- package/dist/src/formats/graphml/constants.d.ts +174 -44
- package/dist/src/formats/graphml/constants.d.ts.map +1 -1
- package/dist/src/formats/graphml/constants.js +165 -44
- package/dist/src/formats/graphml/constants.js.map +1 -1
- package/dist/src/formats/graphml/exporter.d.ts +17 -9
- package/dist/src/formats/graphml/exporter.d.ts.map +1 -1
- package/dist/src/formats/graphml/exporter.js +33 -12
- package/dist/src/formats/graphml/exporter.js.map +1 -1
- package/dist/src/formats/graphml/importer.d.ts +19 -7
- package/dist/src/formats/graphml/importer.d.ts.map +1 -1
- package/dist/src/formats/graphml/importer.js +466 -39
- package/dist/src/formats/graphml/importer.js.map +1 -1
- package/dist/src/formats/graphml/index.d.ts +2 -1
- package/dist/src/formats/graphml/index.d.ts.map +1 -1
- package/dist/src/formats/graphml/index.js +2 -1
- package/dist/src/formats/graphml/index.js.map +1 -1
- package/dist/src/formats/graphml/tree.d.ts +6 -2
- package/dist/src/formats/graphml/tree.d.ts.map +1 -1
- package/dist/src/formats/graphml/tree.js +6 -2
- package/dist/src/formats/graphml/tree.js.map +1 -1
- package/dist/src/formats/graphml/yfiles.d.ts +8 -3
- package/dist/src/formats/graphml/yfiles.d.ts.map +1 -1
- package/dist/src/formats/graphml/yfiles.js +36 -15
- package/dist/src/formats/graphml/yfiles.js.map +1 -1
- package/dist/src/formats/json/dialect.d.ts +88 -24
- package/dist/src/formats/json/dialect.d.ts.map +1 -1
- package/dist/src/formats/json/dialect.js +109 -19
- package/dist/src/formats/json/dialect.js.map +1 -1
- package/dist/src/formats/json/exporter.d.ts +134 -22
- package/dist/src/formats/json/exporter.d.ts.map +1 -1
- package/dist/src/formats/json/exporter.js +135 -54
- package/dist/src/formats/json/exporter.js.map +1 -1
- package/dist/src/formats/json/importer.d.ts +173 -52
- package/dist/src/formats/json/importer.d.ts.map +1 -1
- package/dist/src/formats/json/importer.js +899 -220
- package/dist/src/formats/json/importer.js.map +1 -1
- package/dist/src/formats/json/index.d.ts +3 -2
- package/dist/src/formats/json/index.d.ts.map +1 -1
- package/dist/src/formats/json/index.js +3 -2
- package/dist/src/formats/json/index.js.map +1 -1
- package/dist/src/formats/json/obographs-export.d.ts +68 -0
- package/dist/src/formats/json/obographs-export.d.ts.map +1 -0
- package/dist/src/formats/json/obographs-export.js +941 -0
- package/dist/src/formats/json/obographs-export.js.map +1 -0
- package/dist/src/formats/json/obographs.d.ts +26 -0
- package/dist/src/formats/json/obographs.d.ts.map +1 -1
- package/dist/src/formats/json/obographs.js +297 -80
- package/dist/src/formats/json/obographs.js.map +1 -1
- package/dist/src/formats/neo4j/exporter.d.ts +109 -21
- package/dist/src/formats/neo4j/exporter.d.ts.map +1 -1
- package/dist/src/formats/neo4j/exporter.js +238 -85
- package/dist/src/formats/neo4j/exporter.js.map +1 -1
- package/dist/src/formats/neo4j/header.d.ts +17 -4
- package/dist/src/formats/neo4j/header.d.ts.map +1 -1
- package/dist/src/formats/neo4j/header.js +36 -4
- package/dist/src/formats/neo4j/header.js.map +1 -1
- package/dist/src/formats/neo4j/importer.d.ts +107 -27
- package/dist/src/formats/neo4j/importer.d.ts.map +1 -1
- package/dist/src/formats/neo4j/importer.js +415 -63
- package/dist/src/formats/neo4j/importer.js.map +1 -1
- package/dist/src/formats/neo4j/index.d.ts +73 -23
- package/dist/src/formats/neo4j/index.d.ts.map +1 -1
- package/dist/src/formats/neo4j/index.js +65 -25
- package/dist/src/formats/neo4j/index.js.map +1 -1
- package/dist/src/formats/obo/exporter.d.ts +150 -0
- package/dist/src/formats/obo/exporter.d.ts.map +1 -0
- package/dist/src/formats/obo/exporter.js +1736 -0
- package/dist/src/formats/obo/exporter.js.map +1 -0
- package/dist/src/formats/obo/importer.d.ts +95 -19
- package/dist/src/formats/obo/importer.d.ts.map +1 -1
- package/dist/src/formats/obo/importer.js +475 -104
- package/dist/src/formats/obo/importer.js.map +1 -1
- package/dist/src/formats/obo/index.d.ts +6 -3
- package/dist/src/formats/obo/index.d.ts.map +1 -1
- package/dist/src/formats/obo/index.js +6 -3
- package/dist/src/formats/obo/index.js.map +1 -1
- package/dist/src/formats/obo/syntax.d.ts +108 -4
- package/dist/src/formats/obo/syntax.d.ts.map +1 -1
- package/dist/src/formats/obo/syntax.js +211 -34
- package/dist/src/formats/obo/syntax.js.map +1 -1
- package/dist/src/formats/pajek/exporter.d.ts +54 -16
- package/dist/src/formats/pajek/exporter.d.ts.map +1 -1
- package/dist/src/formats/pajek/exporter.js +66 -34
- package/dist/src/formats/pajek/exporter.js.map +1 -1
- package/dist/src/formats/pajek/importer.d.ts +84 -22
- package/dist/src/formats/pajek/importer.d.ts.map +1 -1
- package/dist/src/formats/pajek/importer.js +303 -83
- package/dist/src/formats/pajek/importer.js.map +1 -1
- package/dist/src/formats/pajek/index.d.ts +2 -1
- package/dist/src/formats/pajek/index.d.ts.map +1 -1
- package/dist/src/formats/pajek/index.js +2 -1
- package/dist/src/formats/pajek/index.js.map +1 -1
- package/dist/src/formats/pajek/syntax.d.ts +77 -14
- package/dist/src/formats/pajek/syntax.d.ts.map +1 -1
- package/dist/src/formats/pajek/syntax.js +183 -51
- package/dist/src/formats/pajek/syntax.js.map +1 -1
- package/dist/src/formats/xgmml/columns.d.ts +1 -0
- package/dist/src/formats/xgmml/columns.d.ts.map +1 -1
- package/dist/src/formats/xgmml/columns.js +4 -0
- package/dist/src/formats/xgmml/columns.js.map +1 -1
- package/dist/src/formats/xgmml/constants.d.ts +186 -56
- package/dist/src/formats/xgmml/constants.d.ts.map +1 -1
- package/dist/src/formats/xgmml/constants.js +181 -57
- package/dist/src/formats/xgmml/constants.js.map +1 -1
- package/dist/src/formats/xgmml/document.d.ts +65 -11
- package/dist/src/formats/xgmml/document.d.ts.map +1 -1
- package/dist/src/formats/xgmml/document.js +157 -28
- package/dist/src/formats/xgmml/document.js.map +1 -1
- package/dist/src/formats/xgmml/emit.d.ts +61 -3
- package/dist/src/formats/xgmml/emit.d.ts.map +1 -1
- package/dist/src/formats/xgmml/emit.js +129 -26
- package/dist/src/formats/xgmml/emit.js.map +1 -1
- package/dist/src/formats/xgmml/exporter.d.ts +13 -6
- package/dist/src/formats/xgmml/exporter.d.ts.map +1 -1
- package/dist/src/formats/xgmml/exporter.js +20 -21
- package/dist/src/formats/xgmml/exporter.js.map +1 -1
- package/dist/src/formats/xgmml/importer.d.ts +33 -12
- package/dist/src/formats/xgmml/importer.d.ts.map +1 -1
- package/dist/src/formats/xgmml/importer.js +35 -72
- package/dist/src/formats/xgmml/importer.js.map +1 -1
- package/dist/src/formats/xgmml/index.d.ts +1 -0
- package/dist/src/formats/xgmml/index.d.ts.map +1 -1
- package/dist/src/formats/xgmml/index.js +1 -0
- package/dist/src/formats/xgmml/index.js.map +1 -1
- package/dist/src/formats/xgmml/values.d.ts +8 -1
- package/dist/src/formats/xgmml/values.d.ts.map +1 -1
- package/dist/src/formats/xgmml/values.js +7 -2
- package/dist/src/formats/xgmml/values.js.map +1 -1
- package/dist/src/index.d.ts +23 -18
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +28 -16
- package/dist/src/index.js.map +1 -1
- package/dist/src/registry.d.ts +478 -92
- package/dist/src/registry.d.ts.map +1 -1
- package/dist/src/registry.js +807 -88
- package/dist/src/registry.js.map +1 -1
- package/dist/src/sniff.d.ts +61 -19
- package/dist/src/sniff.d.ts.map +1 -1
- package/dist/src/sniff.js +121 -29
- package/dist/src/sniff.js.map +1 -1
- package/dist/src/types.d.ts +362 -112
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js +28 -7
- package/dist/src/types.js.map +1 -1
- package/dist/xgmml.js +2 -2
- package/docs/samples/README.md +25 -0
- package/docs/samples/got-edges.csv +353 -0
- package/docs/samples/got-network.graphml +1384 -0
- package/docs/samples/got-nodes.csv +108 -0
- package/docs/samples/got.cx +930 -0
- package/docs/samples/got.cx2 +465 -0
- package/docs/samples/got.gexf +471 -0
- package/docs/samples/got.gml +2650 -0
- package/docs/samples/got.json +2546 -0
- package/docs/samples/got.net +461 -0
- package/docs/samples/movies-nodes.csv +9 -0
- package/docs/samples/movies-rels.csv +8 -0
- package/docs/samples/networks.cys +0 -0
- package/docs/samples/proteins.xgmml +9 -0
- package/docs/samples/teams.gv +24 -0
- package/docs/samples/vehicles.obo +25 -0
- package/package.json +9 -4
- package/src/children.ts +18 -6
- package/src/common/attributes.ts +29 -11
- package/src/common/cell-budget.ts +11 -3
- package/src/common/choose.ts +89 -0
- package/src/common/codes.ts +490 -66
- package/src/common/compare.ts +472 -0
- package/src/common/cx-export.ts +432 -0
- package/src/common/declared-types.ts +38 -4
- package/src/common/direction.ts +78 -51
- package/src/common/escape.ts +33 -17
- package/src/common/export.ts +284 -47
- package/src/common/format.ts +30 -1
- package/src/common/ids.ts +14 -3
- package/src/common/input.ts +1057 -134
- package/src/common/json-elements.ts +1034 -198
- package/src/common/line-format.ts +249 -0
- package/src/common/lists.ts +6 -1
- package/src/common/ontology-export.ts +461 -0
- package/src/common/ontology.ts +31 -9
- package/src/common/options.ts +110 -15
- package/src/common/plural.ts +49 -0
- package/src/common/report.ts +168 -25
- package/src/common/temporal.ts +22 -5
- package/src/common/text.ts +62 -23
- package/src/common/weights.ts +74 -4
- package/src/common/writer.ts +37 -3
- package/src/common/xml.ts +477 -88
- package/src/common/zip.ts +169 -7
- package/src/formats/csv/exporter.ts +201 -46
- package/src/formats/csv/header.ts +50 -11
- package/src/formats/csv/importer.ts +1133 -245
- package/src/formats/csv/index.ts +106 -19
- package/src/formats/csv/records.ts +396 -122
- package/src/formats/csv/values.ts +1 -0
- package/src/formats/cx/exporter.ts +1483 -0
- package/src/formats/cx/importer.ts +888 -300
- package/src/formats/cx/index.ts +4 -3
- package/src/formats/cx2/exporter.ts +61 -338
- package/src/formats/cx2/importer.ts +317 -86
- package/src/formats/cx2/index.ts +2 -1
- package/src/formats/cys/constants.ts +62 -17
- package/src/formats/cys/exporter.ts +1368 -0
- package/src/formats/cys/importer.ts +659 -157
- package/src/formats/cys/index.ts +4 -2
- package/src/formats/cys/session.ts +139 -31
- package/src/formats/cys/tables.ts +47 -9
- package/src/formats/dot/exporter.ts +83 -37
- package/src/formats/dot/importer.ts +248 -54
- package/src/formats/dot/index.ts +2 -1
- package/src/formats/dot/names.ts +44 -11
- package/src/formats/dot/tokenizer.ts +25 -6
- package/src/formats/gexf/exporter.ts +57 -18
- package/src/formats/gexf/importer.ts +636 -105
- package/src/formats/gexf/index.ts +90 -21
- package/src/formats/gexf/schema.ts +67 -15
- package/src/formats/gml/exporter.ts +90 -36
- package/src/formats/gml/importer.ts +388 -67
- package/src/formats/gml/index.ts +85 -24
- package/src/formats/gml/syntax.ts +111 -26
- package/src/formats/graphml/constants.ts +178 -44
- package/src/formats/graphml/exporter.ts +52 -18
- package/src/formats/graphml/importer.ts +640 -60
- package/src/formats/graphml/index.ts +2 -1
- package/src/formats/graphml/tree.ts +6 -2
- package/src/formats/graphml/yfiles.ts +37 -15
- package/src/formats/json/dialect.ts +128 -29
- package/src/formats/json/exporter.ts +205 -68
- package/src/formats/json/importer.ts +1163 -253
- package/src/formats/json/index.ts +3 -1
- package/src/formats/json/obographs-export.ts +1197 -0
- package/src/formats/json/obographs.ts +353 -92
- package/src/formats/neo4j/exporter.ts +320 -101
- package/src/formats/neo4j/header.ts +44 -6
- package/src/formats/neo4j/importer.ts +512 -73
- package/src/formats/neo4j/index.ts +75 -23
- package/src/formats/obo/exporter.ts +2210 -0
- package/src/formats/obo/importer.ts +622 -109
- package/src/formats/obo/index.ts +6 -3
- package/src/formats/obo/syntax.ts +232 -37
- package/src/formats/pajek/exporter.ts +89 -41
- package/src/formats/pajek/importer.ts +407 -93
- package/src/formats/pajek/index.ts +2 -1
- package/src/formats/pajek/syntax.ts +213 -52
- package/src/formats/xgmml/columns.ts +10 -0
- package/src/formats/xgmml/constants.ts +183 -56
- package/src/formats/xgmml/document.ts +212 -34
- package/src/formats/xgmml/emit.ts +175 -34
- package/src/formats/xgmml/exporter.ts +35 -27
- package/src/formats/xgmml/importer.ts +64 -86
- package/src/formats/xgmml/index.ts +1 -0
- package/src/formats/xgmml/values.ts +11 -3
- package/src/index.ts +81 -11
- package/src/registry.ts +1121 -135
- package/src/sniff.ts +163 -32
- package/src/types.ts +385 -114
- package/dist/chunks/escape-B-tkk_Cl.js.map +0 -1
- package/dist/chunks/export-Bh60Dv-n.js +0 -582
- package/dist/chunks/export-Bh60Dv-n.js.map +0 -1
- package/dist/chunks/exporter-BGrsWamJ.js.map +0 -1
- package/dist/chunks/exporter-DIeGJXAZ.js.map +0 -1
- package/dist/chunks/importer-BWY2FFc5.js.map +0 -1
- package/dist/chunks/importer-DD-xv9_Y.js +0 -1471
- package/dist/chunks/importer-DD-xv9_Y.js.map +0 -1
- package/dist/chunks/importer-DET1tg6s.js.map +0 -1
- package/dist/chunks/importer-DEcKhsmQ.js +0 -1614
- package/dist/chunks/importer-DEcKhsmQ.js.map +0 -1
- package/dist/chunks/importer-DIrbbnAf.js.map +0 -1
- package/dist/chunks/importer-D_e7e7LX.js.map +0 -1
- package/dist/chunks/importer-eUREhBGj.js.map +0 -1
- package/dist/chunks/importer-vi3bSdtw.js.map +0 -1
- package/dist/chunks/importer-zGLo8Dg_.js.map +0 -1
- package/dist/chunks/json-elements-DDS8N2Dd.js +0 -779
- package/dist/chunks/json-elements-DDS8N2Dd.js.map +0 -1
- package/dist/chunks/ontology-BnrJ4I98.js +0 -113
- package/dist/chunks/ontology-BnrJ4I98.js.map +0 -1
- package/dist/chunks/records-dbRkxwaq.js.map +0 -1
- package/dist/chunks/report-B1z4WT9e.js +0 -2372
- package/dist/chunks/report-B1z4WT9e.js.map +0 -1
- package/dist/chunks/text-Dr0Ifpag.js.map +0 -1
- package/dist/chunks/weights-Dzba96G3.js +0 -176
- package/dist/chunks/weights-Dzba96G3.js.map +0 -1
- package/dist/chunks/writer-C7flM-Ih.js.map +0 -1
package/src/common/zip.ts
CHANGED
|
@@ -14,14 +14,23 @@
|
|
|
14
14
|
* the length itself; stored entries (method 0) are checked against a CRC-32 table here. Every
|
|
15
15
|
* other method, and encryption, is refused by name. Entry names are decoded by `decodeEntryName()`
|
|
16
16
|
* (the one place bytes become text) and are matching keys only, never paths.
|
|
17
|
+
*
|
|
18
|
+
* `writeZip()` is the matching writer, for the Cytoscape session exporter: stored entries only,
|
|
19
|
+
* each with its CRC-32 and sizes in its local header (Java's `ZipInputStream`, which Cytoscape
|
|
20
|
+
* reads sessions with, refuses a stored entry that defers them to a data descriptor).
|
|
17
21
|
*/
|
|
18
22
|
|
|
23
|
+
import { GraphFormatError } from "@graphty/graph-format";
|
|
24
|
+
|
|
19
25
|
import { decodeEntryName, throwIfAborted } from "./input.js";
|
|
20
26
|
|
|
21
27
|
/** Why a zip could not be read; the importer maps each kind to its own issue code. */
|
|
22
28
|
type ZipErrorKind = "not-zip" | "corrupt" | "unsupported" | "too-large";
|
|
23
29
|
|
|
24
|
-
/**
|
|
30
|
+
/**
|
|
31
|
+
* A zip that cannot be read, or an entry that cannot be inflated.
|
|
32
|
+
* @category Plugin helpers
|
|
33
|
+
*/
|
|
25
34
|
export class ZipError extends Error {
|
|
26
35
|
/** What went wrong. */
|
|
27
36
|
readonly kind: ZipErrorKind;
|
|
@@ -38,7 +47,10 @@ export class ZipError extends Error {
|
|
|
38
47
|
}
|
|
39
48
|
}
|
|
40
49
|
|
|
41
|
-
/**
|
|
50
|
+
/**
|
|
51
|
+
* One entry of the central directory.
|
|
52
|
+
* @category Plugin helpers
|
|
53
|
+
*/
|
|
42
54
|
export interface ZipEntry {
|
|
43
55
|
/** The name, decoded, as the central directory spells it. */
|
|
44
56
|
readonly name: string;
|
|
@@ -58,7 +70,10 @@ export interface ZipEntry {
|
|
|
58
70
|
readonly directory: boolean;
|
|
59
71
|
}
|
|
60
72
|
|
|
61
|
-
/**
|
|
73
|
+
/**
|
|
74
|
+
* How one entry is read.
|
|
75
|
+
* @category Plugin helpers
|
|
76
|
+
*/
|
|
62
77
|
export interface ReadEntryOptions {
|
|
63
78
|
/** The cancellation signal. */
|
|
64
79
|
readonly signal?: AbortSignal | null | undefined;
|
|
@@ -70,7 +85,10 @@ export interface ReadEntryOptions {
|
|
|
70
85
|
readonly maxRatio: number;
|
|
71
86
|
}
|
|
72
87
|
|
|
73
|
-
/**
|
|
88
|
+
/**
|
|
89
|
+
* A per-entry size under which the ratio limit does not apply (tiny entries compress well).
|
|
90
|
+
* @category Plugin helpers
|
|
91
|
+
*/
|
|
74
92
|
export const RATIO_FLOOR = 1024 * 1024;
|
|
75
93
|
|
|
76
94
|
const EOCD_SIGNATURE = 0x06054b50;
|
|
@@ -86,6 +104,8 @@ const ZIP64_EOCD_SIZE = 56;
|
|
|
86
104
|
const ZIP64_LOCATOR_SIZE = 20;
|
|
87
105
|
const U16_MAX = 0xffff;
|
|
88
106
|
const U32_MAX = 0xffffffff;
|
|
107
|
+
/** General purpose bit 11: the name is UTF-8. */
|
|
108
|
+
const UTF8_FLAG = 0x800;
|
|
89
109
|
/** Bytes between two cancellation checks while a stored entry's CRC is computed. */
|
|
90
110
|
const CRC_SLICE = 1024 * 1024;
|
|
91
111
|
|
|
@@ -108,6 +128,7 @@ const METHOD_NAMES: Readonly<Record<number, string>> = {
|
|
|
108
128
|
* Whether bytes start with a local file header signature (`PK\x03\x04`).
|
|
109
129
|
* @param bytes - the bytes
|
|
110
130
|
* @returns true for the start of a zip
|
|
131
|
+
* @category Plugin helpers
|
|
111
132
|
*/
|
|
112
133
|
export function startsLikeZip(bytes: Uint8Array): boolean {
|
|
113
134
|
return bytes.byteLength >= 4 && bytes[0] === 0x50 && bytes[1] === 0x4b && bytes[2] === 3 && bytes[3] === 4;
|
|
@@ -119,6 +140,7 @@ export function startsLikeZip(bytes: Uint8Array): boolean {
|
|
|
119
140
|
* @returns the entries in directory order; ZipError "not-zip" when there is no end record and the
|
|
120
141
|
* bytes do not start like a zip, "corrupt" for an end record or directory that does not fit,
|
|
121
142
|
* "unsupported" for a split archive
|
|
143
|
+
* @category Plugin helpers
|
|
122
144
|
*/
|
|
123
145
|
export function readZipDirectory(bytes: Uint8Array): ZipEntry[] {
|
|
124
146
|
const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
|
|
@@ -171,7 +193,11 @@ export function readZipDirectory(bytes: Uint8Array): ZipEntry[] {
|
|
|
171
193
|
if (next > directoryEnd) {
|
|
172
194
|
throw new ZipError("corrupt", `central directory entry ${i + 1} runs past the directory`);
|
|
173
195
|
}
|
|
174
|
-
const
|
|
196
|
+
const flags = view.getUint16(at + 8, true);
|
|
197
|
+
const name = decodeEntryName(
|
|
198
|
+
bytes.subarray(at + CENTRAL_SIZE, at + CENTRAL_SIZE + nameLength),
|
|
199
|
+
(flags & UTF8_FLAG) === 0,
|
|
200
|
+
);
|
|
175
201
|
let compressedSize = view.getUint32(at + 20, true);
|
|
176
202
|
let size = view.getUint32(at + 24, true);
|
|
177
203
|
let localOffset = view.getUint32(at + 42, true);
|
|
@@ -186,7 +212,7 @@ export function readZipDirectory(bytes: Uint8Array): ZipEntry[] {
|
|
|
186
212
|
Object.freeze({
|
|
187
213
|
name,
|
|
188
214
|
method: view.getUint16(at + 10, true),
|
|
189
|
-
flags
|
|
215
|
+
flags,
|
|
190
216
|
crc32: view.getUint32(at + 16, true),
|
|
191
217
|
compressedSize,
|
|
192
218
|
size,
|
|
@@ -196,9 +222,41 @@ export function readZipDirectory(bytes: Uint8Array): ZipEntry[] {
|
|
|
196
222
|
);
|
|
197
223
|
at = next;
|
|
198
224
|
}
|
|
225
|
+
if (at + 4 <= directoryEnd && view.getUint32(at, true) === CENTRAL_SIGNATURE) {
|
|
226
|
+
throw new ZipError(
|
|
227
|
+
"corrupt",
|
|
228
|
+
`the end record counts ${count} entries but the central directory holds more; entries would go unread`,
|
|
229
|
+
);
|
|
230
|
+
}
|
|
231
|
+
checkOverlap(entries, view);
|
|
199
232
|
return entries;
|
|
200
233
|
}
|
|
201
234
|
|
|
235
|
+
/**
|
|
236
|
+
* Refuse entries whose local header and data overlap (several directory entries naming one local
|
|
237
|
+
* header is a known zip bomb: each inflates the same bytes again). An entry spans its local
|
|
238
|
+
* header, its local name and extra field, and its compressed data; a trailing data descriptor is
|
|
239
|
+
* not counted, since overlapping it inflates nothing twice. A damaged local header counts as a bare
|
|
240
|
+
* header here and is refused when the entry is read.
|
|
241
|
+
* @param entries - the entries
|
|
242
|
+
* @param view - the archive
|
|
243
|
+
*/
|
|
244
|
+
function checkOverlap(entries: readonly ZipEntry[], view: DataView): void {
|
|
245
|
+
const sorted = [...entries].sort((a, b) => a.localOffset - b.localOffset);
|
|
246
|
+
const end = (entry: ZipEntry): number => {
|
|
247
|
+
const at = entry.localOffset;
|
|
248
|
+
const intact = at + LOCAL_SIZE <= view.byteLength && view.getUint32(at, true) === LOCAL_SIGNATURE;
|
|
249
|
+
const lengths = intact ? view.getUint16(at + 26, true) + view.getUint16(at + 28, true) : 0;
|
|
250
|
+
return at + LOCAL_SIZE + lengths + entry.compressedSize;
|
|
251
|
+
};
|
|
252
|
+
for (let i = 1; i < sorted.length; i++) {
|
|
253
|
+
const before = sorted[i - 1];
|
|
254
|
+
if (sorted[i].localOffset < end(before)) {
|
|
255
|
+
throw new ZipError("corrupt", `the entries ${before.name} and ${sorted[i].name} overlap`);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
|
|
202
260
|
/**
|
|
203
261
|
* The position of the end of central directory record: the last signature whose comment length
|
|
204
262
|
* fits the archive, else the last signature at all (an archive with bytes after its comment).
|
|
@@ -357,7 +415,18 @@ function entryData(bytes: Uint8Array, entry: ZipEntry): Uint8Array {
|
|
|
357
415
|
if (at + LOCAL_SIZE > bytes.byteLength || view.getUint32(at, true) !== LOCAL_SIGNATURE) {
|
|
358
416
|
throw new ZipError("corrupt", `${entry.name}: the local header is missing`);
|
|
359
417
|
}
|
|
360
|
-
const
|
|
418
|
+
const nameLength = view.getUint16(at + 26, true);
|
|
419
|
+
const localName = decodeEntryName(
|
|
420
|
+
bytes.subarray(at + LOCAL_SIZE, Math.min(bytes.byteLength, at + LOCAL_SIZE + nameLength)),
|
|
421
|
+
(entry.flags & UTF8_FLAG) === 0,
|
|
422
|
+
);
|
|
423
|
+
if (localName !== entry.name) {
|
|
424
|
+
throw new ZipError(
|
|
425
|
+
"corrupt",
|
|
426
|
+
`${entry.name}: the local header names the entry ${JSON.stringify(localName)}, the central directory ${JSON.stringify(entry.name)}`,
|
|
427
|
+
);
|
|
428
|
+
}
|
|
429
|
+
const start = at + LOCAL_SIZE + nameLength + view.getUint16(at + 28, true);
|
|
361
430
|
const end = start + entry.compressedSize;
|
|
362
431
|
if (end > bytes.byteLength) {
|
|
363
432
|
throw new ZipError("corrupt", `${entry.name}: the entry's data runs past the end of the archive (truncated?)`);
|
|
@@ -466,7 +535,100 @@ function crcUpdate(crc: number, bytes: Uint8Array): number {
|
|
|
466
535
|
* The CRC-32 of bytes.
|
|
467
536
|
* @param bytes - the bytes
|
|
468
537
|
* @returns the checksum
|
|
538
|
+
* @category Plugin helpers
|
|
469
539
|
*/
|
|
470
540
|
export function crc32(bytes: Uint8Array): number {
|
|
471
541
|
return (crcUpdate(0xffffffff, bytes) ^ 0xffffffff) >>> 0;
|
|
472
542
|
}
|
|
543
|
+
|
|
544
|
+
/**
|
|
545
|
+
* One entry for writeZip(): its name and its bytes.
|
|
546
|
+
* @category Plugin helpers
|
|
547
|
+
*/
|
|
548
|
+
export interface ZipWriteEntry {
|
|
549
|
+
/** The entry name (UTF-8, `/` separated). */
|
|
550
|
+
readonly name: string;
|
|
551
|
+
/** The data. */
|
|
552
|
+
readonly data: Uint8Array;
|
|
553
|
+
}
|
|
554
|
+
|
|
555
|
+
/** The DOS time and date written on every entry: 1980-01-01 00:00, so equal input gives equal bytes. */
|
|
556
|
+
const DOS_DATE = (0 << 9) | (1 << 5) | 1;
|
|
557
|
+
/** Version needed to extract a stored entry (1.0). */
|
|
558
|
+
const STORED_VERSION = 10;
|
|
559
|
+
|
|
560
|
+
/**
|
|
561
|
+
* Write a zip archive of stored (uncompressed) entries, one entry at a time: each entry's local
|
|
562
|
+
* header and data are yielded as soon as the entry is produced, then the central directory and
|
|
563
|
+
* the end record. Entries are not compressed (ponytail: deflate through `CompressionStream` when
|
|
564
|
+
* the archive size matters). Zip64 is not written: an entry or archive of 4 GiB or more, or more
|
|
565
|
+
* than 65,535 entries, is E_TOO_LARGE.
|
|
566
|
+
* @param entries - the entries, in archive order (may be produced lazily)
|
|
567
|
+
* @yields the archive bytes
|
|
568
|
+
* @returns nothing
|
|
569
|
+
*/
|
|
570
|
+
export function* writeZip(entries: Iterable<ZipWriteEntry>): Generator<Uint8Array, void, undefined> {
|
|
571
|
+
const encoder = new TextEncoder();
|
|
572
|
+
const central: Uint8Array[] = [];
|
|
573
|
+
let offset = 0;
|
|
574
|
+
let count = 0;
|
|
575
|
+
for (const entry of entries) {
|
|
576
|
+
const name = encoder.encode(entry.name);
|
|
577
|
+
const { data } = entry;
|
|
578
|
+
if (offset + LOCAL_SIZE + name.byteLength + data.byteLength >= U32_MAX || count === U16_MAX) {
|
|
579
|
+
throw new GraphFormatError("E_TOO_LARGE", "the archive needs zip64, which graph-io does not write", {
|
|
580
|
+
entry: entry.name,
|
|
581
|
+
});
|
|
582
|
+
}
|
|
583
|
+
const crc = crc32(data);
|
|
584
|
+
const local = new Uint8Array(LOCAL_SIZE + name.byteLength);
|
|
585
|
+
const lv = new DataView(local.buffer);
|
|
586
|
+
lv.setUint32(0, LOCAL_SIGNATURE, true);
|
|
587
|
+
lv.setUint16(4, STORED_VERSION, true);
|
|
588
|
+
lv.setUint16(6, UTF8_FLAG, true);
|
|
589
|
+
lv.setUint16(8, 0, true);
|
|
590
|
+
lv.setUint16(10, 0, true);
|
|
591
|
+
lv.setUint16(12, DOS_DATE, true);
|
|
592
|
+
lv.setUint32(14, crc, true);
|
|
593
|
+
lv.setUint32(18, data.byteLength, true);
|
|
594
|
+
lv.setUint32(22, data.byteLength, true);
|
|
595
|
+
lv.setUint16(26, name.byteLength, true);
|
|
596
|
+
lv.setUint16(28, 0, true);
|
|
597
|
+
local.set(name, LOCAL_SIZE);
|
|
598
|
+
const record = new Uint8Array(CENTRAL_SIZE + name.byteLength);
|
|
599
|
+
const cv = new DataView(record.buffer);
|
|
600
|
+
cv.setUint32(0, CENTRAL_SIGNATURE, true);
|
|
601
|
+
cv.setUint16(4, STORED_VERSION, true);
|
|
602
|
+
cv.setUint16(6, STORED_VERSION, true);
|
|
603
|
+
cv.setUint16(8, UTF8_FLAG, true);
|
|
604
|
+
cv.setUint16(10, 0, true);
|
|
605
|
+
cv.setUint16(12, 0, true);
|
|
606
|
+
cv.setUint16(14, DOS_DATE, true);
|
|
607
|
+
cv.setUint32(16, crc, true);
|
|
608
|
+
cv.setUint32(20, data.byteLength, true);
|
|
609
|
+
cv.setUint32(24, data.byteLength, true);
|
|
610
|
+
cv.setUint16(28, name.byteLength, true);
|
|
611
|
+
cv.setUint32(42, offset, true);
|
|
612
|
+
record.set(name, CENTRAL_SIZE);
|
|
613
|
+
central.push(record);
|
|
614
|
+
yield local;
|
|
615
|
+
if (data.byteLength > 0) {
|
|
616
|
+
yield data;
|
|
617
|
+
}
|
|
618
|
+
offset += local.byteLength + data.byteLength;
|
|
619
|
+
count++;
|
|
620
|
+
}
|
|
621
|
+
let size = 0;
|
|
622
|
+
for (const record of central) {
|
|
623
|
+
size += record.byteLength;
|
|
624
|
+
yield record;
|
|
625
|
+
}
|
|
626
|
+
const end = new Uint8Array(EOCD_SIZE);
|
|
627
|
+
const ev = new DataView(end.buffer);
|
|
628
|
+
ev.setUint32(0, EOCD_SIGNATURE, true);
|
|
629
|
+
ev.setUint16(8, count, true);
|
|
630
|
+
ev.setUint16(10, count, true);
|
|
631
|
+
ev.setUint32(12, size, true);
|
|
632
|
+
ev.setUint32(16, offset, true);
|
|
633
|
+
yield end;
|
|
634
|
+
}
|