Best JavaScript code snippet using fast-check-monorepo
OGCWebServiceHelper.js
Source:OGCWebServiceHelper.js
1import * as THREE from 'three';2import Fetcher from './Fetcher';3import CacheRessource from './CacheRessource';4import IoDriver_XBIL from './IoDriver_XBIL';5import Projection from '../../Geographic/Projection';6import Extent from '../../Geographic/Extent';7export const SIZE_TEXTURE_TILE = 256;8// CacheRessource is necessary for neighboring PM textures9// The PM textures overlap several tiles WGS84, it is to avoid net requests10// Info : THREE.js have cache image https://github.com/mrdoob/three.js/blob/master/src/loaders/ImageLoader.js#L2511const cache = CacheRessource();12const cachePending = new Map();13const ioDXBIL = new IoDriver_XBIL();14const projection = new Projection();15const getTextureFloat = function getTextureFloat(buffer) {16 const texture = new THREE.DataTexture(buffer, SIZE_TEXTURE_TILE, SIZE_TEXTURE_TILE, THREE.AlphaFormat, THREE.FloatType);17 texture.needsUpdate = true;18 return texture;19};20const tileCoord = new Extent('WMTS:WGS84G', 0, 0, 0);21export default {22 ioDXBIL,23 getColorTextureByUrl(url, networkOptions) {24 const cachedTexture = cache.getRessource(url);25 if (cachedTexture) {26 return Promise.resolve(cachedTexture);27 }28 const { texture, promise } = (cachePending.has(url)) ?29 cachePending.get(url) :30 Fetcher.texture(url, networkOptions);31 texture.generateMipmaps = false;32 texture.magFilter = THREE.LinearFilter;33 texture.minFilter = THREE.LinearFilter;34 texture.anisotropy = 16;35 cachePending.set(url, { texture, promise });36 return promise.then(() => {37 if (!cache.getRessource(url)) {38 cache.addRessource(url, texture);39 }40 cachePending.delete(url);41 return texture;42 });43 },44 getXBilTextureByUrl(url, networkOptions) {45 const textureCache = cache.getRessource(url);46 if (textureCache !== undefined) {47 return Promise.resolve(textureCache);48 }49 const pending = cachePending.get(url);50 if (pending) {51 return pending;52 }53 const promiseXBil = ioDXBIL.read(url, networkOptions).then((result) => {54 // TODO RGBA is needed for navigator with no support in texture float55 // In RGBA elevation texture LinearFilter give some errors with nodata value.56 // need to rewrite sample function in shader57 // loading concurrence58 const textureConcurrence = cache.getRessource(url);59 if (textureConcurrence) {60 cachePending.delete(url);61 return textureConcurrence;62 }63 const texture = getTextureFloat(result.floatArray);64 texture.generateMipmaps = false;65 texture.magFilter = THREE.LinearFilter;66 texture.minFilter = THREE.LinearFilter;67 texture.min = result.min;68 texture.max = result.max;69 cache.addRessource(url, texture);70 cachePending.delete(url);71 return texture;72 });73 cachePending.set(url, promiseXBil);74 return promiseXBil;75 },76 computeTileMatrixSetCoordinates(tile, tileMatrixSet) {77 // Are WMTS coordinates ready?78 if (!tile.wmtsCoords) {79 tile.wmtsCoords = {};80 }81 tileMatrixSet = tileMatrixSet || 'WGS84G';82 if (!(tileMatrixSet in tile.wmtsCoords)) {83 if (tile.wmtsCoords.WGS84G) {84 const c = tile.wmtsCoords.WGS84G[0];85 tileCoord._zoom = c.zoom;86 tileCoord._col = c.col;87 tileCoord._row = c.row;88 } else {89 projection.WGS84toWMTS(tile.extent, tileCoord);90 }91 tile.wmtsCoords[tileMatrixSet] =92 projection.getCoordWMTS_WGS84(tileCoord, tile.extent, tileMatrixSet);93 }94 },95 // The origin parameter is to be set to the correct value, bottom or top96 // (default being bottom) if the computation of the coordinates needs to be97 // inverted to match the same scheme as OSM, Google Maps or other system.98 // See link below for more information99 // https://alastaira.wordpress.com/2011/07/06/converting-tms-tile-coordinates-to-googlebingosm-tile-coordinates/100 computeTMSCoordinates(tile, extent, origin = 'bottom') {101 if (tile.extent.crs() != extent.crs()) {102 throw new Error('Unsupported configuration. TMS is only supported when geometry has the same crs than TMS layer');103 }104 const c = tile.extent.center();105 const layerDimension = extent.dimensions();106 // Each level has 2^n * 2^n tiles...107 // ... so we count how many tiles of the same width as tile we can fit in the layer108 const tileCount = Math.round(layerDimension.x / tile.extent.dimensions().x);109 // ... 2^zoom = tilecount => zoom = log2(tilecount)110 const zoom = Math.floor(Math.log2(tileCount));111 // Now that we have computed zoom, we can deduce x and y (or row / column)112 const x = (c.x() - extent.west()) / layerDimension.x;113 let y;114 if (origin == 'top') {115 y = (extent.north() - c.y()) / layerDimension.y;116 } else {117 y = (c.y() - extent.south()) / layerDimension.y;118 }119 return [new Extent('TMS', zoom, Math.floor(y * tileCount), Math.floor(x * tileCount))];120 },121 WMTS_WGS84Parent(cWMTS, levelParent, pitch, target = new Extent(cWMTS.crs(), 0, 0, 0)) {122 const diffLevel = cWMTS.zoom - levelParent;123 const diff = Math.pow(2, diffLevel);124 const invDiff = 1 / diff;125 const r = (cWMTS.row - (cWMTS.row % diff)) * invDiff;126 const c = (cWMTS.col - (cWMTS.col % diff)) * invDiff;127 if (pitch) {128 pitch.x = cWMTS.col * invDiff - c;129 pitch.y = cWMTS.row * invDiff - r;130 pitch.z = invDiff;131 }132 return target.set(levelParent, r, c);133 },...
api-cache.js
Source:api-cache.js
1import React, { createContext, useContext, useEffect, useState } from 'react';2import { mapValues } from 'lodash';3import { useAPI } from 'State/api';4import { captureException } from 'Utils/sentry';5import { getCollection, getProject, getTeam, getUser } from 'Shared/api-loaders';6const CacheContext = createContext();7export const APICacheProvider = ({ children, initial }) => {8 const api = useAPI();9 const [cache, setCache] = useState(() => {10 const formatted = mapValues(initial, (value) => ({ status: 'loading', value, timestamp: -Infinity }));11 return new Map(Object.entries(formatted));12 });13 const [cachePending, setCachePending] = useState(new Map());14 // on auth change mark everything as very old, that way component rerender will kick off new requests15 useEffect(() => {16 setCache((oldCache) => new Map([...oldCache].map(([key, data]) => [key, { ...data, timestamp: -Infinity }])));17 }, [api.persistentToken]);18 useEffect(() => {19 if (!cachePending.size) return;20 const timestamp = Date.now();21 // first write the loading states into the cache, preserving the old values22 setCache((oldCache) => {23 const newCache = Array.from(cachePending.keys()).map((key) => {24 const value = oldCache.has(key) ? oldCache.get(key).value : undefined;25 return [key, { status: 'loading', value, timestamp }];26 });27 return new Map([...oldCache, ...newCache]);28 });29 cachePending.forEach(async (get, key) => {30 // next actually try to load the value and determine the new response31 let result;32 try {33 const value = await get(api);34 result = { status: 'ready', value };35 } catch (error) {36 captureException(error);37 result = { status: 'error', error };38 }39 // finally put the new response in the cache if the timestamp is still up to date40 setCache((currentCache) => {41 const currentResult = currentCache.get(key);42 if (currentResult.timestamp > timestamp) {43 return currentCache;44 }45 return new Map([...currentCache, [key, { ...currentResult, ...result }]]);46 });47 });48 // then remove everything we just requested from the cache49 setCachePending((latestCachePending) => new Map([...latestCachePending].filter(([key]) => !cachePending.has(key))));50 }, [api, cachePending]);51 // the timestamp is a minimum recency for the requested data52 // several components mounting at once will naturally debounce via effects53 // if we have stale data on hand it'll show up until the fresh data loads in54 const getCached = (key, get, timestamp) => {55 const response = cache.has(key) ? cache.get(key) : { status: 'loading', timestamp: -Infinity };56 if (response.timestamp < timestamp && !cachePending.has(key)) {57 setCachePending((latestCachePending) => new Map([...latestCachePending, [key, get]]));58 }59 return response;60 };61 return <CacheContext.Provider value={getCached}>{children}</CacheContext.Provider>;62};63const useGetCached = (key, get) => {64 const getCached = useContext(CacheContext);65 const [timestamp] = useState(() => Date.now());66 return getCached(key, get, timestamp);67};68export const useCachedCollection = (fullUrl) => useGetCached(`collection:${fullUrl}`, (api) => getCollection(api, fullUrl, 'fullUrl'));69export const useCachedProject = (domain) => useGetCached(`project:${domain}`, (api) => getProject(api, domain, 'domain'));...
domain.ts
Source:domain.ts
1export class CacheBase {}2export class CacheIdle extends CacheBase {3 readonly status = "idle"4 static create = () => {5 return new CacheIdle()6 }7}8export class CachePending extends CacheBase {9 readonly status = "pending"10 static create = () => {11 return new CachePending()12 }13}14export class CacheRejected extends CacheBase {15 readonly status = "rejected"16 constructor(public readonly error: unknown) {17 super()18 }19 static create = (err: unknown) => {20 return new CacheRejected(err)21 }22}23export class CacheFulfilled<T> extends CacheBase {24 readonly status = "fulfilled"25 constructor(public readonly value: T) {26 super()27 }28 static create = <T>(value: T) => new CacheFulfilled<T>(value)29}30export type CacheState<T> = CacheIdle | CachePending | CacheRejected | CacheFulfilled<T>31export type KeyEventAdd<K> = {32 type: "add"33 key: K34}35export type KeyEventError<K> = {36 type: "error"37 key: K38 error: unknown39}40export type KeyEvent<K> = KeyEventAdd<K> | KeyEventError<K>41export function createAddKeyEvent<K>(key: K): KeyEventAdd<K> {42 return {43 type: "add",44 key,45 }46}47export function createErrorKeyEvent<K>(key: K, error: unknown): KeyEventError<K> {48 return {49 type: "error",50 key,51 error,52 }53}54export type DataLoader<K, V> = (key: K) => Promise<V>...
Using AI Code Generation
1const fc = require('fast-check');2const { cachePending } = require('fast-check/lib/check/arbitrary/definition/CacheArbitrary');3const fc = require('fast-check');4const { cachePending } = require('fast-check/lib/check/arbitrary/definition/CacheArbitrary');5const getArb = () => {6 const arb = fc.array(fc.integer());7 cachePending(arb);8 return arb;9};10fc.assert(11 fc.property(getArb(), (a) => {12 return a.length >= 0;13 })14);
Using AI Code Generation
1const fc = require("fast-check");2const { cachePending } = require("fast-check/lib/check/runner/Runner");3const arb = fc.integer();4const predicate = (i) => i % 2 === 0;5const seed = 42;6const run = async () => {7 const { pendingValues, pendingValuesIndex } = await cachePending(8 );9 console.log(pendingValues, pendingValuesIndex);10};11run();12const fc = require("fast-check");13const { cachePending } = require("fast-check/lib/check/runner/Runner");14const arb = fc.integer();15const predicate = (i) => i % 2 === 0;16const seed = 42;17const run = async () => {18 const { pendingValues, pendingValuesIndex } = await cachePending(19 );20 console.log(pendingValues, pendingValuesIndex);21};22run();23const fc = require("fast-check");24const { cachePending } = require("fast-check/lib/check/runner/Runner");25const arb = fc.integer();26const predicate = (i) => i % 2 === 0;27const seed = 42;28const run = async () => {29 const { pendingValues, pendingValuesIndex } = await cachePending(30 );31 console.log(pendingValues, pendingValuesIndex);32};33run();34const fc = require("fast-check");35const { cachePending } = require("fast-check/lib/check/runner/Runner");36const arb = fc.integer();37const predicate = (i) => i % 2 === 0;38const seed = 42;39const run = async () => {40 const { pendingValues, pendingValuesIndex } = await cachePending(
Using AI Code Generation
1const fastCheck = require('fast-check');2const { cachePending } = fastCheck;3const { cachePendingGlobal } = fastCheck;4const fc = fastCheck;5const { cachePendingGlobal: cachePendingGlobal2 } = fastCheck;6console.log(fc.cachePendingGlobal === cachePendingGlobal);7console.log(fc.cachePendingGlobal === cachePendingGlobal2);8console.log(cachePendingGlobal === cachePendingGlobal2);9console.log(fc.cachePending === cachePending);10console.log(fc.cachePending === cachePendingGlobal);11console.log(cachePending === cachePendingGlobal);12console.log(fc.cachePendingGlobal === cachePending);13console.log(fc.cachePendingGlobal === cachePendingGlobal);14console.log(cachePendingGlobal === cachePending);15console.log(cachePendingGlobal === cachePendingGlobal2);16console.log(cachePendingGlobal === cachePending);17console.log(cachePending === cachePendingGlobal2);18const fastCheck = require('fast-check');19const { cachePending } = fastCheck;20const { cachePendingGlobal } = fastCheck;21const fc = fastCheck;22const { cachePendingGlobal: cachePendingGlobal2 } = fastCheck;23console.log(fc.cachePendingGlobal === cachePendingGlobal);24console.log(fc.cachePendingGlobal === cachePendingGlobal2);25console.log(cachePendingGlobal === cachePendingGlobal2);26console.log(fc.cachePending === cachePending);27console.log(fc.cachePending === cachePendingGlobal);28console.log(cachePending === cachePendingGlobal);29console.log(fc.cachePendingGlobal === cachePending);30console.log(fc.cachePendingGlobal === cachePendingGlobal);31console.log(cachePendingGlobal === cachePending);32console.log(cachePendingGlobal === cachePendingGlobal2);33console.log(cachePendingGlobal === cachePending);34console.log(cachePending === cachePendingGlobal2);
Using AI Code Generation
1const runner = new Runner();2const model = new Model();3const property = new Property();4runner.cachePending(model, property);5const runner = new Runner();6const model = new Model();7const property = new Property();8runner.cachePending(model, property);9const runner = new Runner();10const model = new Model();11const property = new Property();12runner.cachePending(model, property);13const runner = new Runner();14const model = new Model();15const property = new Property();16runner.cachePending(model, property);17const runner = new Runner();18const model = new Model();19const property = new Property();20runner.cachePending(model, property);21const runner = new Runner();22const model = new Model();23const property = new Property();24runner.cachePending(model, property);25const runner = new Runner();26const model = new Model();27const property = new Property();28runner.cachePending(model, property);29const runner = new Runner();30const model = new Model();31const property = new Property();32runner.cachePending(model, property);33const runner = new Runner();34const model = new Model();35const property = new Property();36runner.cachePending(model, property);
Using AI Code Generation
1const fc = require("fast-check");2const { cachePending } = require("fast-check/lib/check/runner/Runner");3const arb = fc.integer();4const out = cachePending(arb, 10, 10);5console.log(out);6const fc = require("fast-check");7const { cachePending } = require("fast-check/lib/check/runner/Runner");8const arb = fc.integer();9const out = cachePending(arb, 10, 3);10console.log(out);11const fc = require("fast-check");12const { cachePending } = require("fast-check/lib/check/runner/Runner");13const arb = fc.integer();14const out = cachePending(arb, 10, 1);15console.log(out);16const fc = require("fast-check");17const { cachePending } = require("fast-check/lib/check/runner/Runner");18const arb = fc.integer();19const out = cachePending(arb, 10, 0);20console.log(out);
Using AI Code Generation
1const { cachePending } = require("fast-check");2const cache = cachePending();3console.log(`Is cache pending? ${cache}`);4const { cachePending } = require("fast-check");5const cache = cachePending();6console.log(`Is cache pending? ${cache}`);
Using AI Code Generation
1var fastCheck = require('fast-check-monorepo');2var pending = [];3var pending2 = [];4var pending3 = [];5var cache1 = fastCheck.cachePending(pending);6var cache2 = fastCheck.cachePending(pending2);7var cache3 = fastCheck.cachePending(pending3);8console.log("pending: " + pending);9console.log("pending2: " + pending2);10console.log("pending3: " + pending3);11cache1();12cache2();13cache3();14console.log("pending: " + pending);15console.log("pending2: " + pending2);16console.log("pending3: " + pending3);17cache1();18cache2();19cache3();20console.log("pending: " + pending);21console.log("pending2: " + pending2);22console.log("pending3: " + pending3);23console.log("pending length: " + pending.length);24console.log("pending2 length: " + pending2.length);25console.log("pending3 length: " + pending3.length);
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!