{
  "version": 3,
  "file": "interface.js",
  "sourceRoot": "",
  "sources": [
    "@uirouter/core/url/interface.ts"
  ],
  "names": [],
  "mappings": "",
  "sourcesContent": [
    "/**\n * # URL subsystem\n *\n * Contains code related to managing the URL\n *\n * The primary API is found in [[UrlService]], [[UrlService.config]], and [[UrlService.rules]].\n *\n * @packageDocumentation\n * @preferred\n */\nimport { LocationConfig } from '../common';\nimport { UIRouter } from '../router';\nimport { StateDeclaration, StateObject, TargetState, TargetStateDef } from '../state';\nimport { UrlMatcher } from './urlMatcher';\nimport { UrlConfig } from './urlConfig';\nimport { UrlRules } from './urlRules';\nimport { UrlService } from './urlService';\n\nexport interface UrlMatcherCompileConfig {\n  // If state is provided, use the configuration in the `params` block\n  state?: StateDeclaration;\n  strict?: boolean;\n  caseInsensitive?: boolean;\n  // If params are pre-decoded, set to false to avoid double decoding\n  decodeParams?: boolean;\n}\n\n/** @deprecated use [[UrlConfig]] */\nexport interface UrlConfigApi extends LocationConfig, UrlMatcherConfig {}\n\n/** @deprecated use [[UrlConfig]] */\nexport interface UrlMatcherConfig {\n  /** See: [[UrlConfig.caseInsensitive]] */ caseInsensitive: UrlConfig['caseInsensitive'];\n  /** See: [[UrlConfig.strictMode]] */ strictMode: UrlConfig['strictMode'];\n  /** See: [[UrlConfig.defaultSquashPolicy]] */ defaultSquashPolicy: UrlConfig['defaultSquashPolicy'];\n  /** See: [[UrlConfig.type]] */ type: UrlConfig['type'];\n}\n\n/** @deprecated use [[UrlService]] */\nexport interface UrlSyncApi {\n  /** See: [[UrlService.sync]] */ sync: UrlService['sync'];\n  /** See: [[UrlService.listen]] */ listen: UrlService['listen'];\n  /** See: [[UrlService.deferIntercept]] */ deferIntercept: UrlService['deferIntercept'];\n}\n\n/** @deprecated use [[UrlRules]] */\nexport interface UrlRulesApi {\n  /** See: [[UrlRules.sort]] */ sort: UrlRules['sort'];\n  /** See: [[UrlRules.when]] */ when: UrlRules['when'];\n  /** See: [[UrlRules.otherwise]] */ otherwise: UrlRules['otherwise'];\n  /** See: [[UrlRules.initial]] */ initial: UrlRules['initial'];\n  /** See: [[UrlRules.rules]] */ rules: UrlRules['rules'];\n  /** See: [[UrlRules.rule]] */ rule: UrlRules['rule'];\n  /** See: [[UrlRules.removeRule]] */ removeRule: UrlRules['removeRule'];\n}\n\n/**\n * An object containing the three parts of a URL\n */\nexport interface UrlParts {\n  path: string;\n  search?: { [key: string]: any };\n  hash?: string;\n}\n\n/**\n * A UrlRule match result\n *\n * The result of UrlRouter.match()\n */\nexport interface MatchResult {\n  /** The matched value from a [[UrlRule]] */\n  match: any;\n  /** The rule that matched */\n  rule: UrlRule;\n  /** The match result weight */\n  weight: number;\n}\n\n/**\n * A function that matches the URL for a [[UrlRule]]\n *\n * Implementations should match against the provided [[UrlParts]] and return the matched value (truthy) if the rule matches.\n * If this rule is selected, the matched value is passed to the [[UrlRuleHandlerFn]].\n *\n * @return the matched value, either truthy or falsey\n */\nexport interface UrlRuleMatchFn {\n  (url?: UrlParts, router?: UIRouter): any;\n}\n\n/**\n * Handler invoked when a rule is matched\n *\n * The matched value from the rule's [[UrlRuleMatchFn]] is passed as the first argument\n * The handler should return a string (to redirect), a [[TargetState]]/[[TargetStateDef]], or void\n *\n * If the handler returns a string, the url is replaced with the string.\n * If the handler returns a [[TargetState]], the target state is activated.\n */\nexport interface UrlRuleHandlerFn {\n  (matchValue?: any, url?: UrlParts, router?: UIRouter): string | TargetState | TargetStateDef | void;\n}\n\n/** @internal */\nexport type UrlRuleType = 'STATE' | 'URLMATCHER' | 'REGEXP' | 'RAW' | 'OTHER';\n\n/**\n * The interface for a URL Rule\n *\n * If you are creating a rule for use with [[UrlRules.rule]], it should implement this interface.\n */\nexport interface UrlRule {\n  /**\n   * The rule's ID.\n   *\n   * IDs are auto-assigned when the rule is registered, in increasing order.\n   */\n  $id: number;\n\n  /**\n   * The rule's priority (defaults to 0).\n   *\n   * This can be used to explicitly modify the rule's priority.\n   * Higher numbers are higher priority.\n   */\n  priority: number;\n\n  /** @internal */\n  _group: number;\n\n  /** The type of the rule */\n  type: UrlRuleType;\n\n  /**\n   * This function should match the url and return the match details\n   *\n   * See [[UrlRuleMatchFn]] for details\n   */\n  match: UrlRuleMatchFn;\n\n  /**\n   * This function is called if the rule matched, and was selected as the \"best match\".\n   * This function handles the rule match event.\n   *\n   * See [[UrlRuleHandlerFn]] for details\n   */\n  handler: UrlRuleHandlerFn;\n\n  /**\n   * The priority of a given match.\n   *\n   * Sometimes more than one UrlRule might have matched.\n   * This method is used to choose the best match.\n   *\n   * If multiple rules matched, each rule's `matchPriority` is called with the value from [[match]].\n   * The rule with the highest `matchPriority` has its [[handler]] called.\n   */\n  matchPriority(match: any): number;\n}\n\nexport interface MatcherUrlRule extends UrlRule {\n  type: 'URLMATCHER' | 'STATE';\n  urlMatcher: UrlMatcher;\n}\n\nexport interface StateRule extends MatcherUrlRule {\n  type: 'STATE';\n  state: StateObject;\n}\n\nexport interface RegExpRule extends UrlRule {\n  type: 'REGEXP';\n  regexp: RegExp;\n}\n"
  ]
}