@osmix/pbf 0.0.5 → 0.0.7

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 (94) hide show
  1. package/dist/proto/osmformat.d.ts.map +1 -1
  2. package/dist/proto/osmformat.js +0 -1
  3. package/dist/proto/osmformat.js.map +1 -1
  4. package/dist/utils.d.ts +24 -0
  5. package/dist/utils.d.ts.map +1 -1
  6. package/dist/utils.js +46 -0
  7. package/dist/utils.js.map +1 -1
  8. package/package.json +22 -22
  9. package/src/proto/osmformat.ts +0 -1
  10. package/src/utils.ts +86 -0
  11. package/CHANGELOG.md +0 -31
  12. package/dist/src/blobs-to-blocks.d.ts +0 -54
  13. package/dist/src/blobs-to-blocks.d.ts.map +0 -1
  14. package/dist/src/blobs-to-blocks.js +0 -75
  15. package/dist/src/blobs-to-blocks.js.map +0 -1
  16. package/dist/src/blocks-to-pbf.d.ts +0 -53
  17. package/dist/src/blocks-to-pbf.d.ts.map +0 -1
  18. package/dist/src/blocks-to-pbf.js +0 -110
  19. package/dist/src/blocks-to-pbf.js.map +0 -1
  20. package/dist/src/index.d.ts +0 -37
  21. package/dist/src/index.d.ts.map +0 -1
  22. package/dist/src/index.js +0 -37
  23. package/dist/src/index.js.map +0 -1
  24. package/dist/src/pbf-to-blobs.d.ts +0 -26
  25. package/dist/src/pbf-to-blobs.d.ts.map +0 -1
  26. package/dist/src/pbf-to-blobs.js +0 -70
  27. package/dist/src/pbf-to-blobs.js.map +0 -1
  28. package/dist/src/pbf-to-blocks.d.ts +0 -63
  29. package/dist/src/pbf-to-blocks.d.ts.map +0 -1
  30. package/dist/src/pbf-to-blocks.js +0 -96
  31. package/dist/src/pbf-to-blocks.js.map +0 -1
  32. package/dist/src/proto/fileformat.d.ts +0 -27
  33. package/dist/src/proto/fileformat.d.ts.map +0 -1
  34. package/dist/src/proto/fileformat.js +0 -57
  35. package/dist/src/proto/fileformat.js.map +0 -1
  36. package/dist/src/proto/osmformat.d.ts +0 -92
  37. package/dist/src/proto/osmformat.d.ts.map +0 -1
  38. package/dist/src/proto/osmformat.js +0 -459
  39. package/dist/src/proto/osmformat.js.map +0 -1
  40. package/dist/src/spec.d.ts +0 -6
  41. package/dist/src/spec.d.ts.map +0 -1
  42. package/dist/src/spec.js +0 -10
  43. package/dist/src/spec.js.map +0 -1
  44. package/dist/src/utils.d.ts +0 -22
  45. package/dist/src/utils.d.ts.map +0 -1
  46. package/dist/src/utils.js +0 -68
  47. package/dist/src/utils.js.map +0 -1
  48. package/dist/test/blobs-to-blocks.test.d.ts +0 -2
  49. package/dist/test/blobs-to-blocks.test.d.ts.map +0 -1
  50. package/dist/test/blobs-to-blocks.test.js +0 -61
  51. package/dist/test/blobs-to-blocks.test.js.map +0 -1
  52. package/dist/test/helpers.d.ts +0 -11
  53. package/dist/test/helpers.d.ts.map +0 -1
  54. package/dist/test/helpers.js +0 -58
  55. package/dist/test/helpers.js.map +0 -1
  56. package/dist/test/pbf-to-blobs.test.d.ts +0 -2
  57. package/dist/test/pbf-to-blobs.test.d.ts.map +0 -1
  58. package/dist/test/pbf-to-blobs.test.js +0 -77
  59. package/dist/test/pbf-to-blobs.test.js.map +0 -1
  60. package/dist/test/read.bench.d.ts +0 -2
  61. package/dist/test/read.bench.d.ts.map +0 -1
  62. package/dist/test/read.bench.js +0 -31
  63. package/dist/test/read.bench.js.map +0 -1
  64. package/dist/test/read.test.d.ts +0 -2
  65. package/dist/test/read.test.d.ts.map +0 -1
  66. package/dist/test/read.test.js +0 -34
  67. package/dist/test/read.test.js.map +0 -1
  68. package/dist/test/streams.test.d.ts +0 -2
  69. package/dist/test/streams.test.d.ts.map +0 -1
  70. package/dist/test/streams.test.js +0 -78
  71. package/dist/test/streams.test.js.map +0 -1
  72. package/dist/test/utils.d.ts +0 -25
  73. package/dist/test/utils.d.ts.map +0 -1
  74. package/dist/test/utils.js +0 -47
  75. package/dist/test/utils.js.map +0 -1
  76. package/dist/test/utils.test.d.ts +0 -2
  77. package/dist/test/utils.test.d.ts.map +0 -1
  78. package/dist/test/utils.test.js +0 -44
  79. package/dist/test/utils.test.js.map +0 -1
  80. package/dist/test/write.test.d.ts +0 -2
  81. package/dist/test/write.test.d.ts.map +0 -1
  82. package/dist/test/write.test.js +0 -69
  83. package/dist/test/write.test.js.map +0 -1
  84. package/test/blobs-to-blocks.test.ts +0 -79
  85. package/test/helpers.ts +0 -66
  86. package/test/pbf-to-blobs.test.ts +0 -91
  87. package/test/read.bench.ts +0 -46
  88. package/test/read.test.ts +0 -45
  89. package/test/streams.test.ts +0 -101
  90. package/test/utils.test.ts +0 -56
  91. package/test/utils.ts +0 -65
  92. package/test/write.test.ts +0 -91
  93. package/tsconfig.build.json +0 -5
  94. package/tsconfig.json +0 -9
@@ -1,110 +0,0 @@
1
- /**
2
- * Block-to-PBF serialization utilities.
3
- *
4
- * Converts parsed OSM header and primitive blocks back into spec-compliant
5
- * PBF byte sequences with proper framing, compression, and size validation.
6
- *
7
- * @module
8
- */
9
- import Pbf from "pbf";
10
- import { writeBlob, writeBlobHeader } from "./proto/fileformat";
11
- import { writeHeaderBlock, writePrimitiveBlock } from "./proto/osmformat";
12
- import { MAX_BLOB_SIZE_BYTES, MAX_HEADER_SIZE_BYTES, RECOMMENDED_BLOB_SIZE_BYTES, RECOMMENDED_HEADER_SIZE_BYTES, } from "./spec";
13
- import { concatUint8, uint32BE, webCompress } from "./utils";
14
- /**
15
- * Serialize a header or primitive block into spec-compliant PBF bytes.
16
- *
17
- * Handles protobuf encoding, zlib compression, blob wrapping, and length prefixing.
18
- * Validates output against OSM PBF specification size limits and logs warnings
19
- * if recommended sizes are exceeded.
20
- *
21
- * @param block - Parsed header or primitive block to encode.
22
- * @param compress - Optional compression function (defaults to Web Streams zlib).
23
- * @returns Complete blob bytes: 4-byte length prefix + BlobHeader + Blob.
24
- * @throws If blob exceeds maximum size limits (64 KiB header, 32 MiB data).
25
- *
26
- * @example
27
- * ```ts
28
- * import { osmBlockToPbfBlobBytes } from "@osmix/pbf"
29
- *
30
- * const headerBytes = await osmBlockToPbfBlobBytes({
31
- * required_features: ["OsmSchema-V0.6", "DenseNodes"],
32
- * optional_features: [],
33
- * })
34
- * ```
35
- */
36
- export async function osmBlockToPbfBlobBytes(block, compress = webCompress) {
37
- const contentPbf = new Pbf();
38
- let type;
39
- if ("primitivegroup" in block) {
40
- type = "OSMData";
41
- writePrimitiveBlock(block, contentPbf);
42
- }
43
- else {
44
- type = "OSMHeader";
45
- writeHeaderBlock(block, contentPbf);
46
- }
47
- const contentData = contentPbf.finish();
48
- const raw_size = contentData.length;
49
- const compressedBuffer = await compress(contentData);
50
- const blobPbf = new Pbf();
51
- writeBlob({
52
- raw_size,
53
- zlib_data: compressedBuffer,
54
- }, blobPbf);
55
- const blob = blobPbf.finish();
56
- const blobHeaderPbf = new Pbf();
57
- writeBlobHeader({
58
- type,
59
- datasize: blob.length,
60
- }, blobHeaderPbf);
61
- const blobHeader = blobHeaderPbf.finish();
62
- const blobHeaderSize = uint32BE(blobHeader.byteLength);
63
- // Check the BlobHeader and Blob sizes, log error if over the recommended size, throw error if over the maximum size
64
- if (blobHeader.byteLength > RECOMMENDED_HEADER_SIZE_BYTES) {
65
- const sizeKiB = (blobHeader.byteLength / 1024).toFixed(2);
66
- if (blobHeader.byteLength > MAX_HEADER_SIZE_BYTES) {
67
- throw new Error(`BlobHeader is ${sizeKiB} KiB, the maximum size is 64KiB`);
68
- }
69
- console.warn(`BlobHeader is ${sizeKiB} KiB, the recommended size is 32KiB`);
70
- }
71
- if (blob.byteLength > RECOMMENDED_BLOB_SIZE_BYTES) {
72
- const sizeMiB = (blob.byteLength / 1024 / 1024).toFixed(2);
73
- if (blob.byteLength > MAX_BLOB_SIZE_BYTES) {
74
- throw new Error(`Blob is ${sizeMiB} MiB, the maximum size is 32MiB`);
75
- }
76
- console.warn(`Blob is ${sizeMiB} MiB, the recommended size is 16MiB`);
77
- }
78
- return concatUint8(blobHeaderSize, blobHeader, blob);
79
- }
80
- /**
81
- * Web `TransformStream` that encodes OSM blocks into PBF byte chunks.
82
- *
83
- * Accepts a stream of header and primitive blocks and outputs spec-compliant
84
- * PBF bytes. The header block must be the first item in the stream.
85
- *
86
- * @throws If a primitive block is received before the header.
87
- *
88
- * @example
89
- * ```ts
90
- * import { OsmBlocksToPbfBytesTransformStream } from "@osmix/pbf"
91
- *
92
- * const pbfStream = blocksStream.pipeThrough(new OsmBlocksToPbfBytesTransformStream())
93
- * await pbfStream.pipeTo(writableFile)
94
- * ```
95
- */
96
- export class OsmBlocksToPbfBytesTransformStream extends TransformStream {
97
- headerEnqueued = false;
98
- constructor() {
99
- super({
100
- transform: async (block, controller) => {
101
- if ("primitivegroup" in block && !this.headerEnqueued) {
102
- throw Error("Header first in ReadableStream of blocks.");
103
- }
104
- this.headerEnqueued = true;
105
- controller.enqueue(await osmBlockToPbfBlobBytes(block));
106
- },
107
- });
108
- }
109
- }
110
- //# sourceMappingURL=blocks-to-pbf.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"blocks-to-pbf.js","sourceRoot":"","sources":["../../src/blocks-to-pbf.ts"],"names":[],"mappings":"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"}
@@ -1,37 +0,0 @@
1
- /**
2
- * @osmix/pbf - Low-level OSM PBF parsing and serialization.
3
- *
4
- * Provides streaming primitives for reading and writing OpenStreetMap PBF files
5
- * using Web Streams and native compression APIs. Stays close to the official
6
- * protobuf schema (`osmformat.proto`, `fileformat.proto`) while exposing
7
- * predictable TypeScript types.
8
- *
9
- * Key capabilities:
10
- * - **Parse**: Read headers and primitive blocks from `ArrayBuffer`, async iterables, or `ReadableStream`.
11
- * - **Stream**: Use `TransformStream` helpers to process large files without buffering entirely in memory.
12
- * - **Serialize**: Write header and primitive blocks back to spec-compliant blobs with size guardrails.
13
- * - **Types**: Generated protobuf readers/writers and TypeScript interfaces for OSM data structures.
14
- *
15
- * @example
16
- * ```ts
17
- * import { readOsmPbf } from "@osmix/pbf"
18
- *
19
- * const { header, blocks } = await readOsmPbf(Bun.file('./monaco.pbf').stream())
20
- * console.log(header.required_features)
21
- *
22
- * for await (const block of blocks) {
23
- * console.log(block.primitivegroup.length, "groups")
24
- * }
25
- * ```
26
- *
27
- * @module @osmix/pbf
28
- */
29
- export * from "./blobs-to-blocks";
30
- export * from "./blocks-to-pbf";
31
- export * from "./pbf-to-blobs";
32
- export * from "./pbf-to-blocks";
33
- export * from "./proto/fileformat";
34
- export * from "./proto/osmformat";
35
- export * from "./spec";
36
- export * from "./utils";
37
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA;AACjC,cAAc,QAAQ,CAAA;AACtB,cAAc,SAAS,CAAA"}
package/dist/src/index.js DELETED
@@ -1,37 +0,0 @@
1
- /**
2
- * @osmix/pbf - Low-level OSM PBF parsing and serialization.
3
- *
4
- * Provides streaming primitives for reading and writing OpenStreetMap PBF files
5
- * using Web Streams and native compression APIs. Stays close to the official
6
- * protobuf schema (`osmformat.proto`, `fileformat.proto`) while exposing
7
- * predictable TypeScript types.
8
- *
9
- * Key capabilities:
10
- * - **Parse**: Read headers and primitive blocks from `ArrayBuffer`, async iterables, or `ReadableStream`.
11
- * - **Stream**: Use `TransformStream` helpers to process large files without buffering entirely in memory.
12
- * - **Serialize**: Write header and primitive blocks back to spec-compliant blobs with size guardrails.
13
- * - **Types**: Generated protobuf readers/writers and TypeScript interfaces for OSM data structures.
14
- *
15
- * @example
16
- * ```ts
17
- * import { readOsmPbf } from "@osmix/pbf"
18
- *
19
- * const { header, blocks } = await readOsmPbf(Bun.file('./monaco.pbf').stream())
20
- * console.log(header.required_features)
21
- *
22
- * for await (const block of blocks) {
23
- * console.log(block.primitivegroup.length, "groups")
24
- * }
25
- * ```
26
- *
27
- * @module @osmix/pbf
28
- */
29
- export * from "./blobs-to-blocks";
30
- export * from "./blocks-to-pbf";
31
- export * from "./pbf-to-blobs";
32
- export * from "./pbf-to-blocks";
33
- export * from "./proto/fileformat";
34
- export * from "./proto/osmformat";
35
- export * from "./spec";
36
- export * from "./utils";
37
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA;AACjC,cAAc,QAAQ,CAAA;AACtB,cAAc,SAAS,CAAA"}
@@ -1,26 +0,0 @@
1
- /**
2
- * Create a stateful parser that extracts compressed blobs from raw PBF bytes.
3
- *
4
- * OSM PBF files consist of length-prefixed blobs. This function returns a generator
5
- * that accumulates incoming byte chunks and yields complete compressed blobs as they
6
- * become available. The caller is responsible for decompression.
7
- *
8
- * The first yielded blob contains the file header; subsequent blobs contain primitive data.
9
- *
10
- * @returns A generator function that accepts byte chunks and yields compressed blob payloads.
11
- *
12
- * @example
13
- * ```ts
14
- * import { createOsmPbfBlobGenerator } from "@osmix/pbf"
15
- *
16
- * const generateBlobs = createOsmPbfBlobGenerator()
17
- *
18
- * for await (const chunk of stream) {
19
- * for (const compressedBlob of generateBlobs(chunk)) {
20
- * // Decompress and parse blob...
21
- * }
22
- * }
23
- * ```
24
- */
25
- export declare function createOsmPbfBlobGenerator(): (chunk: Uint8Array) => Generator<Uint8Array<ArrayBuffer>, void, unknown>;
26
- //# sourceMappingURL=pbf-to-blobs.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pbf-to-blobs.d.ts","sourceRoot":"","sources":["../../src/pbf-to-blobs.ts"],"names":[],"mappings":"AAQA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,yBAAyB,KAWb,OAAO,UAAU,uDAiC5C"}
@@ -1,70 +0,0 @@
1
- import Pbf from "pbf";
2
- import { HEADER_LENGTH_BYTES } from "./pbf-to-blocks";
3
- import { readBlob, readBlobHeader, } from "./proto/fileformat";
4
- /**
5
- * Create a stateful parser that extracts compressed blobs from raw PBF bytes.
6
- *
7
- * OSM PBF files consist of length-prefixed blobs. This function returns a generator
8
- * that accumulates incoming byte chunks and yields complete compressed blobs as they
9
- * become available. The caller is responsible for decompression.
10
- *
11
- * The first yielded blob contains the file header; subsequent blobs contain primitive data.
12
- *
13
- * @returns A generator function that accepts byte chunks and yields compressed blob payloads.
14
- *
15
- * @example
16
- * ```ts
17
- * import { createOsmPbfBlobGenerator } from "@osmix/pbf"
18
- *
19
- * const generateBlobs = createOsmPbfBlobGenerator()
20
- *
21
- * for await (const chunk of stream) {
22
- * for (const compressedBlob of generateBlobs(chunk)) {
23
- * // Decompress and parse blob...
24
- * }
25
- * }
26
- * ```
27
- */
28
- export function createOsmPbfBlobGenerator() {
29
- let pbf = new Pbf(new Uint8Array(0));
30
- let state = "header-length";
31
- let bytesNeeded = HEADER_LENGTH_BYTES;
32
- let blobHeader = null;
33
- /**
34
- * Feed the parser with the next chunk of bytes and yield any complete compressed blobs.
35
- * @param chunk - Raw bytes from the PBF file.
36
- * @yields Compressed blob payloads (zlib-compressed protobuf data).
37
- */
38
- return function* nextChunk(chunk) {
39
- const currentBuffer = pbf.buf.slice(pbf.pos);
40
- const tmpBuffer = new Uint8Array(currentBuffer.buffer.byteLength + chunk.byteLength);
41
- tmpBuffer.set(currentBuffer.subarray(0));
42
- tmpBuffer.set(new Uint8Array(chunk), currentBuffer.byteLength);
43
- pbf = new Pbf(tmpBuffer);
44
- while (pbf.pos + bytesNeeded <= pbf.length) {
45
- if (state === "header-length") {
46
- const dataView = new DataView(pbf.buf.buffer);
47
- bytesNeeded = dataView.getInt32(pbf.pos, false); // network byte order
48
- pbf.pos += HEADER_LENGTH_BYTES;
49
- state = "header";
50
- }
51
- else if (state === "header") {
52
- blobHeader = readBlobHeader(pbf, pbf.pos + bytesNeeded);
53
- bytesNeeded = blobHeader.datasize;
54
- state = "blob";
55
- }
56
- else if (state === "blob") {
57
- if (blobHeader == null)
58
- throw Error("Blob header has not been read");
59
- const blob = readBlob(pbf, pbf.pos + bytesNeeded);
60
- if (blob.zlib_data === undefined || blob.zlib_data.length === 0)
61
- throw Error("Blob has no zlib data. Format is unsupported.");
62
- yield blob.zlib_data;
63
- state = "header-length";
64
- bytesNeeded = HEADER_LENGTH_BYTES;
65
- blobHeader = null;
66
- }
67
- }
68
- };
69
- }
70
- //# sourceMappingURL=pbf-to-blobs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pbf-to-blobs.js","sourceRoot":"","sources":["../../src/pbf-to-blobs.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAA;AACrB,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,EAEN,QAAQ,EACR,cAAc,GACd,MAAM,oBAAoB,CAAA;AAE3B;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,yBAAyB;IACxC,IAAI,GAAG,GAAQ,IAAI,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;IACzC,IAAI,KAAK,GAAwC,eAAe,CAAA;IAChE,IAAI,WAAW,GAAW,mBAAmB,CAAA;IAC7C,IAAI,UAAU,GAA4B,IAAI,CAAA;IAE9C;;;;OAIG;IACH,OAAO,QAAQ,CAAC,CAAC,SAAS,CAAC,KAAiB;QAC3C,MAAM,aAAa,GAAe,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACxD,MAAM,SAAS,GAAG,IAAI,UAAU,CAC/B,aAAa,CAAC,MAAM,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAClD,CAAA;QACD,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;QACxC,SAAS,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC,UAAU,CAAC,CAAA;QAC9D,GAAG,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAA;QAExB,OAAO,GAAG,CAAC,GAAG,GAAG,WAAW,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YAC5C,IAAI,KAAK,KAAK,eAAe,EAAE,CAAC;gBAC/B,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;gBAC7C,WAAW,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA,CAAC,qBAAqB;gBACrE,GAAG,CAAC,GAAG,IAAI,mBAAmB,CAAA;gBAC9B,KAAK,GAAG,QAAQ,CAAA;YACjB,CAAC;iBAAM,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC/B,UAAU,GAAG,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,GAAG,WAAW,CAAC,CAAA;gBACvD,WAAW,GAAG,UAAU,CAAC,QAAQ,CAAA;gBACjC,KAAK,GAAG,MAAM,CAAA;YACf,CAAC;iBAAM,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;gBAC7B,IAAI,UAAU,IAAI,IAAI;oBAAE,MAAM,KAAK,CAAC,+BAA+B,CAAC,CAAA;gBACpE,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,GAAG,WAAW,CAAC,CAAA;gBACjD,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;oBAC9D,MAAM,KAAK,CAAC,+CAA+C,CAAC,CAAA;gBAE7D,MAAM,IAAI,CAAC,SAAoC,CAAA;gBAE/C,KAAK,GAAG,eAAe,CAAA;gBACvB,WAAW,GAAG,mBAAmB,CAAA;gBACjC,UAAU,GAAG,IAAI,CAAA;YAClB,CAAC;QACF,CAAC;IACF,CAAC,CAAA;AACF,CAAC"}
@@ -1,63 +0,0 @@
1
- import { type OsmPbfBlock, type OsmPbfHeaderBlock } from "./proto/osmformat";
2
- import { type AsyncGeneratorValue } from "./utils";
3
- /** Number of bytes used to encode the BlobHeader length prefix (big-endian uint32). */
4
- export declare const HEADER_LENGTH_BYTES = 4;
5
- /**
6
- * Parse an OSM PBF file from various input sources.
7
- *
8
- * Accepts `ArrayBuffer`, `Uint8Array`, `ReadableStream<Uint8Array>`, or async generators.
9
- * Returns the file header and a lazy async generator of primitive blocks for on-demand parsing.
10
- *
11
- * @param data - PBF bytes as buffer, stream, or async iterable.
12
- * @returns Object with `header` (file metadata) and `blocks` (async generator of primitive blocks).
13
- * @throws If the header block is missing or malformed.
14
- *
15
- * @example
16
- * ```ts
17
- * import { readOsmPbf } from "@osmix/pbf"
18
- *
19
- * // From a file stream
20
- * const { header, blocks } = await readOsmPbf(Bun.file('./monaco.pbf').stream())
21
- *
22
- * // From a fetch response
23
- * const response = await fetch('/data/monaco.pbf')
24
- * const { header, blocks } = await readOsmPbf(response.body!)
25
- *
26
- * // Iterate blocks lazily
27
- * for await (const block of blocks) {
28
- * for (const group of block.primitivegroup) {
29
- * console.log(group.dense?.id.length ?? 0, "dense nodes")
30
- * }
31
- * }
32
- * ```
33
- */
34
- export declare function readOsmPbf(data: AsyncGeneratorValue<Uint8Array<ArrayBufferLike>>): Promise<{
35
- header: OsmPbfHeaderBlock;
36
- blocks: AsyncGenerator<OsmPbfBlock>;
37
- }>;
38
- /**
39
- * Web `TransformStream` that decodes raw PBF byte chunks into OSM header and data blocks.
40
- *
41
- * The first blob in an OSM PBF file is always the header block; subsequent blobs
42
- * contain primitive data (nodes, ways, relations). This stream handles the framing,
43
- * decompression, and protobuf decoding automatically.
44
- *
45
- * @example
46
- * ```ts
47
- * import { OsmPbfBytesToBlocksTransformStream } from "@osmix/pbf"
48
- *
49
- * const response = await fetch('/data/monaco.pbf')
50
- * const blocksStream = response.body!
51
- * .pipeThrough(new OsmPbfBytesToBlocksTransformStream())
52
- *
53
- * const reader = blocksStream.getReader()
54
- * const { value: header } = await reader.read() // First read yields header
55
- * // Subsequent reads yield primitive blocks
56
- * ```
57
- */
58
- export declare class OsmPbfBytesToBlocksTransformStream extends TransformStream<Uint8Array<ArrayBufferLike>, OsmPbfHeaderBlock | OsmPbfBlock> {
59
- generateBlobsFromChunk: (chunk: Uint8Array) => Generator<Uint8Array<ArrayBuffer>, void, unknown>;
60
- header: OsmPbfHeaderBlock | null;
61
- constructor(decompress?: (data: Uint8Array<ArrayBuffer>) => Promise<Uint8Array<ArrayBuffer>>);
62
- }
63
- //# sourceMappingURL=pbf-to-blocks.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pbf-to-blocks.d.ts","sourceRoot":"","sources":["../../src/pbf-to-blocks.ts"],"names":[],"mappings":"AAGA,OAAO,EACN,KAAK,WAAW,EAChB,KAAK,iBAAiB,EAGtB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACN,KAAK,mBAAmB,EAGxB,MAAM,SAAS,CAAA;AAEhB,uFAAuF;AACvF,eAAO,MAAM,mBAAmB,IAAI,CAAA;AAEpC;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAsB,UAAU,CAC/B,IAAI,EAAE,mBAAmB,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;;YAkBnC,cAAc,CAAC,WAAW,CAAC;GAE9C;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,kCAAmC,SAAQ,eAAe,CACtE,UAAU,CAAC,eAAe,CAAC,EAC3B,iBAAiB,GAAG,WAAW,CAC/B;IACA,sBAAsB,2EAA8B;IACpD,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAAO;gBAEtC,UAAU,GAAE,CACX,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,KACzB,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAiB;CAiBtD"}
@@ -1,96 +0,0 @@
1
- import Pbf from "pbf";
2
- import { osmPbfBlobsToBlocksGenerator } from "./blobs-to-blocks";
3
- import { createOsmPbfBlobGenerator } from "./pbf-to-blobs";
4
- import { readHeaderBlock, readPrimitiveBlock, } from "./proto/osmformat";
5
- import { toAsyncGenerator, webDecompress, } from "./utils";
6
- /** Number of bytes used to encode the BlobHeader length prefix (big-endian uint32). */
7
- export const HEADER_LENGTH_BYTES = 4;
8
- /**
9
- * Parse an OSM PBF file from various input sources.
10
- *
11
- * Accepts `ArrayBuffer`, `Uint8Array`, `ReadableStream<Uint8Array>`, or async generators.
12
- * Returns the file header and a lazy async generator of primitive blocks for on-demand parsing.
13
- *
14
- * @param data - PBF bytes as buffer, stream, or async iterable.
15
- * @returns Object with `header` (file metadata) and `blocks` (async generator of primitive blocks).
16
- * @throws If the header block is missing or malformed.
17
- *
18
- * @example
19
- * ```ts
20
- * import { readOsmPbf } from "@osmix/pbf"
21
- *
22
- * // From a file stream
23
- * const { header, blocks } = await readOsmPbf(Bun.file('./monaco.pbf').stream())
24
- *
25
- * // From a fetch response
26
- * const response = await fetch('/data/monaco.pbf')
27
- * const { header, blocks } = await readOsmPbf(response.body!)
28
- *
29
- * // Iterate blocks lazily
30
- * for await (const block of blocks) {
31
- * for (const group of block.primitivegroup) {
32
- * console.log(group.dense?.id.length ?? 0, "dense nodes")
33
- * }
34
- * }
35
- * ```
36
- */
37
- export async function readOsmPbf(data) {
38
- const generateBlobsFromChunk = createOsmPbfBlobGenerator();
39
- const blocks = osmPbfBlobsToBlocksGenerator((async function* () {
40
- for await (const chunk of toAsyncGenerator(data)) {
41
- for await (const blob of generateBlobsFromChunk(chunk)) {
42
- yield blob;
43
- }
44
- }
45
- })());
46
- const header = (await blocks.next()).value;
47
- if (header == null || !("required_features" in header)) {
48
- throw Error("OSM PBF header block not found");
49
- }
50
- return {
51
- header,
52
- blocks: blocks,
53
- };
54
- }
55
- /**
56
- * Web `TransformStream` that decodes raw PBF byte chunks into OSM header and data blocks.
57
- *
58
- * The first blob in an OSM PBF file is always the header block; subsequent blobs
59
- * contain primitive data (nodes, ways, relations). This stream handles the framing,
60
- * decompression, and protobuf decoding automatically.
61
- *
62
- * @example
63
- * ```ts
64
- * import { OsmPbfBytesToBlocksTransformStream } from "@osmix/pbf"
65
- *
66
- * const response = await fetch('/data/monaco.pbf')
67
- * const blocksStream = response.body!
68
- * .pipeThrough(new OsmPbfBytesToBlocksTransformStream())
69
- *
70
- * const reader = blocksStream.getReader()
71
- * const { value: header } = await reader.read() // First read yields header
72
- * // Subsequent reads yield primitive blocks
73
- * ```
74
- */
75
- export class OsmPbfBytesToBlocksTransformStream extends TransformStream {
76
- generateBlobsFromChunk = createOsmPbfBlobGenerator();
77
- header = null;
78
- constructor(decompress = webDecompress) {
79
- super({
80
- transform: async (bytesChunk, controller) => {
81
- for await (const rawBlobs of this.generateBlobsFromChunk(bytesChunk)) {
82
- const decompressed = await decompress(rawBlobs);
83
- const pbf = new Pbf(decompressed);
84
- if (this.header == null) {
85
- this.header = readHeaderBlock(pbf);
86
- controller.enqueue(this.header);
87
- }
88
- else {
89
- controller.enqueue(readPrimitiveBlock(pbf));
90
- }
91
- }
92
- },
93
- });
94
- }
95
- }
96
- //# sourceMappingURL=pbf-to-blocks.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pbf-to-blocks.js","sourceRoot":"","sources":["../../src/pbf-to-blocks.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAA;AACrB,OAAO,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAA;AAChE,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAA;AAC1D,OAAO,EAGN,eAAe,EACf,kBAAkB,GAClB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAEN,gBAAgB,EAChB,aAAa,GACb,MAAM,SAAS,CAAA;AAEhB,uFAAuF;AACvF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAA;AAEpC;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC/B,IAAsD;IAEtD,MAAM,sBAAsB,GAAG,yBAAyB,EAAE,CAAA;IAC1D,MAAM,MAAM,GAAG,4BAA4B,CAC1C,CAAC,KAAK,SAAS,CAAC;QACf,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;YAClD,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,sBAAsB,CAAC,KAAK,CAAC,EAAE,CAAC;gBACxD,MAAM,IAAI,CAAA;YACX,CAAC;QACF,CAAC;IACF,CAAC,CAAC,EAAE,CACJ,CAAA;IACD,MAAM,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAA;IAC1C,IAAI,MAAM,IAAI,IAAI,IAAI,CAAC,CAAC,mBAAmB,IAAI,MAAM,CAAC,EAAE,CAAC;QACxD,MAAM,KAAK,CAAC,gCAAgC,CAAC,CAAA;IAC9C,CAAC;IACD,OAAO;QACN,MAAM;QACN,MAAM,EAAE,MAAqC;KAC7C,CAAA;AACF,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,OAAO,kCAAmC,SAAQ,eAGvD;IACA,sBAAsB,GAAG,yBAAyB,EAAE,CAAA;IACpD,MAAM,GAA6B,IAAI,CAAA;IACvC,YACC,aAEwC,aAAa;QAErD,KAAK,CAAC;YACL,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE;gBAC3C,IAAI,KAAK,EAAE,MAAM,QAAQ,IAAI,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,EAAE,CAAC;oBACtE,MAAM,YAAY,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAA;oBAC/C,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,CAAA;oBACjC,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC;wBACzB,IAAI,CAAC,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,CAAA;wBAClC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;oBAChC,CAAC;yBAAM,CAAC;wBACP,UAAU,CAAC,OAAO,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAA;oBAC5C,CAAC;gBACF,CAAC;YACF,CAAC;SACD,CAAC,CAAA;IACH,CAAC;CACD"}
@@ -1,27 +0,0 @@
1
- import type Pbf from "pbf";
2
- export type OsmPbfBlob = {
3
- raw_size?: number;
4
- raw?: Uint8Array;
5
- zlib_data?: Uint8Array;
6
- };
7
- export type OsmPbfBlobHeader = {
8
- type: "OSMHeader" | "OSMData";
9
- datasize: number;
10
- };
11
- /**
12
- * Reads an `OsmPbfBlob` message from the current position in the Pbf reader.
13
- */
14
- export declare function readBlob(pbf: Pbf, end?: number): OsmPbfBlob;
15
- /**
16
- * Writes an `OsmPbfBlob` message to the provided Pbf writer.
17
- */
18
- export declare function writeBlob(obj: OsmPbfBlob, pbf: Pbf): void;
19
- /**
20
- * Reads an `OsmPbfBlobHeader` from the current position in the Pbf reader.
21
- */
22
- export declare function readBlobHeader(pbf: Pbf, end?: number): OsmPbfBlobHeader;
23
- /**
24
- * Writes an `OsmPbfBlobHeader` message to the provided Pbf writer.
25
- */
26
- export declare function writeBlobHeader(obj: OsmPbfBlobHeader, pbf: Pbf): void;
27
- //# sourceMappingURL=fileformat.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fileformat.d.ts","sourceRoot":"","sources":["../../../src/proto/fileformat.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,GAAG,MAAM,KAAK,CAAA;AAE1B,MAAM,MAAM,UAAU,GAAG;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,GAAG,CAAC,EAAE,UAAU,CAAA;IAChB,SAAS,CAAC,EAAE,UAAU,CAAA;CACtB,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC9B,IAAI,EAAE,WAAW,GAAG,SAAS,CAAA;IAC7B,QAAQ,EAAE,MAAM,CAAA;CAChB,CAAA;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,UAAU,CAQ3D;AAYD;;GAEG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,QAIlD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAMvE;AAQD;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,gBAAgB,EAAE,GAAG,EAAE,GAAG,QAG9D"}
@@ -1,57 +0,0 @@
1
- /**
2
- * Reads an `OsmPbfBlob` message from the current position in the Pbf reader.
3
- */
4
- export function readBlob(pbf, end) {
5
- return pbf.readFields(readBlobField, {
6
- raw_size: 0,
7
- }, end);
8
- }
9
- /**
10
- * Dispatches individual Blob fields based on their protobuf tag.
11
- */
12
- function readBlobField(tag, obj, pbf) {
13
- if (tag === 2)
14
- obj.raw_size = pbf.readVarint(true);
15
- else if (tag === 1) {
16
- obj.raw = pbf.readBytes();
17
- }
18
- else if (tag === 3) {
19
- obj.zlib_data = pbf.readBytes();
20
- }
21
- }
22
- /**
23
- * Writes an `OsmPbfBlob` message to the provided Pbf writer.
24
- */
25
- export function writeBlob(obj, pbf) {
26
- if (obj.raw_size)
27
- pbf.writeVarintField(2, obj.raw_size);
28
- if (obj.raw != null)
29
- pbf.writeBytesField(1, obj.raw);
30
- if (obj.zlib_data != null)
31
- pbf.writeBytesField(3, obj.zlib_data);
32
- }
33
- /**
34
- * Reads an `OsmPbfBlobHeader` from the current position in the Pbf reader.
35
- */
36
- export function readBlobHeader(pbf, end) {
37
- return pbf.readFields(readBlobHeaderField, { type: "OSMData", datasize: 0 }, end);
38
- }
39
- /**
40
- * Dispatches individual BlobHeader fields based on their protobuf tag.
41
- */
42
- function readBlobHeaderField(tag, obj, pbf) {
43
- if (tag === 1)
44
- obj.type = pbf.readString();
45
- else if (tag === 3)
46
- obj.datasize = pbf.readVarint(true);
47
- }
48
- /**
49
- * Writes an `OsmPbfBlobHeader` message to the provided Pbf writer.
50
- */
51
- export function writeBlobHeader(obj, pbf) {
52
- if (obj.type)
53
- pbf.writeStringField(1, obj.type);
54
- if (obj.datasize)
55
- pbf.writeVarintField(3, obj.datasize);
56
- }
57
- //# sourceMappingURL=fileformat.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fileformat.js","sourceRoot":"","sources":["../../../src/proto/fileformat.ts"],"names":[],"mappings":"AAcA;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,GAAQ,EAAE,GAAY;IAC9C,OAAO,GAAG,CAAC,UAAU,CACpB,aAAa,EACb;QACC,QAAQ,EAAE,CAAC;KACX,EACD,GAAG,CACH,CAAA;AACF,CAAC;AACD;;GAEG;AACH,SAAS,aAAa,CAAC,GAAW,EAAE,GAAe,EAAE,GAAQ;IAC5D,IAAI,GAAG,KAAK,CAAC;QAAE,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;SAC7C,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC;QACpB,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,SAAS,EAAE,CAAA;IAC1B,CAAC;SAAM,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC;QACtB,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS,EAAE,CAAA;IAChC,CAAC;AACF,CAAC;AACD;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,GAAe,EAAE,GAAQ;IAClD,IAAI,GAAG,CAAC,QAAQ;QAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAA;IACvD,IAAI,GAAG,CAAC,GAAG,IAAI,IAAI;QAAE,GAAG,CAAC,eAAe,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAA;IACpD,IAAI,GAAG,CAAC,SAAS,IAAI,IAAI;QAAE,GAAG,CAAC,eAAe,CAAC,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,CAAA;AACjE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,GAAQ,EAAE,GAAY;IACpD,OAAO,GAAG,CAAC,UAAU,CACpB,mBAAmB,EACnB,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE,EAChC,GAAG,CACH,CAAA;AACF,CAAC;AACD;;GAEG;AACH,SAAS,mBAAmB,CAAC,GAAW,EAAE,GAAqB,EAAE,GAAQ;IACxE,IAAI,GAAG,KAAK,CAAC;QAAE,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,UAAU,EAA8B,CAAA;SACjE,IAAI,GAAG,KAAK,CAAC;QAAE,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;AACxD,CAAC;AACD;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,GAAqB,EAAE,GAAQ;IAC9D,IAAI,GAAG,CAAC,IAAI;QAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAA;IAC/C,IAAI,GAAG,CAAC,QAAQ;QAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAA;AACxD,CAAC"}
@@ -1,92 +0,0 @@
1
- import type Pbf from "pbf";
2
- export type OsmPbfHeaderBBox = {
3
- left: number;
4
- right: number;
5
- top: number;
6
- bottom: number;
7
- };
8
- export type OsmPbfHeaderBlock = {
9
- bbox?: OsmPbfHeaderBBox;
10
- required_features: string[];
11
- optional_features: string[];
12
- writingprogram?: string;
13
- source?: string;
14
- osmosis_replication_timestamp?: number;
15
- osmosis_replication_sequence_number?: number;
16
- osmosis_replication_base_url?: string;
17
- };
18
- export interface OsmPbfBlockSettings {
19
- granularity?: number;
20
- lat_offset?: number;
21
- lon_offset?: number;
22
- date_granularity?: number;
23
- }
24
- export interface OsmPbfBlock extends OsmPbfBlockSettings {
25
- stringtable: OsmPbfStringTable;
26
- primitivegroup: OsmPbfGroup[];
27
- }
28
- export type OsmPbfGroup = {
29
- nodes: OsmPbfNode[];
30
- dense?: OsmPbfDenseNodes;
31
- ways: OsmPbfWay[];
32
- relations: OsmPbfRelation[];
33
- };
34
- export type OsmPbfStringTable = Uint8Array[];
35
- export interface OsmPbfInfo {
36
- version?: number;
37
- timestamp?: number;
38
- changeset?: number;
39
- uid?: number;
40
- user_sid?: number;
41
- visible?: boolean;
42
- }
43
- export type OsmPbfDenseInfo = {
44
- version: number[];
45
- timestamp: number[];
46
- changeset: number[];
47
- uid: number[];
48
- user_sid: number[];
49
- visible: boolean[];
50
- };
51
- export interface OsmPbfPrimitive {
52
- id: number;
53
- keys: number[];
54
- vals: number[];
55
- info?: OsmPbfInfo;
56
- }
57
- export interface OsmPbfNode extends OsmPbfPrimitive {
58
- lat: number;
59
- lon: number;
60
- }
61
- export type OsmPbfDenseNodes = {
62
- id: number[];
63
- denseinfo?: OsmPbfDenseInfo;
64
- lat: number[];
65
- lon: number[];
66
- keys_vals: number[];
67
- };
68
- export interface OsmPbfWay extends OsmPbfPrimitive {
69
- refs: number[];
70
- }
71
- export interface OsmPbfRelation extends OsmPbfPrimitive {
72
- roles_sid: number[];
73
- memids: number[];
74
- types: number[];
75
- }
76
- /**
77
- * Reads an `OsmPbfHeaderBlock` message from the provided Pbf reader.
78
- */
79
- export declare function readHeaderBlock(pbf: Pbf, end?: number): OsmPbfHeaderBlock;
80
- /**
81
- * Serializes an `OsmPbfHeaderBlock` message into the Pbf writer.
82
- */
83
- export declare function writeHeaderBlock(obj: OsmPbfHeaderBlock, pbf: Pbf): void;
84
- /**
85
- * Reads a primitive block containing string tables and primitive groups.
86
- */
87
- export declare function readPrimitiveBlock(pbf: Pbf, end?: number): OsmPbfBlock;
88
- /**
89
- * Serializes a primitive block including its string table and primitive groups.
90
- */
91
- export declare function writePrimitiveBlock(obj: OsmPbfBlock, pbf: Pbf): void;
92
- //# sourceMappingURL=osmformat.d.ts.map