npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

ropegeo-common

v1.17.2

Published

Shared domain models and helpers for RopeGeo and WebScraper

Readme

ropegeo-common

Shared domain models (validated model classes, enums, query params) and helpers (S3, SQS, HTTP, etc.) for RopeGeo and WebScraper. Published to npm as ropegeo-common so both projects can share one package instead of duplicating code.

Install

npm install ropegeo-common

Imports

  • Modelsimport { … } from 'ropegeo-common/models' (or import type { … } for symbols that are type-only in TypeScript). The package root ropegeo-common re-exports everything from ./models for convenience. The subpath ropegeo-common/classes is kept as an alias of ./models for older imports until dependents switch over.
  • Helpersimport { … } from 'ropegeo-common/helpers' (and import type { … } for helper types such as GetS3ObjectResult). The full barrel includes Node-only modules (S3 folder upload uses fs); React Native / Metro should use ropegeo-common/helpers/network (sources under src/helpers/network/, barrel index.ts) for the request-timeout / abort helpers only (NETWORK_REQUEST_*, installNetworkRequestPolicyTimers, mergeParentSignalWithDeadline, resolveRequestTimeoutMs, isAbortError, isNetworkRequestTimeoutError, and related types).

Helper tables use columns Name, Description, Import. Model tables add Base class after Name (N/A for enums, TypeScript-only type aliases, constants, registration functions, and classes without an exported superclass; otherwise the direct superclass).


General HTTP and async helpers (src/helpers/)

| Name | Description | Import | | --- | --- | --- | | httpRequest | HTTP client wrapper: headers, throws on non-OK responses, optional Lambda proxy routing. | import { httpRequest } from 'ropegeo-common/helpers' | | ProgressLogger | Progress logging utility. | import { ProgressLogger } from 'ropegeo-common/helpers' | | timeoutAfter | Promise helper that rejects after a timeout. | import { timeoutAfter } from 'ropegeo-common/helpers' | | NETWORK_REQUEST_DEFAULT_TIMEOUT_SECONDS | Default request deadline in seconds when timeoutAfterSeconds is omitted on components. | import { NETWORK_REQUEST_DEFAULT_TIMEOUT_SECONDS } from 'ropegeo-common/helpers' | | NETWORK_REQUEST_HARD_TIMEOUT_MS | Default deadline in ms (NETWORK_REQUEST_DEFAULT_TIMEOUT_SECONDS * 1000); used by resolveRequestTimeoutMs and mergeParentSignalWithDeadline default. | import { NETWORK_REQUEST_HARD_TIMEOUT_MS } from 'ropegeo-common/helpers' | | NETWORK_REQUEST_SLOW_THRESHOLD_MS | Suggested delay (15s) before showing slow-network UI; countdown ticks still emit from t=0 for consumers that compare elapsed time. | import { NETWORK_REQUEST_SLOW_THRESHOLD_MS } from 'ropegeo-common/helpers' | | NETWORK_REQUEST_TIMED_OUT_MESSAGE | Exact timeout error string for classification. | import { NETWORK_REQUEST_TIMED_OUT_MESSAGE } from 'ropegeo-common/helpers' | | resolveRequestTimeoutMs | Converts optional timeoutAfterSeconds to ms or returns the default deadline. | import { resolveRequestTimeoutMs } from 'ropegeo-common/helpers' | | installNetworkRequestPolicyTimers | Emits whole-second countdown until hardTimeoutMs, then invokes hard-timeout callback (single in-flight request). | import { installNetworkRequestPolicyTimers } from 'ropegeo-common/helpers' | | mergeParentSignalWithDeadline | Merges a parent AbortSignal with a per-request deadline (used for follow-up pagination fetches). | import { mergeParentSignalWithDeadline } from 'ropegeo-common/helpers' | | isNetworkRequestTimeoutError | Returns true when an error is the standardized timeout message. | import { isNetworkRequestTimeoutError } from 'ropegeo-common/helpers' | | isAbortError | Returns true for AbortError / DOMException abort failures. | import { isAbortError } from 'ropegeo-common/helpers' | | MergedDeadlineHandles | Handles returned by mergeParentSignalWithDeadline (signal, dispose, consumeDidTimeout). | import type { MergedDeadlineHandles } from 'ropegeo-common/helpers' | | NetworkRequestPolicyTimerCallbacks | Callback bundle for installNetworkRequestPolicyTimers. | import type { NetworkRequestPolicyTimerCallbacks } from 'ropegeo-common/helpers' |

S3 helpers (src/helpers/s3/)

| Name | Description | Import | | --- | --- | --- | | getS3Client | Returns a shared S3 client (singleton for Lambda reuse). | import { getS3Client } from 'ropegeo-common/helpers' | | resetS3ClientForTests | Resets the S3 client singleton (tests). | import { resetS3ClientForTests } from 'ropegeo-common/helpers' | | listS3Objects | Lists objects under an S3 prefix with optional pagination. | import { listS3Objects } from 'ropegeo-common/helpers' | | S3ObjectEntry | Entry shape for listed S3 objects. | import type { S3ObjectEntry } from 'ropegeo-common/helpers' | | getS3Object | Reads an S3 object by bucket and key; returns body string and optional Content-Type. | import { getS3Object } from 'ropegeo-common/helpers' | | GetS3ObjectResult | Result type for getS3Object. | import type { GetS3ObjectResult } from 'ropegeo-common/helpers' | | putS3Object | Writes an object to S3. | import { putS3Object } from 'ropegeo-common/helpers' | | deleteS3Object | Deletes an object from S3. | import { deleteS3Object } from 'ropegeo-common/helpers' | | listS3Folder | Lists keys under a folder-like prefix. | import { listS3Folder } from 'ropegeo-common/helpers' | | putS3Folder | Uploads multiple objects as a folder. | import { putS3Folder } from 'ropegeo-common/helpers' | | replaceS3Folder | Replaces contents of a folder prefix (delete then upload). | import { replaceS3Folder } from 'ropegeo-common/helpers' |

SQS helpers (src/helpers/sqs/)

| Name | Description | Import | | --- | --- | --- | | getSQSClient | Returns a shared SQS client. | import { getSQSClient } from 'ropegeo-common/helpers' | | resetSQSClientForTests | Resets the SQS client singleton (tests). | import { resetSQSClientForTests } from 'ropegeo-common/helpers' | | sendSQSMessage | Sends a message to an SQS queue. | import { sendSQSMessage } from 'ropegeo-common/helpers' | | deleteSQSMessage | Deletes a message from a queue (e.g. after processing). | import { deleteSQSMessage } from 'ropegeo-common/helpers' | | changeSQSMessageVisibilityTimeout | Changes visibility timeout for an in-flight message. | import { changeSQSMessageVisibilityTimeout } from 'ropegeo-common/helpers' |

CloudFront helpers (src/helpers/cloudfront/)

| Name | Description | Import | | --- | --- | --- | | createCloudFrontInvalidation | Creates a CloudFront cache invalidation for the given distribution paths. | import { createCloudFrontInvalidation } from 'ropegeo-common/helpers' |


Core enums (src/models/ root files)

| Name | Base class | Description | Import | | --- | --- | --- | --- | | PageDataSource | N/A | Where linked page content comes from (e.g. Ropewiki). | import { PageDataSource } from 'ropegeo-common/models' | | PermitStatus | N/A | Permit state for a canyon page (Yes, No, Restricted, Closed). | import { PermitStatus } from 'ropegeo-common/models' | | RopewikiVehicleType | N/A | Vehicle requirement for a canyon page (passenger, highClearance, fourWd, etc.). | import { RopewikiVehicleType } from 'ropegeo-common/models' | | FetchType | N/A | Online/offline discriminator type ('online' \| 'offline'). | import type { FetchType } from 'ropegeo-common/models' | | PageViewType | N/A | Discriminator enum for page view families (currently Ropewiki). | import { PageViewType } from 'ropegeo-common/models' |

Difficulty (src/models/difficulty/)

| Name | Base class | Description | Import | | --- | --- | --- | --- | | DifficultyRatingSystem | N/A | Discriminator for difficulty rating scales (e.g. ACA). | import { DifficultyRatingSystem } from 'ropegeo-common/models' | | DifficultyRating | N/A | Abstract base for page/route difficulty ratings; fromResult dispatches by difficultyRatingSystem. | import { DifficultyRating } from 'ropegeo-common/models' | | resolveDifficultyRatingFromRecord | N/A | Reads nested difficulty rating JSON from difficultyRating or legacy difficulty keys. | import { resolveDifficultyRatingFromRecord } from 'ropegeo-common/models' | | registerDifficultyParser | N/A | Registers a DifficultyRating.fromResult parser for a DifficultyRatingSystem. | import { registerDifficultyParser } from 'ropegeo-common/models' | | ACA_RISK_ORDER | N/A | Numeric total order for ACA risk ratings. | import { ACA_RISK_ORDER } from 'ropegeo-common/models' | | ACA_TECHNICAL_ORDER | N/A | Numeric total order for ACA technical ratings. | import { ACA_TECHNICAL_ORDER } from 'ropegeo-common/models' | | ACA_TIME_ORDER | N/A | Numeric total order for ACA time ratings. | import { ACA_TIME_ORDER } from 'ropegeo-common/models' | | ACA_WATER_ORDER | N/A | Numeric total order for ACA water ratings. | import { ACA_WATER_ORDER } from 'ropegeo-common/models' | | AcaTechnicalSubRating | N/A | ACA technical sub-rating enum (1–4). | import { AcaTechnicalSubRating } from 'ropegeo-common/models' | | AcaWaterSubRating | N/A | ACA water sub-rating enum. | import { AcaWaterSubRating } from 'ropegeo-common/models' | | AcaTimeSubRating | N/A | ACA time sub-rating enum (I–VI). | import { AcaTimeSubRating } from 'ropegeo-common/models' | | AcaRiskSubRating | N/A | ACA risk sub-rating enum. | import { AcaRiskSubRating } from 'ropegeo-common/models' | | RISK_ORDER | N/A | Deprecated alias for ACA_RISK_ORDER. | import { RISK_ORDER } from 'ropegeo-common/models' | | AcaDifficultyRating | DifficultyRating | ACA difficulty rating from DB/API strings; raw vs effective risk. | import { AcaDifficultyRating } from 'ropegeo-common/models' | | DifficultyType | N/A | Deprecated alias for DifficultyRatingSystem. | import { DifficultyType } from 'ropegeo-common/models' | | Difficulty | N/A | Deprecated alias for DifficultyRating. | import { Difficulty } from 'ropegeo-common/models' | | AcaDifficulty | N/A | Deprecated alias for AcaDifficultyRating. | import { AcaDifficulty } from 'ropegeo-common/models' | | AcaTechnicalRating | N/A | Deprecated alias for AcaTechnicalSubRating. | import { AcaTechnicalRating } from 'ropegeo-common/models' | | AcaWaterRating | N/A | Deprecated alias for AcaWaterSubRating. | import { AcaWaterRating } from 'ropegeo-common/models' | | AcaTimeRating | N/A | Deprecated alias for AcaTimeSubRating. | import { AcaTimeRating } from 'ropegeo-common/models' | | AcaRiskRating | N/A | Deprecated alias for AcaRiskSubRating. | import { AcaRiskRating } from 'ropegeo-common/models' | | DifficultyTechnical | N/A | Deprecated alias for AcaTechnicalSubRating. | import { DifficultyTechnical } from 'ropegeo-common/models' | | DifficultyWater | N/A | Deprecated alias for AcaWaterSubRating. | import { DifficultyWater } from 'ropegeo-common/models' | | DifficultyTime | N/A | Deprecated alias for AcaTimeSubRating. | import { DifficultyTime } from 'ropegeo-common/models' | | DifficultyRisk | N/A | Deprecated alias for AcaRiskSubRating. | import { DifficultyRisk } from 'ropegeo-common/models' |

API query parameters (src/models/api/params/)

| Name | Base class | Description | Import | | --- | --- | --- | --- | | CursorPaginationParams | N/A | Abstract limit + optional encoded cursor for GET APIs. | import { CursorPaginationParams } from 'ropegeo-common/models' | | PaginationParams | N/A | Abstract limit + 1-based page for page-based GET APIs. | import { PaginationParams } from 'ropegeo-common/models' | | DifficultyParams | N/A | Abstract GET-query difficulty filter; fromQueryStringParams / fromResult. | import { DifficultyParams } from 'ropegeo-common/models' | | DifficultyParamsQueryRecord | N/A | Flat string map for difficulty query parsing. | import type { DifficultyParamsQueryRecord } from 'ropegeo-common/models' | | registerDifficultyParamsQueryInference | N/A | Registers inference when difficulty-type is omitted. | import { registerDifficultyParamsQueryInference } from 'ropegeo-common/models' | | registerDifficultyParamsQueryParser | N/A | Registers a query parser for a DifficultyRatingSystem. | import { registerDifficultyParamsQueryParser } from 'ropegeo-common/models' | | isDifficultyParamsActive | N/A | True if difficulty params are non-null and active. | import { isDifficultyParamsActive } from 'ropegeo-common/models' | | AcaDifficultyParams | DifficultyParams | ACA pipe-list allow-lists for routes/search query strings. | import { AcaDifficultyParams } from 'ropegeo-common/models' | | Q_DIFFICULTY_TYPE | N/A | Query key constant for difficulty type. | import { Q_DIFFICULTY_TYPE } from 'ropegeo-common/models' | | Q_ACA_TECHNICAL | N/A | Query key for ACA technical rating list. | import { Q_ACA_TECHNICAL } from 'ropegeo-common/models' | | Q_ACA_WATER | N/A | Query key for ACA water rating list. | import { Q_ACA_WATER } from 'ropegeo-common/models' | | Q_ACA_TIME | N/A | Query key for ACA time rating list. | import { Q_ACA_TIME } from 'ropegeo-common/models' | | Q_ACA_RISK | N/A | Query key for ACA risk rating list. | import { Q_ACA_RISK } from 'ropegeo-common/models' | | RoutesParams | PaginationParams | Validated GET /routes params (region, source, optional route-types pipe-list, difficulty, limit, page). | import { RoutesParams } from 'ropegeo-common/models' | | SearchParams | CursorPaginationParams | Validated GET /search params including cursor pagination and difficulty. | import { SearchParams } from 'ropegeo-common/models' | | SearchOrder | N/A | Search sort order (similarity | quality | distance). | import type { SearchOrder } from 'ropegeo-common/models' | | SearchParamsPosition | N/A | { lat, lon } for distance search. | import type { SearchParamsPosition } from 'ropegeo-common/models' |

Persisted filters (src/models/filters/)

| Name | Base class | Description | Import | | --- | --- | --- | --- | | DifficultyFilterOptions | N/A | Abstract saved/modal difficulty filter; fromResult by difficultyType. | import { DifficultyFilterOptions } from 'ropegeo-common/models' | | registerDifficultyFilterOptionsParser | N/A | Registers DifficultyFilterOptions.fromResult for a scale. | import { registerDifficultyFilterOptionsParser } from 'ropegeo-common/models' | | TechnicalMinMax | N/A | Inclusive ACA technical min/max for filter UI. | import { TechnicalMinMax } from 'ropegeo-common/models' | | WaterMinMax | N/A | Inclusive ACA water min/max. | import { WaterMinMax } from 'ropegeo-common/models' | | TimeMinMax | N/A | Inclusive ACA time min/max. | import { TimeMinMax } from 'ropegeo-common/models' | | RiskMinMax | N/A | Inclusive ACA risk min/max. | import { RiskMinMax } from 'ropegeo-common/models' | | AcaDifficultyFilterOptions | DifficultyFilterOptions | ACA filter options; expands to AcaDifficultyParams. | import { AcaDifficultyFilterOptions } from 'ropegeo-common/models' | | RouteFilter | N/A | Persisted explore/minimap route filter → RoutesParams. | import { RouteFilter } from 'ropegeo-common/models' | | SearchFilter | N/A | Persisted mobile search filter → SearchParams. | import { SearchFilter } from 'ropegeo-common/models' | | SavedPagesFilter | N/A | Saved-pages list filter (name, order, difficulty). | import { SavedPagesFilter } from 'ropegeo-common/models' | | SavedPagesOrder | N/A | 'newest' | 'oldest'. | import type { SavedPagesOrder } from 'ropegeo-common/models' | | SavedFilters | N/A | Bundle of explore, search, and saved-pages filter slots. | import { SavedFilters } from 'ropegeo-common/models' |

Previews (src/models/previews/)

| Name | Base class | Description | Import | | --- | --- | --- | --- | | PreviewType | N/A | Discriminator for search hit kind (page vs region). | import { PreviewType } from 'ropegeo-common/models' | | Preview | N/A | Abstract union base for search/route preview payloads. | import { Preview } from 'ropegeo-common/models' | | GetRopewikiPagePreviewRow | N/A | DB row shape for building PagePreview from Ropewiki. | import type { GetRopewikiPagePreviewRow } from 'ropegeo-common/models' | | PagePreview | Preview | Abstract page preview base; dispatches to online/offline variants by fetchType. | import { PagePreview } from 'ropegeo-common/models' | | OnlinePagePreview | PagePreview | API-backed page preview with imageUrl and fetchType: "online". | import { OnlinePagePreview } from 'ropegeo-common/models' | | OfflinePagePreview | PagePreview | Persisted page preview with downloadedImagePath and fetchType: "offline". | import { OfflinePagePreview } from 'ropegeo-common/models' | | RegionPreview | Preview | Region search preview. | import { RegionPreview } from 'ropegeo-common/models' |

Route domain (src/models/routes/)

| Name | Base class | Description | Import | | --- | --- | --- | --- | | RouteType | N/A | Canyon, Cave, POI, Unknown. | import { RouteType } from 'ropegeo-common/models' | | Route | N/A | Route entity for APIs. | import { Route } from 'ropegeo-common/models' | | RouteGeoJsonFeature | N/A | One GeoJSON feature in the routes collection. | import { RouteGeoJsonFeature } from 'ropegeo-common/models' |

Routes GeoJSON API (src/models/api/results/)

| Name | Base class | Description | Import | | --- | --- | --- | --- | | RoutesGeojson | N/A | GeoJSON FeatureCollection of routes (features only; region bbox is on OnlineRegionMiniMap.bounds in GET /ropewiki/region/{id}). | import { RoutesGeojson } from 'ropegeo-common/models' | | RouteResult | PaginationResults | Page of GET /routes (RouteGeoJsonFeature[], total, page, resultType route). | import { RouteResult } from 'ropegeo-common/models' |

Route preview API (src/models/api/results/)

| Name | Base class | Description | Import | | --- | --- | --- | --- | | RoutePreviewResult | Result | Result for GET route preview (page previews array). | import { RoutePreviewResult } from 'ropegeo-common/models' |

Ropewiki page view API (src/models/api/endpoints/, src/models/api/results/)

| Name | Base class | Description | Import | | --- | --- | --- | --- | | RopewikiPageView | BaseRopewikiPageView | Backward-compatible alias exported as the online page view class. | import { RopewikiPageView } from 'ropegeo-common/models' | | BaseRopewikiPageView | N/A | Abstract Ropewiki page view base; includes optional mapDataId (vector tile record id) alongside shared validation/fields. | import { BaseRopewikiPageView } from 'ropegeo-common/models' | | OnlineRopewikiPageView | BaseRopewikiPageView | Online Ropewiki page view with API image URLs and online minimap variants. | import { OnlineRopewikiPageView } from 'ropegeo-common/models' | | OfflineRopewikiPageView | BaseRopewikiPageView | Offline Ropewiki page view with downloaded paths and offline minimap variants. | import { OfflineRopewikiPageView } from 'ropegeo-common/models' | | OnlinePageView | N/A | Interface for online page-view behavior (toOffline, toSavedPage, etc.). | import type { OnlinePageView } from 'ropegeo-common/models' | | OfflinePageView | N/A | Interface for offline page-view behavior (toPagePreview). | import type { OfflinePageView } from 'ropegeo-common/models' | | RopewikiPageViewResult | Result | API result wrapping RopewikiPageView. | import { RopewikiPageViewResult } from 'ropegeo-common/models' |

Page link preview API (src/models/api/results/)

| Name | Base class | Description | Import | | --- | --- | --- | --- | | RopewikiPageLinkPreviewResult | Result | Result for lightweight link preview. | import { RopewikiPageLinkPreviewResult } from 'ropegeo-common/models' |

Map data tile keys API (src/models/api/results/)

| Name | Base class | Description | Import | | --- | --- | --- | --- | | MapDataTileKeysResults | PaginationResults | Page-based pagination of map tile keys (total, page, totalBytes). | import { MapDataTileKeysResults } from 'ropegeo-common/models' |

Search API (src/models/api/results/)

| Name | Base class | Description | Import | | --- | --- | --- | --- | | SearchResults | CursorPaginationResults | Cursor-paginated search response (Preview items). | import { SearchResults } from 'ropegeo-common/models' |

Ropewiki region view API (src/models/api/endpoints/, src/models/api/results/)

| Name | Base class | Description | Import | | --- | --- | --- | --- | | RopewikiRegionView | N/A | Region detail view payload. | import { RopewikiRegionView } from 'ropegeo-common/models' | | RopewikiRegionViewResult | Result | API result wrapping region view. | import { RopewikiRegionViewResult } from 'ropegeo-common/models' |

Ropewiki region previews API (src/models/api/params/, src/models/api/results/)

| Name | Base class | Description | Import | | --- | --- | --- | --- | | RopewikiRegionPreviewsParams | CursorPaginationParams | Query/cursor params for region previews. | import { RopewikiRegionPreviewsParams } from 'ropegeo-common/models' | | RopewikiRegionPreviewsResult | CursorPaginationResults | Cursor-paginated region previews (Preview). | import { RopewikiRegionPreviewsResult } from 'ropegeo-common/models' |

Ropewiki region images API (src/models/api/endpoints/, src/models/api/params/, src/models/api/results/)

| Name | Base class | Description | Import | | --- | --- | --- | --- | | RopewikiRegionImageView | N/A | One image row in region images list. | import { RopewikiRegionImageView } from 'ropegeo-common/models' | | RopewikiRegionImageViewRow | N/A | Raw row shape for region image views. | import type { RopewikiRegionImageViewRow } from 'ropegeo-common/models' | | RopewikiRegionImagesParams | CursorPaginationParams | Query/cursor params for region images. | import { RopewikiRegionImagesParams } from 'ropegeo-common/models' | | RopewikiRegionImagesResult | CursorPaginationResults | Cursor-paginated region images. | import { RopewikiRegionImagesResult } from 'ropegeo-common/models' |

Beta sections (src/models/betaSections/)

| Name | Base class | Description | Import | | --- | --- | --- | --- | | BetaSectionImage | N/A | Abstract beta-section image base; dispatches by fetchType. | import { BetaSectionImage } from 'ropegeo-common/models' | | OnlineBetaSectionImage | BetaSectionImage | API image with remote URLs and optional downloadBytes. | import { OnlineBetaSectionImage } from 'ropegeo-common/models' | | OfflineBetaSectionImage | BetaSectionImage | Persisted image with downloaded banner/full paths. | import { OfflineBetaSectionImage } from 'ropegeo-common/models' | | RopewikiImageView | N/A | Type alias of BetaSectionImage for Ropewiki page view typings. | import type { RopewikiImageView } from 'ropegeo-common/models' | | DownloadBytes | N/A | Preview/banner/full byte sizes for downloads. | import { DownloadBytes } from 'ropegeo-common/models' | | BetaSection | N/A | Abstract beta section base; dispatches by fetchType. | import { BetaSection } from 'ropegeo-common/models' | | OnlineBetaSection | BetaSection | API section with online images (OnlineBetaSectionImage[]). | import { OnlineBetaSection } from 'ropegeo-common/models' | | OfflineBetaSection | BetaSection | Persisted section with offline images (OfflineBetaSectionImage[]). | import { OfflineBetaSection } from 'ropegeo-common/models' | | RopewikiBetaSectionView | N/A | Type alias of BetaSection for Ropewiki page view typings. | import type { RopewikiBetaSectionView } from 'ropegeo-common/models' |

Minimap (src/models/minimap/)

Abstract classes live under minimap/abstract/, concrete under minimap/concrete/. miniMapType is page, region, or centeredRegion; online vs offline is distinguished by fetchType.

| Name | Base class | Description | Import | | --- | --- | --- | --- | | Bounds | N/A | Geographic bounding box. | import { Bounds } from 'ropegeo-common/models' | | MiniMapType | N/A | Minimap discriminator (page, region, centeredRegion). | import { MiniMapType } from 'ropegeo-common/models' | | OnlineMiniMap | N/A | Interface: fetchType: "online" and miniMapType. | import type { OnlineMiniMap } from 'ropegeo-common/models' | | OfflineMiniMap | N/A | Interface: fetchType: "offline" and miniMapType. | import type { OfflineMiniMap } from 'ropegeo-common/models' | | MiniMap | N/A | Abstract base for minimaps; fromResult parses API wire types only. | import { MiniMap } from 'ropegeo-common/models' | | RegionMiniMap | MiniMap | Abstract region minimap (miniMapType: region); online/offline concrete subclasses. | import { RegionMiniMap } from 'ropegeo-common/models' | | OnlineRegionMiniMap | RegionMiniMap | API region routes (routesParams, bounds or null, fetchType: "online"). | import { OnlineRegionMiniMap } from 'ropegeo-common/models' | | OfflineRegionMiniMap | RegionMiniMap | Bundled region routes GeoJSON path (downloadedGeojson, fetchType: "offline"). | import { OfflineRegionMiniMap } from 'ropegeo-common/models' | | PageMiniMap | MiniMap | Abstract page minimap (miniMapType: page); MVT polyLineLayerId / pointLayerId, tile templates, optional legend. | import { PageMiniMap } from 'ropegeo-common/models' | | OnlinePageMiniMap | PageMiniMap | API page tiles (onlineTilesTemplate, fetchType: "online"). | import { OnlinePageMiniMap } from 'ropegeo-common/models' | | OfflinePageMiniMap | PageMiniMap | Local page tiles (offlineTilesTemplate, fetchType: "offline"). | import { OfflinePageMiniMap } from 'ropegeo-common/models' | | CenteredRegionMiniMap | MiniMap | Abstract centered-route minimap (miniMapType: centeredRegion). | import { CenteredRegionMiniMap } from 'ropegeo-common/models' | | OnlineCenteredRegionMiniMap | CenteredRegionMiniMap | API centered-route fallback (routesParams, fetchType: "online"). | import { OnlineCenteredRegionMiniMap } from 'ropegeo-common/models' | | OfflineCenteredRegionMiniMap | CenteredRegionMiniMap | Persisted local centered-route geojson (downloadedGeojson, fetchType: "offline"). | import { OfflineCenteredRegionMiniMap } from 'ropegeo-common/models' |

Minimap legend (src/models/minimap/legend/)

Legend entries for page minimaps are keyed objects (legend on PageMiniMap); each value is validated by featureType like MiniMap.

| Name | Base class | Description | Import | | --- | --- | --- | --- | | LegendFeatureType | N/A | Discriminator for legend wire payloads (point, line, polygon). | import { LegendFeatureType } from 'ropegeo-common/models' | | LEGEND_FEATURE_TYPES | N/A | Set of allowed LegendItem.featureType string values. | import { LEGEND_FEATURE_TYPES } from 'ropegeo-common/models' | | LegendItem | N/A | Abstract legend entry; fromResult dispatches on featureType. | import { LegendItem } from 'ropegeo-common/models' | | registerLegendItemParser | N/A | Registers a LegendItem parser for a LegendFeatureType (extension point). | import { registerLegendItemParser } from 'ropegeo-common/models' | | PointLegendItem | LegendItem | Point legend entry (coordinates, optional icon). | import { PointLegendItem } from 'ropegeo-common/models' | | LineLegendItem | LegendItem | Line legend entry (bounds, optional stroke fields). | import { LineLegendItem } from 'ropegeo-common/models' | | PolygonLegendItem | LegendItem | Polygon legend entry (bounds, optional border/fill colors). | import { PolygonLegendItem } from 'ropegeo-common/models' |

Link preview (src/models/linkPreview/)

| Name | Base class | Description | Import | | --- | --- | --- | --- | | LinkPreview | N/A | Generic link preview (title, image, URL). | import { LinkPreview } from 'ropegeo-common/models' | | LinkPreviewImage | N/A | Image sub-object for link previews. | import { LinkPreviewImage } from 'ropegeo-common/models' |

Cursors (src/models/api/params/cursors/)

| Name | Base class | Description | Import | | --- | --- | --- | --- | | CursorType | N/A | Discriminator for cursor encodings. | import { CursorType } from 'ropegeo-common/models' | | Cursor | N/A | Abstract base for typed API cursors. | import { Cursor } from 'ropegeo-common/models' | | SearchCursor | Cursor | Search pagination cursor (base64). | import { SearchCursor } from 'ropegeo-common/models' | | SearchCursorType | N/A | Type alias for search cursor payload typing. | import type { SearchCursorType } from 'ropegeo-common/models' | | RegionPreviewsCursor | Cursor | Cursor for region previews pagination. | import { RegionPreviewsCursor } from 'ropegeo-common/models' | | RegionImagesCursor | Cursor | Cursor for region images pagination. | import { RegionImagesCursor } from 'ropegeo-common/models' |

Result wrappers (src/models/api/results/)

| Name | Base class | Description | Import | | --- | --- | --- | --- | | ResultType | N/A | Discriminator enum for single-result API wrappers. | import { ResultType } from 'ropegeo-common/models' | | Result | N/A | Abstract single-result response; fromResponseBody dispatches to parsers. | import { Result } from 'ropegeo-common/models' | | registerResultParser | N/A | Registers Result.fromResponseBody for a ResultType. | import { registerResultParser } from 'ropegeo-common/models' | | CursorPaginationResultType | N/A | Discriminator for cursor-paginated result wrappers. | import { CursorPaginationResultType } from 'ropegeo-common/models' | | CursorPaginationResults | N/A | Abstract results + nextCursor response shape. | import { CursorPaginationResults } from 'ropegeo-common/models' | | ValidatedCursorPaginationResponse | N/A | Validated inner shape passed to specific cursor result classes. | import type { ValidatedCursorPaginationResponse } from 'ropegeo-common/models' | | registerCursorPaginationParser | N/A | Registers parser for a CursorPaginationResultType. | import { registerCursorPaginationParser } from 'ropegeo-common/models' | | PaginationResultType | N/A | Discriminator for page-based paginated result wrappers. | import { PaginationResultType } from 'ropegeo-common/models' | | PaginationResults | N/A | Abstract results + total + page response shape. | import { PaginationResults } from 'ropegeo-common/models' | | ValidatedPaginationResponse | N/A | Validated inner shape for page-based pagination. | import type { ValidatedPaginationResponse } from 'ropegeo-common/models' | | registerPaginationParser | N/A | Registers parser for a PaginationResultType. | import { registerPaginationParser } from 'ropegeo-common/models' |

Mobile / offline (src/models/mobile/)

| Name | Base class | Description | Import | | --- | --- | --- | --- | | ImageVersion | N/A | Enum of cached image variant kinds. | import { ImageVersion } from 'ropegeo-common/models' | | VERSION_FORMAT | N/A | Format constant for version strings. | import { VERSION_FORMAT } from 'ropegeo-common/models' | | ImageVersions | N/A | Map of image URLs by ImageVersion; fromResult for persisted JSON. | import { ImageVersions } from 'ropegeo-common/models' | | SavedPage | N/A | Saved page record (OnlinePagePreview or OfflinePagePreview) with optional downloadedPageViewPath. | import { SavedPage } from 'ropegeo-common/models' | | SAVED_PAGES_STORAGE_KEY | N/A | AsyncStorage key for the saved-pages map (ropegeo:savedPages). | import { SAVED_PAGES_STORAGE_KEY } from 'ropegeo-common/models' | | DOWNLOADED_ROUTE_PREVIEWS_STORAGE_KEY | N/A | AsyncStorage key for offline route preview rows (ropegeo:downloadedRoutePreviews). | import { DOWNLOADED_ROUTE_PREVIEWS_STORAGE_KEY } from 'ropegeo-common/models' | | SavedPagesStorageMap | N/A | Type for the saved-pages record (pageIdSavedPage JSON string). | import type { SavedPagesStorageMap } from 'ropegeo-common/models' | | DownloadedRoutePreviewsStorageMap | N/A | Type for the offline route-preview index (routeId → serialized preview rows). | import type { DownloadedRoutePreviewsStorageMap } from 'ropegeo-common/models' |

React components (src/components/)

| Name | Description | Import | | --- | --- | --- | | RopeGeoDataLoader | Single-request loader: onlinePath / onlinePathParams, optional offlineData (undefined → fetch online; nulldata null / loading-style, no fetch; T → use as data, no fetch), optional timeoutAfterSeconds and isOnline. Children receive data, errors, timeoutCountdown (numeric only while an online fetch is in flight, otherwise null), and reload. Reconnect refetch uses dirtyWhileOffline driven by a semantic key (no refreshOnReconnect prop). Also exports Method, Service, SERVICE_BASE_URL. | import { RopeGeoDataLoader, Method, Service } from 'ropegeo-common/components' | | RopeGeoPagedDataLoader | Cursor-paginated list: same networking props as above; children get loadNextPage, loadingNextPage, morePages, plus data, errors, timeoutCountdown, reload. | import { RopeGeoPagedDataLoader } from 'ropegeo-common/components' | | RopeGeoProgressDataLoader | Page-based “progress” fetch: batches additional pages until total is satisfied; children get received, total, data, errors, timeoutCountdown, reload. | import { RopeGeoProgressDataLoader } from 'ropegeo-common/components' |


Related repos

  • RopeGeo — Expo app for canyoneering maps and route data.
  • WebScraper — Lambdas and jobs that scrape canyoneering sites (e.g. Ropewiki), parse data, and store it for the API.