Object.hasOwn polyfill
parent
59672ce845
commit
a28d55cab8
|
|
@ -1,2 +1,3 @@
|
||||||
|
import './helpers/polyfills.js';
|
||||||
export declare const app: import("express-serve-static-core").Express;
|
export declare const app: import("express-serve-static-core").Express;
|
||||||
export default app;
|
export default app;
|
||||||
|
|
|
||||||
13
app.js
13
app.js
|
|
@ -1,3 +1,4 @@
|
||||||
|
import './helpers/polyfills.js';
|
||||||
import createError from 'http-errors';
|
import createError from 'http-errors';
|
||||||
import express from 'express';
|
import express from 'express';
|
||||||
import compression from 'compression';
|
import compression from 'compression';
|
||||||
|
|
@ -88,15 +89,15 @@ app.use(session({
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
app.use((request, response, next) => {
|
app.use((request, response, next) => {
|
||||||
if (Object.prototype.hasOwnProperty.call(request.cookies, sessionCookieName) &&
|
if (Object.hasOwn(request.cookies, sessionCookieName) &&
|
||||||
!Object.prototype.hasOwnProperty.call(request.session, 'user')) {
|
!Object.hasOwn(request.session, 'user')) {
|
||||||
response.clearCookie(sessionCookieName);
|
response.clearCookie(sessionCookieName);
|
||||||
}
|
}
|
||||||
next();
|
next();
|
||||||
});
|
});
|
||||||
const sessionChecker = (request, response, next) => {
|
const sessionChecker = (request, response, next) => {
|
||||||
if (Object.prototype.hasOwnProperty.call(request.session, 'user') &&
|
if (Object.hasOwn(request.session, 'user') &&
|
||||||
Object.prototype.hasOwnProperty.call(request.cookies, sessionCookieName)) {
|
Object.hasOwn(request.cookies, sessionCookieName)) {
|
||||||
next();
|
next();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -132,8 +133,8 @@ app.all(urlPrefix + '/keepAlive', (_request, response) => {
|
||||||
});
|
});
|
||||||
app.use(urlPrefix + '/login', routerLogin);
|
app.use(urlPrefix + '/login', routerLogin);
|
||||||
app.get(urlPrefix + '/logout', (request, response) => {
|
app.get(urlPrefix + '/logout', (request, response) => {
|
||||||
if (Object.prototype.hasOwnProperty.call(request.session, 'user') &&
|
if (Object.hasOwn(request.session, 'user') &&
|
||||||
Object.prototype.hasOwnProperty.call(request.cookies, sessionCookieName)) {
|
Object.hasOwn(request.cookies, sessionCookieName)) {
|
||||||
request.session.destroy(() => {
|
request.session.destroy(() => {
|
||||||
response.clearCookie(sessionCookieName);
|
response.clearCookie(sessionCookieName);
|
||||||
response.redirect(urlPrefix + '/');
|
response.redirect(urlPrefix + '/');
|
||||||
|
|
|
||||||
14
app.ts
14
app.ts
|
|
@ -1,3 +1,5 @@
|
||||||
|
import './helpers/polyfills.js'
|
||||||
|
|
||||||
import createError from 'http-errors'
|
import createError from 'http-errors'
|
||||||
import express, { type RequestHandler } from 'express'
|
import express, { type RequestHandler } from 'express'
|
||||||
|
|
||||||
|
|
@ -172,8 +174,8 @@ app.use(
|
||||||
// Clear cookie if no corresponding session
|
// Clear cookie if no corresponding session
|
||||||
app.use((request, response, next) => {
|
app.use((request, response, next) => {
|
||||||
if (
|
if (
|
||||||
Object.prototype.hasOwnProperty.call(request.cookies, sessionCookieName) &&
|
Object.hasOwn(request.cookies, sessionCookieName) &&
|
||||||
!Object.prototype.hasOwnProperty.call(request.session, 'user')
|
!Object.hasOwn(request.session, 'user')
|
||||||
) {
|
) {
|
||||||
response.clearCookie(sessionCookieName)
|
response.clearCookie(sessionCookieName)
|
||||||
}
|
}
|
||||||
|
|
@ -188,8 +190,8 @@ const sessionChecker = (
|
||||||
next: express.NextFunction
|
next: express.NextFunction
|
||||||
): void => {
|
): void => {
|
||||||
if (
|
if (
|
||||||
Object.prototype.hasOwnProperty.call(request.session, 'user') &&
|
Object.hasOwn(request.session, 'user') &&
|
||||||
Object.prototype.hasOwnProperty.call(request.cookies, sessionCookieName)
|
Object.hasOwn(request.cookies, sessionCookieName)
|
||||||
) {
|
) {
|
||||||
next()
|
next()
|
||||||
return
|
return
|
||||||
|
|
@ -257,8 +259,8 @@ app.use(urlPrefix + '/login', routerLogin)
|
||||||
|
|
||||||
app.get(urlPrefix + '/logout', (request, response) => {
|
app.get(urlPrefix + '/logout', (request, response) => {
|
||||||
if (
|
if (
|
||||||
Object.prototype.hasOwnProperty.call(request.session, 'user') &&
|
Object.hasOwn(request.session, 'user') &&
|
||||||
Object.prototype.hasOwnProperty.call(request.cookies, sessionCookieName)
|
Object.hasOwn(request.cookies, sessionCookieName)
|
||||||
) {
|
) {
|
||||||
request.session.destroy(() => {
|
request.session.destroy(() => {
|
||||||
response.clearCookie(sessionCookieName)
|
response.clearCookie(sessionCookieName)
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
import './polyfills.js';
|
||||||
import type * as recordTypes from '../types/recordTypes';
|
import type * as recordTypes from '../types/recordTypes';
|
||||||
export declare function regenerateApiKey(userName: string): Promise<void>;
|
export declare function regenerateApiKey(userName: string): Promise<void>;
|
||||||
export declare function getApiKey(userName: string): Promise<string>;
|
export declare function getApiKey(userName: string): Promise<string>;
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
import './polyfills.js';
|
||||||
import fs from 'node:fs/promises';
|
import fs from 'node:fs/promises';
|
||||||
import { v4 as uuidv4 } from 'uuid';
|
import { v4 as uuidv4 } from 'uuid';
|
||||||
import Debug from 'debug';
|
import Debug from 'debug';
|
||||||
|
|
@ -33,7 +34,7 @@ export async function getApiKey(userName) {
|
||||||
if (apiKeys === undefined) {
|
if (apiKeys === undefined) {
|
||||||
await loadApiKeys();
|
await loadApiKeys();
|
||||||
}
|
}
|
||||||
if (!Object.prototype.hasOwnProperty.call(apiKeys, userName)) {
|
if (!Object.hasOwn(apiKeys, userName)) {
|
||||||
await regenerateApiKey(userName);
|
await regenerateApiKey(userName);
|
||||||
}
|
}
|
||||||
return apiKeys[userName];
|
return apiKeys[userName];
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,5 @@
|
||||||
|
import './polyfills.js'
|
||||||
|
|
||||||
import fs from 'node:fs/promises'
|
import fs from 'node:fs/promises'
|
||||||
import { v4 as uuidv4 } from 'uuid'
|
import { v4 as uuidv4 } from 'uuid'
|
||||||
|
|
||||||
|
|
@ -42,7 +44,7 @@ export async function getApiKey(userName: string): Promise<string> {
|
||||||
await loadApiKeys()
|
await loadApiKeys()
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!Object.prototype.hasOwnProperty.call(apiKeys, userName)) {
|
if (!Object.hasOwn(apiKeys, userName)) {
|
||||||
await regenerateApiKey(userName)
|
await regenerateApiKey(userName)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
import './polyfills.js';
|
||||||
import type * as configTypes from '../types/configTypes';
|
import type * as configTypes from '../types/configTypes';
|
||||||
export declare function getProperty(propertyName: 'application.applicationName'): string;
|
export declare function getProperty(propertyName: 'application.applicationName'): string;
|
||||||
export declare function getProperty(propertyName: 'application.logoURL'): string;
|
export declare function getProperty(propertyName: 'application.logoURL'): string;
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
import './polyfills.js';
|
||||||
import { config } from '../data/config.js';
|
import { config } from '../data/config.js';
|
||||||
const configFallbackValues = new Map();
|
const configFallbackValues = new Map();
|
||||||
configFallbackValues.set('application.applicationName', 'Lot Occupancy System');
|
configFallbackValues.set('application.applicationName', 'Lot Occupancy System');
|
||||||
|
|
@ -52,7 +53,7 @@ export function getProperty(propertyName) {
|
||||||
const propertyNameSplit = propertyName.split('.');
|
const propertyNameSplit = propertyName.split('.');
|
||||||
let currentObject = config;
|
let currentObject = config;
|
||||||
for (const propertyNamePiece of propertyNameSplit) {
|
for (const propertyNamePiece of propertyNameSplit) {
|
||||||
if (Object.prototype.hasOwnProperty.call(currentObject, propertyNamePiece)) {
|
if (Object.hasOwn(currentObject, propertyNamePiece)) {
|
||||||
currentObject = currentObject[propertyNamePiece];
|
currentObject = currentObject[propertyNamePiece];
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,7 @@
|
||||||
/* eslint-disable @typescript-eslint/indent, node/no-unpublished-import */
|
/* eslint-disable @typescript-eslint/indent, node/no-unpublished-import */
|
||||||
|
|
||||||
|
import './polyfills.js'
|
||||||
|
|
||||||
import { config } from '../data/config.js'
|
import { config } from '../data/config.js'
|
||||||
|
|
||||||
import type * as configTypes from '../types/configTypes'
|
import type * as configTypes from '../types/configTypes'
|
||||||
|
|
@ -210,7 +212,7 @@ export function getProperty(propertyName: string): unknown {
|
||||||
let currentObject = config
|
let currentObject = config
|
||||||
|
|
||||||
for (const propertyNamePiece of propertyNameSplit) {
|
for (const propertyNamePiece of propertyNameSplit) {
|
||||||
if (Object.prototype.hasOwnProperty.call(currentObject, propertyNamePiece)) {
|
if (Object.hasOwn(currentObject, propertyNamePiece)) {
|
||||||
currentObject = currentObject[propertyNamePiece]
|
currentObject = currentObject[propertyNamePiece]
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
export {};
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
import Debug from 'debug';
|
||||||
|
const debug = Debug('lot-occupancy-system:polyfills');
|
||||||
|
if (Object.hasOwn === undefined) {
|
||||||
|
debug('Applying Object.hasOwn(o, v) polyfill');
|
||||||
|
Object.hasOwn = Object.prototype.hasOwnProperty.call;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
import Debug from 'debug'
|
||||||
|
const debug = Debug('lot-occupancy-system:polyfills')
|
||||||
|
|
||||||
|
if (Object.hasOwn === undefined) {
|
||||||
|
debug('Applying Object.hasOwn(o, v) polyfill')
|
||||||
|
Object.hasOwn = Object.prototype.hasOwnProperty.call
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue