diff --git a/packages/api/modules.d.ts b/packages/api/modules.d.ts new file mode 100644 index 0000000..448f7d1 --- /dev/null +++ b/packages/api/modules.d.ts @@ -0,0 +1,4 @@ +declare module '*.html' { + const content: string; + export default content; +} diff --git a/packages/api/package.json b/packages/api/package.json index a0fbf47..e9c5806 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -41,13 +41,10 @@ "reflect-metadata": "0.1.13", "rimraf": "3.0.2", "rxjs": "6.5.4", - "apollo-server-express": "2.14.2" - }, - "peerDependencies": { - "@gaui/covid19-core": "1.0.0" + "apollo-server-express": "2.14.2", + "cheerio": "1.0.0-rc.3" }, "devDependencies": { - "@gaui/covid19-core": "*", "@nestjs/cli": "7.1.1", "@nestjs/schematics": "7.0.0", "@nestjs/testing": "7.0.7", @@ -67,6 +64,7 @@ "ts-loader": "6.2.2", "ts-node": "8.8.1", "tsconfig-paths": "3.9.0", - "typescript": "3.9.3" + "typescript": "3.9.3", + "@types/cheerio": "0.22.18" } } diff --git a/packages/api/src/app.module.ts b/packages/api/src/app.module.ts index f19c9fe..4a8fd26 100644 --- a/packages/api/src/app.module.ts +++ b/packages/api/src/app.module.ts @@ -1,7 +1,7 @@ import { Module } from '@nestjs/common'; import { GraphQLModule } from '@nestjs/graphql'; import { join } from 'path'; -import { provider } from '../../core'; +import { getData as provider } from './providers'; import { CountryStatsResolver } from './resolvers/stats'; @Module({ diff --git a/packages/api/src/app.service.ts b/packages/api/src/app.service.ts index 5e4896a..0502e1d 100644 --- a/packages/api/src/app.service.ts +++ b/packages/api/src/app.service.ts @@ -1,5 +1,6 @@ import { Injectable, Inject } from '@nestjs/common'; -import { provider, Covid19ProviderCountryStats } from '../../core'; +import { Covid19ProviderCountryStats } from './schema'; +import { getData as provider } from './providers'; @Injectable() export class AppService { diff --git a/packages/api/src/models/CountryStats.ts b/packages/api/src/models/CountryStats.ts index f86ed54..b4733ba 100644 --- a/packages/api/src/models/CountryStats.ts +++ b/packages/api/src/models/CountryStats.ts @@ -1,5 +1,5 @@ import { Field, Int, ObjectType } from '@nestjs/graphql'; -import { Covid19ProviderCountryStats } from '../../../core'; +import { Covid19ProviderCountryStats } from '../schema'; @ObjectType({ description: 'Country statistics' }) export class CountryStats implements Covid19ProviderCountryStats { diff --git a/packages/api/src/providers/covid-ext/config.ts b/packages/api/src/providers/covid-ext/config.ts new file mode 100644 index 0000000..7242181 --- /dev/null +++ b/packages/api/src/providers/covid-ext/config.ts @@ -0,0 +1,7 @@ +import { Covid19ProviderConfig } from '../../schema'; + +const config: Covid19ProviderConfig = { + url: 'https://corona.lmao.ninja/v2/countries/iceland', +}; + +export default config; diff --git a/packages/core/src/providers/covid-ext/index.ts b/packages/api/src/providers/covid-ext/index.ts similarity index 73% rename from packages/core/src/providers/covid-ext/index.ts rename to packages/api/src/providers/covid-ext/index.ts index f2a2ae3..6598d90 100644 --- a/packages/core/src/providers/covid-ext/index.ts +++ b/packages/api/src/providers/covid-ext/index.ts @@ -1,9 +1,9 @@ import config from './config'; import * as R from 'ramda'; import { Covid19Stats } from './types'; -import { Covid19ProviderCountryStats } from '../../types/schemas'; +import { Covid19ProviderCountryStats } from '../../schema'; -const getRemoteData = () => fetch(config.url).then(r => r.json()); +const getRemoteData = () => fetch(config.url).then((r) => r.json()); const filter: (data: Covid19Stats) => Covid19ProviderCountryStats = ( data: Covid19Stats @@ -15,7 +15,7 @@ const filter: (data: Covid19Stats) => Covid19ProviderCountryStats = ( 'todayDeaths', 'recovered', 'active', - 'critical' + 'critical', ])(data); export const getData = async (): Promise => diff --git a/packages/core/src/providers/covid-ext/provider.spec.ts b/packages/api/src/providers/covid-ext/provider.spec.ts similarity index 89% rename from packages/core/src/providers/covid-ext/provider.spec.ts rename to packages/api/src/providers/covid-ext/provider.spec.ts index 80a7020..8bc3538 100644 --- a/packages/core/src/providers/covid-ext/provider.spec.ts +++ b/packages/api/src/providers/covid-ext/provider.spec.ts @@ -1,5 +1,5 @@ import fetchMock from 'fetch-mock'; -import { Covid19ProviderConfig } from '../../types/schemas'; +import { Covid19ProviderConfig } from '../../schema'; describe('Provider (ext)', () => { let config: Covid19ProviderConfig; @@ -27,7 +27,7 @@ describe('Provider (ext)', () => { flag: 'https://raw.githubusercontent.com/NovelCOVID/API/master/assets/flags/is.png', iso3: 'ISL', - iso2: 'IS' + iso2: 'IS', }, cases: 890, todayCases: 88, @@ -37,7 +37,7 @@ describe('Provider (ext)', () => { active: 791, critical: 18, casesPerOneMillion: 2608, - deathsPerOneMillion: 6 + deathsPerOneMillion: 6, }); // Act @@ -51,7 +51,7 @@ describe('Provider (ext)', () => { todayDeaths: 0, recovered: 97, active: 791, - critical: 18 + critical: 18, }); }); }); diff --git a/packages/core/src/providers/covid-ext/types.ts b/packages/api/src/providers/covid-ext/types.ts similarity index 100% rename from packages/core/src/providers/covid-ext/types.ts rename to packages/api/src/providers/covid-ext/types.ts diff --git a/packages/core/src/providers/covid-is/__mocks__/covid-is.data.html b/packages/api/src/providers/covid-is/__mocks__/covid-is.data.html similarity index 100% rename from packages/core/src/providers/covid-is/__mocks__/covid-is.data.html rename to packages/api/src/providers/covid-is/__mocks__/covid-is.data.html diff --git a/packages/core/src/providers/covid-is/config.ts b/packages/api/src/providers/covid-is/config.ts similarity index 68% rename from packages/core/src/providers/covid-is/config.ts rename to packages/api/src/providers/covid-is/config.ts index bcbf6ed..82e7851 100644 --- a/packages/core/src/providers/covid-is/config.ts +++ b/packages/api/src/providers/covid-is/config.ts @@ -1,7 +1,7 @@ -import { Covid19ProviderConfig } from '../../types/schemas'; +import { Covid19ProviderConfig } from '../../schema'; const config: Covid19ProviderConfig = { - url: 'https://infogram.com/covid-19-tolfraedi-1h1749mm0jyl6zj' + url: 'https://infogram.com/covid-19-tolfraedi-1h1749mm0jyl6zj', }; export default config; diff --git a/packages/core/src/providers/covid-is/index.ts b/packages/api/src/providers/covid-is/index.ts similarity index 68% rename from packages/core/src/providers/covid-is/index.ts rename to packages/api/src/providers/covid-is/index.ts index 271b803..3976d53 100644 --- a/packages/core/src/providers/covid-is/index.ts +++ b/packages/api/src/providers/covid-is/index.ts @@ -1,9 +1,9 @@ import 'isomorphic-unfetch'; import config from './config'; -import { Covid19ProviderCountryStats } from '../../types/schemas'; +import { Covid19ProviderCountryStats } from '../../schema'; import { parse, filter, labelMapper } from './utils'; -const getRemoteData = () => fetch(config.url).then(r => r.text()); +const getRemoteData = () => fetch(config.url).then((r) => r.text()); export const getData = async (): Promise => getRemoteData() diff --git a/packages/core/src/providers/covid-is/provider.spec.ts b/packages/api/src/providers/covid-is/provider.spec.ts similarity index 83% rename from packages/core/src/providers/covid-is/provider.spec.ts rename to packages/api/src/providers/covid-is/provider.spec.ts index 106de8b..38daee3 100644 --- a/packages/core/src/providers/covid-is/provider.spec.ts +++ b/packages/api/src/providers/covid-is/provider.spec.ts @@ -1,8 +1,8 @@ import fetchMock from 'fetch-mock'; import { Covid19ProviderConfig, - Covid19ProviderCountryStats -} from '../../types/schemas'; + Covid19ProviderCountryStats, +} from '../../schema'; describe('Provider (is)', () => { let config: Covid19ProviderConfig; @@ -12,7 +12,8 @@ describe('Provider (is)', () => { beforeAll(async () => { config = (await import('./config')).default; getData = (await import('.')).getData; - mockData = (await import('./__mocks__/covid-is.data.html')).default; + mockData = (await import('./__mocks__/covid-is.data.html')) + .default; }); beforeEach(() => { @@ -31,7 +32,7 @@ describe('Provider (is)', () => { quarantineIn: 5275, quarantinePost: 11679, recovered: 396, - samples: 23640 + samples: 23640, }); }); }); diff --git a/packages/core/src/providers/covid-is/types.ts b/packages/api/src/providers/covid-is/types.ts similarity index 100% rename from packages/core/src/providers/covid-is/types.ts rename to packages/api/src/providers/covid-is/types.ts diff --git a/packages/core/src/providers/covid-is/utils.ts b/packages/api/src/providers/covid-is/utils.ts similarity index 100% rename from packages/core/src/providers/covid-is/utils.ts rename to packages/api/src/providers/covid-is/utils.ts diff --git a/packages/core/src/providers/index.ts b/packages/api/src/providers/index.ts similarity index 67% rename from packages/core/src/providers/index.ts rename to packages/api/src/providers/index.ts index 53d19a0..006b7ab 100644 --- a/packages/core/src/providers/index.ts +++ b/packages/api/src/providers/index.ts @@ -1,3 +1,5 @@ +import '@babel/polyfill'; +import 'isomorphic-unfetch'; import { getData as covidIs } from './covid-is'; import { getData as covidExt } from './covid-ext'; import * as R from 'ramda'; @@ -5,7 +7,7 @@ import * as R from 'ramda'; const providers = [covidExt, covidIs]; const getData = async () => { - const providerData = await Promise.all(providers.map(p => p())); + const providerData = await Promise.all(providers.map((p) => p())); return R.mergeAll(providerData); }; diff --git a/packages/core/src/providers/providers.spec.ts b/packages/api/src/providers/providers.spec.ts similarity index 100% rename from packages/core/src/providers/providers.spec.ts rename to packages/api/src/providers/providers.spec.ts diff --git a/packages/api/src/resolvers/stats.ts b/packages/api/src/resolvers/stats.ts index a02ef15..523e257 100644 --- a/packages/api/src/resolvers/stats.ts +++ b/packages/api/src/resolvers/stats.ts @@ -1,7 +1,8 @@ import { Resolver, Query } from '@nestjs/graphql'; import { Inject } from '@nestjs/common'; import { CountryStats } from '../models/CountryStats'; -import { provider, Covid19ProviderCountryStats } from '../../../core'; +import { Covid19ProviderCountryStats } from '../schema'; +import { getData as provider } from '../providers'; @Resolver(() => CountryStats) export class CountryStatsResolver { diff --git a/packages/core/src/types/schemas.ts b/packages/api/src/schema.ts similarity index 100% rename from packages/core/src/types/schemas.ts rename to packages/api/src/schema.ts diff --git a/packages/api/tsconfig.json b/packages/api/tsconfig.json index de287ad..225de9c 100644 --- a/packages/api/tsconfig.json +++ b/packages/api/tsconfig.json @@ -8,10 +8,5 @@ "module": "commonjs", "experimentalDecorators": true, "emitDecoratorMetadata": true - }, - "references": [ - { - "path": "../core" - } - ] + } } diff --git a/packages/app/package.json b/packages/app/package.json index a4f213e..eaa737b 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -27,7 +27,6 @@ "dependencies": { "@apollo/react-hooks": "3.1.5", "apollo-boost": "0.4.9", - "@gaui/covid19-core": "*", "@reduxjs/toolkit": "1.3.6", "react-redux": "7.2.0", "react": "16.13.1", diff --git a/packages/app/src/redux/slices/stats.ts b/packages/app/src/redux/slices/stats.ts index 55ecab8..3a98a33 100644 --- a/packages/app/src/redux/slices/stats.ts +++ b/packages/app/src/redux/slices/stats.ts @@ -1,6 +1,6 @@ import { createSlice, Dispatch, PayloadAction } from '@reduxjs/toolkit'; import { StatsState } from '../../types/components'; -import { Covid19ProviderCountryStats } from '../../../../core'; +import { Covid19ProviderCountryStats } from '../../types/schema'; import { gql } from 'apollo-boost'; import { createApolloClient } from '../../utils/createApolloClient'; diff --git a/packages/app/src/types/components.ts b/packages/app/src/types/components.ts index c33709b..69ef1af 100644 --- a/packages/app/src/types/components.ts +++ b/packages/app/src/types/components.ts @@ -1,4 +1,4 @@ -import { Covid19ProviderCountryStats } from '../../../core'; +import { Covid19ProviderCountryStats } from './schema'; export type StatsState = { loading: boolean; diff --git a/packages/app/src/types/schema.ts b/packages/app/src/types/schema.ts new file mode 100644 index 0000000..174a81d --- /dev/null +++ b/packages/app/src/types/schema.ts @@ -0,0 +1,18 @@ +export interface Covid19ProviderCountryStats { + active: number; + cases: number; + todayCases: number; + deaths: number; + todayDeaths: number; + recovered: number; + critical: number; + quarantineIn?: number; + quarantinePost?: number; + isolated?: number; + hospitalized?: number; + samples?: number; +} + +export interface Covid19ProviderConfig { + url: string; +} diff --git a/packages/app/tsconfig.json b/packages/app/tsconfig.json index fcac61c..87c5c67 100644 --- a/packages/app/tsconfig.json +++ b/packages/app/tsconfig.json @@ -4,9 +4,5 @@ "rootDir": "./src", "outDir": "./dist" }, - "references": [ - { - "path": "../core" - } - ] + "references": [] } diff --git a/packages/core/jest.config.js b/packages/core/jest.config.js deleted file mode 100644 index 6089215..0000000 --- a/packages/core/jest.config.js +++ /dev/null @@ -1,8 +0,0 @@ -// eslint-disable-next-line @typescript-eslint/no-var-requires -const jestBaseConfig = require('../../jest.base.config'); - -module.exports = { - ...jestBaseConfig, - displayName: 'core', - setupFilesAfterEnv: ['./jest.setup.js'] -}; diff --git a/packages/core/jest.setup.js b/packages/core/jest.setup.js deleted file mode 100644 index b24d3ef..0000000 --- a/packages/core/jest.setup.js +++ /dev/null @@ -1 +0,0 @@ -import 'isomorphic-unfetch'; diff --git a/packages/core/modules.d.ts b/packages/core/modules.d.ts deleted file mode 100644 index 1198a9a..0000000 --- a/packages/core/modules.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -declare module '*.html' { - const value: string; - export default value; -} diff --git a/packages/core/package.json b/packages/core/package.json deleted file mode 100644 index cfb8321..0000000 --- a/packages/core/package.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "name": "@gaui/covid19-core", - "version": "1.0.0", - "description": "", - "private": true, - "main": "dist/index.js", - "umd:main": "dist/index.umd.js", - "module": "dist/index.module.js", - "source": "src/index.ts", - "types": "dist/index.d.ts", - "author": "Gudjon Jonsson (https://gaui.is)", - "license": "MIT", - "repository": { - "type": "git", - "url": "https://github.com/gaui/covid19.git", - "directory": "packages/core" - }, - "scripts": { - "build": "microbundle --external isomorphic-unfetch,unfetch,cheerio" - }, - "dependencies": { - "cheerio": "1.0.0-rc.3" - }, - "devDependencies": { - "@types/cheerio": "0.22.18" - } -} diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts deleted file mode 100644 index 17d098e..0000000 --- a/packages/core/src/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -import '@babel/polyfill'; -import 'isomorphic-unfetch'; -export { getData as provider } from './providers'; - -export * from './types/schemas'; diff --git a/packages/core/src/providers/covid-ext/config.ts b/packages/core/src/providers/covid-ext/config.ts deleted file mode 100644 index fb8bb07..0000000 --- a/packages/core/src/providers/covid-ext/config.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { Covid19ProviderConfig } from '../../types/schemas'; - -const config: Covid19ProviderConfig = { - url: 'https://corona.lmao.ninja/v2/countries/iceland' -}; - -export default config; diff --git a/packages/core/tsconfig.json b/packages/core/tsconfig.json deleted file mode 100644 index e7b1cb9..0000000 --- a/packages/core/tsconfig.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "extends": "../../tsconfig-base.json", - "compilerOptions": { - "rootDir": "./src", - "outDir": "./dist" - } -} diff --git a/tsconfig.json b/tsconfig.json index 9c41ce6..f31eac2 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -3,9 +3,6 @@ "include": [], "compileOnSave": true, "references": [ - { - "path": "./packages/core" - }, { "path": "./packages/app" }, diff --git a/yarn.lock b/yarn.lock index 96890bf..25e566a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10172,11 +10172,16 @@ lodash.xorby@^4.7.0: resolved "https://registry.yarnpkg.com/lodash.xorby/-/lodash.xorby-4.7.0.tgz#9c19a6f9f063a6eb53dd03c1b6871799801463d7" integrity sha1-nBmm+fBjputT3QPBtocXmYAUY9c= -lodash@4.17.15, lodash@^4.15.0, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.2.1: +lodash@4.17.15, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.2.1: version "4.17.15" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== +lodash@^4.15.0: + version "4.17.19" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b" + integrity sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ== + log-symbols@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-3.0.0.tgz#f3a08516a5dea893336a7dee14d18a1cfdab77c4"