UNPKG

11.8 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../../src/utils/ShapeInformation.js"],"names":["ShapeInformation","constructor","descriptor","parentDescriptor","parentKey","universe","_descriptor","_parentDescriptor","_parentKey","_universe","getGetter","undefined","graphQLType","kind","_getAssociatedGetter","getAbstractType","_isOptional","jsType","Value","Utils","getTypeFromName","getPropertyShape","key","property","_getInformationForProperty","_resolveLinksAndWrap","shape","createForArgument","model","argname","arguments","createForReactComponentProps","component","props","properties","optional","elementShape","_arrayLengthProperty","innerShape","parentDescription","shapeName"],"mappings":"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","sourcesContent":["/**\n * Copyright (c) 2017-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n/* @flow */\n\nimport { Utils } from \"../singletons.js\";\nimport { Value } from \"../values/index.js\";\nimport type { SupportedGraphQLGetters, ShapeInformationInterface } from \"../types.js\";\n\ntype ECMAScriptType =\n | \"void\"\n | \"null\"\n | \"boolean\"\n | \"string\"\n | \"symbol\"\n | \"number\"\n | \"object\"\n | \"array\"\n | \"function\"\n | \"integral\";\n\ntype ShapeDescriptorCommon = {\n jsType: ECMAScriptType,\n graphQLType?: string,\n};\n\ntype ShapePropertyDescriptor = {\n shape: ShapeDescriptor,\n optional: boolean,\n};\n\ntype ShapeDescriptorOfObject = ShapeDescriptorCommon & {\n kind: \"object\",\n properties: { [string]: void | ShapePropertyDescriptor },\n};\n\ntype ShapeDescriptorOfArray = ShapeDescriptorCommon & {\n kind: \"array\",\n elementShape: void | ShapePropertyDescriptor,\n};\n\ntype ShapeDescriptorOfLink = ShapeDescriptorCommon & {\n kind: \"link\",\n shapeName: string,\n};\n\ntype ShapeDescriptorOfPrimitive = ShapeDescriptorCommon & {\n kind: \"scalar\",\n};\n\ntype ShapeDescriptorOfEnum = ShapeDescriptorCommon & {\n kind: \"enum\",\n};\n\nexport type ShapeDescriptorNonLink =\n | ShapeDescriptorOfObject\n | ShapeDescriptorOfArray\n | ShapeDescriptorOfPrimitive\n | ShapeDescriptorOfEnum;\n\nexport type ShapeDescriptor = ShapeDescriptorNonLink | ShapeDescriptorOfLink;\n\nexport type ShapeUniverse = { [string]: ShapeDescriptor };\n\nexport type ArgModel = {\n universe: ShapeUniverse,\n arguments: { [string]: string },\n};\n\nexport type ComponentModel = {\n universe: ShapeUniverse,\n component: { props: string },\n};\n\nexport class ShapeInformation implements ShapeInformationInterface {\n constructor(\n descriptor: ShapeDescriptorNonLink,\n parentDescriptor: void | ShapeDescriptorNonLink,\n parentKey: void | string,\n universe: ShapeUniverse\n ) {\n this._descriptor = descriptor;\n this._parentDescriptor = parentDescriptor;\n this._parentKey = parentKey;\n this._universe = universe;\n }\n\n _descriptor: ShapeDescriptorNonLink;\n _parentDescriptor: void | ShapeDescriptorNonLink;\n _parentKey: void | string;\n _universe: ShapeUniverse;\n\n getGetter(): void | SupportedGraphQLGetters {\n // we want getter only for existing GraphQL objects\n return this._parentDescriptor !== undefined &&\n this._parentDescriptor.graphQLType !== undefined &&\n this._parentDescriptor.kind === \"object\"\n ? this._getAssociatedGetter()\n : undefined;\n }\n\n getAbstractType(): typeof Value {\n // we assume that value is not optional if it root\n if (this._isOptional() || this._descriptor.jsType === \"void\" || this._descriptor.jsType === \"null\") {\n return Value;\n }\n return Utils.getTypeFromName(this._descriptor.jsType) || Value;\n }\n\n getPropertyShape(key: string): void | ShapeInformation {\n let property = this._getInformationForProperty(key);\n return property !== undefined\n ? ShapeInformation._resolveLinksAndWrap(property.shape, this._descriptor, key, this._universe)\n : undefined;\n }\n\n static createForArgument(model: void | ArgModel, argname: string): void | ShapeInformation {\n return model !== undefined\n ? ShapeInformation._resolveLinksAndWrap(\n model.universe[model.arguments[argname]],\n undefined,\n undefined,\n model.universe\n )\n : undefined;\n }\n\n static createForReactComponentProps(model: void | ComponentModel): void | ShapeInformation {\n return model !== undefined\n ? ShapeInformation._resolveLinksAndWrap(\n model.universe[model.component.props],\n undefined,\n undefined,\n model.universe\n )\n : undefined;\n }\n\n _isOptional(): void | boolean {\n if (this._parentDescriptor === undefined) {\n return undefined;\n }\n switch (this._parentDescriptor.kind) {\n case \"object\":\n return this._parentKey !== undefined && this._parentDescriptor.properties[this._parentKey] !== undefined\n ? this._parentDescriptor.properties[this._parentKey].optional\n : undefined;\n case \"array\":\n return this._parentDescriptor.elementShape !== undefined\n ? this._parentDescriptor.elementShape.optional\n : undefined;\n default:\n return undefined;\n }\n }\n\n _getInformationForProperty(key: string): void | ShapePropertyDescriptor {\n switch (this._descriptor.kind) {\n case \"object\":\n return this._descriptor.properties[key];\n case \"array\":\n switch (key) {\n case \"length\":\n return ShapeInformation._arrayLengthProperty;\n case \"prototype\":\n return undefined;\n default:\n return this._descriptor.elementShape;\n }\n default:\n // it is still legal to do member access on primitive value\n // such as string\n return undefined;\n }\n }\n\n _getAssociatedGetter(): void | SupportedGraphQLGetters {\n switch (this._descriptor.kind) {\n case \"object\":\n return \"tree\";\n case \"array\":\n let elementShape =\n this._descriptor.elementShape !== undefined ? this._descriptor.elementShape.shape : undefined;\n let innerShape = ShapeInformation._resolveLinksAndWrap(\n elementShape,\n this._descriptor,\n undefined,\n this._universe\n );\n if (innerShape === undefined) {\n return undefined;\n }\n switch (innerShape._getAssociatedGetter()) {\n case \"bool\":\n return \"bool_list\";\n case \"double\":\n return \"double_list\";\n case \"int\":\n return \"int_list\";\n case \"time\":\n return \"time_list\";\n case \"string\":\n return \"string_list\";\n case \"tree\":\n return \"tree_list\";\n // no support for nested arrays yet\n default:\n return undefined;\n }\n case \"scalar\":\n switch (this._descriptor.graphQLType) {\n case \"Color\":\n case \"File\":\n case \"ID\":\n case \"String\":\n case \"Url\":\n return \"string\";\n case \"Int\":\n case \"Time\":\n return \"int\";\n case \"Float\":\n return \"double\";\n case \"Boolean\":\n return \"bool\";\n default:\n return undefined;\n }\n case \"enum\":\n return \"string\";\n default:\n return undefined;\n }\n }\n\n static _resolveLinksAndWrap(\n descriptor: void | ShapeDescriptor,\n parentDescription: void | ShapeDescriptorNonLink,\n parentKey: void | string,\n universe: ShapeUniverse\n ): void | ShapeInformation {\n while (descriptor && descriptor.kind === \"link\") {\n descriptor = universe[descriptor.shapeName];\n }\n return descriptor !== undefined\n ? new ShapeInformation(descriptor, parentDescription, parentKey, universe)\n : undefined;\n }\n\n static _arrayLengthProperty = {\n shape: {\n kind: \"scalar\",\n jsType: \"integral\",\n },\n optional: false,\n };\n}\n"],"file":"ShapeInformation.js"}
\No newline at end of file