pdf-mapview 0.1.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.
- package/LICENSE +12 -0
- package/README.md +197 -0
- package/dist/client/index.cjs +1155 -0
- package/dist/client/index.cjs.map +1 -0
- package/dist/client/index.d.cts +102 -0
- package/dist/client/index.d.ts +102 -0
- package/dist/client/index.js +1149 -0
- package/dist/client/index.js.map +1 -0
- package/dist/ingest/cli.cjs +703 -0
- package/dist/ingest/cli.cjs.map +1 -0
- package/dist/ingest/cli.d.cts +1 -0
- package/dist/ingest/cli.d.ts +1 -0
- package/dist/ingest/cli.js +697 -0
- package/dist/ingest/cli.js.map +1 -0
- package/dist/ingest/index.cjs +751 -0
- package/dist/ingest/index.cjs.map +1 -0
- package/dist/ingest/index.d.cts +33 -0
- package/dist/ingest/index.d.ts +33 -0
- package/dist/ingest/index.js +738 -0
- package/dist/ingest/index.js.map +1 -0
- package/dist/ingest-sfbf6503.d.cts +647 -0
- package/dist/ingest-sfbf6503.d.ts +647 -0
- package/dist/server/index.cjs +751 -0
- package/dist/server/index.cjs.map +1 -0
- package/dist/server/index.d.cts +3 -0
- package/dist/server/index.d.ts +3 -0
- package/dist/server/index.js +738 -0
- package/dist/server/index.js.map +1 -0
- package/dist/shared/index.cjs +238 -0
- package/dist/shared/index.cjs.map +1 -0
- package/dist/shared/index.d.cts +8 -0
- package/dist/shared/index.d.ts +8 -0
- package/dist/shared/index.js +222 -0
- package/dist/shared/index.js.map +1 -0
- package/dist/source-Cb1QZPVw.d.ts +60 -0
- package/dist/source-DHrup45h.d.cts +60 -0
- package/package.json +104 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/shared/overlays.ts","../../src/shared/manifest.ts","../../src/shared/bytes.ts","../../src/ingest/pipeline/inspectInput.ts","../../src/ingest/pipeline/rasterizePdf.ts","../../src/ingest/storage/memory.ts","../../src/ingest/pipeline/normalizeImage.ts","../../src/ingest/pipeline/buildTilePyramid.ts","../../src/ingest/pipeline/manifestBuilder.ts","../../src/ingest/pipeline/writeArtifacts.ts","../../src/ingest/ingestImage.ts","../../src/ingest/ingestPdf.ts","../../src/ingest/storage/local.ts","../../src/ingest/storage/s3Compatible.ts"],"names":["z","readFile","basename","extname","canvas","createCanvas","DOMMatrix","ImageData","Path2D","sharp","ensureTrailingSlash","joinRelativeUrl","ensureLeadingSlash","stripTrailingSlash","stripLeadingSlash","randomUUID","defaultId","resolve","mkdir","dirname","rm","path","join","writeFile"],"mappings":"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","file":"index.cjs","sourcesContent":["import { z } from \"zod\";\n\nimport type { NormalizedPoint, NormalizedRect } from \"./coordinates\";\n\nexport type RegionGeometryType = \"polygon\" | \"rectangle\" | \"point\" | \"label\";\n\nexport interface PolygonGeometry {\n type: \"polygon\";\n points: NormalizedPoint[];\n}\n\nexport interface RectangleGeometry {\n type: \"rectangle\";\n rect: NormalizedRect;\n}\n\nexport interface PointGeometry {\n type: \"point\";\n point: NormalizedPoint;\n radius?: number;\n}\n\nexport interface LabelGeometry {\n type: \"label\";\n point: NormalizedPoint;\n text: string;\n}\n\nexport type RegionGeometry =\n | PolygonGeometry\n | RectangleGeometry\n | PointGeometry\n | LabelGeometry;\n\nexport interface RegionFeature<Metadata = Record<string, unknown>> {\n id: string;\n geometry: RegionGeometry;\n label?: string;\n metadata?: Metadata;\n}\n\nexport interface RegionCollection<Metadata = Record<string, unknown>> {\n type: \"FeatureCollection\";\n regions: RegionFeature<Metadata>[];\n}\n\nconst normalizedPointSchema = z.object({\n x: z.number().finite().min(0).max(1),\n y: z.number().finite().min(0).max(1),\n});\n\nconst normalizedRectSchema = z.object({\n x: z.number().finite().min(0).max(1),\n y: z.number().finite().min(0).max(1),\n width: z.number().finite().min(0).max(1),\n height: z.number().finite().min(0).max(1),\n});\n\nexport const regionFeatureSchema = z.object({\n id: z.string().min(1),\n geometry: z.discriminatedUnion(\"type\", [\n z.object({\n type: z.literal(\"polygon\"),\n points: z.array(normalizedPointSchema).min(3),\n }),\n z.object({\n type: z.literal(\"rectangle\"),\n rect: normalizedRectSchema,\n }),\n z.object({\n type: z.literal(\"point\"),\n point: normalizedPointSchema,\n radius: z.number().finite().positive().optional(),\n }),\n z.object({\n type: z.literal(\"label\"),\n point: normalizedPointSchema,\n text: z.string().min(1),\n }),\n ]),\n label: z.string().optional(),\n metadata: z.record(z.unknown()).optional(),\n});\n\nexport const regionCollectionSchema = z.object({\n type: z.literal(\"FeatureCollection\"),\n regions: z.array(regionFeatureSchema),\n});\n\nexport function normalizeRegions(\n input?: RegionCollection | RegionFeature[] | null,\n): RegionFeature[] {\n if (!input) {\n return [];\n }\n\n if (Array.isArray(input)) {\n return input;\n }\n\n return input.regions;\n}\n","import { z } from \"zod\";\n\nimport { regionCollectionSchema } from \"./overlays\";\nimport type { RegionCollection } from \"./overlays\";\nimport type { TileFormat } from \"./ingest\";\n\nexport interface TileLevelManifest {\n z: number;\n width: number;\n height: number;\n columns: number;\n rows: number;\n scale: number;\n}\n\nexport interface PdfMapManifest {\n version: 1;\n kind: \"pdf-map\";\n id: string;\n source: {\n type: \"pdf\" | \"image\";\n originalFilename?: string;\n page?: number;\n width: number;\n height: number;\n mimeType?: string;\n };\n coordinateSpace: {\n normalized: true;\n width: number;\n height: number;\n };\n tiles: {\n tileSize: number;\n format: TileFormat;\n minZoom: number;\n maxZoom: number;\n pathTemplate: string;\n levels: TileLevelManifest[];\n };\n view: {\n defaultCenter: [number, number];\n defaultZoom: number;\n minZoom: number;\n maxZoom: number;\n };\n overlays?: {\n inline?: RegionCollection;\n url?: string;\n };\n assets?: {\n preview?: string;\n };\n metadata?: {\n title?: string;\n createdAt?: string;\n [key: string]: unknown;\n };\n}\n\nexport interface CreateManifestInput extends Omit<PdfMapManifest, \"version\" | \"kind\"> {}\n\nexport interface ResolveTileUrlArgs {\n manifest: PdfMapManifest;\n z: number;\n x: number;\n y: number;\n baseUrl?: string;\n overrideTemplate?: string;\n}\n\nconst tileLevelSchema = z.object({\n z: z.number().int().min(0),\n width: z.number().int().positive(),\n height: z.number().int().positive(),\n columns: z.number().int().positive(),\n rows: z.number().int().positive(),\n scale: z.number().positive(),\n});\n\nexport const manifestSchema: z.ZodType<PdfMapManifest> = z.object({\n version: z.literal(1),\n kind: z.literal(\"pdf-map\"),\n id: z.string().min(1),\n source: z.object({\n type: z.union([z.literal(\"pdf\"), z.literal(\"image\")]),\n originalFilename: z.string().optional(),\n page: z.number().int().positive().optional(),\n width: z.number().int().positive(),\n height: z.number().int().positive(),\n mimeType: z.string().optional(),\n }),\n coordinateSpace: z.object({\n normalized: z.literal(true),\n width: z.number().int().positive(),\n height: z.number().int().positive(),\n }),\n tiles: z.object({\n tileSize: z.number().int().positive(),\n format: z.union([z.literal(\"webp\"), z.literal(\"jpeg\"), z.literal(\"png\")]),\n minZoom: z.number().int().min(0),\n maxZoom: z.number().int().min(0),\n pathTemplate: z.string().min(1),\n levels: z.array(tileLevelSchema),\n }),\n view: z.object({\n defaultCenter: z.tuple([\n z.number().finite().min(0).max(1),\n z.number().finite().min(0).max(1),\n ]),\n defaultZoom: z.number().finite(),\n minZoom: z.number().finite(),\n maxZoom: z.number().finite(),\n }),\n overlays: z\n .object({\n inline: regionCollectionSchema.optional(),\n url: z.string().optional(),\n })\n .optional(),\n assets: z\n .object({\n preview: z.string().optional(),\n })\n .optional(),\n metadata: z\n .object({\n title: z.string().optional(),\n createdAt: z.string().optional(),\n })\n .catchall(z.unknown())\n .optional(),\n});\n\nexport function createManifest(input: CreateManifestInput): PdfMapManifest {\n return manifestSchema.parse({\n version: 1,\n kind: \"pdf-map\",\n ...input,\n });\n}\n\nexport function parseManifest(input: unknown): PdfMapManifest {\n return manifestSchema.parse(input);\n}\n\nexport function resolveTileUrl(args: ResolveTileUrlArgs): string {\n const template = args.overrideTemplate ?? args.manifest.tiles.pathTemplate;\n const relative = template\n .replaceAll(\"{z}\", String(args.z))\n .replaceAll(\"{x}\", String(args.x))\n .replaceAll(\"{y}\", String(args.y));\n\n if (/^https?:\\/\\//.test(relative)) {\n return relative;\n }\n\n if (!args.baseUrl) {\n return relative;\n }\n\n if (/^https?:\\/\\//.test(args.baseUrl)) {\n return new URL(relative.replace(/^\\//, \"\"), ensureTrailingSlash(args.baseUrl)).toString();\n }\n\n return joinRelativeUrl(args.baseUrl, relative);\n}\n\nfunction ensureTrailingSlash(value: string): string {\n return value.endsWith(\"/\") ? value : `${value}/`;\n}\n\nfunction joinRelativeUrl(baseUrl: string, path: string): string {\n const normalizedBase = ensureLeadingSlash(stripTrailingSlash(baseUrl));\n const normalizedPath = stripLeadingSlash(path);\n\n if (!normalizedPath) {\n return normalizedBase || \"/\";\n }\n\n return normalizedBase ? `${normalizedBase}/${normalizedPath}` : `/${normalizedPath}`;\n}\n\nfunction stripLeadingSlash(value: string): string {\n return value.replace(/^\\/+/, \"\");\n}\n\nfunction stripTrailingSlash(value: string): string {\n return value.replace(/\\/+$/, \"\");\n}\n\nfunction ensureLeadingSlash(value: string): string {\n if (!value) {\n return \"\";\n }\n return value.startsWith(\"/\") ? value : `/${value}`;\n}\n","export function toUint8Array(input: Buffer | Uint8Array | ArrayBuffer): Uint8Array {\n if (input instanceof ArrayBuffer) {\n return new Uint8Array(input);\n }\n\n return new Uint8Array(input.buffer, input.byteOffset, input.byteLength);\n}\n","import { basename, extname } from \"node:path\";\nimport { readFile } from \"node:fs/promises\";\n\nimport { toUint8Array } from \"../../shared/bytes\";\n\nexport interface InspectedInput {\n bytes: Uint8Array;\n originalFilename?: string;\n ext?: string;\n}\n\nexport async function inspectInput(\n input: string | Buffer | Uint8Array | ArrayBuffer,\n): Promise<InspectedInput> {\n if (typeof input === \"string\") {\n const bytes = await readFile(input);\n return {\n bytes: toUint8Array(bytes),\n originalFilename: basename(input),\n ext: extname(input).slice(1).toLowerCase() || undefined,\n };\n }\n\n return {\n bytes: toUint8Array(input),\n };\n}\n","import { createCanvas, DOMMatrix, ImageData, Path2D } from \"@napi-rs/canvas\";\n\nexport interface RasterizedPdf {\n bytes: Uint8Array;\n width: number;\n height: number;\n mimeType: string;\n}\n\nexport interface RasterizePdfOptions {\n bytes: Uint8Array;\n page: number;\n maxDimension: number;\n rasterDpi?: number;\n background: string;\n}\n\ninterface PdfJsModule {\n getDocument: (src: unknown) => {\n promise: Promise<any>;\n };\n}\n\nexport async function rasterizePdf(options: RasterizePdfOptions): Promise<RasterizedPdf> {\n installNodeCanvasGlobals();\n const pdfjs = (await import(\"pdfjs-dist/legacy/build/pdf.mjs\")) as PdfJsModule;\n const loadingTask = pdfjs.getDocument({\n data: options.bytes,\n useSystemFonts: true,\n });\n const pdf = await loadingTask.promise;\n const page = await pdf.getPage(options.page);\n const viewport = page.getViewport({ scale: 1 });\n const scale = resolveScale({\n viewportWidth: viewport.width,\n viewportHeight: viewport.height,\n maxDimension: options.maxDimension,\n rasterDpi: options.rasterDpi,\n });\n const scaledViewport = page.getViewport({\n scale: scale <= 0 ? 1 : scale,\n });\n\n const canvas = createCanvas(Math.ceil(scaledViewport.width), Math.ceil(scaledViewport.height));\n const context = canvas.getContext(\"2d\");\n context.fillStyle = options.background;\n context.fillRect(0, 0, canvas.width, canvas.height);\n\n await page.render({\n canvasContext: context as never,\n viewport: scaledViewport,\n }).promise;\n\n const png = await canvas.encode(\"png\");\n\n await page.cleanup();\n await pdf.cleanup();\n await pdf.destroy();\n\n return {\n bytes: new Uint8Array(png),\n width: canvas.width,\n height: canvas.height,\n mimeType: \"image/png\",\n };\n}\n\nfunction installNodeCanvasGlobals() {\n if (!(\"DOMMatrix\" in globalThis)) {\n (globalThis as Record<string, unknown>).DOMMatrix = DOMMatrix;\n }\n if (!(\"ImageData\" in globalThis)) {\n (globalThis as Record<string, unknown>).ImageData = ImageData;\n }\n if (!(\"Path2D\" in globalThis)) {\n (globalThis as Record<string, unknown>).Path2D = Path2D;\n }\n}\n\nfunction resolveScale(options: {\n viewportWidth: number;\n viewportHeight: number;\n maxDimension: number;\n rasterDpi?: number;\n}) {\n if (options.rasterDpi && Number.isFinite(options.rasterDpi) && options.rasterDpi > 0) {\n return options.rasterDpi / 72;\n }\n\n return Math.min(\n 1,\n options.maxDimension / Math.max(options.viewportWidth, options.viewportHeight),\n );\n}\n","import type {\n FinalizeStorageArgs,\n StorageAdapter,\n StorageFinalizeResult,\n StoredArtifact,\n WriteAssetArgs,\n WriteManifestArgs,\n WriteTileArgs,\n} from \"../../shared/ingest\";\n\nexport function memoryStorageAdapter(): StorageAdapter {\n const artifacts: StoredArtifact[] = [];\n\n const record = (\n kind: StoredArtifact[\"kind\"],\n path: string,\n contentType: string,\n bytes: Uint8Array,\n ): StoredArtifact => {\n const artifact = {\n kind,\n path,\n contentType,\n size: bytes.byteLength,\n } satisfies StoredArtifact;\n artifacts.push(artifact);\n return artifact;\n };\n\n return {\n async writeTile(args: WriteTileArgs) {\n return record(\"tile\", `tiles/${args.z}/${args.x}/${args.y}.${args.ext}`, args.contentType, args.bytes);\n },\n async writeManifest(args: WriteManifestArgs) {\n return record(\"manifest\", args.path, args.contentType, args.bytes);\n },\n async writeAsset(args: WriteAssetArgs) {\n return record(args.kind, args.path, args.contentType, args.bytes);\n },\n async finalize(_args: FinalizeStorageArgs): Promise<StorageFinalizeResult> {\n return {\n artifacts: [...artifacts],\n };\n },\n };\n}\n","import sharp from \"sharp\";\n\nexport interface NormalizedImage {\n bytes: Uint8Array;\n width: number;\n height: number;\n mimeType: string;\n}\n\nexport interface NormalizeImageOptions {\n bytes: Uint8Array;\n maxDimension: number;\n background: string;\n}\n\nexport async function normalizeImage(options: NormalizeImageOptions): Promise<NormalizedImage> {\n const { data, info } = await sharp(options.bytes, { failOn: \"none\" })\n .rotate()\n .resize({\n width: options.maxDimension,\n height: options.maxDimension,\n fit: \"inside\",\n withoutEnlargement: true,\n })\n .flatten({\n background: options.background,\n })\n .png()\n .toBuffer({ resolveWithObject: true });\n\n return {\n bytes: new Uint8Array(data),\n width: info.width,\n height: info.height,\n mimeType: \"image/png\",\n };\n}\n","import sharp from \"sharp\";\n\nimport type { OutputArtifact, TileFormat } from \"../../shared/ingest\";\nimport type { TileLevelManifest } from \"../../shared/manifest\";\n\nexport interface TileBuildResult {\n levels: TileLevelManifest[];\n tiles: OutputArtifact[];\n preview: OutputArtifact;\n}\n\nexport interface BuildTilePyramidOptions {\n image: Uint8Array;\n width: number;\n height: number;\n tileSize: number;\n format: TileFormat;\n quality: number;\n}\n\nexport async function buildTilePyramid(\n options: BuildTilePyramidOptions,\n): Promise<TileBuildResult> {\n const maxZoom = Math.max(\n 0,\n Math.ceil(Math.log2(Math.max(options.width, options.height) / options.tileSize)),\n );\n const levels: TileLevelManifest[] = [];\n const tiles: OutputArtifact[] = [];\n const source = Buffer.from(options.image);\n\n for (let z = 0; z <= maxZoom; z += 1) {\n const scale = 1 / 2 ** (maxZoom - z);\n const width = Math.max(1, Math.ceil(options.width * scale));\n const height = Math.max(1, Math.ceil(options.height * scale));\n const columns = Math.max(1, Math.ceil(width / options.tileSize));\n const rows = Math.max(1, Math.ceil(height / options.tileSize));\n\n levels.push({\n z,\n width,\n height,\n columns,\n rows,\n scale,\n });\n\n const levelBuffer = await sharp(source, { failOn: \"none\" })\n .resize({\n width,\n height,\n fit: \"fill\",\n })\n .png()\n .toBuffer();\n\n for (let y = 0; y < rows; y += 1) {\n for (let x = 0; x < columns; x += 1) {\n const left = x * options.tileSize;\n const top = y * options.tileSize;\n const extractWidth = Math.min(options.tileSize, width - left);\n const extractHeight = Math.min(options.tileSize, height - top);\n const tileBuffer = await sharp(levelBuffer, { failOn: \"none\" })\n .extract({\n left,\n top,\n width: extractWidth,\n height: extractHeight,\n })\n .toFormat(options.format, formatOptions(options.format, options.quality))\n .toBuffer();\n\n tiles.push({\n kind: \"tile\",\n path: `tiles/${z}/${x}/${y}.${extensionForFormat(options.format)}`,\n contentType: contentTypeForFormat(options.format),\n bytes: new Uint8Array(tileBuffer),\n });\n }\n }\n }\n\n const previewBuffer = await sharp(source, { failOn: \"none\" })\n .resize({\n width: 1024,\n height: 1024,\n fit: \"inside\",\n withoutEnlargement: true,\n })\n .webp({ quality: 80 })\n .toBuffer();\n\n return {\n levels,\n tiles,\n preview: {\n kind: \"preview\",\n path: \"preview.webp\",\n contentType: \"image/webp\",\n bytes: new Uint8Array(previewBuffer),\n },\n };\n}\n\nfunction formatOptions(format: TileFormat, quality: number) {\n switch (format) {\n case \"jpeg\":\n return { quality };\n case \"png\":\n return {};\n case \"webp\":\n default:\n return { quality };\n }\n}\n\nexport function extensionForFormat(format: TileFormat): string {\n return format === \"jpeg\" ? \"jpg\" : format;\n}\n\nexport function contentTypeForFormat(format: TileFormat): string {\n switch (format) {\n case \"jpeg\":\n return \"image/jpeg\";\n case \"png\":\n return \"image/png\";\n case \"webp\":\n default:\n return \"image/webp\";\n }\n}\n","import type { RegionCollection } from \"../../shared/overlays\";\nimport type { TileFormat } from \"../../shared/ingest\";\nimport type { PdfMapManifest, TileLevelManifest } from \"../../shared/manifest\";\nimport { createManifest } from \"../../shared/manifest\";\n\nexport interface BuildManifestOptions {\n id: string;\n title?: string;\n sourceType: \"pdf\" | \"image\";\n originalFilename?: string;\n page?: number;\n width: number;\n height: number;\n mimeType?: string;\n tileSize: number;\n tileFormat: TileFormat;\n levels: TileLevelManifest[];\n baseUrl?: string;\n inlineOverlays?: RegionCollection;\n overlayUrl?: string;\n previewPath?: string;\n}\n\nexport function buildManifest(options: BuildManifestOptions): PdfMapManifest {\n const minZoom = options.levels[0]?.z ?? 0;\n const maxZoom = options.levels[options.levels.length - 1]?.z ?? 0;\n\n return createManifest({\n id: options.id,\n source: {\n type: options.sourceType,\n originalFilename: options.originalFilename,\n page: options.page,\n width: options.width,\n height: options.height,\n mimeType: options.mimeType,\n },\n coordinateSpace: {\n normalized: true,\n width: options.width,\n height: options.height,\n },\n tiles: {\n tileSize: options.tileSize,\n format: options.tileFormat,\n minZoom,\n maxZoom,\n pathTemplate: withBaseUrl(options.baseUrl, `tiles/{z}/{x}/{y}.${options.tileFormat === \"jpeg\" ? \"jpg\" : options.tileFormat}`),\n levels: options.levels,\n },\n view: {\n defaultCenter: [0.5, 0.5],\n defaultZoom: 1,\n minZoom: 0,\n maxZoom: Math.max(maxZoom + 2, 6),\n },\n overlays:\n options.inlineOverlays || options.overlayUrl\n ? {\n inline: options.inlineOverlays,\n url: options.overlayUrl ? withBaseUrl(options.baseUrl, options.overlayUrl) : undefined,\n }\n : undefined,\n assets: options.previewPath\n ? {\n preview: withBaseUrl(options.baseUrl, options.previewPath),\n }\n : undefined,\n metadata: {\n title: options.title,\n createdAt: new Date().toISOString(),\n },\n });\n}\n\nfunction withBaseUrl(baseUrl: string | undefined, path: string) {\n if (!baseUrl) {\n return path;\n }\n\n if (/^https?:\\/\\//.test(baseUrl)) {\n return new URL(path.replace(/^\\//, \"\"), ensureTrailingSlash(baseUrl)).toString();\n }\n\n return joinRelativeUrl(baseUrl, path);\n}\n\nfunction ensureTrailingSlash(baseUrl: string) {\n return baseUrl.endsWith(\"/\") ? baseUrl : `${baseUrl}/`;\n}\n\nfunction joinRelativeUrl(baseUrl: string, path: string) {\n const normalizedBase = ensureLeadingSlash(stripTrailingSlash(baseUrl));\n const normalizedPath = stripLeadingSlash(path);\n\n if (!normalizedPath) {\n return normalizedBase || \"/\";\n }\n\n return normalizedBase ? `${normalizedBase}/${normalizedPath}` : `/${normalizedPath}`;\n}\n\nfunction stripLeadingSlash(value: string) {\n return value.replace(/^\\/+/, \"\");\n}\n\nfunction stripTrailingSlash(value: string) {\n return value.replace(/\\/+$/, \"\");\n}\n\nfunction ensureLeadingSlash(value: string) {\n if (!value) {\n return \"\";\n }\n return value.startsWith(\"/\") ? value : `/${value}`;\n}\n","import type {\n OutputArtifact,\n StorageAdapter,\n StorageFinalizeResult,\n StoredArtifact,\n} from \"../../shared/ingest\";\nimport type { PdfMapManifest } from \"../../shared/manifest\";\n\nexport interface WriteArtifactsResult {\n uploaded: StoredArtifact[];\n storage: StorageFinalizeResult;\n}\n\nexport async function writeArtifacts(\n adapter: StorageAdapter,\n manifest: PdfMapManifest,\n files: OutputArtifact[],\n): Promise<WriteArtifactsResult> {\n const uploaded: StoredArtifact[] = [];\n\n for (const file of files) {\n if (file.kind === \"tile\") {\n const match = file.path.match(/^tiles\\/(\\d+)\\/(\\d+)\\/(\\d+)\\.[^.]+$/);\n if (!match) {\n throw new Error(`Invalid tile path: ${file.path}`);\n }\n uploaded.push(\n await adapter.writeTile({\n z: Number(match[1]),\n x: Number(match[2]),\n y: Number(match[3]),\n ext: file.path.split(\".\").pop() ?? \"bin\",\n bytes: file.bytes,\n contentType: file.contentType,\n }),\n );\n continue;\n }\n\n if (file.kind === \"manifest\") {\n uploaded.push(\n await adapter.writeManifest({\n path: file.path,\n bytes: file.bytes,\n contentType: \"application/json\",\n }),\n );\n continue;\n }\n if (!adapter.writeAsset) {\n throw new Error(`Storage adapter does not support writing ${file.kind} assets.`);\n }\n\n uploaded.push(\n await adapter.writeAsset({\n kind: file.kind,\n path: file.path,\n bytes: file.bytes,\n contentType: file.contentType,\n }),\n );\n }\n\n const storage = await adapter.finalize({\n manifest,\n artifacts: uploaded,\n });\n\n return {\n uploaded,\n storage,\n };\n}\n","import { randomUUID } from \"node:crypto\";\n\nimport type {\n IngestCommonOptions,\n IngestImageOptions,\n IngestResult,\n OutputArtifact,\n} from \"../shared/ingest\";\nimport type { RegionCollection } from \"../shared/overlays\";\nimport { memoryStorageAdapter } from \"./storage/memory\";\nimport { inspectInput } from \"./pipeline/inspectInput\";\nimport { normalizeImage } from \"./pipeline/normalizeImage\";\nimport { buildTilePyramid } from \"./pipeline/buildTilePyramid\";\nimport { buildManifest } from \"./pipeline/manifestBuilder\";\nimport { writeArtifacts } from \"./pipeline/writeArtifacts\";\n\nexport async function ingestImage(options: IngestImageOptions): Promise<IngestResult> {\n const inspected = await inspectInput(options.input);\n\n const normalized = await normalizeImage({\n bytes: inspected.bytes,\n maxDimension: options.maxDimension ?? 12288,\n background: options.background ?? \"#ffffff\",\n });\n\n return ingestRasterizedImage(normalized, {\n common: options,\n id: options.id ?? defaultId(inspected.originalFilename ?? \"image\"),\n title: options.title,\n sourceType: \"image\",\n originalFilename: inspected.originalFilename,\n mimeType: normalized.mimeType,\n });\n}\n\nexport async function ingestRasterizedImage(\n normalized: { bytes: Uint8Array; width: number; height: number; mimeType: string },\n input: {\n common: IngestCommonOptions;\n id: string;\n title?: string;\n sourceType: \"image\" | \"pdf\";\n originalFilename?: string;\n mimeType?: string;\n page?: number;\n },\n): Promise<IngestResult> {\n const tileSize = input.common.tileSize ?? 256;\n const tileFormat = input.common.tileFormat ?? \"webp\";\n const tileQuality = input.common.tileQuality ?? 92;\n const storage = input.common.storage ?? memoryStorageAdapter();\n\n const pyramid = await buildTilePyramid({\n image: normalized.bytes,\n width: normalized.width,\n height: normalized.height,\n tileSize,\n format: tileFormat,\n quality: tileQuality,\n });\n\n const overlayPayload = await resolveOverlayPayload(input.common.overlays);\n\n const manifest = buildManifest({\n id: input.id,\n title: input.title,\n sourceType: input.sourceType,\n originalFilename: input.originalFilename,\n page: input.page,\n width: normalized.width,\n height: normalized.height,\n mimeType: input.mimeType ?? normalized.mimeType,\n tileSize,\n tileFormat,\n levels: pyramid.levels,\n baseUrl: input.common.baseUrl,\n inlineOverlays: overlayPayload.inline,\n overlayUrl: overlayPayload.url,\n previewPath: pyramid.preview.path,\n });\n\n const files: OutputArtifact[] = [...pyramid.tiles, pyramid.preview];\n\n if (overlayPayload.file) {\n files.push(overlayPayload.file);\n }\n\n files.push({\n kind: \"manifest\",\n path: \"manifest.json\",\n contentType: \"application/json\",\n bytes: new TextEncoder().encode(JSON.stringify(manifest, null, 2)),\n });\n\n const { uploaded, storage: storageResult } = await writeArtifacts(storage, manifest, files);\n\n return {\n manifest,\n width: normalized.width,\n height: normalized.height,\n tileCount: pyramid.tiles.length,\n files,\n uploaded,\n warnings: [],\n storage: storageResult,\n };\n}\n\nasync function resolveOverlayPayload(\n input?: RegionCollection | string,\n): Promise<{\n inline?: RegionCollection;\n url?: string;\n file?: OutputArtifact;\n}> {\n if (!input) {\n return {};\n }\n\n if (typeof input === \"string\") {\n return {\n url: input,\n };\n }\n\n const bytes = new TextEncoder().encode(JSON.stringify(input, null, 2));\n if (bytes.byteLength < 64 * 1024) {\n return {\n inline: input,\n };\n }\n\n return {\n url: \"regions.json\",\n file: {\n kind: \"overlay\",\n path: \"regions.json\",\n contentType: \"application/json\",\n bytes,\n },\n };\n}\n\nfunction defaultId(seed: string) {\n const safe = seed\n .replace(/\\.[^.]+$/, \"\")\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\");\n\n return safe || randomUUID();\n}\n","import { randomUUID } from \"node:crypto\";\n\nimport type { IngestPdfOptions, IngestResult } from \"../shared/ingest\";\nimport { inspectInput } from \"./pipeline/inspectInput\";\nimport { rasterizePdf } from \"./pipeline/rasterizePdf\";\nimport { ingestRasterizedImage } from \"./ingestImage\";\n\nexport async function ingestPdf(options: IngestPdfOptions): Promise<IngestResult> {\n const inspected = await inspectInput(options.input);\n const page = options.page ?? 1;\n const rasterized = await rasterizePdf({\n bytes: inspected.bytes,\n page,\n maxDimension: options.maxDimension ?? 12288,\n rasterDpi: options.rasterDpi,\n background: options.background ?? \"#ffffff\",\n });\n\n return ingestRasterizedImage(rasterized, {\n common: options,\n id: options.id ?? defaultId(inspected.originalFilename ?? \"pdf\"),\n title: options.title,\n sourceType: \"pdf\",\n originalFilename: inspected.originalFilename,\n mimeType: \"application/pdf\",\n page,\n });\n}\n\nfunction defaultId(seed: string) {\n const safe = seed\n .replace(/\\.[^.]+$/, \"\")\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\");\n\n return safe || randomUUID();\n}\n","import { mkdir, rm, writeFile } from \"node:fs/promises\";\nimport { dirname, join, resolve } from \"node:path\";\n\nimport type {\n FinalizeStorageArgs,\n StorageAdapter,\n StorageFinalizeResult,\n StoredArtifact,\n WriteAssetArgs,\n WriteManifestArgs,\n WriteTileArgs,\n} from \"../../shared/ingest\";\n\nexport interface LocalStorageAdapterOptions {\n baseDir: string;\n clean?: boolean;\n manifestName?: string;\n}\n\nexport function localStorageAdapter(options: LocalStorageAdapterOptions): StorageAdapter {\n const baseDir = resolve(options.baseDir);\n const manifestName = options.manifestName ?? \"manifest.json\";\n const artifacts: StoredArtifact[] = [];\n let cleaned = false;\n\n const ensureParent = async (filePath: string) => {\n await mkdir(dirname(filePath), { recursive: true });\n };\n\n const ensureClean = async () => {\n if (!options.clean || cleaned) {\n return;\n }\n cleaned = true;\n await rm(baseDir, { recursive: true, force: true });\n };\n\n const write = async (\n kind: StoredArtifact[\"kind\"],\n relativePath: string,\n contentType: string,\n bytes: Uint8Array,\n ): Promise<StoredArtifact> => {\n await ensureClean();\n const path = join(baseDir, relativePath);\n await ensureParent(path);\n await writeFile(path, bytes);\n const artifact: StoredArtifact = {\n kind,\n path,\n contentType,\n size: bytes.byteLength,\n };\n artifacts.push(artifact);\n return artifact;\n };\n\n return {\n async writeTile(args: WriteTileArgs) {\n return write(\n \"tile\",\n `tiles/${args.z}/${args.x}/${args.y}.${args.ext}`,\n args.contentType,\n args.bytes,\n );\n },\n async writeManifest(args: WriteManifestArgs) {\n return write(\"manifest\", manifestName, args.contentType, args.bytes);\n },\n async writeAsset(args: WriteAssetArgs) {\n return write(args.kind, args.path, args.contentType, args.bytes);\n },\n async finalize(_args: FinalizeStorageArgs): Promise<StorageFinalizeResult> {\n return {\n artifacts: [...artifacts],\n };\n },\n };\n}\n","import type {\n FinalizeStorageArgs,\n StorageAdapter,\n StorageFinalizeResult,\n StoredArtifact,\n WriteAssetArgs,\n WriteManifestArgs,\n WriteTileArgs,\n} from \"../../shared/ingest\";\n\nexport interface S3CompatiblePutObjectArgs {\n key: string;\n body: Uint8Array;\n contentType: string;\n cacheControl: string;\n}\n\nexport interface S3CompatibleAdapterOptions {\n prefix?: string;\n baseUrl?: string;\n putObject: (args: S3CompatiblePutObjectArgs) => Promise<{ url?: string } | void>;\n}\n\nexport function s3CompatibleStorageAdapter(\n options: S3CompatibleAdapterOptions,\n): StorageAdapter {\n const prefix = normalizePrefix(options.prefix);\n const artifacts: StoredArtifact[] = [];\n\n const upload = async (\n kind: StoredArtifact[\"kind\"],\n relativePath: string,\n contentType: string,\n bytes: Uint8Array,\n cacheControl: string,\n ): Promise<StoredArtifact> => {\n const key = `${prefix}${relativePath}`;\n const result = await options.putObject({\n key,\n body: bytes,\n contentType,\n cacheControl,\n });\n const artifact: StoredArtifact = {\n kind,\n path: key,\n contentType,\n size: bytes.byteLength,\n url: result?.url ?? (options.baseUrl ? `${normalizeBaseUrl(options.baseUrl)}${key}` : undefined),\n };\n artifacts.push(artifact);\n return artifact;\n };\n\n return {\n async writeTile(args: WriteTileArgs) {\n return upload(\n \"tile\",\n `tiles/${args.z}/${args.x}/${args.y}.${args.ext}`,\n args.contentType,\n args.bytes,\n \"public, max-age=31536000, immutable\",\n );\n },\n async writeManifest(args: WriteManifestArgs) {\n return upload(\"manifest\", args.path, args.contentType, args.bytes, \"public, max-age=60\");\n },\n async writeAsset(args: WriteAssetArgs) {\n const cacheControl =\n args.kind === \"preview\"\n ? \"public, max-age=31536000, immutable\"\n : \"public, max-age=60\";\n return upload(args.kind, args.path, args.contentType, args.bytes, cacheControl);\n },\n async finalize(_args: FinalizeStorageArgs): Promise<StorageFinalizeResult> {\n return {\n artifacts: [...artifacts],\n baseUrl: options.baseUrl,\n };\n },\n };\n}\n\nfunction normalizePrefix(prefix?: string) {\n if (!prefix) {\n return \"\";\n }\n return prefix.endsWith(\"/\") ? prefix : `${prefix}/`;\n}\n\nfunction normalizeBaseUrl(baseUrl: string) {\n return baseUrl.endsWith(\"/\") ? baseUrl : `${baseUrl}/`;\n}\n"]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { F as FinalizeStorageArgs, I as IngestCommonOptions, a as IngestImageOptions, b as IngestPdfOptions, c as IngestResult, O as OutputArtifact, S as StorageAdapter, m as StorageFinalizeResult, n as StoredArtifact, T as TileFormat, W as WriteAssetArgs, p as WriteManifestArgs, q as WriteTileArgs, u as createManifest, y as parseManifest, E as resolveTileUrl } from '../ingest-sfbf6503.cjs';
|
|
2
|
+
export { LocalStorageAdapterOptions, S3CompatibleAdapterOptions, S3CompatiblePutObjectArgs, ingestImage, ingestPdf, localStorageAdapter, memoryStorageAdapter, s3CompatibleStorageAdapter } from '../ingest/index.cjs';
|
|
3
|
+
import 'zod';
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { F as FinalizeStorageArgs, I as IngestCommonOptions, a as IngestImageOptions, b as IngestPdfOptions, c as IngestResult, O as OutputArtifact, S as StorageAdapter, m as StorageFinalizeResult, n as StoredArtifact, T as TileFormat, W as WriteAssetArgs, p as WriteManifestArgs, q as WriteTileArgs, u as createManifest, y as parseManifest, E as resolveTileUrl } from '../ingest-sfbf6503.js';
|
|
2
|
+
export { LocalStorageAdapterOptions, S3CompatibleAdapterOptions, S3CompatiblePutObjectArgs, ingestImage, ingestPdf, localStorageAdapter, memoryStorageAdapter, s3CompatibleStorageAdapter } from '../ingest/index.js';
|
|
3
|
+
import 'zod';
|