@vladmandic/face-api
Version:
FaceAPI: AI-powered Face Detection & Rotation Tracking, Face Description & Recognition, Age & Gender & Emotion Prediction for Browser and NodeJS using TensorFlow/JS
43 lines (35 loc) • 1.5 kB
text/typescript
/* eslint-disable max-classes-per-file */
import { createFileSystem } from './createFileSystem';
import { Environment } from './types';
export function createNodejsEnv(): Environment {
const Canvas: (new () => HTMLCanvasElement) = (global as any)['Canvas'] || global.HTMLCanvasElement;
const Image = global.Image || global.HTMLImageElement;
const Video: (new () => HTMLVideoElement) = (global as any)['Video'] || global.HTMLVideoElement;
const createCanvasElement = () => {
if (Canvas) return new Canvas();
throw new Error('createCanvasElement - missing Canvas implementation for nodejs environment');
};
const createImageElement = () => {
if (Image) return new Image();
throw new Error('createImageElement - missing Image implementation for nodejs environment');
};
const createVideoElement = () => {
if (Video) return new Video();
throw new Error('createVideoElement - missing Video implementation for nodejs environment');
};
const fetch = global.fetch;
// if (!fetch) throw new Error('fetch - missing fetch implementation for nodejs environment');
const fileSystem = createFileSystem();
return {
Canvas: Canvas || class {},
CanvasRenderingContext2D: global.CanvasRenderingContext2D || class {},
Image: Image || class {},
ImageData: global.ImageData || class {},
Video: global.HTMLVideoElement || class {},
createCanvasElement,
createImageElement,
createVideoElement,
fetch,
...fileSystem,
};
}