✨ MAJOR FEATURES: • Auto-zoom intelligence với smart bounds fitting • Enhanced 3D GPS markers với pulsing effects • Professional route display với 6-layer rendering • Status-based parking icons với availability indicators • Production-ready build optimizations 🗺️ AUTO-ZOOM FEATURES: • Smart bounds fitting cho GPS + selected parking • Adaptive padding (50px) cho visual balance • Max zoom control (level 16) để tránh quá gần • Dynamic centering khi không có selection 🎨 ENHANCED VISUALS: • 3D GPS marker với multi-layer pulse effects • Advanced parking icons với status colors • Selection highlighting với animation • Dimming system cho non-selected items 🛣️ ROUTE SYSTEM: • OpenRouteService API integration • Multi-layer route rendering (glow, shadow, main, animated) • Real-time distance & duration calculation • Visual route info trong popup 📱 PRODUCTION READY: • SSR safe với dynamic imports • Build errors resolved • Global deployment via Vercel • Optimized performance 🌍 DEPLOYMENT: • Vercel: https://whatever-ctk2auuxr-phong12hexdockworks-projects.vercel.app • Bundle size: 22.8 kB optimized • Global CDN distribution • HTTPS enabled 💾 VERSION CONTROL: • MapView-v2.0.tsx backup created • MAPVIEW_VERSIONS.md documentation • Full version history tracking
Description
streamsearch is a module for node.js that allows searching a stream using the Boyer-Moore-Horspool algorithm.
This module is based heavily on the Streaming Boyer-Moore-Horspool C++ implementation by Hongli Lai here.
Requirements
- node.js -- v10.0.0 or newer
Installation
npm install streamsearch
Example
const { inspect } = require('util');
const StreamSearch = require('streamsearch');
const needle = Buffer.from('\r\n');
const ss = new StreamSearch(needle, (isMatch, data, start, end) => {
if (data)
console.log('data: ' + inspect(data.toString('latin1', start, end)));
if (isMatch)
console.log('match!');
});
const chunks = [
'foo',
' bar',
'\r',
'\n',
'baz, hello\r',
'\n world.',
'\r\n Node.JS rules!!\r\n\r\n',
];
for (const chunk of chunks)
ss.push(Buffer.from(chunk));
// output:
//
// data: 'foo'
// data: ' bar'
// match!
// data: 'baz, hello'
// match!
// data: ' world.'
// match!
// data: ' Node.JS rules!!'
// match!
// data: ''
// match!
API
Properties
-
maxMatches - < integer > - The maximum number of matches. Defaults to
Infinity. -
matches - < integer > - The current match count.
Functions
-
(constructor)(< mixed >needle, < function >callback) - Creates and returns a new instance for searching for a Buffer or string
needle.callbackis called any time there is non-matching data and/or there is a needle match.callbackwill be called with the following arguments:-
isMatch- boolean - Indicates whether a match has been found -
data- mixed - If set, this contains data that did not match the needle. -
start- integer - The index indatawhere the non-matching data begins (inclusive). -
end- integer - The index indatawhere the non-matching data ends (exclusive). -
isSafeData- boolean - Indicates if it is safe to store a reference todata(e.g. as-is or viadata.slice()) or not, as in some casesdatamay point to a Buffer whose contents change over time.
-
-
destroy() - (void) - Emits any last remaining unmatched data that may still be buffered and then resets internal state.
-
push(< Buffer >chunk) - integer - Processes
chunk, searching for a match. The return value is the last processed index inchunk+ 1. -
reset() - (void) - Resets internal state. Useful for when you wish to start searching a new/different stream for example.