diff --git a/package-lock.json b/package-lock.json index b4fd7e1..8a27957 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,7 +17,8 @@ "p-defer": "^4.0.1", "p-mutex": "^0.1.0", "secret-stream-http": "^1.0.1", - "styled-map-package-api": "^5.0.0-pre.3", + "smp-noto-glyphs": "^1.0.0-pre.0", + "styled-map-package-api": "^5.0.0-pre.4", "typebox": "^1.0.61", "typed-event-target": "^3.4.0" }, @@ -5574,6 +5575,12 @@ "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, + "node_modules/smp-noto-glyphs": { + "version": "1.0.0-pre.0", + "resolved": "https://registry.npmjs.org/smp-noto-glyphs/-/smp-noto-glyphs-1.0.0-pre.0.tgz", + "integrity": "sha512-Nb6oVz+l91t99fwkAJ6WxbgSQEunvzfWkEwpDhPcvXcnn7ac+wD/PCwWz65X564WQ+oHUNxkbw1UQlj9MymUrg==", + "license": "MIT" + }, "node_modules/sodium-native": { "version": "5.0.10", "resolved": "https://registry.npmjs.org/sodium-native/-/sodium-native-5.0.10.tgz", @@ -5732,9 +5739,9 @@ } }, "node_modules/styled-map-package-api": { - "version": "5.0.0-pre.3", - "resolved": "https://registry.npmjs.org/styled-map-package-api/-/styled-map-package-api-5.0.0-pre.3.tgz", - "integrity": "sha512-7QPz9mtUx7CQrunazZ44N680tPGeOjpKXUNpmTmyhOSFHqXT9DbkcAE3StQQk/kmEFm/mx2x7v+XaSI5bRuzqQ==", + "version": "5.0.0-pre.4", + "resolved": "https://registry.npmjs.org/styled-map-package-api/-/styled-map-package-api-5.0.0-pre.4.tgz", + "integrity": "sha512-wh+IrZVoi2w5V0j7twMlxgARC47mow4gyocWshGS7J/Uec0WILEUqyxwxxxSyu5iN049ers7R6bckxItUmEhVQ==", "license": "MIT", "dependencies": { "@gmaclennan/zip-reader": "^1.0.0", diff --git a/package.json b/package.json index 41e7d76..f3846c7 100644 --- a/package.json +++ b/package.json @@ -1,104 +1,105 @@ { - "name": "@comapeo/map-server", - "version": "1.0.1", - "type": "module", - "exports": { - ".": { - "types": "./dist/index.d.ts", - "default": "./dist/index.js" - }, - "./errors.js": { - "types": "./dist/lib/errors.d.ts", - "default": "./dist/lib/errors.js" - }, - "./constants.js": { - "types": "./dist/lib/constants.d.ts", - "default": "./dist/lib/constants.js" - } - }, - "scripts": { - "test": "run-p test:*", - "test:js": "vitest run", - "test:lint": "eslint", - "test:types": "tsc --noEmit", - "test:publint": "npm run build && publint", - "format": "prettier --write .", - "prepare": "husky && patch-package", - "build": "tsc -p tsconfig.npm.json", - "prepack": "run-s test build" - }, - "keywords": [], - "author": "Awana Digital", - "license": "MIT", - "description": "Map Style & Tile server for CoMapeo", - "devDependencies": { - "@eslint/js": "^9.39.1", - "@trivago/prettier-plugin-sort-imports": "^6.0.0", - "@tsconfig/node18": "^18.2.6", - "@types/bogon": "^1.0.2", - "@types/node": "^20.19.26", - "@vitest/coverage-v8": "^4.0.17", - "bogon": "^1.1.0", - "eslint": "^9.39.1", - "eventsource-client": "^1.2.0", - "globals": "^16.5.0", - "husky": "^9.1.7", - "ky": "1.7.5", - "lint-staged": "^16.2.7", - "msw": "^2.12.4", - "npm-run-all2": "^7.0.2", - "patch-package": "^8.0.1", - "prettier": "^3.7.4", - "publint": "^0.3.17", - "type-fest": "^5.3.1", - "typescript": "^5.9.3", - "typescript-eslint": "^8.53.1", - "vitest": "^4.0.15" - }, - "prettier": { - "semi": false, - "singleQuote": true, - "useTabs": true, - "importOrderSeparation": true, - "importOrder": [ - "^node:", - "^@?\\w", - "^[./]" - ], - "plugins": [ - "@trivago/prettier-plugin-sort-imports" - ] - }, - "lint-staged": { - "*.js": "eslint --cache --fix", - "*.{js,css,md}": "prettier --write" - }, - "dependencies": { - "@whatwg-node/server": "^0.10.17", - "itty-router": "^5.0.22", - "p-defer": "^4.0.1", - "p-mutex": "^0.1.0", - "secret-stream-http": "^1.0.1", - "styled-map-package-api": "^5.0.0-pre.3", - "typebox": "^1.0.61", - "typed-event-target": "^3.4.0" - }, - "bundleDependencies": [ - "@whatwg-node/server" - ], - "files": [ - "src/", - "dist/" - ], - "directories": { - "test": "test" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/digidem/comapeo-map-server.git" - }, - "bugs": { - "url": "https://github.com/digidem/comapeo-map-server/issues" - }, - "homepage": "https://github.com/digidem/comapeo-map-server#readme" + "name": "@comapeo/map-server", + "version": "1.0.1", + "type": "module", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + }, + "./errors.js": { + "types": "./dist/lib/errors.d.ts", + "default": "./dist/lib/errors.js" + }, + "./constants.js": { + "types": "./dist/lib/constants.d.ts", + "default": "./dist/lib/constants.js" + } + }, + "scripts": { + "test": "run-p test:*", + "test:js": "vitest run", + "test:lint": "eslint", + "test:types": "tsc --noEmit", + "test:publint": "npm run build && publint", + "format": "prettier --write .", + "prepare": "husky && patch-package", + "build": "tsc -p tsconfig.npm.json", + "prepack": "run-s test build" + }, + "keywords": [], + "author": "Awana Digital", + "license": "MIT", + "description": "Map Style & Tile server for CoMapeo", + "devDependencies": { + "@eslint/js": "^9.39.1", + "@trivago/prettier-plugin-sort-imports": "^6.0.0", + "@tsconfig/node18": "^18.2.6", + "@types/bogon": "^1.0.2", + "@types/node": "^20.19.26", + "@vitest/coverage-v8": "^4.0.17", + "bogon": "^1.1.0", + "eslint": "^9.39.1", + "eventsource-client": "^1.2.0", + "globals": "^16.5.0", + "husky": "^9.1.7", + "ky": "1.7.5", + "lint-staged": "^16.2.7", + "msw": "^2.12.4", + "npm-run-all2": "^7.0.2", + "patch-package": "^8.0.1", + "prettier": "^3.7.4", + "publint": "^0.3.17", + "type-fest": "^5.3.1", + "typescript": "^5.9.3", + "typescript-eslint": "^8.53.1", + "vitest": "^4.0.15" + }, + "prettier": { + "semi": false, + "singleQuote": true, + "useTabs": true, + "importOrderSeparation": true, + "importOrder": [ + "^node:", + "^@?\\w", + "^[./]" + ], + "plugins": [ + "@trivago/prettier-plugin-sort-imports" + ] + }, + "lint-staged": { + "*.js": "eslint --cache --fix", + "*.{js,css,md}": "prettier --write" + }, + "dependencies": { + "@whatwg-node/server": "^0.10.17", + "itty-router": "^5.0.22", + "p-defer": "^4.0.1", + "p-mutex": "^0.1.0", + "secret-stream-http": "^1.0.1", + "smp-noto-glyphs": "^1.0.0-pre.0", + "styled-map-package-api": "^5.0.0-pre.4", + "typebox": "^1.0.61", + "typed-event-target": "^3.4.0" + }, + "bundleDependencies": [ + "@whatwg-node/server" + ], + "files": [ + "src/", + "dist/" + ], + "directories": { + "test": "test" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/digidem/comapeo-map-server.git" + }, + "bugs": { + "url": "https://github.com/digidem/comapeo-map-server/issues" + }, + "homepage": "https://github.com/digidem/comapeo-map-server#readme" } diff --git a/src/routes/maps.ts b/src/routes/maps.ts index ab2a12d..5641903 100644 --- a/src/routes/maps.ts +++ b/src/routes/maps.ts @@ -1,5 +1,7 @@ import { IRequestStrict, IttyRouter, type RequestHandler } from 'itty-router' import Mutex from 'p-mutex' +import { notoGlyphFallback } from 'smp-noto-glyphs' +import { emptyTileFallback } from 'styled-map-package-api/fallbacks' import { createServer as createSmpServer } from 'styled-map-package-api/server' import type { Context } from '../context.js' @@ -24,6 +26,8 @@ export function MapsRouter({ base = '/' }, ctx: Context) { const smpServer = createSmpServer({ base: `${base}:mapId/`, + fallbackGlyph: notoGlyphFallback, + fallbackTile: emptyTileFallback, }) const router = IttyRouter({ base })