tilfluktsrom/pwa/node_modules/json-schema-traverse
Ole-Morten Duesund e8428de775 Add progressive web app companion for cross-platform access
Vite + TypeScript PWA that mirrors the Android app's core features:
- Pre-processed shelter data (build-time UTM33N→WGS84 conversion)
- Leaflet map with shelter markers, user location, and offline tiles
- Canvas compass arrow (ported from DirectionArrowView.kt)
- IndexedDB shelter cache with 7-day staleness check
- Service worker with CacheFirst tiles and precached app shell
- i18n for en, nb, nn (ported from Android strings.xml)
- iOS/Android compass handling with low-pass filter
- Respects user map interaction (no auto-snap on pan/zoom)
- Build revision cache-breaker for reliable SW updates

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 17:41:38 +01:00
..
.github Add progressive web app companion for cross-platform access 2026-03-08 17:41:38 +01:00
spec Add progressive web app companion for cross-platform access 2026-03-08 17:41:38 +01:00
.eslintrc.yml Add progressive web app companion for cross-platform access 2026-03-08 17:41:38 +01:00
index.d.ts Add progressive web app companion for cross-platform access 2026-03-08 17:41:38 +01:00
index.js Add progressive web app companion for cross-platform access 2026-03-08 17:41:38 +01:00
LICENSE Add progressive web app companion for cross-platform access 2026-03-08 17:41:38 +01:00
package.json Add progressive web app companion for cross-platform access 2026-03-08 17:41:38 +01:00
README.md Add progressive web app companion for cross-platform access 2026-03-08 17:41:38 +01:00

json-schema-traverse

Traverse JSON Schema passing each schema object to callback

build npm coverage

Install

npm install json-schema-traverse

Usage

const traverse = require('json-schema-traverse');
const schema = {
  properties: {
    foo: {type: 'string'},
    bar: {type: 'integer'}
  }
};

traverse(schema, {cb});
// cb is called 3 times with:
// 1. root schema
// 2. {type: 'string'}
// 3. {type: 'integer'}

// Or:

traverse(schema, {cb: {pre, post}});
// pre is called 3 times with:
// 1. root schema
// 2. {type: 'string'}
// 3. {type: 'integer'}
//
// post is called 3 times with:
// 1. {type: 'string'}
// 2. {type: 'integer'}
// 3. root schema

Callback function cb is called for each schema object (not including draft-06 boolean schemas), including the root schema, in pre-order traversal. Schema references ($ref) are not resolved, they are passed as is. Alternatively, you can pass a {pre, post} object as cb, and then pre will be called before traversing child elements, and post will be called after all child elements have been traversed.

Callback is passed these parameters:

  • schema: the current schema object
  • JSON pointer: from the root schema to the current schema object
  • root schema: the schema passed to traverse object
  • parent JSON pointer: from the root schema to the parent schema object (see below)
  • parent keyword: the keyword inside which this schema appears (e.g. properties, anyOf, etc.)
  • parent schema: not necessarily parent object/array; in the example above the parent schema for {type: 'string'} is the root schema
  • index/property: index or property name in the array/object containing multiple schemas; in the example above for {type: 'string'} the property name is 'foo'

Traverse objects in all unknown keywords

const traverse = require('json-schema-traverse');
const schema = {
  mySchema: {
    minimum: 1,
    maximum: 2
  }
};

traverse(schema, {allKeys: true, cb});
// cb is called 2 times with:
// 1. root schema
// 2. mySchema

Without option allKeys: true callback will be called only with root schema.

Enterprise support

json-schema-traverse package is a part of Tidelift enterprise subscription - it provides a centralised commercial support to open-source software users, in addition to the support provided by software maintainers.

Security contact

To report a security vulnerability, please use the Tidelift security contact. Tidelift will coordinate the fix and disclosure. Please do NOT report security vulnerability via GitHub issues.

License

MIT