58ca4e68db
- Go backend API with full CRUD for all modules (CRM, Sales, Finance, HR, Legal, Marketing, Support, Purchase, Inventory, Projects, Automation, Analytics) - Rust analytics service with parallel report generation - C runtime with POSIX shared memory IPC - PostgreSQL schema with 30+ tables, full migrations - Redis cache, sessions, pub/sub - Kafka event streaming with Zookeeper - WebSocket hub for real-time updates - Automation engine with cron jobs, workflows, event triggers - JWT authentication, multi-tenant from start - Docker Compose with all services - Nginx reverse proxy with rate limiting - Integration tests passing - Feature gap analysis against Fortnox/Odoo/Visma Refs: BOC-001
37 lines
685 B
Markdown
37 lines
685 B
Markdown
# wrappy
|
|
|
|
Callback wrapping utility
|
|
|
|
## USAGE
|
|
|
|
```javascript
|
|
var wrappy = require("wrappy")
|
|
|
|
// var wrapper = wrappy(wrapperFunction)
|
|
|
|
// make sure a cb is called only once
|
|
// See also: http://npm.im/once for this specific use case
|
|
var once = wrappy(function (cb) {
|
|
var called = false
|
|
return function () {
|
|
if (called) return
|
|
called = true
|
|
return cb.apply(this, arguments)
|
|
}
|
|
})
|
|
|
|
function printBoo () {
|
|
console.log('boo')
|
|
}
|
|
// has some rando property
|
|
printBoo.iAmBooPrinter = true
|
|
|
|
var onlyPrintOnce = once(printBoo)
|
|
|
|
onlyPrintOnce() // prints 'boo'
|
|
onlyPrintOnce() // does nothing
|
|
|
|
// random property is retained!
|
|
assert.equal(onlyPrintOnce.iAmBooPrinter, true)
|
|
```
|