Best JavaScript code snippet using playwright-internal
factoryWithTypeCheckers.js
Source:factoryWithTypeCheckers.js
...152 this.stack = '';153 }154 // Make `instanceof Error` still work for returned errors.155 PropTypeError.prototype = Error.prototype;156 function createChainableTypeChecker(validate) {157 if (process.env.NODE_ENV !== 'production') {158 var manualPropTypeCallCache = {};159 var manualPropTypeWarningCount = 0;160 }161 function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {162 componentName = componentName || ANONYMOUS;163 propFullName = propFullName || propName;164 if (secret !== ReactPropTypesSecret) {165 if (throwOnDirectAccess) {166 // New behavior only for users of `prop-types` package167 var err = new Error(168 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +169 'Use `PropTypes.checkPropTypes()` to call them. ' +170 'Read more at http://fb.me/use-check-prop-types'171 );172 err.name = 'Invariant Violation';173 throw err;174 } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {175 // Old behavior for people using React.PropTypes176 var cacheKey = componentName + ':' + propName;177 if (178 !manualPropTypeCallCache[cacheKey] &&179 // Avoid spamming the console because they are often not actionable except for lib authors180 manualPropTypeWarningCount < 3181 ) {182 printWarning(183 'You are manually calling a React.PropTypes validation ' +184 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +185 'and will throw in the standalone `prop-types` package. ' +186 'You may be seeing this warning due to a third-party PropTypes ' +187 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'188 );189 manualPropTypeCallCache[cacheKey] = true;190 manualPropTypeWarningCount++;191 }192 }193 }194 if (props[propName] == null) {195 if (isRequired) {196 if (props[propName] === null) {197 return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));198 }199 return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));200 }201 return null;202 } else {203 return validate(props, propName, componentName, location, propFullName);204 }205 }206 var chainedCheckType = checkType.bind(null, false);207 chainedCheckType.isRequired = checkType.bind(null, true);208 return chainedCheckType;209 }210 function createPrimitiveTypeChecker(expectedType) {211 function validate(props, propName, componentName, location, propFullName, secret) {212 var propValue = props[propName];213 var propType = getPropType(propValue);214 if (propType !== expectedType) {215 // `propValue` being instance of, say, date/regexp, pass the 'object'216 // check, but we can offer a more precise error message here rather than217 // 'of type `object`'.218 var preciseType = getPreciseType(propValue);219 return new PropTypeError(220 'Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'),221 {expectedType: expectedType}222 );223 }224 return null;225 }226 return createChainableTypeChecker(validate);227 }228 function createAnyTypeChecker() {229 return createChainableTypeChecker(emptyFunctionThatReturnsNull);230 }231 function createArrayOfTypeChecker(typeChecker) {232 function validate(props, propName, componentName, location, propFullName) {233 if (typeof typeChecker !== 'function') {234 return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');235 }236 var propValue = props[propName];237 if (!Array.isArray(propValue)) {238 var propType = getPropType(propValue);239 return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));240 }241 for (var i = 0; i < propValue.length; i++) {242 var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);243 if (error instanceof Error) {244 return error;245 }246 }247 return null;248 }249 return createChainableTypeChecker(validate);250 }251 function createElementTypeChecker() {252 function validate(props, propName, componentName, location, propFullName) {253 var propValue = props[propName];254 if (!isValidElement(propValue)) {255 var propType = getPropType(propValue);256 return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));257 }258 return null;259 }260 return createChainableTypeChecker(validate);261 }262 function createElementTypeTypeChecker() {263 function validate(props, propName, componentName, location, propFullName) {264 var propValue = props[propName];265 if (!ReactIs.isValidElementType(propValue)) {266 var propType = getPropType(propValue);267 return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));268 }269 return null;270 }271 return createChainableTypeChecker(validate);272 }273 function createInstanceTypeChecker(expectedClass) {274 function validate(props, propName, componentName, location, propFullName) {275 if (!(props[propName] instanceof expectedClass)) {276 var expectedClassName = expectedClass.name || ANONYMOUS;277 var actualClassName = getClassName(props[propName]);278 return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));279 }280 return null;281 }282 return createChainableTypeChecker(validate);283 }284 function createEnumTypeChecker(expectedValues) {285 if (!Array.isArray(expectedValues)) {286 if (process.env.NODE_ENV !== 'production') {287 if (arguments.length > 1) {288 printWarning(289 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +290 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'291 );292 } else {293 printWarning('Invalid argument supplied to oneOf, expected an array.');294 }295 }296 return emptyFunctionThatReturnsNull;297 }298 function validate(props, propName, componentName, location, propFullName) {299 var propValue = props[propName];300 for (var i = 0; i < expectedValues.length; i++) {301 if (is(propValue, expectedValues[i])) {302 return null;303 }304 }305 var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {306 var type = getPreciseType(value);307 if (type === 'symbol') {308 return String(value);309 }310 return value;311 });312 return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));313 }314 return createChainableTypeChecker(validate);315 }316 function createObjectOfTypeChecker(typeChecker) {317 function validate(props, propName, componentName, location, propFullName) {318 if (typeof typeChecker !== 'function') {319 return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');320 }321 var propValue = props[propName];322 var propType = getPropType(propValue);323 if (propType !== 'object') {324 return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));325 }326 for (var key in propValue) {327 if (has(propValue, key)) {328 var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);329 if (error instanceof Error) {330 return error;331 }332 }333 }334 return null;335 }336 return createChainableTypeChecker(validate);337 }338 function createUnionTypeChecker(arrayOfTypeCheckers) {339 if (!Array.isArray(arrayOfTypeCheckers)) {340 process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;341 return emptyFunctionThatReturnsNull;342 }343 for (var i = 0; i < arrayOfTypeCheckers.length; i++) {344 var checker = arrayOfTypeCheckers[i];345 if (typeof checker !== 'function') {346 printWarning(347 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +348 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'349 );350 return emptyFunctionThatReturnsNull;351 }352 }353 function validate(props, propName, componentName, location, propFullName) {354 var expectedTypes = [];355 for (var i = 0; i < arrayOfTypeCheckers.length; i++) {356 var checker = arrayOfTypeCheckers[i];357 var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret);358 if (checkerResult == null) {359 return null;360 }361 if (checkerResult.data && has(checkerResult.data, 'expectedType')) {362 expectedTypes.push(checkerResult.data.expectedType);363 }364 }365 var expectedTypesMessage = (expectedTypes.length > 0) ? ', expected one of type [' + expectedTypes.join(', ') + ']': '';366 return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.'));367 }368 return createChainableTypeChecker(validate);369 }370 function createNodeChecker() {371 function validate(props, propName, componentName, location, propFullName) {372 if (!isNode(props[propName])) {373 return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));374 }375 return null;376 }377 return createChainableTypeChecker(validate);378 }379 function invalidValidatorError(componentName, location, propFullName, key, type) {380 return new PropTypeError(381 (componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' +382 'it must be a function, usually from the `prop-types` package, but received `' + type + '`.'383 );384 }385 function createShapeTypeChecker(shapeTypes) {386 function validate(props, propName, componentName, location, propFullName) {387 var propValue = props[propName];388 var propType = getPropType(propValue);389 if (propType !== 'object') {390 return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));391 }392 for (var key in shapeTypes) {393 var checker = shapeTypes[key];394 if (typeof checker !== 'function') {395 return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));396 }397 var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);398 if (error) {399 return error;400 }401 }402 return null;403 }404 return createChainableTypeChecker(validate);405 }406 function createStrictShapeTypeChecker(shapeTypes) {407 function validate(props, propName, componentName, location, propFullName) {408 var propValue = props[propName];409 var propType = getPropType(propValue);410 if (propType !== 'object') {411 return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));412 }413 // We need to check all keys in case some are required but missing from props.414 var allKeys = assign({}, props[propName], shapeTypes);415 for (var key in allKeys) {416 var checker = shapeTypes[key];417 if (has(shapeTypes, key) && typeof checker !== 'function') {418 return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));419 }420 if (!checker) {421 return new PropTypeError(422 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +423 '\nBad object: ' + JSON.stringify(props[propName], null, ' ') +424 '\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')425 );426 }427 var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);428 if (error) {429 return error;430 }431 }432 return null;433 }434 return createChainableTypeChecker(validate);435 }436 function isNode(propValue) {437 switch (typeof propValue) {438 case 'number':439 case 'string':440 case 'undefined':441 return true;442 case 'boolean':443 return !propValue;444 case 'object':445 if (Array.isArray(propValue)) {446 return propValue.every(isNode);447 }448 if (propValue === null || isValidElement(propValue)) {...
ReactPropTypes.js
Source:ReactPropTypes.js
...21 oneOf: createEnumTypeChecker,22 oneOfType: createUnionTypeChecker,23 shape: createShapeTypeChecker24};25function createChainableTypeChecker(validate) {26 function checkType(isRequired, props, propName, componentName, location, propFullName) {27 componentName = componentName || ANONYMOUS;28 propFullName = propFullName || propName;29 if (props[propName] == null) {30 var locationName = ReactPropTypeLocationNames[location];31 if (isRequired) {32 return new Error('Required ' + locationName + ' `' + propFullName + '` was not specified in ' + ('`' + componentName + '`.'));33 }34 return null;35 } else {36 return validate(props, propName, componentName, location, propFullName);37 }38 }39 var chainedCheckType = checkType.bind(null, false);40 chainedCheckType.isRequired = checkType.bind(null, true);41 return chainedCheckType;42}43function createPrimitiveTypeChecker(expectedType) {44 function validate(props, propName, componentName, location, propFullName) {45 var propValue = props[propName];46 var propType = getPropType(propValue);47 if (propType !== expectedType) {48 var locationName = ReactPropTypeLocationNames[location];49 var preciseType = getPreciseType(propValue);50 return new Error('Invalid ' + locationName + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));51 }52 return null;53 }54 return createChainableTypeChecker(validate);55}56function createAnyTypeChecker() {57 return createChainableTypeChecker(emptyFunction.thatReturns(null));58}59function createArrayOfTypeChecker(typeChecker) {60 function validate(props, propName, componentName, location, propFullName) {61 var propValue = props[propName];62 if (!Array.isArray(propValue)) {63 var locationName = ReactPropTypeLocationNames[location];64 var propType = getPropType(propValue);65 return new Error('Invalid ' + locationName + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));66 }67 for (var i = 0; i < propValue.length; i++) {68 var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']');69 if (error instanceof Error) {70 return error;71 }72 }73 return null;74 }75 return createChainableTypeChecker(validate);76}77function createElementTypeChecker() {78 function validate(props, propName, componentName, location, propFullName) {79 if (!ReactElement.isValidElement(props[propName])) {80 var locationName = ReactPropTypeLocationNames[location];81 return new Error('Invalid ' + locationName + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a single ReactElement.'));82 }83 return null;84 }85 return createChainableTypeChecker(validate);86}87function createInstanceTypeChecker(expectedClass) {88 function validate(props, propName, componentName, location, propFullName) {89 if (!(props[propName] instanceof expectedClass)) {90 var locationName = ReactPropTypeLocationNames[location];91 var expectedClassName = expectedClass.name || ANONYMOUS;92 var actualClassName = getClassName(props[propName]);93 return new Error('Invalid ' + locationName + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));94 }95 return null;96 }97 return createChainableTypeChecker(validate);98}99function createEnumTypeChecker(expectedValues) {100 if (!Array.isArray(expectedValues)) {101 return createChainableTypeChecker(function() {102 return new Error('Invalid argument supplied to oneOf, expected an instance of array.');103 });104 }105 function validate(props, propName, componentName, location, propFullName) {106 var propValue = props[propName];107 for (var i = 0; i < expectedValues.length; i++) {108 if (propValue === expectedValues[i]) {109 return null;110 }111 }112 var locationName = ReactPropTypeLocationNames[location];113 var valuesString = JSON.stringify(expectedValues);114 return new Error('Invalid ' + locationName + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));115 }116 return createChainableTypeChecker(validate);117}118function createObjectOfTypeChecker(typeChecker) {119 function validate(props, propName, componentName, location, propFullName) {120 var propValue = props[propName];121 var propType = getPropType(propValue);122 if (propType !== 'object') {123 var locationName = ReactPropTypeLocationNames[location];124 return new Error('Invalid ' + locationName + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));125 }126 for (var key in propValue) {127 if (propValue.hasOwnProperty(key)) {128 var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key);129 if (error instanceof Error) {130 return error;131 }132 }133 }134 return null;135 }136 return createChainableTypeChecker(validate);137}138function createUnionTypeChecker(arrayOfTypeCheckers) {139 if (!Array.isArray(arrayOfTypeCheckers)) {140 return createChainableTypeChecker(function() {141 return new Error('Invalid argument supplied to oneOfType, expected an instance of array.');142 });143 }144 function validate(props, propName, componentName, location, propFullName) {145 for (var i = 0; i < arrayOfTypeCheckers.length; i++) {146 var checker = arrayOfTypeCheckers[i];147 if (checker(props, propName, componentName, location, propFullName) == null) {148 return null;149 }150 }151 var locationName = ReactPropTypeLocationNames[location];152 return new Error('Invalid ' + locationName + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));153 }154 return createChainableTypeChecker(validate);155}156function createNodeChecker() {157 function validate(props, propName, componentName, location, propFullName) {158 if (!isNode(props[propName])) {159 var locationName = ReactPropTypeLocationNames[location];160 return new Error('Invalid ' + locationName + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));161 }162 return null;163 }164 return createChainableTypeChecker(validate);165}166function createShapeTypeChecker(shapeTypes) {167 function validate(props, propName, componentName, location, propFullName) {168 var propValue = props[propName];169 var propType = getPropType(propValue);170 if (propType !== 'object') {171 var locationName = ReactPropTypeLocationNames[location];172 return new Error('Invalid ' + locationName + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));173 }174 for (var key in shapeTypes) {175 var checker = shapeTypes[key];176 if (!checker) {177 continue;178 }179 var error = checker(propValue, key, componentName, location, propFullName + '.' + key);180 if (error) {181 return error;182 }183 }184 return null;185 }186 return createChainableTypeChecker(validate);187}188function isNode(propValue) {189 switch (typeof propValue) {190 case 'number':191 case 'string':192 case 'undefined':193 return true;194 case 'boolean':195 return !propValue;196 case 'object':197 if (Array.isArray(propValue)) {198 return propValue.every(isNode);199 }200 if (propValue === null || ReactElement.isValidElement(propValue)) {...
ChainTypes.js
Source:ChainTypes.js
1import utils from "common/utils";2import Immutable from "immutable";3import {ChainTypes as grapheneChainTypes, ChainValidation} from "bitsharesjs";4const {object_type} = grapheneChainTypes;5function createChainableTypeChecker(validate) {6 function checkType(isRequired, props, propName, componentName, location) {7 componentName = componentName || ANONYMOUS;8 if (props[propName] == null) {9 if (isRequired) {10 return new Error(11 "Required " +12 location +13 " `" +14 propName +15 "` was not specified in " +16 ("`" + componentName + "`.")17 );18 }19 return null;20 } else {21 return validate(props, propName, componentName, location);22 }23 }24 let chainedCheckType = checkType.bind(null, false);25 chainedCheckType.isRequired = checkType.bind(null, true);26 return chainedCheckType;27}28function objectIdChecker(props, propName, componentName) {29 componentName = componentName || "ANONYMOUS";30 if (props[propName]) {31 let value = props[propName];32 if (typeof value === "string") {33 return utils.is_object_id(value)34 ? null35 : new Error(36 `${propName} in ${componentName} should be an object id`37 );38 } else if (typeof value === "object") {39 // TODO: check object type (probably we should require an object to be a tcomb structure)40 } else {41 return new Error(42 `${propName} in ${componentName} should be an object id or object`43 );44 }45 }46 // assume all ok47 return null;48}49function keyChecker(props, propName, componentName) {50 componentName = componentName || "ANONYMOUS";51 if (props[propName]) {52 let value = props[propName];53 if (typeof value === "string") {54 // TODO: check if it's valid key55 // PublicKey.fromPublicKeyString(value)56 return null;57 } else {58 return new Error(59 `${propName} in ${componentName} should be a key string`60 );61 }62 }63 // assume all ok64 return null;65}66function assetChecker(props, propName, componentName) {67 componentName = componentName || "ANONYMOUS";68 if (props[propName]) {69 let value = props[propName];70 if (typeof value === "string") {71 return null;72 } else if (typeof value === "object") {73 // TODO: check object type (probably we should require an object to be a tcomb structure)74 } else {75 return new Error(76 `${propName} of ${value} in ${componentName} should be an asset symbol or id`77 );78 }79 }80 // assume all ok81 return null;82}83function accountChecker(props, propName, componentName) {84 componentName = componentName || "ANONYMOUS";85 if (props[propName]) {86 let value = props[propName];87 if (typeof value === "string") {88 return null;89 if (90 utils.is_object_id(value) &&91 value.split(".")[1] === object_type.account92 ) {93 return null;94 } else {95 return new Error(96 `${propName} of ${value} in ${componentName} should be an account id`97 );98 }99 } else if (typeof value === "object") {100 if (101 value instanceof Map &&102 !!value.get("name") &&103 value.size == 1104 ) {105 // special case for BindToCurrentAccount106 return null;107 }108 // TODO: check object type (probably we should require an object to be a tcomb structure)109 } else {110 return new Error(111 `${propName} of ${value} in ${componentName} should be an account id`112 );113 }114 }115 // assume all ok116 return null;117}118function objectsListChecker(props, propName, componentName) {119 componentName = componentName || "ANONYMOUS";120 if (props[propName]) {121 let value = props[propName];122 if (123 Immutable.List.isList(value) ||124 Immutable.Set.isSet(value) ||125 value instanceof Object126 ) {127 return null;128 } else {129 return new Error(130 `${propName} in ${componentName} should be Immutable.List`131 );132 }133 }134 // assume all ok135 return null;136}137function assetsListChecker(props, propName, componentName) {138 componentName = componentName || "ANONYMOUS";139 if (props[propName]) {140 let value = props[propName];141 if (142 Immutable.List.isList(value) ||143 Immutable.Set.isSet(value) ||144 value instanceof Object145 ) {146 return null;147 } else {148 return new Error(149 `${propName} in ${componentName} should be Immutable.List`150 );151 }152 }153 // assume all ok154 return null;155}156function accountsListChecker(props, propName, componentName) {157 componentName = componentName || "ANONYMOUS";158 if (props[propName]) {159 let value = props[propName];160 if (161 Immutable.List.isList(value) ||162 Immutable.Set.isSet(value) ||163 value instanceof Object164 ) {165 return null;166 } else {167 return new Error(168 `${propName} in ${componentName} should be Immutable.List`169 );170 }171 }172 // assume all ok173 return null;174}175function accountNameChecker(props, propName, componentName) {176 componentName = componentName || "ANONYMOUS";177 if (props[propName]) {178 let value = props[propName];179 if (ChainValidation.is_account_name(value)) {180 return null;181 } else {182 return new Error(183 `${propName} value of ${value} in ${componentName} is not a valid account name`184 );185 }186 }187 // assume all ok188 return null;189}190let ChainObject = createChainableTypeChecker(objectIdChecker);191let ChainAccount = createChainableTypeChecker(accountChecker);192let ChainAccountName = createChainableTypeChecker(accountNameChecker);193let ChainKeyRefs = createChainableTypeChecker(keyChecker);194let ChainAddressBalances = createChainableTypeChecker(keyChecker);195let ChainAsset = createChainableTypeChecker(assetChecker);196let ChainObjectsList = createChainableTypeChecker(objectsListChecker);197let ChainAccountsList = createChainableTypeChecker(accountsListChecker);198let ChainAssetsList = createChainableTypeChecker(assetsListChecker);199export default {200 ChainObject,201 ChainAccount,202 ChainAccountName,203 ChainKeyRefs,204 ChainAddressBalances,205 ChainAsset,206 ChainObjectsList,207 ChainAccountsList,208 ChainAssetsList...
PropTypes.js
Source:PropTypes.js
1import createChainableTypeChecker2 from 'react-prop-types/lib/utils/createChainableTypeChecker';3import ValidComponentChildren from './ValidComponentChildren';4export function requiredRoles(...roles) {5 return createChainableTypeChecker((props, propName, component) => {6 let missing;7 roles.every(role => {8 if (!ValidComponentChildren.some(9 props.children, child => child.props.bsRole === role10 )) {11 missing = role;12 return false;13 }14 return true;15 });16 if (missing) {17 return new Error(18 `(children) ${component} - Missing a required child with bsRole: ` +19 `${missing}. ${component} must have at least one child of each of ` +20 `the following bsRoles: ${roles.join(', ')}`21 );22 }23 return null;24 });25}26export function exclusiveRoles(...roles) {27 return createChainableTypeChecker((props, propName, component) => {28 let duplicate;29 roles.every(role => {30 const childrenWithRole = ValidComponentChildren.filter(31 props.children, child => child.props.bsRole === role32 );33 if (childrenWithRole.length > 1) {34 duplicate = role;35 return false;36 }37 return true;38 });39 if (duplicate) {40 return new Error(41 `(children) ${component} - Duplicate children detected of bsRole: ` +...
Using AI Code Generation
1const { createChainableTypeChecker } = require('playwright/lib/utils/utils');2const { expect } = require('chai');3const customTypeChecker = createChainableTypeChecker((value) => {4 if (value === 'foo') {5 return null;6 }7 return new Error('Value is not foo');8});9expect('foo', 'foo').to.satisfy(customTypeChecker);10const { test, expect } = require('@playwright/test');11test('test', async ({ page }) => {12 expect('foo', 'foo').to.satisfy(customTypeChecker);13});14 expect(foo, foo).to.satisfy(customTypeChecker) - expected 'foo' to satisfy customTypeChecker:15 at Object.<anonymous> (test.js:7:11)16 at Object.<anonymous> (test.spec.js:4:1)17 at Object.<anonymous> (test.spec.js:1:1)18 at Module._compile (internal/modules/cjs/loader.js:1063:30)19 at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)20 at Module.load (internal/modules/cjs/loader.js:928:32)21 at Function.Module._load (internal/modules/cjs/loader.js:769:14)22 at Module.require (internal/modules/cjs/loader.js:952:19)23 at require (internal/modules/cjs/helpers.js:88:18)24 at Object.<anonymous> (test.spec.js:1:1)25 0 passed (0.3s)26Test failed: expect(foo, foo).to.satisfy(customTypeChecker) - expected 'foo' to satisfy customTypeChecker:27 at Object.<anonymous> (test.js:7:11)28 at Object.<anonymous> (test.spec.js:4:1)29 at Object.<anonymous> (test.spec.js:1:1)30 at Module._compile (internal/modules/cjs/loader.js:1063:30)31 at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10
Using AI Code Generation
1const { createChainableTypeChecker } = require('@playwright/test/lib/utils/stackTrace');2const { expect } = require('@playwright/test');3const check = createChainableTypeChecker('MyCustomType');4expect.extend({5 toBeMyCustomType: check((actual) => {6 return {7 message: `Expected ${actual} to be MyCustomType`8 };9 }),10});11test('MyCustomType', async ({ page }) => {12 await page.click('text=Get started');13 await page.click('text=Docs');14 await page.click('text=API');15 await page.click('text=Class: Page');16 await page.click('
Using AI Code Generation
1const { createChainableTypeChecker } = require('playwright/lib/utils');2const { expect } = require('chai');3const isString = createChainableTypeChecker((value) => typeof value === 'string');4expect('test').to.be.a.string;5const { createChainableTypeChecker } = require('playwright/lib/utils');6const { expect } = require('chai');7const isString = createChainableTypeChecker((value) => typeof value === 'string');8expect('test').to.be.a(isString);9const { createChainableTypeChecker } = require('playwright/lib/utils');10const { expect } = require('chai');11const isString = createChainableTypeChecker((value) => typeof value === 'string');12expect('test').to.be.a(isString());13const { createChainableTypeChecker } = require('playwright/lib/utils');14const { expect } = require('chai');15const isString = createChainableTypeChecker((value) => typeof value === 'string');16expect('test').to.be.a(isString);17const { createChainableTypeChecker } = require('playwright/lib/utils');18const { expect } = require('chai');19const isString = createChainableTypeChecker((value) => typeof value === 'string');20expect('test').to.be.a(isString);21const { createChainableTypeChecker } = require('playwright/lib/utils');22const { expect } = require('chai');
Using AI Code Generation
1const { createChainableTypeChecker } = require('playwright/lib/utils/utils').helper;2const isStringOrNumber = createChainableTypeChecker((actual) => {3 if (typeof actual !== 'string' && typeof actual !== 'number') {4 throw new Error('Expected to be string or number');5 }6});7const isStringOrNumberOrBoolean = createChainableTypeChecker((actual) => {8 if (typeof actual !== 'string' && typeof actual !== 'number' && typeof actual !== 'boolean') {9 throw new Error('Expected to be string, number or boolean');10 }11});12const isStringOrNumberOrBooleanOrArray = createChainableTypeChecker((actual) => {13 if (typeof actual !== 'string' && typeof actual !== 'number' && typeof actual !== 'boolean' && !Array.isArray(actual)) {14 throw new Error('Expected to be string, number, boolean or array');15 }16});17const isStringOrNumberOrObject = createChainableTypeChecker((actual) => {18 if (typeof actual !== 'string' && typeof actual !== 'number' && typeof actual !== 'object') {19 throw new Error('Expected to be string, number or object');20 }21});22const isStringOrNumberOrObjectOrArray = createChainableTypeChecker((actual) => {23 if (typeof actual !== 'string' && typeof actual !== 'number' && typeof actual !== 'object' && !Array.isArray(actual)) {24 throw new Error('Expected to be string, number, object or array');25 }26});27const isStringOrNumberOrObjectOrArrayOrBoolean = createChainableTypeChecker((actual) => {28 if (typeof actual !== 'string' && typeof actual !== 'number' && typeof actual !== 'object' && !Array.isArray(actual) && typeof actual !== 'boolean') {29 throw new Error('Expected to be string, number, object, array or boolean');30 }31});32const isStringOrNumberOrObjectOrArrayOrBooleanOrFunction = createChainableTypeChecker((actual) => {33 if (typeof actual !== 'string' && typeof actual !== 'number' && typeof actual !== 'object' && !Array.isArray(actual) && typeof actual !== 'boolean
Using AI Code Generation
1const { createChainableTypeChecker } = require('playwright/lib/utils/utils.js');2const { test } = require('@playwright/test');3const customType = createChainableTypeChecker(function (value) {4 return value === 'my custom type';5});6test('custom type', async ({ page }) => {7 await page.click(customType);8});
Using AI Code Generation
1const { createChainableTypeChecker } = require('@playwright/test/lib/utils');2const customTypeChecker = createChainableTypeChecker((value) => {3 if (value === 'custom') {4 return { pass: true };5 } else {6 return { pass: false, message: 'Value is not custom' };7 }8});9const { createType } = require('@playwright/test/lib/utils');10const customType = createType('custom', customTypeChecker);11const { createType } = require('@playwright/test/lib/utils');12const pageType = createType('page', (value) => {13 if (value instanceof Page) {14 return { pass: true };15 } else {16 return { pass: false, message: 'Value is not a page' };17 }18});19const { createType } = require('@playwright/test/lib/utils');20const contextType = createType('context', (value) => {21 if (value instanceof BrowserContext) {22 return { pass: true };23 } else {24 return { pass: false, message: 'Value is not a context' };25 }26});27const { createType } = require('@playwright/test/lib/utils');28const browserType = createType('browser', (value) => {29 if (value instanceof Browser) {30 return { pass: true };31 } else {32 return { pass: false, message: 'Value is not a browser' };33 }34});35const { createType } = require('@playwright/test/lib/utils');36const elementHandleType = createType('elementHandle', (value) => {37 if (value instanceof ElementHandle) {38 return { pass: true };39 } else {40 return { pass: false, message: 'Value is not an elementHandle' };41 }42});
Using AI Code Generation
1const { createChainableTypeChecker } = require('playwright/lib/utils/utils');2const customTypeChecker = createChainableTypeChecker(3 value => {4 if (value === 'foo') {5 return 'foo';6 }7 return 'bar';8 },9);10const foo = customTypeChecker('foo');11const bar = customTypeChecker('bar');
Using AI Code Generation
1const { createChainableTypeChecker } = require('playwright-core/lib/server/common/utils');2const myCustomSelector = createChainableTypeChecker(3 (selector) => {4 if (typeof selector !== 'string') {5 return { expected: 'string', got: typeof selector };6 }7 return true;8 },9 (selector) => {10 return {11 message: () => `Invalid selector: ${selector}`,12 };13 }14);15const myCustomSelector2 = createChainableTypeChecker(16 (selector) => {17 if (typeof selector !== 'string') {18 return { expected: 'string', got: typeof selector };19 }20 return true;21 },22 (selector) => {23 return {24 message: () => `Invalid selector: ${selector}`,25 };26 }27);28class MyPage {29 constructor(page) {30 this.page = page;31 }32 async myCustomSelector(selector) {33 await this.page.click(selector);34 }35 async myCustomSelector2(selector) {36 await this.page.click(selector);37 }38}39module.exports = {40};41const { MyPage, myCustomSelector, myCustomSelector2 } = require('./test');42describe('My Test', () => {43 let page;44 let myPage;45 beforeAll(async () => {46 page = await browser.newPage();47 myPage = new MyPage(page);48 });49 afterAll(async () => {50 await page.close();51 });52 test('test', async () => {53 await myPage.myCustomSelector('myCustomSelector');54 await myPage.myCustomSelector2('myCustomSelector2');55 });56});
LambdaTest’s Playwright tutorial will give you a broader idea about the Playwright automation framework, its unique features, and use cases with examples to exceed your understanding of Playwright testing. This tutorial will give A to Z guidance, from installing the Playwright framework to some best practices and advanced concepts.
Get 100 minutes of automation test minutes FREE!!