From 7a3009ed9b7f4350d050e0a57982333a4fdf0faf Mon Sep 17 00:00:00 2001 From: Alexey Yarmosh Date: Mon, 15 Apr 2024 14:50:08 +0200 Subject: [PATCH] feat: add lib folder for extensions --- Dockerfile | 14 +++++++++-- .../adopted-probe/src/validate-fields.ts | 2 +- .../hooks/adopted-probe/tsconfig.json | 6 ++--- .../location-overrides/src/normalize-city.ts | 15 ------------ .../location-overrides/src/validate-fields.ts | 2 +- .../hooks/location-overrides/tsconfig.json | 4 ++-- .../src => lib}/normalize-city.ts | 0 src/extensions/lib/package-lock.json | 24 +++++++++++++++++++ src/extensions/lib/package.json | 15 ++++++++++++ 9 files changed, 58 insertions(+), 24 deletions(-) delete mode 100644 src/extensions/hooks/location-overrides/src/normalize-city.ts rename src/extensions/{hooks/adopted-probe/src => lib}/normalize-city.ts (100%) create mode 100644 src/extensions/lib/package-lock.json create mode 100644 src/extensions/lib/package.json diff --git a/Dockerfile b/Dockerfile index 824cfed..2393f93 100644 --- a/Dockerfile +++ b/Dockerfile @@ -64,6 +64,11 @@ RUN npm run build # Build hooks/adopted-probe FROM node:18-alpine AS builder-09 +WORKDIR /builder/src/extensions/lib +COPY ./src/extensions/lib /builder/src/extensions/lib +ADD ./src/extensions/lib/package.json ./src/extensions/lib/package-lock.json ./ +RUN npm ci +COPY ./src/extensions/lib . WORKDIR /builder/src/extensions/hooks/adopted-probe ADD ./src/extensions/hooks/adopted-probe/package.json ./src/extensions/hooks/adopted-probe/package-lock.json ./ RUN npm ci @@ -134,7 +139,7 @@ RUN npm ci COPY ./src/extensions/hooks/gp-tokens . RUN npm run build -# Build hooks/gp-tokens +# Build hooks/directus-users FROM node:18-alpine AS builder-18 WORKDIR /builder/src/extensions/hooks/directus-users ADD ./src/extensions/hooks/directus-users/package.json ./src/extensions/hooks/directus-users/package-lock.json ./ @@ -142,8 +147,13 @@ RUN npm ci COPY ./src/extensions/hooks/directus-users . RUN npm run build -# Build hooks/gp-tokens +# Build hooks/location-verrides FROM node:18-alpine AS builder-19 +WORKDIR /builder/src/extensions/lib +COPY ./src/extensions/lib /builder/src/extensions/lib +ADD ./src/extensions/lib/package.json ./src/extensions/lib/package-lock.json ./ +RUN npm ci +COPY ./src/extensions/lib . WORKDIR /builder/src/extensions/hooks/location-overrides ADD ./src/extensions/hooks/location-overrides/package.json ./src/extensions/hooks/location-overrides/package-lock.json ./ RUN npm ci diff --git a/src/extensions/hooks/adopted-probe/src/validate-fields.ts b/src/extensions/hooks/adopted-probe/src/validate-fields.ts index 750a42c..5a9dd82 100644 --- a/src/extensions/hooks/adopted-probe/src/validate-fields.ts +++ b/src/extensions/hooks/adopted-probe/src/validate-fields.ts @@ -4,7 +4,7 @@ import axios from 'axios'; import { createError } from '@directus/errors'; import { Fields } from './index.js'; import { City, geonamesCache, getKey } from './geonames-cache.js'; -import { normalizeCityName } from './normalize-city.js'; +import { normalizeCityName } from '../../../lib/normalize-city.js'; import { EventContext } from '@directus/types'; import { getProbes, getUser } from './repositories/directus.js'; diff --git a/src/extensions/hooks/adopted-probe/tsconfig.json b/src/extensions/hooks/adopted-probe/tsconfig.json index 55da6cb..afda5b8 100644 --- a/src/extensions/hooks/adopted-probe/tsconfig.json +++ b/src/extensions/hooks/adopted-probe/tsconfig.json @@ -26,10 +26,10 @@ "skipLibCheck": true, "forceConsistentCasingInFileNames": true, "allowSyntheticDefaultImports": true, - "isolatedModules": true, - "rootDir": "./src" + "isolatedModules": true }, "include": [ - "./src/**/*.ts" + "./src/**/*.ts", + "../../lib/*.ts" ] } diff --git a/src/extensions/hooks/location-overrides/src/normalize-city.ts b/src/extensions/hooks/location-overrides/src/normalize-city.ts deleted file mode 100644 index 313bd87..0000000 --- a/src/extensions/hooks/location-overrides/src/normalize-city.ts +++ /dev/null @@ -1,15 +0,0 @@ -import anyAscii from 'any-ascii'; - -const cities: Record = { - 'Geneve': 'Geneva', - 'Frankfurt am Main': 'Frankfurt', - 'New York City': 'New York', - 'Santiago de Queretaro': 'Queretaro', - 'Nurnberg': 'Nuremberg', -}; - -export const normalizeCityName = (name: string): string => { - // We don't add city to the regex as there are valid names like 'Mexico City' or 'Kansas City' - const asciiName = anyAscii(name).replace(/(?:\s+|^)the(?:\s+|$)/gi, ''); - return cities[asciiName] ?? asciiName; -}; diff --git a/src/extensions/hooks/location-overrides/src/validate-fields.ts b/src/extensions/hooks/location-overrides/src/validate-fields.ts index c71e0e3..e861a7b 100644 --- a/src/extensions/hooks/location-overrides/src/validate-fields.ts +++ b/src/extensions/hooks/location-overrides/src/validate-fields.ts @@ -3,7 +3,7 @@ import { createError } from '@directus/errors'; import axios from 'axios'; import ipaddr from 'ipaddr.js'; import type { Fields } from './index.js'; -import { normalizeCityName } from './normalize-city.js'; +import { normalizeCityName } from '../../../lib/normalize-city.js'; type City = { lng: string; diff --git a/src/extensions/hooks/location-overrides/tsconfig.json b/src/extensions/hooks/location-overrides/tsconfig.json index ed8b93e..7e381ac 100644 --- a/src/extensions/hooks/location-overrides/tsconfig.json +++ b/src/extensions/hooks/location-overrides/tsconfig.json @@ -25,10 +25,10 @@ "forceConsistentCasingInFileNames": true, "allowSyntheticDefaultImports": true, "isolatedModules": true, - "rootDir": "./src", "module": "ESNext" }, "include": [ - "./src/**/*.ts" + "./src/**/*.ts", + "../../lib/*.ts" ] } diff --git a/src/extensions/hooks/adopted-probe/src/normalize-city.ts b/src/extensions/lib/normalize-city.ts similarity index 100% rename from src/extensions/hooks/adopted-probe/src/normalize-city.ts rename to src/extensions/lib/normalize-city.ts diff --git a/src/extensions/lib/package-lock.json b/src/extensions/lib/package-lock.json new file mode 100644 index 0000000..1e55dd6 --- /dev/null +++ b/src/extensions/lib/package-lock.json @@ -0,0 +1,24 @@ +{ + "name": "lib", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "lib", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "any-ascii": "^0.3.2" + } + }, + "node_modules/any-ascii": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/any-ascii/-/any-ascii-0.3.2.tgz", + "integrity": "sha512-ABw9wA6PpMfmBbn5eeoOHJV86uqOcjEiuik6zV3dHCBfXu8kKWaCnKnrgzu9hLiFhvZYhdrRdVSo2RjjVhSycw==", + "engines": { + "node": ">=12.20" + } + } + } +} diff --git a/src/extensions/lib/package.json b/src/extensions/lib/package.json new file mode 100644 index 0000000..f9197d6 --- /dev/null +++ b/src/extensions/lib/package.json @@ -0,0 +1,15 @@ +{ + "name": "lib", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [], + "author": "", + "license": "ISC", + "dependencies": { + "any-ascii": "^0.3.2" + } +}