feat(boc): Complete Business Operations Center v1.0

- 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
This commit is contained in:
Bernt
2026-07-12 12:41:35 +00:00
parent 4789a7fb48
commit 58ca4e68db
26666 changed files with 575891 additions and 2074516 deletions
+34
View File
@@ -0,0 +1,34 @@
'use strict';
var test = require('tape');
var getDunderProto = require('../get');
test('getDunderProto', { skip: !getDunderProto }, function (t) {
if (!getDunderProto) {
throw 'should never happen; this is just for type narrowing'; // eslint-disable-line no-throw-literal
}
// @ts-expect-error
t['throws'](function () { getDunderProto(); }, TypeError, 'throws if no argument');
// @ts-expect-error
t['throws'](function () { getDunderProto(undefined); }, TypeError, 'throws with undefined');
// @ts-expect-error
t['throws'](function () { getDunderProto(null); }, TypeError, 'throws with null');
t.equal(getDunderProto({}), Object.prototype);
t.equal(getDunderProto([]), Array.prototype);
t.equal(getDunderProto(function () {}), Function.prototype);
t.equal(getDunderProto(/./g), RegExp.prototype);
t.equal(getDunderProto(42), Number.prototype);
t.equal(getDunderProto(true), Boolean.prototype);
t.equal(getDunderProto('foo'), String.prototype);
t.end();
});
test('no dunder proto', { skip: !!getDunderProto }, function (t) {
t.notOk('__proto__' in Object.prototype, 'no __proto__ in Object.prototype');
t.end();
});
+4
View File
@@ -0,0 +1,4 @@
'use strict';
require('./get');
require('./set');
+50
View File
@@ -0,0 +1,50 @@
'use strict';
var test = require('tape');
var setDunderProto = require('../set');
test('setDunderProto', { skip: !setDunderProto }, function (t) {
if (!setDunderProto) {
throw 'should never happen; this is just for type narrowing'; // eslint-disable-line no-throw-literal
}
// @ts-expect-error
t['throws'](function () { setDunderProto(); }, TypeError, 'throws if no arguments');
// @ts-expect-error
t['throws'](function () { setDunderProto(undefined); }, TypeError, 'throws with undefined and nothing');
// @ts-expect-error
t['throws'](function () { setDunderProto(undefined, undefined); }, TypeError, 'throws with undefined and undefined');
// @ts-expect-error
t['throws'](function () { setDunderProto(null); }, TypeError, 'throws with null and undefined');
// @ts-expect-error
t['throws'](function () { setDunderProto(null, undefined); }, TypeError, 'throws with null and undefined');
/** @type {{ inherited?: boolean }} */
var obj = {};
t.ok('toString' in obj, 'object initially has toString');
setDunderProto(obj, null);
t.notOk('toString' in obj, 'object no longer has toString');
t.notOk('inherited' in obj, 'object lacks inherited property');
setDunderProto(obj, { inherited: true });
t.equal(obj.inherited, true, 'object has inherited property');
t.end();
});
test('no dunder proto', { skip: !!setDunderProto }, function (t) {
if ('__proto__' in Object.prototype) {
t['throws'](
// @ts-expect-error
function () { ({}).__proto__ = null; }, // eslint-disable-line no-proto
Error,
'throws when setting Object.prototype.__proto__'
);
} else {
t.notOk('__proto__' in Object.prototype, 'no __proto__ in Object.prototype');
}
t.end();
});