/** * @license * Copyright (C) 2020 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import 'page/page'; // Reexport page.js. To make it work, karma, server.go and rollup patch // page.js and replace "this" to "window". Otherwise, it can't assign global // property. We can't import page.mjs because typescript doesn't support mjs // extensions export interface Page { (pattern: string | RegExp, ...pageCallback: PageCallback[]): void; (pageCallback: PageCallback): void; show(url: string): void; redirect(url: string): void; base(url: string): void; start(): void; exit(pattern: string | RegExp, ...pageCallback: PageCallback[]): void; } // See https://visionmedia.github.io/page.js/ for details export interface PageContext { save(): void; handled: boolean; canonicalPath: string; path: string; querystring: string; pathname: string; state: unknown; title: string; hash: string; params: {[paramIndex: string]: string}; } export type PageNextCallback = () => void; export type PageCallback = ( context: PageContext, next: PageNextCallback ) => void; export const page = window['page'] as Page;