MCPcopy Index your code
hub / github.com/RubaXa/Pilot

github.com/RubaXa/Pilot @v2.16.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v2.16.0 ↗ · + Follow
137 symbols 282 edges 29 files 14 documented · 10% updated 7mo agov2.15.3 · 2021-02-17★ 1093 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Pilot v2

Multifunctional JavaScript router solves the problem of routing your application, providing full control over the route.

Get started

const router = Pilot.create({
    '#route-id': {
    url: '/:type(/:detail)?', // route pattern
    model: {
      user: (req) => fetch(`/api/${req.params.type}`).then(r => r.json()),
    },
        onroute(/**Pilot.Request*/req) {
      console.log(this.model.user);
        }
    }
});

// Запускаем перехват ссылок и history api
router.listenFrom(document, {autoStart: true});

// Где-то в коде
router.go('#route-id').then(() => ...);
router.getUrl('#route-id', {type: 'user'}); // '/user';
router.route.getUrl({type: 'user'}); // '/user';
router.route.getUrl({type: 'user', detail: 123}); // '/user/123';

API

  • create(stitemap: Object): Pilot
  • URL([url: string[, base: string]]) — see Native URL and
  • parse(url: string)
  • toMatcher(pattern: string|RegExp)
  • #properties
    • protocol: string
    • protocolSeparator: string
    • credhost: string
    • cred: string
    • username: string
    • password: string
    • host: string
    • hostname: string
    • port: string
    • origin: string
    • path: string or pathname
    • segment1: string
    • segment2: string
    • search: string
    • query: object
    • params: object
    • hash: string
  • #methods
    • addToQuery(add: object|string|null)
    • removeFromQuery(remove: string[])
    • setQuery(add: object|string|null[, remove: string[])
  • queryString
  • parse(value: string): object
  • stringify(query: object): string

Pilot lifecycle

beforeroute

  • req:Pilot.Request

route

  • req:Pilot.Request
  • route:Pilot.Route

routefail

  • req:Pilot.Request
  • route:Pilot.Route
  • error:Error

routeend

  • req:Pilot.Request
  • route:Pilot.Route

Pilot methods and properties

model:Object

List of all models


request:Pilot.Request

Current Request.


activeUrl:URL

Active/Current URL.


route:Pilot.Route

Current route.


getUrl(id[, params[, query]]):string

  • id:string — route id
  • params:object — route parametrs (optional)
  • query:object|inherit — route GET-query parametrs (optional)

go(id[, params[, query[, details]]]):Promise

  • id:string — route id
  • params:object — route parameters (optional)
  • query:object|inherit — route GET-query parameters (optional)
  • details:object - route navigation details (options)

nav(url[, details]):Promise

  • url:string
  • details:object - route navigation details (options)

reload():Promise

Emits beforereload and reload events. if a handler to beforereload returns false, does not perform actual reload and returns a resolved promise instead.


Pilot.Route methods and properties

model:Object

Local models (inherit global models).


init()

Protected method.


getUrl([params, [query]]):string

  • params:Object (optional)
  • query:object|inherit — route GET-query parametrs (optional)

is(id):boolean

id:string — route id or space-separated list


Pilot.Loader

const modelLoader = new Pilot.Loader({
  user: ({params:{id}}) => fetch(`/api/user/${id}`).then(r => r.json()),
  status: () => fetch(`/api/status`).then(r => r.json()),
}, {
  // неважно сколько раз вызвать `fetch`,
  // если уже есть запрос на сервер, новый не последует
  persist: true,

  // Обработку данных загруженной модели
  processingModel(modelName, modelData, req, models) {
    return {...modelData, pathed: true}; // or Promise
  },

  // Обработка ошибки при загрузки модели
  processingModelError(modelName, error, req, models) {
    return Promise.resolve({defaultData: 123}); // или undefined для reject
  },

  // Финальная обработка полученных данных
  processing(req, models) {
    return {...models, patched: true};
  },
});

// Используем `modelLoader`
const router = Pilot.create({
  model: modelLoader,
});

// Где-то в коде
modelLoader.fetch().then(model => {
  console.log(model.user);
  console.log(model.status);
});

Extension points exported contracts — how you extend this code

Action (Interface)
(no doc)
Pilot.d.ts
LoaderOptions (Interface)
(no doc)
Pilot.d.ts
LoaderModelObject (Interface)
(no doc)
Pilot.d.ts
QueryString (Interface)
(no doc)
Pilot.d.ts
RouteUrlParamsConfig (Interface)
(no doc)
Pilot.d.ts

Core symbols most depended-on inside this repo

getOwn
called by 28
vendors/require.js
call
called by 16
Pilot.d.ts
createMockApp
called by 15
tests/pilot.tests.js
hasProp
called by 13
vendors/require.js
sleep
called by 12
tests/loader.tests.js
bind
called by 12
vendors/require.js
makeModuleMap
called by 11
vendors/require.js
createSleepyLoggingLoader
called by 9
tests/loader.tests.js

Shape

Function 101
Class 20
Interface 12
Method 4

Languages

TypeScript100%

Modules by API surface

Pilot.d.ts36 symbols
vendors/require.js34 symbols
Pilot.js19 symbols
tests/polyfills/url.js8 symbols
vendors/Promise.js6 symbols
src/route.js6 symbols
vendors/Emitter.js5 symbols
tests/pilot.tests.js4 symbols
tests/loader.tests.js4 symbols
src/pilot.js4 symbols
src/loader.js3 symbols
vendors/performance.js2 symbols

For agents

$ claude mcp add Pilot \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact