UNPKG

13.8 kBSource Map (JSON)View Raw
1{
2 "version": 3,
3 "file": "paramTypes.js",
4 "sourceRoot": "",
5 "sources": [
6 "@uirouter/core/params/paramTypes.ts"
7 ],
8 "names": [],
9 "mappings": "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",
10 "sourcesContent": [
11 "import { fromJson, toJson, identity, equals, inherit, map, extend, pick } from '../common/common';\nimport { isDefined, isNullOrUndefined } from '../common/predicates';\nimport { is } from '../common/hof';\nimport { services } from '../common/coreservices';\nimport { ParamType } from './paramType';\nimport { ParamTypeDefinition } from './interface';\n\n/**\n * A registry for parameter types.\n *\n * This registry manages the built-in (and custom) parameter types.\n *\n * The built-in parameter types are:\n *\n * - [[string]]\n * - [[path]]\n * - [[query]]\n * - [[hash]]\n * - [[int]]\n * - [[bool]]\n * - [[date]]\n * - [[json]]\n * - [[any]]\n *\n * To register custom parameter types, use [[UrlConfig.type]], i.e.,\n *\n * ```js\n * router.urlService.config.type(customType)\n * ```\n */\nexport class ParamTypes {\n /**\n * Built-in parameter type: `string`\n *\n * This parameter type coerces values to strings.\n * It matches anything (`new RegExp(\".*\")`) in the URL\n */\n static string: ParamTypeDefinition;\n\n /**\n * Built-in parameter type: `path`\n *\n * This parameter type is the default type for path parameters.\n * A path parameter is any parameter declared in the path portion of a url\n *\n * - `/foo/:param1/:param2`: two path parameters\n *\n * This parameter type behaves exactly like the [[string]] type with one exception.\n * When matching parameter values in the URL, the `path` type does not match forward slashes `/`.\n *\n * #### Angular 1 note:\n * In ng1, this type is overridden with one that pre-encodes slashes as `~2F` instead of `%2F`.\n * For more details about this angular 1 behavior, see: https://github.com/angular-ui/ui-router/issues/2598\n */\n static path: ParamTypeDefinition;\n\n /**\n * Built-in parameter type: `query`\n *\n * This parameter type is the default type for query/search parameters.\n * It behaves the same as the [[string]] parameter type.\n *\n * A query parameter is any parameter declared in the query/search portion of a url\n *\n * - `/bar?param2`: a query parameter\n */\n static query: ParamTypeDefinition;\n\n /**\n * Built-in parameter type: `hash`\n *\n * This parameter type is used for the `#` parameter (the hash)\n * It behaves the same as the [[string]] parameter type.\n */\n static hash: ParamTypeDefinition;\n\n /**\n * Built-in parameter type: `int`\n *\n * This parameter type serializes javascript integers (`number`s which represent an integer) to the URL.\n *\n * #### Example:\n * ```js\n * .state({\n * name: 'user',\n * url: '/user/{id:int}'\n * });\n * ```\n * ```js\n * $state.go('user', { id: 1298547 });\n * ```\n *\n * The URL will serialize to: `/user/1298547`.\n *\n * When the parameter value is read, it will be the `number` `1298547`, not the string `\"1298547\"`.\n */\n static int: ParamTypeDefinition;\n\n /**\n * Built-in parameter type: `bool`\n *\n * This parameter type serializes `true`/`false` as `1`/`0`\n *\n * #### Example:\n * ```js\n * .state({\n * name: 'inbox',\n * url: '/inbox?{unread:bool}'\n * });\n * ```\n * ```js\n * $state.go('inbox', { unread: true });\n * ```\n *\n * The URL will serialize to: `/inbox?unread=1`.\n *\n * Conversely, if the url is `/inbox?unread=0`, the value of the `unread` parameter will be a `false`.\n */\n static bool: ParamTypeDefinition;\n\n /**\n * Built-in parameter type: `date`\n *\n * This parameter type can be used to serialize Javascript dates as parameter values.\n *\n * #### Example:\n * ```js\n * .state({\n * name: 'search',\n * url: '/search?{start:date}'\n * });\n * ```\n * ```js\n * $state.go('search', { start: new Date(2000, 0, 1) });\n * ```\n *\n * The URL will serialize to: `/search?start=2000-01-01`.\n *\n * Conversely, if the url is `/search?start=2016-12-25`, the value of the `start` parameter will be a `Date` object where:\n *\n * - `date.getFullYear() === 2016`\n * - `date.getMonth() === 11` (month is 0-based)\n * - `date.getDate() === 25`\n */\n static date: ParamTypeDefinition;\n\n /**\n * Built-in parameter type: `json`\n *\n * This parameter type can be used to serialize javascript objects into the URL using JSON serialization.\n *\n * #### Example:\n * This example serializes an plain javascript object to the URL\n * ```js\n * .state({\n * name: 'map',\n * url: '/map/{coords:json}'\n * });\n * ```\n * ```js\n * $state.go('map', { coords: { x: 10399.2, y: 49071 });\n * ```\n *\n * The URL will serialize to: `/map/%7B%22x%22%3A10399.2%2C%22y%22%3A49071%7D`\n */\n static json: ParamTypeDefinition;\n\n /**\n * Built-in parameter type: `any`\n *\n * This parameter type is used by default for url-less parameters (parameters that do not appear in the URL).\n * This type does not encode or decode.\n * It is compared using a deep `equals` comparison.\n *\n * #### Example:\n * This example defines a non-url parameter on a [[StateDeclaration]].\n * ```js\n * .state({\n * name: 'new',\n * url: '/new',\n * params: {\n * inrepyto: null\n * }\n * });\n * ```\n * ```js\n * $state.go('new', { inreplyto: currentMessage });\n * ```\n */\n static any: ParamTypeDefinition;\n\n types: any;\n enqueue = true;\n typeQueue: any[] = [];\n\n private defaultTypes: any = pick(ParamTypes.prototype, [\n 'hash',\n 'string',\n 'query',\n 'path',\n 'int',\n 'bool',\n 'date',\n 'json',\n 'any',\n ]);\n\n constructor() {\n // Register default types. Store them in the prototype of this.types.\n const makeType = (definition: ParamTypeDefinition, name: string) => new ParamType(extend({ name }, definition));\n this.types = inherit(map(this.defaultTypes, makeType), {});\n }\n\n dispose() {\n this.types = {};\n }\n\n /**\n * Registers a parameter type\n *\n * End users should call [[UrlMatcherFactory.type]], which delegates to this method.\n */\n type(name: string, definition?: ParamTypeDefinition, definitionFn?: () => ParamTypeDefinition) {\n if (!isDefined(definition)) return this.types[name];\n if (this.types.hasOwnProperty(name)) throw new Error(`A type named '${name}' has already been defined.`);\n\n this.types[name] = new ParamType(extend({ name }, definition));\n\n if (definitionFn) {\n this.typeQueue.push({ name, def: definitionFn });\n if (!this.enqueue) this._flushTypeQueue();\n }\n\n return this;\n }\n\n _flushTypeQueue() {\n while (this.typeQueue.length) {\n const type = this.typeQueue.shift();\n if (type.pattern) throw new Error(\"You cannot override a type's .pattern at runtime.\");\n extend(this.types[type.name], services.$injector.invoke(type.def));\n }\n }\n}\n\nfunction initDefaultTypes() {\n const makeDefaultType = (def) => {\n const valToString = (val: any) => (val != null ? val.toString() : val);\n\n const defaultTypeBase = {\n encode: valToString,\n decode: valToString,\n is: is(String),\n pattern: /.*/,\n // tslint:disable-next-line:triple-equals\n equals: (a: any, b: any) => a == b, // allow coersion for null/undefined/\"\"\n };\n\n return extend({}, defaultTypeBase, def) as ParamTypeDefinition;\n };\n\n // Default Parameter Type Definitions\n extend(ParamTypes.prototype, {\n string: makeDefaultType({}),\n\n path: makeDefaultType({\n pattern: /[^/]*/,\n }),\n\n query: makeDefaultType({}),\n\n hash: makeDefaultType({\n inherit: false,\n }),\n\n int: makeDefaultType({\n decode: (val: string) => parseInt(val, 10),\n is: function (val: any) {\n return !isNullOrUndefined(val) && this.decode(val.toString()) === val;\n },\n pattern: /-?\\d+/,\n }),\n\n bool: makeDefaultType({\n encode: (val: any) => (val && 1) || 0,\n decode: (val: string) => parseInt(val, 10) !== 0,\n is: is(Boolean),\n pattern: /0|1/,\n }),\n\n date: makeDefaultType({\n encode: function (val: any) {\n return !this.is(val)\n ? undefined\n : [val.getFullYear(), ('0' + (val.getMonth() + 1)).slice(-2), ('0' + val.getDate()).slice(-2)].join('-');\n },\n decode: function (val: string) {\n if (this.is(val)) return (<any>val) as Date;\n const match = this.capture.exec(val);\n return match ? new Date(match[1], match[2] - 1, match[3]) : undefined;\n },\n is: (val: any) => val instanceof Date && !isNaN(val.valueOf()),\n equals(l: any, r: any) {\n return ['getFullYear', 'getMonth', 'getDate'].reduce((acc, fn) => acc && l[fn]() === r[fn](), true);\n },\n pattern: /[0-9]{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])/,\n capture: /([0-9]{4})-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])/,\n }),\n\n json: makeDefaultType({\n encode: toJson,\n decode: fromJson,\n is: is(Object),\n equals: equals,\n pattern: /[^/]*/,\n }),\n\n // does not encode/decode\n any: makeDefaultType({\n encode: identity,\n decode: identity,\n is: () => true,\n equals: equals,\n }),\n });\n}\n\ninitDefaultTypes();\n"
12 ]
13}
\No newline at end of file