Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
331 changes: 327 additions & 4 deletions package-lock.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@
"@commitlint/cli": "^19.8.0",
"@faker-js/faker": "^9.6.0",
"@map-colonies/commitlint-config": "^2.0.0",
"@map-colonies/eslint-config": "^7.1.0",
"@map-colonies/eslint-config": "^8.0.0",
"@map-colonies/infra-copilot-instructions": "^1.0.0",
"@map-colonies/openapi-helpers": "^5.1.0",
"@map-colonies/prettier-config": "^1.0.0",
Expand Down
2 changes: 1 addition & 1 deletion src/capabilities/routes/capabilitiesRouter.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { Router } from 'express';
import { FactoryFunction } from 'tsyringe';
import type { FactoryFunction } from 'tsyringe';
import { CapabilitiesController } from '../controllers/capabilitiesController';

export const capabilitiesRouterFactory: FactoryFunction<Router> = (dependencyContainer) => {
Expand Down
5 changes: 3 additions & 2 deletions src/common/dependencyRegistration.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { ClassProvider, container as defaultContainer, FactoryProvider, InjectionToken, ValueProvider } from 'tsyringe';
import { constructor, DependencyContainer } from 'tsyringe/dist/typings/types';
import type { ClassProvider, FactoryProvider, InjectionToken, ValueProvider, DependencyContainer } from 'tsyringe';
import { container as defaultContainer } from 'tsyringe';
import type { constructor } from 'tsyringe/dist/typings/types';

export type Providers<T> = ValueProvider<T> | FactoryProvider<T> | ClassProvider<T> | constructor<T>;

Expand Down
10 changes: 5 additions & 5 deletions src/common/logger.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
import { AsyncLocalStorage } from 'node:async_hooks';
import { type IncomingMessage, ServerResponse } from 'node:http';
import type { IncomingMessage, ServerResponse } from 'node:http';
import { get } from 'lodash';
import * as api from '@opentelemetry/api';
import { Logger, LoggerOptions, jsLogger } from '@map-colonies/js-logger';
import { type Logger, type LoggerOptions, jsLogger } from '@map-colonies/js-logger';
import { getOtelMixin } from '@map-colonies/tracing-utils';
import { NextFunction, Request, Response } from 'express';
import type { NextFunction, Request, Response } from 'express';
import type { AttributeValue, Attributes } from '@opentelemetry/api';
import { DependencyContainer } from 'tsyringe';
import type { DependencyContainer } from 'tsyringe';
import { SERVICES } from './constants';
import { IConfig } from './interfaces';
import type { IConfig } from './interfaces';

const logContext = new AsyncLocalStorage<Attributes>();

Expand Down
4 changes: 2 additions & 2 deletions src/common/utils.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import fs, { promises as fsPromise } from 'node:fs';
import { promises as fsPromise, type Dirent } from 'node:fs';

const LAST_INDEX = -1;

export async function* filesTreeGenerator(directory: string, filenameFilter?: (filename: string) => boolean): AsyncGenerator<fs.Dirent> {
export async function* filesTreeGenerator(directory: string, filenameFilter?: (filename: string) => boolean): AsyncGenerator<Dirent> {
for await (const dirent of await fsPromise.opendir(directory, { recursive: true })) {
if (dirent.isFile() && (!filenameFilter || filenameFilter(dirent.name))) {
yield dirent;
Expand Down
2 changes: 1 addition & 1 deletion src/configs/routes/configRouter.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { Router } from 'express';
import { FactoryFunction } from 'tsyringe';
import type { FactoryFunction } from 'tsyringe';
import { logEnrichmentParamMiddlewareFactory } from '@common/logger';
import { ConfigController } from '../controllers/configController';

Expand Down
8 changes: 4 additions & 4 deletions src/containerConfig.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import config, { IConfig } from 'config';
import config, { type IConfig } from 'config';
import { metrics as OtelMetrics } from '@opentelemetry/api';
import { DependencyContainer } from 'tsyringe/dist/typings/types';
import type { DependencyContainer } from 'tsyringe/dist/typings/types';
import { instancePerContainerCachingFactory } from 'tsyringe';
import type { Pool } from 'pg';
import { initConnection, createDrizzle, createConnectionOptions, DbConfig, Drizzle } from '@db';
import { InjectionObject, registerDependencies } from '@common/dependencyRegistration';
import { initConnection, createDrizzle, createConnectionOptions, type DbConfig, type Drizzle } from '@db';
import { type InjectionObject, registerDependencies } from '@common/dependencyRegistration';
import { SERVICES, SERVICE_NAME } from '@common/constants';
import { tracing } from '@common/tracing';
import { SCHEMA_ROUTER_SYMBOL, schemaRouterFactory } from './schemas/routes/schemaRouter';
Expand Down
4 changes: 2 additions & 2 deletions src/db/utils.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { HealthCheck } from '@godaddy/terminus';
import type { HealthCheck } from '@godaddy/terminus';
import { sql } from 'drizzle-orm';
import { promiseTimeout } from '@src/common/utils/promiseTimeout';
import { Drizzle } from './createConnection';
import type { Drizzle } from './createConnection';

export const healthCheck = (drizzle: Drizzle, timeoutMs: number): HealthCheck => {
return async (): Promise<void> => {
Expand Down
4 changes: 2 additions & 2 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
import 'reflect-metadata';
import { performance } from 'node:perf_hooks';
import { createServer } from 'node:http';
import { createTerminus, HealthCheck } from '@godaddy/terminus';
import { Logger } from '@map-colonies/js-logger';
import { createTerminus, type HealthCheck } from '@godaddy/terminus';
import type { Logger } from '@map-colonies/js-logger';
import { container } from 'tsyringe';
import config from 'config';
import { DEFAULT_SERVER_PORT, MILLISECONDS_IN_SECOND, SERVICES } from '@common/constants';
Expand Down
2 changes: 1 addition & 1 deletion src/locks/routes/lockRouter.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { Router } from 'express';
import { FactoryFunction } from 'tsyringe';
import type { FactoryFunction } from 'tsyringe';
import { logEnrichmentParamMiddlewareFactory } from '@common/logger';
import { LockController } from '../controllers/lockController';

Expand Down
6 changes: 2 additions & 4 deletions src/schemas/models/schemaManager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -160,10 +160,8 @@ export class SchemaManager {

const objRecord = obj as Record<string, unknown>;

if (objRecord.$ref !== undefined && typeof objRecord.$ref === 'string') {
if (objRecord.$ref.startsWith('https://')) {
external.add(objRecord.$ref);
}
if (objRecord.$ref !== undefined && typeof objRecord.$ref === 'string' && objRecord.$ref.startsWith('https://')) {
external.add(objRecord.$ref);
}

// Recursively traverse all properties
Expand Down
2 changes: 1 addition & 1 deletion src/schemas/routes/schemaRouter.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { Router } from 'express';
import { FactoryFunction } from 'tsyringe';
import type { FactoryFunction } from 'tsyringe';
import { SchemaController } from '../controllers/schemaController';

export const schemaRouterFactory: FactoryFunction<Router> = (dependencyContainer) => {
Expand Down
6 changes: 3 additions & 3 deletions tests/integration/capabilities/capabilities.spec.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { describe, beforeEach, afterEach, it, expect } from 'vitest';
import { jsLogger } from '@map-colonies/js-logger';
import httpStatusCodes from 'http-status-codes';
import { DependencyContainer } from 'tsyringe';
import { createRequestSender, RequestSender } from '@map-colonies/openapi-helpers/requestSender';
import { paths, operations } from '@openapi';
import type { DependencyContainer } from 'tsyringe';
import { createRequestSender, type RequestSender } from '@map-colonies/openapi-helpers/requestSender';
import type { paths, operations } from '@openapi';
import { getApp } from '@src/app';
import { SERVICES } from '@common/constants';

Expand Down
19 changes: 12 additions & 7 deletions tests/integration/configs/configs.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,20 +5,25 @@ import 'jest-sorted';

import fs from 'node:fs';
import { describe, beforeAll, afterAll, it, expect, vi } from 'vitest';
import { Logger, jsLogger } from '@map-colonies/js-logger';
import { type Logger, jsLogger } from '@map-colonies/js-logger';
import httpStatusCodes from 'http-status-codes';
import { DependencyContainer } from 'tsyringe';
import type { DependencyContainer } from 'tsyringe';
import { faker } from '@faker-js/faker';
import { JSONSchema } from '@apidevtools/json-schema-ref-parser';
import { createRequestSender, RequestSender, expectResponseStatusFactory, ExpectResponseStatus } from '@map-colonies/openapi-helpers/requestSender';
import { paths, operations } from '@openapi';
import type { JSONSchema } from '@apidevtools/json-schema-ref-parser';
import {
createRequestSender,
type RequestSender,
expectResponseStatusFactory,
type ExpectResponseStatus,
} from '@map-colonies/openapi-helpers/requestSender';
import type { paths, operations } from '@openapi';
import { ConfigRepository } from '@src/configs/repositories/configRepository';
import { SchemaManager } from '@src/schemas/models/schemaManager';
import { Drizzle } from '@src/db/createConnection';
import type { Drizzle } from '@src/db/createConnection';
import { getApp } from '@src/app';
import { ConfigManager } from '@src/configs/models/configManager';
import { SERVICES } from '@common/constants';
import { Config, configs, configsRefs } from '@src/configs/models/config';
import { type Config, configs, configsRefs } from '@src/configs/models/config';
import * as utils from '@common/utils';
import { SchemaNotFoundError } from '@src/schemas/models/errors';
import {
Expand Down
2 changes: 1 addition & 1 deletion tests/integration/configs/defaultConfigs.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import 'jest-sorted';

import { describe, beforeAll, it, expect } from 'vitest';
import { jsLogger } from '@map-colonies/js-logger';
import { DependencyContainer } from 'tsyringe';
import type { DependencyContainer } from 'tsyringe';
import { getApp } from '@src/app';
import { ConfigManager } from '@src/configs/models/configManager';
import { SERVICES } from '@common/constants';
Expand Down
4 changes: 2 additions & 2 deletions tests/integration/configs/helpers/data.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { JSONSchema } from '@apidevtools/json-schema-ref-parser';
import { ConfigRef, NewConfig } from '@src/configs/models/config';
import type { JSONSchema } from '@apidevtools/json-schema-ref-parser';
import type { ConfigRef, NewConfig } from '@src/configs/models/config';

export const simpleSchema: JSONSchema = {
type: 'object',
Expand Down
2 changes: 1 addition & 1 deletion tests/integration/docs/docs.spec.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { describe, beforeEach, afterEach, it, expect } from 'vitest';
import { jsLogger } from '@map-colonies/js-logger';
import { DependencyContainer } from 'tsyringe';
import type { DependencyContainer } from 'tsyringe';
import httpStatusCodes from 'http-status-codes';
import { getApp } from '@src/app';
import { SERVICES } from '@common/constants';
Expand Down
13 changes: 9 additions & 4 deletions tests/integration/locks/locks.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,15 @@ import { eq } from 'drizzle-orm';
import { describe, beforeAll, afterAll, beforeEach, afterEach, it, expect, vi } from 'vitest';
import { jsLogger } from '@map-colonies/js-logger';
import httpStatusCodes from 'http-status-codes';
import { DependencyContainer } from 'tsyringe';
import { createRequestSender, RequestSender, expectResponseStatusFactory, ExpectResponseStatus } from '@map-colonies/openapi-helpers/requestSender';
import { paths, operations } from '@openapi';
import { Drizzle } from '@src/db/createConnection';
import type { DependencyContainer } from 'tsyringe';
import {
createRequestSender,
type RequestSender,
expectResponseStatusFactory,
type ExpectResponseStatus,
} from '@map-colonies/openapi-helpers/requestSender';
import type { paths, operations } from '@openapi';
import type { Drizzle } from '@src/db/createConnection';
import { getApp } from '@src/app';
import { SERVICES } from '@common/constants';
import { locks } from '@src/locks/models/lock';
Expand Down
13 changes: 9 additions & 4 deletions tests/integration/schemas/schemas.spec.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,17 @@
import { describe, beforeEach, afterEach, it, expect } from 'vitest';
import { createRequestSender, ExpectResponseStatus, expectResponseStatusFactory, RequestSender } from '@map-colonies/openapi-helpers/requestSender';
import {
createRequestSender,
type ExpectResponseStatus,
expectResponseStatusFactory,
type RequestSender,
} from '@map-colonies/openapi-helpers/requestSender';
import { jsLogger } from '@map-colonies/js-logger';
import httpStatusCodes from 'http-status-codes';
import { DependencyContainer } from 'tsyringe';
import { paths, operations } from '@openapi';
import type { DependencyContainer } from 'tsyringe';
import type { paths, operations } from '@openapi';
import { getApp } from '@src/app';
import { SERVICES } from '@common/constants';
import { SchemaReference } from '@src/schemas/models/types';
import type { SchemaReference } from '@src/schemas/models/types';

const expectResponseStatus: ExpectResponseStatus = expectResponseStatusFactory(expect);

Expand Down
12 changes: 6 additions & 6 deletions tests/unit/config/configManager.spec.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
import fs, { Dirent } from 'node:fs';
import { describe, beforeEach, it, expect, vi, afterEach } from 'vitest';
import { Logger, jsLogger } from '@map-colonies/js-logger';
import { type Logger, jsLogger } from '@map-colonies/js-logger';
import { ConfigManager } from '@src/configs/models/configManager';
import { ConfigRefResponse, ConfigRepository } from '@src/configs/repositories/configRepository';
import { Validator } from '@src/configs/models/configValidator';
import type { ConfigRefResponse, ConfigRepository } from '@src/configs/repositories/configRepository';
import type { Validator } from '@src/configs/models/configValidator';
import { ConfigNotFoundError, ConfigVersionMismatchError, ConfigValidationError, ConfigSchemaMismatchError } from '@src/configs/models/errors';
import * as utils from '@src/common/utils';
import { ConfigReference } from '@src/configs/models/configReference';
import { HashPropagationHelper } from '@src/configs/models/hashPropagationHelpers';
import { SchemaManager } from '@src/schemas/models/schemaManager';
import type { ConfigReference } from '@src/configs/models/configReference';
import type { HashPropagationHelper } from '@src/configs/models/hashPropagationHelpers';
import type { SchemaManager } from '@src/schemas/models/schemaManager';

vi.mock('../../../src/common/utils', async () => {
return {
Expand Down
4 changes: 2 additions & 2 deletions tests/unit/config/configValidator.spec.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { describe, beforeEach, it, expect, vi, Mock } from 'vitest';
import { describe, beforeEach, it, expect, vi, type Mock } from 'vitest';

import betterAjvErrors from '@sidvind/better-ajv-errors';
import { jsLogger } from '@map-colonies/js-logger';
import { Validator } from '@src/configs/models/configValidator';
import { SchemaManager } from '@src/schemas/models/schemaManager';
import type { SchemaManager } from '@src/schemas/models/schemaManager';

vi.mock('@sidvind/better-ajv-errors');

Expand Down
Loading