41 lines
1.4 KiB
JavaScript
41 lines
1.4 KiB
JavaScript
// This regex will have fast negatives meaning valid identifiers may not pass
|
|
// this test. However this is only used during static generation to provide hints
|
|
// about why a page bailed out of some or all prerendering and we can use bracket notation
|
|
// for example while `ಠ_ಠ` is a valid identifier it's ok to print `searchParams['ಠ_ಠ']`
|
|
// even if this would have been fine too `searchParams.ಠ_ಠ`
|
|
const isDefinitelyAValidIdentifier = /^[A-Za-z_$][A-Za-z0-9_$]*$/;
|
|
export function describeStringPropertyAccess(target, prop) {
|
|
if (isDefinitelyAValidIdentifier.test(prop)) {
|
|
return "`" + target + "." + prop + "`";
|
|
}
|
|
return "`" + target + "[" + JSON.stringify(prop) + "]`";
|
|
}
|
|
export function describeHasCheckingStringProperty(target, prop) {
|
|
const stringifiedProp = JSON.stringify(prop);
|
|
return "`Reflect.has(" + target + ", " + stringifiedProp + ")`, `" + stringifiedProp + " in " + target + "`, or similar";
|
|
}
|
|
export const wellKnownProperties = new Set([
|
|
'hasOwnProperty',
|
|
'isPrototypeOf',
|
|
'propertyIsEnumerable',
|
|
'toString',
|
|
'valueOf',
|
|
'toLocaleString',
|
|
// Promise prototype
|
|
// fallthrough
|
|
'then',
|
|
'catch',
|
|
'finally',
|
|
// React Promise extension
|
|
// fallthrough
|
|
'status',
|
|
// React introspection
|
|
'displayName',
|
|
// Common tested properties
|
|
// fallthrough
|
|
'toJSON',
|
|
'$$typeof',
|
|
'__esModule'
|
|
]);
|
|
|
|
//# sourceMappingURL=reflect-utils.js.map
|