![Create React App Officially Deprecated Amid React 19 Compatibility Issues](https://cdn.sanity.io/images/cgdhsj6q/production/04fa08cf844d798abc0e1a6391c129363cc7e2ab-1024x1024.webp?w=400&fit=max&auto=format)
Security News
Create React App Officially Deprecated Amid React 19 Compatibility Issues
Create React App is officially deprecated due to React 19 issues and lack of maintenance—developers should switch to Vite or other modern alternatives.
map-reduce
Advanced tools
Incremental map-reduces and real-time results.
An "incremental map reduce" means when you update one key, only a relevant protion of the data needs to be recalculated.
"real-time results" means that you can listen to the database, and recieve change notifications on the fly! a la level-live-stream
If you just want something very simple, like mapping the date a blog post is created to the blog, then level-index may be enough.
var LevelUp = require('levelup')
var SubLevel = require('level-sublevel')
var MapReduce = require('map-reduce')
var db = SubLevel(LevelUp(file))
var mapDb =
MapReduce(
db, //the parent db
'example', //name.
function (key, value, emit) {
//perform some mapping.
var obj = JSON.parse(value)
//emit(key, value)
//key may be an array of strings.
//value must be a string or buffer.
emit(['all', obj.group], ''+obj.lines.length)
},
function (acc, value, key) {
//reduce little into big
//must return a string or buffer.
return ''+(Number(acc) + Number(value))
},
//pass in the initial value for the reduce.
//*must* be a string or buffer.
'0'
})
})
map-reduce
uses level-trigger to make map reduces durable.
//get all the results in a specific group
//start:[...] implies end:.. to be the end of that group.
mapDb.createReadStream({range: ['all', group]})
//get all the results in under a group.
mapDb.createReadStream({range: ['all', true]})
//get all the top level
mapDb.createReadStream({range: [true]})
map-reduce with multiple levels of aggregation.
suppose we are building a database of all the street-food in the world. the data looks like this:
{
country: USA | Germany | Cambodia, etc...
state: CA | NY | '', etc...
city: Oakland | New York | Berlin | Phnom Penh, etc...
type: taco | chili-dog | doner | noodles, etc...
}
We will aggregate to counts per-region, that look like this:
//say: under the key USA
{
'taco': 23497,
'chili-dog': 5643,
etc...
}
first we'll map the raw data to ([country, state, city],type)
tuples.
then we'll count up all the instances of a particular type in that region!
var LevelUp = require('levelup')
var SubLevel = require('level-sublevel')
var MapReduce = require('map-reduce')
var db = SubLevel(LevelUp(file))
var mapDb =
MapReduce(
db,
'streetfood',
function (key, value, emit) {
//perform some mapping.
var obj = JSON.parse(value)
//emit(key, value)
//key may be an array of strings.
//value must be a string or buffer.
emit(
[obj.country, obj.state || '', obj.city],
//notice that we are just returning a string.
JSON.stringify(obj.type)
)
},
function (acc, value) {
acc = JSON.parse(acc)
value = JSON.parse(value)
//check if this is top level data, like 'taco' or 'noodle'
if('string' === typeof value) {
//increment by one (remember to set as a number if it was undefined)
acc[value] = (acc[value] || 0) ++
return JSON.stringify(acc)
}
//if we get to here, we are combining two aggregates.
//say, all the cities in a state, or all the countries in the world.
//value and acc will both be objects {taco: number, doner: number2, etc...}
for(var type in value) {
//add the counts for each type together...
//remembering to check that it is set as a value...
acc[type] = (acc[type] || 0) + value[type]
}
//stringify the object, so that it can be written to disk!
return JSON.stringify(acc)
},
'{}')
then query it like this:
mapDb.createReadStream({range: ['USA', 'CA', true]})
.pipe(...)
pass db.get
an array, and you can retrive a specific value, by group.
var userMapping = require("map-reduce")(
db,
"userPoints",
function(key, value, emit){
value = JSON.parse(value);
var date = new Date(value.created);
emit([value.user, date.getYear(), date.getMonth()], value.amount);
},
function(acc, value){
return (Number(acc) + Number(value)).toString();
},
0
);
function getTotalPointsForUser(user, year, month, cb){
userMapping.get([user, year, month], cb);
}
MIT
FAQs
map-reduce on leveldb
The npm package map-reduce receives a total of 0 weekly downloads. As such, map-reduce popularity was classified as not popular.
We found that map-reduce demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Create React App is officially deprecated due to React 19 issues and lack of maintenance—developers should switch to Vite or other modern alternatives.
Security News
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
Security News
The Linux Foundation is warning open source developers that compliance with global sanctions is mandatory, highlighting legal risks and restrictions on contributions.