dev-api: add developer portal, OpenAPI spec, and Flatenbadet case study

- New /developers/ page with API docs, SDKs, pricing, use cases
- OpenAPI 3.0 spec for Orders, Missions, Photos, Analytics
- Case study: Glasskiosken i Flatenbadet — complete ROI analysis
- Updated /order/ with recurring missions and frequency dropdown
This commit is contained in:
Bernt
2026-07-14 15:27:33 +00:00
parent 3c522e39f0
commit 1a12fb870b
6296 changed files with 911440 additions and 55607 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();
});