Best JavaScript code snippet using playwright-internal
react-hot-loader.development.js
Source:react-hot-loader.development.js
...1615 });1616 })1617 };1618};1619var mergeInject = function mergeInject(a, b, instance) {1620 if (a && !Array.isArray(a)) {1621 return mergeInject([a], b);1622 }1623 if (b && !Array.isArray(b)) {1624 return mergeInject(a, [b]);1625 }1626 if (!a || !b) {1627 return NO_CHILDREN;1628 }1629 if (a.length === b.length) {1630 return mapChildren(a, b);1631 }1632 // in some cases (no confidence here) B could contain A except null children1633 // in some cases - could not.1634 // this depends on React version and the way you build component.1635 var nonNullA = filterNullArray(a);1636 if (nonNullA.length === b.length) {1637 return mapChildren(nonNullA, b);1638 }1639 var flatA = unflatten(nonNullA);1640 var flatB = unflatten(b);1641 if (flatA.length === flatB.length) {1642 return mapChildren(flatA, flatB);1643 }1644 if (flatB.length === 0 && flatA.length === 1 && _typeof(flatA[0]) !== 'object') ; else if (!configuration.IS_REACT_MERGE_ENABLED) {1645 logger.warn('React-hot-loader: unable to merge ', a, 'and children of ', instance);1646 stackReport();1647 }1648 return NO_CHILDREN;1649};1650var transformFlowNode = function transformFlowNode(flow) {1651 return flow.reduce(function (acc, node) {1652 if (node && isFragmentNode(node)) {1653 if (node.props && node.props.children) {1654 return [].concat(acc, filterNullArray(asArray(node.props.children)));1655 }1656 if (node.children) {1657 return [].concat(acc, filterNullArray(asArray(node.children)));1658 }1659 }1660 return [].concat(acc, [node]);1661 }, []);1662};1663var scheduledUpdates = [];1664var scheduledUpdate = 0;1665var flushScheduledUpdates = function flushScheduledUpdates() {1666 var instances = scheduledUpdates;1667 scheduledUpdates = [];1668 scheduledUpdate = 0;1669 instances.forEach(function (instance) {1670 return instance[PROXY_IS_MOUNTED] && updateInstance(instance);1671 });1672};1673var unscheduleUpdate = function unscheduleUpdate(instance) {1674 scheduledUpdates = scheduledUpdates.filter(function (inst) {1675 return inst !== instance;1676 });1677};1678var scheduleInstanceUpdate = function scheduleInstanceUpdate(instance) {1679 scheduledUpdates.push(instance);1680 if (!scheduledUpdate) {1681 scheduledUpdate = setTimeout(flushScheduledUpdates, 4);1682 }1683};1684var hotReplacementRender = function hotReplacementRender(instance, stack) {1685 if (isReactClassInstance(instance)) {1686 var type = getElementType$1(stack);1687 renderStack.push({1688 name: getComponentDisplayName(type),1689 type: type,1690 props: stack.instance.props,1691 context: stackContext()1692 });1693 }1694 try {1695 var flow = transformFlowNode(filterNullArray(asArray(render(instance, stack))));1696 var children = stack.children;1697 flow.forEach(function (child, index) {1698 var childType = child.type;1699 var stackChild = children[index];1700 var next = function next(instance) {1701 // copy over props as long new component may be hidden inside them1702 // child does not have all props, as long some of them can be calculated on componentMount.1703 var realProps = instance.props;1704 var nextProps = _extends({}, realProps, child.nextProps || {}, child.props || {});1705 if (isReactClassInstance(instance) && instance.componentWillUpdate) {1706 // Force-refresh component (bypass redux renderedComponent)1707 instance.componentWillUpdate(_extends({}, realProps), instance.state);1708 }1709 instance.props = nextProps;1710 hotReplacementRender(instance, stackChild);1711 instance.props = realProps;1712 };1713 // text node1714 if ((typeof child === 'undefined' ? 'undefined' : _typeof(child)) !== 'object' || !stackChild || !stackChild.instance) {1715 if (stackChild && stackChild.children && stackChild.children.length) {1716 logger.error('React-hot-loader: reconciliation failed', 'could not dive into [', child, '] while some elements are still present in the tree.');1717 stackReport();1718 }1719 return;1720 }1721 // comparing rendered type to fiber.ElementType1722 if ((typeof childType === 'undefined' ? 'undefined' : _typeof(childType)) !== _typeof(stackChild.elementType)) {1723 // Portals could generate undefined !== null1724 if (childType && stackChild.type) {1725 logger.warn('React-hot-loader: got ', childType, 'instead of', stackChild.type);1726 stackReport();1727 }1728 return;1729 }1730 if (isMemoType(child) || isLazyType(child)) {1731 // force update memo children1732 if (stackChild.children && stackChild.children[0]) {1733 scheduleInstanceUpdate(stackChild.children[0].instance);1734 }1735 childType = childType.type || childType;1736 }1737 if (isForwardType(child)) {1738 next(stackChild.instance);1739 } else if (isContextConsumer(child)) {1740 try {1741 var contextValue = stackContext().get(getContextProvider(childType));1742 next({1743 children: (child.props ? child.props.children : child.children[0])(contextValue !== undefined ? contextValue : childType[CONTEXT_CURRENT_VALUE])1744 });1745 } catch (e) {1746 // do nothing, yet1747 }1748 } else if (typeof childType !== 'function') {1749 // React1750 var childName = childType ? getComponentDisplayName(childType) : 'empty';1751 var extraContext = stackContext();1752 if (isContextProvider(child)) {1753 extraContext = new Map(extraContext);1754 extraContext.set(getContextProvider(childType), _extends({}, child.nextProps || {}, child.props || {}).value);1755 childName = 'ContextProvider';1756 }1757 renderStack.push({1758 name: childName,1759 type: childType,1760 props: stack.instance.props,1761 context: extraContext1762 });1763 next(1764 // move types from render to the instances of hydrated tree1765 mergeInject(transformFlowNode(asArray(child.props ? child.props.children : child.children)), stackChild.instance.children, stackChild.instance));1766 renderStack.pop();1767 } else {1768 if (childType === stackChild.type) {1769 next(stackChild.instance);1770 } else {1771 // unwrap proxy1772 var _childType = getElementType$1(child);1773 if (isMemoType(child)) {1774 _childType = _childType.type || _childType;1775 }1776 if (!stackChild.type[PROXY_KEY]) {1777 if (!configuration.IS_REACT_MERGE_ENABLED) {1778 if (isTypeBlacklisted(stackChild.type)) {1779 logger.warn('React-hot-loader: cold element got updated ', stackChild.type);...
index.js
Source:index.js
...1413 })1414});1415const mergeInject = (a, b, instance) => {1416 if (a && !Array.isArray(a)) {1417 return mergeInject([a], b);1418 }1419 if (b && !Array.isArray(b)) {1420 return mergeInject(a, [b]);1421 }1422 if (!a || !b) {1423 return NO_CHILDREN;1424 }1425 if (a.length === b.length) {1426 return mapChildren(a, b);1427 }1428 const nonNullA = filterNullArray(a);1429 if (nonNullA.length === b.length) {1430 return mapChildren(nonNullA, b);1431 }1432 const flatA = unflatten(nonNullA);1433 const flatB = unflatten(b);1434 if (flatA.length === flatB.length) {1435 return mapChildren(flatA, flatB);1436 }1437 if (flatB.length === 0 && flatA.length === 1 && typeof flatA[0] !== 'object') ; else if (!configuration.IS_REACT_MERGE_ENABLED) {1438 logger.warn(`React-hot-loader: unable to merge `, a, 'and children of ', instance);1439 stackReport();1440 }1441 return NO_CHILDREN;1442};1443const transformFlowNode = flow => flow.reduce((acc, node) => {1444 if (node && isFragmentNode(node)) {1445 if (node.props && node.props.children) {1446 return [...acc, ...filterNullArray(asArray(node.props.children))];1447 }1448 if (node.children) {1449 return [...acc, ...filterNullArray(asArray(node.children))];1450 }1451 }1452 return [...acc, node];1453}, []);1454let scheduledUpdates = [];1455let scheduledUpdate = 0;1456const flushScheduledUpdates = () => {1457 const instances = scheduledUpdates;1458 scheduledUpdates = [];1459 scheduledUpdate = 0;1460 instances.forEach(instance => instance[PROXY_IS_MOUNTED] && updateInstance(instance));1461};1462const unscheduleUpdate = instance => {1463 scheduledUpdates = scheduledUpdates.filter(inst => inst !== instance);1464};1465const scheduleInstanceUpdate = instance => {1466 scheduledUpdates.push(instance);1467 if (!scheduledUpdate) {1468 scheduledUpdate = setTimeout(flushScheduledUpdates, 4);1469 }1470};1471const hotReplacementRender = (instance, stack) => {1472 if (isReactClassInstance(instance)) {1473 const type = getElementType$1(stack);1474 renderStack.push({1475 name: getComponentDisplayName(type),1476 type,1477 props: stack.instance.props,1478 context: stackContext()1479 });1480 }1481 try {1482 const flow = transformFlowNode(filterNullArray(asArray(render(instance, stack))));1483 const {1484 children1485 } = stack;1486 flow.forEach((child, index) => {1487 let childType = child.type;1488 const stackChild = children[index];1489 const next = instance => {1490 const realProps = instance.props;1491 const nextProps = { ...realProps,1492 ...(child.nextProps || {}),1493 ...(child.props || {})1494 };1495 if (isReactClassInstance(instance) && instance.componentWillUpdate) {1496 instance.componentWillUpdate({ ...realProps1497 }, instance.state);1498 }1499 instance.props = nextProps;1500 hotReplacementRender(instance, stackChild);1501 instance.props = realProps;1502 };1503 if (typeof child !== 'object' || !stackChild || !stackChild.instance) {1504 if (stackChild && stackChild.children && stackChild.children.length) {1505 logger.error('React-hot-loader: reconciliation failed', 'could not dive into [', child, '] while some elements are still present in the tree.');1506 stackReport();1507 }1508 return;1509 }1510 if (typeof childType !== typeof stackChild.elementType) {1511 if (childType && stackChild.type) {1512 logger.warn('React-hot-loader: got ', childType, 'instead of', stackChild.type);1513 stackReport();1514 }1515 return;1516 }1517 if (isMemoType(child) || isLazyType(child)) {1518 if (stackChild.children && stackChild.children[0]) {1519 scheduleInstanceUpdate(stackChild.children[0].instance);1520 }1521 childType = childType.type || childType;1522 }1523 if (isForwardType(child)) {1524 next(stackChild.instance);1525 } else if (isContextConsumer(child)) {1526 try {1527 const contextValue = stackContext().get(getContextProvider(childType));1528 next({1529 children: (child.props ? child.props.children : child.children[0])(contextValue !== undefined ? contextValue : childType[CONTEXT_CURRENT_VALUE])1530 });1531 } catch (e) {}1532 } else if (typeof childType !== 'function') {1533 let childName = childType ? getComponentDisplayName(childType) : 'empty';1534 let extraContext = stackContext();1535 if (isContextProvider(child)) {1536 extraContext = new Map(extraContext);1537 extraContext.set(getContextProvider(childType), { ...(child.nextProps || {}),1538 ...(child.props || {})1539 }.value);1540 childName = 'ContextProvider';1541 }1542 renderStack.push({1543 name: childName,1544 type: childType,1545 props: stack.instance.props,1546 context: extraContext1547 });1548 next(mergeInject(transformFlowNode(asArray(child.props ? child.props.children : child.children)), stackChild.instance.children, stackChild.instance));1549 renderStack.pop();1550 } else {1551 if (childType === stackChild.type) {1552 next(stackChild.instance);1553 } else {1554 let childType = getElementType$1(child);1555 if (isMemoType(child)) {1556 childType = childType.type || childType;1557 }1558 if (!stackChild.type[PROXY_KEY]) {1559 if (!configuration.IS_REACT_MERGE_ENABLED) {1560 if (isTypeBlacklisted(stackChild.type)) {1561 logger.warn('React-hot-loader: cold element got updated ', stackChild.type);1562 }...
0.5fe0515847c97c9eece8.hot-update.js
Source:0.5fe0515847c97c9eece8.hot-update.js
...670 });671 })672 };673};674var mergeInject = function mergeInject(a, b, instance) {675 if (a && !Array.isArray(a)) {676 return mergeInject([a], b);677 }678 if (b && !Array.isArray(b)) {679 return mergeInject(a, [b]);680 }681 if (!a || !b) {682 return NO_CHILDREN;683 }684 if (a.length === b.length) {685 return mapChildren(a, b);686 }687 var flatA = unflatten(a);688 var flatB = unflatten(b);689 if (flatA.length === flatB.length) {690 return mapChildren(flatA, flatB);691 }692 _logger2.default.warn('React-hot-loader: unable to merge ', a, 'and children of ', instance);693 return NO_CHILDREN;694};695var hotReplacementRender = function hotReplacementRender(instance, stack) {696 var flow = filterNullArray(asArray(render(instance)));697 var children = stack.children;698 flow.forEach(function (child, index) {699 var stackChild = children[index];700 var next = function next(instance) {701 // copy over props as long new component may be hidden inside them702 // child does not have all props, as long some of them can be calculated on componentMount.703 var nextProps = _extends({}, instance.props);704 for (var key in child.props) {705 if (child.props[key]) {706 nextProps[key] = child.props[key];707 }708 }709 if (isReactClass(instance) && instance.componentWillUpdate) {710 // Force-refresh component (bypass redux renderedComponent)711 instance.componentWillUpdate(nextProps, instance.state);712 }713 instance.props = nextProps;714 hotReplacementRender(instance, stackChild);715 };716 // text node717 if ((typeof child === 'undefined' ? 'undefined' : _typeof(child)) !== 'object' || !stackChild || !stackChild.instance) {718 return;719 }720 if (typeof child.type !== 'function') {721 next(722 // move types from render to the instances of hydrated tree723 mergeInject(filterNullArray(asArray(child.props ? child.props.children : child.children)), stackChild.instance.children, stackChild.instance));724 } else {725 // unwrap proxy726 var childType = getElementType(child);727 if (!stackChild.type[_reactStandIn.PROXY_KEY]) {728 /* eslint-disable no-console */729 _logger2.default.error('React-hot-loader: fatal error caused by ', stackChild.type, ' - no instrumentation found. ', 'Please require react-hot-loader before React. More in troubleshooting.');730 throw new Error('React-hot-loader: wrong configuration');731 }732 if (child.type === stackChild.type) {733 next(stackChild.instance);734 } else if (isSwappable(childType, stackChild.type)) {735 // they are both registered, or have equal code/displayname/signature736 // update proxy using internal PROXY_KEY737 (0, _proxies.updateProxyById)(stackChild.type[_reactStandIn.PROXY_KEY], childType);...
Menu.js.es.js
Source:Menu.js.es.js
...314 return function mergedDataFn() {315 return extend(isFunction(to) ? to.call(this, this) : to, isFunction(from) ? from.call(this, this) : from);316 };317}318function mergeInject(to, from) {319 return mergeObjectOptions(normalizeInject(to), normalizeInject(from));320}321function normalizeInject(raw) {322 if (isArray(raw)) {323 const res = {};324 for (let i = 0; i < raw.length; i++) {325 res[raw[i]] = raw[i];326 }327 return res;328 }329 return raw;330}331function mergeAsArray(to, from) {332 return to ? [...new Set([].concat(to, from))] : from;...
componentOptions.js
Source:componentOptions.js
1import {2 isFunction,3 extend,4 isString,5 isObject,6 isArray,7 NOOP,8 isPromise9 // LooseRequired,10 // UnionToIntersection11} from '../shared/index.js'12import { isRef, reactive } from '../reactivity/index.js'13function createDuplicateChecker () {14 const cache = Object.create(null)15 return (type, key) => {16 if (!cache[key]) {17 cache[key] = type18 }19 }20}21export let shouldCacheAccess = true22export function applyOptions (instance) {23 const options = resolveMergedOptions(instance)24 const publicThis = instance.proxy25 const ctx = instance.ctx26 shouldCacheAccess = false27 if (options.beforeCreate) {28 callHook(options.beforeCreate, instance, 'bc')29 }30 const {31 data: dataOptions,32 computed: computedOptions,33 methods,34 watch: watchOptions,35 provide: provideOptions,36 inject: injectOptions,37 created,38 beforeMount,39 mounted,40 beforeUpdate,41 updated,42 activated,43 deactivated,44 beforeDestroy,45 beforeUnmount,46 destroyed,47 unmounted,48 render,49 renderTracked,50 renderTriggered,51 errorCaptured,52 serverPrefetch,53 expose,54 inheritAttrs,55 components,56 directives,57 filters58 } = options59 const checkDuplicateProperties = createDuplicateChecker()60 {61 const [propsOptions] = instance.propsOptions62 if (propsOptions) {63 for (const key in propsOptions) {64 checkDuplicateProperties('Props', key)65 }66 }67 }68 if (injectOptions) {69 resolveInjections(70 injectOptions,71 ctx,72 checkDuplicateProperties,73 instance.appContext.config.unwrapInjectedRef74 )75 }76 if (methods) {77 for (const key in methods) {78 const methodHandler = methods[key]79 if (isFunction(methodHandler)) {80 {81 Object.defineProperty(ctx, key, {82 value: methodHandler.bind(publicThis),83 configurable: true,84 enumerable: true,85 writable: true86 })87 }88 {89 checkDuplicateProperties('Methods', key)90 }91 }92 }93 }94 if (dataOptions) {95 const data = dataOptions.call(publicThis, publicThis)96 if (isObject(data)) {97 instance.data = reactive(data)98 {99 for (const key in data) {100 checkDuplicateProperties('Data', key)101 if (key[0] !== '$' && key[0] !== '_') {102 Object.defineProperty(ctx, key, {103 configurable: true,104 enumerable: true,105 get: () => data[key],106 set: NOOP107 })108 }109 }110 }111 }112 }113 shouldCacheAccess = true114 if (computedOptions) {115 for (const key in computedOptions) {116 const opt = computedOptions[key]117 const get = isFunction(opt)118 ? opt.bind(publicThis, publicThis)119 : isFunction(opt.get)120 ? opt.get.bind(publicThis, publicThis)121 : NOOP122 const set =123 !isFunction(opt) && isFunction(opt.set)124 ? opt.set.bind(publicThis)125 : () => {}126 const c = computed$1({ get, set })127 Object.defineProperty(ctx, key, {128 enumerable: true,129 configurable: true,130 get: () => c.value,131 set: v => (c.value = v)132 })133 {134 checkDuplicateProperties('Computed', key)135 }136 }137 }138 if (watchOptions) {139 for (const key in watchOptions) {140 createWatcher(watchOptions[key], ctx, publicThis, key)141 }142 }143 if (provideOptions) {144 const provides = isFunction(provideOptions)145 ? provideOptions.call(publicThis)146 : provideOptions147 Reflect.ownKeys(provides).forEach(key => {148 provide(key, provides[key])149 })150 }151 if (created) {152 callHook(created, instance, 'c')153 }154 function registerLifecycleHook (register, hook) {155 if (isArray(hook)) {156 hook.forEach(_hook => register(_hook.bind(publicThis)))157 } else if (hook) {158 register(hook.bind(publicThis))159 }160 }161 registerLifecycleHook(onBeforeMount, beforeMount)162 registerLifecycleHook(onMounted, mounted)163 registerLifecycleHook(onBeforeUpdate, beforeUpdate)164 registerLifecycleHook(onUpdated, updated)165 registerLifecycleHook(onActivated, activated)166 registerLifecycleHook(onDeactivated, deactivated)167 registerLifecycleHook(onErrorCaptured, errorCaptured)168 registerLifecycleHook(onRenderTracked, renderTracked)169 registerLifecycleHook(onRenderTriggered, renderTriggered)170 registerLifecycleHook(onBeforeUnmount, beforeUnmount)171 registerLifecycleHook(onUnmounted, unmounted)172 registerLifecycleHook(onServerPrefetch, serverPrefetch)173 if (isArray(expose)) {174 if (expose.length) {175 const exposed = instance.exposed || (instance.exposed = {})176 expose.forEach(key => {177 Object.defineProperty(exposed, key, {178 get: () => publicThis[key],179 set: val => (publicThis[key] = val)180 })181 })182 } else if (!instance.exposed) {183 instance.exposed = {}184 }185 }186 if (render && instance.render === NOOP) {187 instance.render = render188 }189 if (inheritAttrs != null) {190 instance.inheritAttrs = inheritAttrs191 }192 if (components) instance.components = components193 if (directives) instance.directives = directives194}195function resolveInjections (196 injectOptions,197 ctx,198 checkDuplicateProperties = NOOP,199 unwrapRef = false200) {201 if (isArray(injectOptions)) {202 injectOptions = normalizeInject(injectOptions)203 }204 for (const key in injectOptions) {205 const opt = injectOptions[key]206 let injected207 if (isObject(opt)) {208 if ('default' in opt) {209 injected = inject(opt.from || key, opt.default, true)210 } else {211 injected = inject(opt.from || key)212 }213 } else {214 injected = inject(opt)215 }216 if (isRef(injected)) {217 if (unwrapRef) {218 Object.defineProperty(ctx, key, {219 enumerable: true,220 configurable: true,221 get: () => injected.value,222 set: v => (injected.value = v)223 })224 } else {225 ctx[key] = injected226 }227 } else {228 ctx[key] = injected229 }230 {231 checkDuplicateProperties('Inject', key)232 }233 }234}235function callHook (hook, instance, type) {236 isArray(hook)237 ? hook.map(h => h.bind(instance.proxy))238 : hook.bind(instance.proxy)239}240function createWatcher (raw, ctx, publicThis, key) {241 const getter = key.includes('.')242 ? createPathGetter(publicThis, key)243 : () => publicThis[key]244 if (isString(raw)) {245 const handler = ctx[raw]246 if (isFunction(handler)) {247 watch(getter, handler)248 }249 } else if (isFunction(raw)) {250 watch(getter, raw.bind(publicThis))251 } else if (isObject(raw)) {252 if (isArray(raw)) {253 raw.forEach(r => createWatcher(r, ctx, publicThis, key))254 } else {255 const handler = isFunction(raw.handler)256 ? raw.handler.bind(publicThis)257 : ctx[raw.handler]258 if (isFunction(handler)) {259 watch(getter, handler, raw)260 }261 }262 }263}264export function resolveMergedOptions (instance) {265 const base = instance.type266 const { mixins, extends: extendsOptions } = base267 const {268 mixins: globalMixins,269 optionsCache: cache,270 config: { optionMergeStrategies }271 } = instance.appContext272 const cached = cache.get(base)273 let resolved274 if (cached) {275 resolved = cached276 } else if (!globalMixins.length && !mixins && !extendsOptions) {277 {278 resolved = base279 }280 } else {281 resolved = {}282 if (globalMixins.length) {283 globalMixins.forEach(m =>284 mergeOptions(resolved, m, optionMergeStrategies, true)285 )286 }287 mergeOptions(resolved, base, optionMergeStrategies)288 }289 cache.set(base, resolved)290 return resolved291}292function mergeOptions (to, from, strats, asMixin = false) {293 const { mixins, extends: extendsOptions } = from294 if (extendsOptions) {295 mergeOptions(to, extendsOptions, strats, true)296 }297 if (mixins) {298 mixins.forEach(m => mergeOptions(to, m, strats, true))299 }300 for (const key in from) {301 if (asMixin && key === 'expose') {302 } else {303 const strat = internalOptionMergeStrats[key] || (strats && strats[key])304 to[key] = strat ? strat(to[key], from[key]) : from[key]305 }306 }307 return to308}309const internalOptionMergeStrats = {310 data: mergeDataFn,311 props: mergeObjectOptions,312 emits: mergeObjectOptions,313 methods: mergeObjectOptions,314 computed: mergeObjectOptions,315 beforeCreate: mergeAsArray,316 created: mergeAsArray,317 beforeMount: mergeAsArray,318 mounted: mergeAsArray,319 beforeUpdate: mergeAsArray,320 updated: mergeAsArray,321 beforeDestroy: mergeAsArray,322 beforeUnmount: mergeAsArray,323 destroyed: mergeAsArray,324 unmounted: mergeAsArray,325 activated: mergeAsArray,326 deactivated: mergeAsArray,327 errorCaptured: mergeAsArray,328 serverPrefetch: mergeAsArray,329 components: mergeObjectOptions,330 directives: mergeObjectOptions,331 watch: mergeWatchOptions,332 provide: mergeDataFn,333 inject: mergeInject334}335function mergeDataFn (to, from) {336 if (!from) {337 return to338 }339 if (!to) {340 return from341 }342 return function mergedDataFn () {343 return extend(344 isFunction(to) ? to.call(this, this) : to,345 isFunction(from) ? from.call(this, this) : from346 )347 }348}349function mergeInject (to, from) {350 return mergeObjectOptions(normalizeInject(to), normalizeInject(from))351}352function normalizeInject (raw) {353 if (isArray(raw)) {354 const res = {}355 for (let i = 0; i < raw.length; i++) {356 res[raw[i]] = raw[i]357 }358 return res359 }360 return raw361}362function mergeAsArray (to, from) {363 return to ? [...new Set([].concat(to, from))] : from364}365function mergeObjectOptions (to, from) {366 return to ? extend(extend(Object.create(null), to), from) : from367}368function mergeWatchOptions (to, from) {369 if (!to) return from370 if (!from) return to371 const merged = extend(Object.create(null), to)372 for (const key in from) {373 merged[key] = mergeAsArray(to[key], from[key])374 }375 return merged...
hotReplacementRender.js
Source:hotReplacementRender.js
...132 });133 })134 };135};136var mergeInject = function mergeInject(a, b, instance) {137 if (a && !Array.isArray(a)) {138 return mergeInject([a], b);139 }140 if (b && !Array.isArray(b)) {141 return mergeInject(a, [b]);142 }143 if (!a || !b) {144 return NO_CHILDREN;145 }146 if (a.length === b.length) {147 return mapChildren(a, b);148 }149 var flatA = unflatten(a);150 var flatB = unflatten(b);151 if (flatA.length === flatB.length) {152 return mapChildren(flatA, flatB);153 }154 if (flatB.length === 0 && flatA.length === 1 && _typeof(flatA[0]) !== 'object') {155 // terminal node156 } else {157 _logger2.default.warn('React-hot-loader: unable to merge ', a, 'and children of ', instance);158 }159 return NO_CHILDREN;160};161var transformFlowNode = function transformFlowNode(flow) {162 return flow.reduce(function (acc, node) {163 if ((0, _reactUtils.isFragmentNode)(node) && node.props && node.props.children) {164 return [].concat(acc, node.props.children);165 }166 return [].concat(acc, [node]);167 }, []);168};169var hotReplacementRender = function hotReplacementRender(instance, stack) {170 var flow = transformFlowNode(filterNullArray(asArray(render(instance))));171 var children = stack.children;172 flow.forEach(function (child, index) {173 var stackChild = children[index];174 var next = function next(instance) {175 // copy over props as long new component may be hidden inside them176 // child does not have all props, as long some of them can be calculated on componentMount.177 var nextProps = _extends({}, instance.props);178 for (var key in child.props) {179 if (child.props[key]) {180 nextProps[key] = child.props[key];181 }182 }183 if (isReactClass(instance) && instance.componentWillUpdate) {184 // Force-refresh component (bypass redux renderedComponent)185 instance.componentWillUpdate(nextProps, instance.state);186 }187 instance.props = nextProps;188 hotReplacementRender(instance, stackChild);189 };190 // text node191 if ((typeof child === 'undefined' ? 'undefined' : _typeof(child)) !== 'object' || !stackChild || !stackChild.instance) {192 return;193 }194 if (typeof child.type !== 'function') {195 next(196 // move types from render to the instances of hydrated tree197 mergeInject(filterNullArray(asArray(child.props ? child.props.children : child.children)), stackChild.instance.children, stackChild.instance));198 } else {199 // unwrap proxy200 var childType = getElementType(child);201 if (!stackChild.type[_reactStandIn.PROXY_KEY]) {202 /* eslint-disable no-console */203 _logger2.default.error('React-hot-loader: fatal error caused by ', stackChild.type, ' - no instrumentation found. ', 'Please require react-hot-loader before React. More in troubleshooting.');204 throw new Error('React-hot-loader: wrong configuration');205 }206 if (child.type === stackChild.type) {207 next(stackChild.instance);208 } else if (isSwappable(childType, stackChild.type)) {209 // they are both registered, or have equal code/displayname/signature210 // update proxy using internal PROXY_KEY211 (0, _proxies.updateProxyById)(stackChild.type[_reactStandIn.PROXY_KEY], childType);...
reactiveInject.js
Source:reactiveInject.js
...8 beforeCreate() {9 if (this.$options.reactiveInject) {10 this._reactiveInjectResult = {};11 Object.entries(this.$options.reactiveInject).forEach(([injectName, computedNames]) => {12 this.$options.inject = mergeInject(13 this.$options.inject,14 {15 [injectName]: {16 from: injectName,17 },18 },19 );20 // plucked from Vue source code's (private) resolveInject() method21 // https://github.com/vuejs/vue/blob/e3d81c6f9add81188c47a7f35015ec6836c18f3e/src/core/instance/inject.js#L53-L5922 let source = this;23 while (source) {24 if (source._provided && hasOwnProperty.call(source._provided, injectName)) {25 this._reactiveInjectResult[injectName] = source._provided[injectName];26 break;...
GlobalMixin.js
Source:GlobalMixin.js
...31 provide,32 this,33 'provide'34 )35 this.$options.inject = mergeInject(36 this.$options.inject,37 inject,38 this,39 'inject'40 )41 //applying the watch42 this.$once('hook:created', () => {43 const unwatch = this.$watch(44 () => this[options.name],45 watch[options.name].handler,46 {47 immediate: true,48 }49 )...
Using AI Code Generation
1const { chromium } = require('playwright');2(async () => {3 const browser = await chromium.launch({ headless: false });4 const context = await browser.newContext();5 await page.mergeInject('./injected.js');6 await page.click('text=Search');7 await page.waitForTimeout(3000);8 await browser.close();9})();10console.log('injected script');11const { chromium } = require('playwright');12(async () => {13 const browser = await chromium.launch({ headless: false });14 const context = await browser.newContext();15 await page.mergeInject('./injected.js', {16 });17 await page.click('text=Search');18 await page.waitForTimeout(3000);19 await browser.close();20})();21console.log('injected script');22const { chromium } = require('playwright');23(async () => {24 const browser = await chromium.launch({ headless: false });25 const context = await browser.newContext();26 await page.mergeInject('./injected.js', {27 });28 await page.click('text=Search');29 await page.waitForTimeout(3000);30 await browser.close();31})();32console.log('injected script');33const { chromium } = require('playwright');34(async () => {35 const browser = await chromium.launch({ headless
Using AI Code Generation
1const { mergeInject } = require('playwright/lib/server/browserContext');2const { chromium } = require('playwright');3(async () => {4 const browser = await chromium.launch();5 const context = await browser.newContext();6 const page = await context.newPage();7 await mergeInject(page, 'console.log("Hello world")');8 await browser.close();9})();10### mergeInject(page, script[, arg])11await mergeInject(page, 'document.body.style.backgroundColor = "red"');12await mergeInject(page, () => document.body.style.backgroundColor = "red");13await mergeInject(page, (arg) => document.body.style.backgroundColor = arg, 'red');14await mergeInject(page, async () => {15 await new Promise((x) => setTimeout(x, 1000));16 document.body.style.backgroundColor = 'red';17});18const result = await mergeInject(page, () => Promise.resolve(8 * 7));19const result = await mergeInject(page, () => {20 throw new Error('qwerty');21}).catch((error) => error);22const width = await mergeInject(page, () => {23 return document.documentElement.clientWidth;24});25[MIT](LICENSE)
Using AI Code Generation
1const { mergeInject } = require("@playwright/test/lib/utils/inject");2const { chromium } = require("playwright");3(async () => {4 const browser = await chromium.launch();5 const context = await browser.newContext();6 const page = await context.newPage();7 await page.waitForLoadState("domcontentloaded");8 await page.addScriptTag({9 });10 await page.evaluate(mergeInject);11 await page.addScriptTag({12 mergeInject(function () {13 console.log("I am injected");14 });15 });16 await browser.close();17})();18const { mergeInject } = require("@playwright/test/lib/utils/inject");19const { chromium } = require("playwright");20(async () => {21 const browser = await chromium.launch();22 const context = await browser.newContext();23 const page = await context.newPage();24 await page.waitForLoadState("domcontentloaded");25 await page.addScriptTag({26 });27 await page.evaluate(mergeInject);28 await page.addScriptTag({29 mergeInject(function () {30 console.log("I am injected");31 });32 });33 await browser.close();34})();
Using AI Code Generation
1const { mergeInject } = require('@playwright/test/lib/server/injectedScript');2const { inject } = require('@playwright/test/lib/server/injectedScript');3const fs = require('fs');4const path = require('path');5const { promisify } = require('util');6const readFileAsync = promisify(fs.readFile);7const writeFileAsync = promisify(fs.writeFile);8const { merge } = require('lodash');9async function main() {10 const injectedScript = await readFileAsync(path.join(__dirname, 'injectedScript.js'), 'utf8');11 const injectedScriptSource = await readFileAsync(path.join(__dirname, 'injectedScriptSource.js'), 'utf8');12 const injectedScriptSource2 = await readFileAsync(path.join(__dirname, 'injectedScriptSource2.js'), 'utf8');13 const injectedScriptSource3 = await readFileAsync(path.join(__dirname, 'injectedScriptSource3.js'), 'utf8');14 const injectedScriptSource4 = await readFileAsync(path.join(__dirname, 'injectedScriptSource4.js'), 'utf8');15 const injectedScriptSource5 = await readFileAsync(path.join(__dirname, 'injectedScriptSource5.js'), 'utf8');16 const injectedScriptSource6 = await readFileAsync(path.join(__dirname, 'injectedScriptSource6.js'), 'utf8');17 const injectedScriptSource7 = await readFileAsync(path.join(__dirname, 'injectedScriptSource7.js'), 'utf8');18 const injectedScriptSource8 = await readFileAsync(path.join(__dirname, 'injectedScriptSource8.js'), 'utf8');19 const injectedScriptSource9 = await readFileAsync(path.join(__dirname, 'injectedScriptSource9.js'), 'utf8');20 const injectedScriptSource10 = await readFileAsync(path.join(__dirname, 'injectedScriptSource10.js'), 'utf8');21 const injectedScriptSource11 = await readFileAsync(path.join(__dirname, 'injectedScriptSource11.js'), 'utf8');22 const injectedScriptSource12 = await readFileAsync(path.join(__dirname, 'injectedScriptSource12.js'), 'utf8');23 const injectedScriptSource13 = await readFileAsync(path.join(__dirname, 'injectedScriptSource13.js'), 'utf8');24 const injectedScriptSource14 = await readFileAsync(path.join(__dirname, 'injectedScriptSource14.js'), 'utf8');
Using AI Code Generation
1const { mergeInject } = require('playwright/lib/server/injected/injectedScript');2const { inject } = require('playwright/lib/server/injected/injectedScriptSource');3const { context } = require('playwright/lib/server/injected/injectedScriptSource');4const { page } = require('playwright/lib/server/injected/injectedScriptSource');5const { frame } = require('playwright/lib/server/injected/injectedScriptSource');6const { worker } = require('playwright/lib/server/injected/injectedScriptSource');7mergeInject(inject);8mergeInject(context);9mergeInject(page);10mergeInject(frame);11mergeInject(worker);12const { mergeInject } = require('playwright/lib/server/injected/injectedScript');13const { inject } = require('playwright/lib/server/injected/injectedScriptSource');14const { context } = require('playwright/lib/server/injected/injectedScriptSource');15const { page } = require('playwright/lib/server/injected/injectedScriptSource');16const { frame } = require('playwright/lib/server/injected/injectedScriptSource');17const { worker } = require('playwright/lib/server/injected/injectedScriptSource');18mergeInject(inject);19mergeInject(context);20mergeInject(page);21mergeInject(frame);22mergeInject(worker);23const { mergeInject } = require('playwright/lib/server/injected/injectedScript');24const { inject } = require('playwright/lib/server/injected/injectedScriptSource');25const { context } = require('playwright/lib/server/injected/injectedScriptSource');26const { page } = require('playwright/lib/server/injected/injectedScriptSource');27const { frame } = require('playwright/lib/server/injected/injectedScriptSource');28const { worker } = require('playwright/lib/server/injected/injectedScriptSource');29mergeInject(inject);30mergeInject(context);31mergeInject(page);32mergeInject(frame);33mergeInject(worker);34const { mergeInject } = require('playwright/lib/server/injected/injectedScript');35const { inject } = require('playwright/lib/server/injected/injectedScriptSource');36const { context } = require('playwright/lib/server/injected/in
Using AI Code Generation
1const { mergeInject } = require('@playwright/test');2const { test } = require('@playwright/test');3test('test', async ({ page }) => {4 await mergeInject(page, {5 script: 'window.__injected = 42;',6 });7 expect(await page.evaluate(() => window.__injected)).toBe(42);8});9### `mergeInject(page, options)`
Using AI Code Generation
1const fs = require('fs');2const path = require('path');3const { mergeInject } = require('playwright-core/lib/server/injected/injectedScript');4const { browserName } = require('playwright-core/lib/server/browserType');5const { getTestState } = require('playwright-core/lib/server/test');6const { getTestType } = require('playwright-core/lib/server/testType');7const { getTestFixtures } = require('playwright-core/lib/server/testFixtures');8const { getTestInfo } = require('playwright-core/lib/server/testInfo');9const { getTestSnapshotManager } = require('playwright-core/lib/server/testSnapshotManager');10const { setTestType } = require('playwright-core/lib/server/testType');11const { setTestFixtures } = require('playwright-core/lib/server/testFixtures');12const { setTestInfo } = require('playwright-core/lib/server/testInfo');13const { setTestSnapshotManager } = require('playwright-core/lib/server/testSnapshotManager');14const { setTestState } = require('playwright-core/lib/server/testState');15const { setTestWorkerIndex } = require('playwright-core/lib/server/testWorkerIndex');16const { setTestTimeout } = require('playwright-core/lib/server/testTimeout');17const { setTestName } = require('playwright-core/lib/server/testName');18const { setTestSkip } = require('playwright-core/lib/server/testSkip');19const { setTestExpectedStatus } = require('playwright-core/lib/server/testExpectedStatus');20const { setTestModifier } = require('playwright-core/lib/server/testModifier');21const { setWorkerFixtureOverrides } = require('playwright-core/lib/server/workerFixtureOverrides');22const { setWorkerIndex } = require('playwright-core/lib/server/workerIndex');23const { setWorkerRequire } = require('playwright-core/lib/server/workerRequire');24const { setWorkerSnapshotManager } = require('playwright-core/lib/server/workerSnapshotManager');25const { setWorkerTestState } = require('playwright-core/lib/server/workerTestState');26const { setWorkerTestType } = require('playwright-core/lib/server/workerTestType');27const { setWorkerTestFixtures } = require('playwright-core/lib/server/workerTestFixtures');28const { setWorkerTestInfo } = require('playwright-core/lib/server/workerTestInfo');29const { setWorkerTestSnapshotManager
Using AI Code Generation
1const { mergeInject } = require('playwright/lib/server/injectedScript');2const { inject } = require('playwright/lib/server/injectedScript');3const { injectFile } = require('playwright/lib/server/injectedScript');4const { injectSource } = require('playwright/lib/server/injectedScript');5const { injectSource } = require('playwright/lib/server/injectedScript');6const { injectFile } = require('playwright/lib/server/injectedScript');7const { injectFile } = require('playwright/lib/server/injectedScript');8const { injectSource } = require('playwright/lib/server/injectedScript');9const { injectSource } = require('playwright/lib/server/injectedScript');10const { injectFile } = require('playwright/lib/server/injectedScript');11const { mergeInject } = require('playwright/lib/server/injectedScript');12const { inject } = require('playwright/lib/server/injectedScript');13const { injectFile } = require('playwright/lib/server/injectedScript');14const { injectSource } = require('playwright/lib/server/injectedScript');15const { injectFile } = require('playwright/lib/server/injectedScript');16const { injectSource } = require('playwright/lib/server/injectedScript');17const { injectSource } = require('playwright/lib/server/injectedScript');18const { injectFile } = require('playwright/lib/server/injectedScript');19const { mergeInject } = require('playwright/lib/server/injectedScript');20const { inject } = require('playwright/lib/server/injectedScript');21const { injectFile } = require('playwright/lib/server/injectedScript');22const { injectSource } = require('playwright/lib/server/injectedScript');23const { injectFile } = require('playwright/lib/server/injectedScript');24const { injectSource } = require('playwright/lib/server/injectedScript');25const { injectSource } = require('playwright/lib/server/injectedScript');26const { injectFile } = require('playwright/lib/server/injectedScript');27const { mergeInject } = require('playwright/lib/server/injectedScript');28const { inject } = require('playwright/lib/server/injectedScript');29const { injectFile } = require('playwright/lib/server/injected
Using AI Code Generation
1const { mergeInject } = require('@playwright/test/lib/test');2const { test } = require('@playwright/test');3test('test', async ({ page }) => {4 await mergeInject(page, 'test.js');5 await page.screenshot({ path: `example.png` });6});
Using AI Code Generation
1const { mergeInject } = require('@playwright/test/lib/server/injectedScript');2const fs = require('fs');3const path = require('path');4const { inject } = require('playwright');5const file = fs.readFileSync(path.resolve(__dirname, 'injectedScript.js'), 'utf-8');6mergeInject(file);7const { mergeInject } = require('@playwright/test/lib/server/injectedScript');8const fs = require('fs');9const path = require('path');10const { inject } = require('playwright');11const file = fs.readFileSync(path.resolve(__dirname, 'injectedScript.js'), 'utf-8');12mergeInject(file);13const { mergeInject } = require('@playwright/test/lib/server/injectedScript');14const fs = require('fs');15const path = require('path');16const { inject } = require('playwright');17const file = fs.readFileSync(path.resolve(__dirname, 'injectedScript.js'), 'utf-8');18mergeInject(file);19const { mergeInject } = require('@playwright/test/lib/server/injectedScript');20const fs = require('fs');21const path = require('path');22const { inject } = require('playwright');23const file = fs.readFileSync(path.resolve(__dirname, 'injectedScript.js'), 'utf-8');24mergeInject(file);25const { mergeInject } = require('@playwright/test/lib/server/injectedScript');26const fs = require('fs');27const path = require('path');28const { inject } = require('playwright');29const file = fs.readFileSync(path.resolve(__dirname, 'injectedScript.js'), 'utf-8');30mergeInject(file);31const { mergeInject } = require('@playwright/test/lib/server/injectedScript');32const fs = require('fs');33const path = require('path');34const { inject } = require('playwright');35const file = fs.readFileSync(path.resolve(__dirname, 'injectedScript.js'), 'utf-8');36mergeInject(file);
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!!