From d5c9120e2f9355b7d28e2dedab47cc2ea9300838 Mon Sep 17 00:00:00 2001 From: Michael Beemer Date: Tue, 11 Oct 2022 11:28:58 -0400 Subject: [PATCH] feat: add optional remote fib service (#85) - Adds an additional fib service that can be optional enabled via a feature flag - Fib service requires basic auth - Removed unused scripts Signed-off-by: Michael Beemer --- .env.example | 8 ++ .github/workflows/release-please.yml | 25 +++- assets/images/zipkin-fibonacci.png | Bin 167784 -> 0 bytes config/flagd/flags.json | 8 ++ docker-compose.yaml | 21 +++- package-lock.json | 22 ++++ package.json | 16 +-- Dockerfile => packages/app/Dockerfile | 4 +- packages/app/project.json | 117 +++--------------- packages/app/src/app/app.module.ts | 8 +- .../app/fibonacci-as-a-service.controller.ts | 12 +- .../src/app/fibonacci/fibonacci.service.ts | 35 ++++++ packages/app/src/app/provider.service.ts | 12 +- packages/app/src/app/types.ts | 1 + packages/fibonacci-service/.eslintrc.json | 18 +++ packages/fibonacci-service/Dockerfile | 22 ++++ packages/fibonacci-service/jest.config.ts | 16 +++ packages/fibonacci-service/project.json | 70 +++++++++++ .../src/app/app.controller.ts | 14 +++ .../fibonacci-service/src/app/app.module.ts | 10 ++ .../fibonacci-service/src/app/app.service.ts | 8 ++ .../fibonacci-service/src/app/auth.guard.ts | 24 ++++ .../src/environments/environment.prod.ts | 3 + .../src/environments/environment.ts | 3 + packages/fibonacci-service/src/main.ts | 18 +++ packages/fibonacci-service/tsconfig.app.json | 12 ++ packages/fibonacci-service/tsconfig.json | 13 ++ packages/fibonacci-service/tsconfig.spec.json | 9 ++ .../src/lib/hooks/logging-hook.ts | 19 +-- workspace.json | 3 +- 30 files changed, 402 insertions(+), 149 deletions(-) delete mode 100644 assets/images/zipkin-fibonacci.png rename Dockerfile => packages/app/Dockerfile (93%) create mode 100644 packages/app/src/app/fibonacci/fibonacci.service.ts create mode 100644 packages/fibonacci-service/.eslintrc.json create mode 100644 packages/fibonacci-service/Dockerfile create mode 100644 packages/fibonacci-service/jest.config.ts create mode 100644 packages/fibonacci-service/project.json create mode 100644 packages/fibonacci-service/src/app/app.controller.ts create mode 100644 packages/fibonacci-service/src/app/app.module.ts create mode 100644 packages/fibonacci-service/src/app/app.service.ts create mode 100644 packages/fibonacci-service/src/app/auth.guard.ts create mode 100644 packages/fibonacci-service/src/environments/environment.prod.ts create mode 100644 packages/fibonacci-service/src/environments/environment.ts create mode 100644 packages/fibonacci-service/src/main.ts create mode 100644 packages/fibonacci-service/tsconfig.app.json create mode 100644 packages/fibonacci-service/tsconfig.json create mode 100644 packages/fibonacci-service/tsconfig.spec.json diff --git a/.env.example b/.env.example index 0ec548d8..793f88c8 100644 --- a/.env.example +++ b/.env.example @@ -33,3 +33,11 @@ LD_KEY= # Split IO server-side API key SPLIT_KEY= + +############################################### +## +## Remote Fibonacci Service +## +############################################### +FIB_SERVICE_USER= +FIB_SERVICE_PASS= \ No newline at end of file diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml index d457ff95..9dbcb3f3 100644 --- a/.github/workflows/release-please.yml +++ b/.github/workflows/release-please.yml @@ -59,17 +59,34 @@ jobs: id: date run: echo "::set-output name=date::$(date +'%Y-%m-%d')" - - name: Build + - name: Build App Container uses: docker/build-push-action@v2 with: # builder: ${{ steps.buildx.outputs.name }} context: . - file: ./Dockerfile + file: ./packages/app/Dockerfile # platforms: linux/amd64,linux/arm64 push: true tags: | - ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest - ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ needs.release-please.outputs.release_tag_name }} + ${{ env.REGISTRY }}/app:latest + ${{ env.REGISTRY }}/app:${{ needs.release-please.outputs.release_tag_name }} + labels: ${{ steps.meta.outputs.labels }} + build-args: | + VERSION=${{ steps.meta.outputs.tags }} + COMMIT=${{ github.sha }} + DATE=${{ steps.date.outputs.date }} + + - name: Build Fibonacci Service Container + uses: docker/build-push-action@v2 + with: + # builder: ${{ steps.buildx.outputs.name }} + context: . + file: ./packages/fibonacci-service/Dockerfile + # platforms: linux/amd64,linux/arm64 + push: true + tags: | + ${{ env.REGISTRY }}/fib-service:latest + ${{ env.REGISTRY }}/fib-service:${{ needs.release-please.outputs.release_tag_name }} labels: ${{ steps.meta.outputs.labels }} build-args: | VERSION=${{ steps.meta.outputs.tags }} diff --git a/assets/images/zipkin-fibonacci.png b/assets/images/zipkin-fibonacci.png deleted file mode 100644 index 7fce0feb69a98163c441fbe4cfde4e65f8feadf2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 167784 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 z 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 diff --git a/config/flagd/flags.json b/config/flagd/flags.json index 64814afc..91bc3490 100644 --- a/config/flagd/flags.json +++ b/config/flagd/flags.json @@ -17,6 +17,14 @@ }, "defaultVariant": "blue" }, + "use-remote-fib-service": { + "state": "ENABLED", + "variants": { + "on": true, + "off": false + }, + "defaultVariant": "on" + }, "fib-algo": { "state": "ENABLED", "variants": { diff --git a/docker-compose.yaml b/docker-compose.yaml index 9a055edc..c7b0b469 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -1,7 +1,9 @@ version: '3.8' services: demo: - image: ghcr.io/open-feature/playground:openfeature-v0.0.7 # x-release-please-version + # image: ghcr.io/open-feature/playground:app-v0.0.7 # x-release-please-version + build: + dockerfile: ./packages/app/Dockerfile ports: - '30000:30000' command: @@ -10,6 +12,7 @@ services: depends_on: - flagd - jaeger + - fib-service volumes: - ${PWD}/config/flagd/flags.json:/opt/playground/config/flagd/flags.json environment: @@ -17,6 +20,9 @@ services: - OTEL_EXPORTER_JAEGER_AGENT_HOST=jaeger - OTEL_EXPORTER_JAEGER_AGENT_PORT=6832 - GO_FEATURE_FLAG_URL=http://go-feature-flag:1031 + - FIB_SERVICE_URL=http://fib-service:30001 + - FIB_SERVICE_USER + - FIB_SERVICE_PASS # Provider values come from the .env - NEW_WELCOME_MESSAGE - FIB_ALGO @@ -28,6 +34,19 @@ services: - FLAGSMITH_ENV_KEY - CLOUDBEES_APP_KEY + fib-service: + # image: ghcr.io/open-feature/playground:fib-service-v0.0.7 # x-release-please-version + build: + dockerfile: ./packages/fibonacci-service/Dockerfile + expose: + - "30001" + environment: + - OTEL_EXPORTER_JAEGER_AGENT_HOST=jaeger + - OTEL_EXPORTER_JAEGER_AGENT_PORT=6832 + - OTEL_SERVICE_NAME=fibonacci-service + - FIB_SERVICE_USER + - FIB_SERVICE_PASS + jaeger: image: jaegertracing/all-in-one:1.38 expose: diff --git a/package-lock.json b/package-lock.json index 00016fdb..c277dbf2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,6 +13,7 @@ "@emotion/styled": "^11.10.4", "@harnessio/ff-nodejs-server-sdk": "^1.2.8", "@mui/material": "^5.10.7", + "@nestjs/axios": "^0.1.0", "@nestjs/common": "9.1.2", "@nestjs/core": "9.1.2", "@nestjs/platform-express": "9.1.2", @@ -4032,6 +4033,19 @@ "react": "^17.0.0 || ^18.0.0" } }, + "node_modules/@nestjs/axios": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@nestjs/axios/-/axios-0.1.0.tgz", + "integrity": "sha512-b2TT2X6BFbnNoeteiaxCIiHaFcSbVW+S5yygYqiIq5i6H77yIU3IVuLdpQkHq8/EqOWFwMopLN8jdkUT71Am9w==", + "dependencies": { + "axios": "0.27.2" + }, + "peerDependencies": { + "@nestjs/common": "^7.0.0 || ^8.0.0 || ^9.0.0", + "reflect-metadata": "^0.1.12", + "rxjs": "^6.0.0 || ^7.0.0" + } + }, "node_modules/@nestjs/common": { "version": "9.1.2", "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-9.1.2.tgz", @@ -27985,6 +27999,14 @@ "react-is": "^18.2.0" } }, + "@nestjs/axios": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@nestjs/axios/-/axios-0.1.0.tgz", + "integrity": "sha512-b2TT2X6BFbnNoeteiaxCIiHaFcSbVW+S5yygYqiIq5i6H77yIU3IVuLdpQkHq8/EqOWFwMopLN8jdkUT71Am9w==", + "requires": { + "axios": "0.27.2" + } + }, "@nestjs/common": { "version": "9.1.2", "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-9.1.2.tgz", diff --git a/package.json b/package.json index 47c59fdd..db2746ea 100644 --- a/package.json +++ b/package.json @@ -3,19 +3,12 @@ "version": "0.0.7", "license": "MIT", "scripts": { - "no-op-demo": "nx serve app", - "cloudbees-demo": "nx run app:cloudbees-demo", - "env-var-demo": "nx run app:env-var-demo", - "split-demo": "nx run app:split-demo", - "launchdarkly-demo": "nx run app:launchdarkly-demo", - "flagsmith-demo": "nx run app:flagsmith-demo", - "go-feature-flag-demo": "nx run app:go-feature-flag-demo", - "flagd-demo": "nx run app:flagd-demo", "ui": "nx run ui:serve", + "app": "nx run app:serve", + "fib-service": "nx run fibonacci-service:serve", "temp": "nx build", - "build": "nx build app && nx build ui && cp -R dist/packages/ui/* dist/packages/app/assets/public/", - "docker-build": "docker buildx build --platform=\"linux/ppc64le,linux/s390x,linux/amd64,linux/arm64\" . -t ghcr.io/open-feature/open-feature-demo:latest", - "docker-build-push": "docker buildx build --push --platform=\"linux/ppc64le,linux/s390x,linux/amd64,linux/arm64\" . -t ghcr.io/open-feature/open-feature-demo:latest", + "build:app": "nx build app && nx build ui", + "build:fib-service": "nx build fibonacci-service", "lint": "nx run-many --all --target=lint", "test": "nx run-many --all --target=test", "markdown-toc": "markdown-toc --bullets='-' --no-first-h1 --no-stripHeadingTags --maxdepth 4 -i README.md" @@ -26,6 +19,7 @@ "@emotion/styled": "^11.10.4", "@harnessio/ff-nodejs-server-sdk": "^1.2.8", "@mui/material": "^5.10.7", + "@nestjs/axios": "^0.1.0", "@nestjs/common": "9.1.2", "@nestjs/core": "9.1.2", "@nestjs/platform-express": "9.1.2", diff --git a/Dockerfile b/packages/app/Dockerfile similarity index 93% rename from Dockerfile rename to packages/app/Dockerfile index cb2c08bd..1af99aef 100644 --- a/Dockerfile +++ b/packages/app/Dockerfile @@ -4,7 +4,7 @@ COPY package*.json workspace.json tsconfig*.json nx.json babel.config.json ./ COPY schemas/ ./schemas/ RUN npm install COPY packages/ ./packages/ -RUN npm run build +RUN npm run build:app FROM node:16-bullseye as app @@ -17,7 +17,7 @@ COPY --from=builder /tmp/playground/dist ./dist COPY scripts ./scripts COPY schemas ./schemas -LABEL org.opencontainers.image.source=https://github.com/open-feature/open-feature-demo +LABEL org.opencontainers.image.source=https://github.com/open-feature/playground EXPOSE 30000 diff --git a/packages/app/project.json b/packages/app/project.json index 3db97661..99d52b85 100644 --- a/packages/app/project.json +++ b/packages/app/project.json @@ -5,12 +5,16 @@ "targets": { "build": { "executor": "@nrwl/webpack:webpack", - "outputs": ["{options.outputPath}"], + "outputs": [ + "{options.outputPath}" + ], "options": { "outputPath": "dist/packages/app", "main": "packages/app/src/main.ts", "tsConfig": "packages/app/tsconfig.app.json", - "assets": ["packages/app/src/assets"], + "assets": [ + "packages/app/src/assets" + ], "target": "node", "compiler": "tsc" }, @@ -32,110 +36,17 @@ "executor": "@nrwl/node:node", "options": { "buildTarget": "app:build", - "runtimeArgs": ["-r", "./scripts/tracing.js"] - } - }, - "env-var-demo": { - "executor": "@nrwl/node:node", - "dependsOn": [ - { - "target": "build", - "projects": "dependencies" - } - ], - "options": { - "buildTarget": "app:build", - "runtimeArgs": ["-r", "./scripts/tracing.js"], - "args": ["env"] - } - }, - "cloudbees-demo": { - "executor": "@nrwl/node:node", - "dependsOn": [ - { - "target": "build", - "projects": "dependencies" - } - ], - "options": { - "buildTarget": "app:build", - "runtimeArgs": ["-r", "./scripts/tracing.js"], - "args": ["cloudbees"] - } - }, - "split-demo": { - "executor": "@nrwl/node:node", - "dependsOn": [ - { - "target": "build", - "projects": "dependencies" - } - ], - "options": { - "buildTarget": "app:build", - "runtimeArgs": ["-r", "./scripts/tracing.js"], - "args": ["split"] - } - }, - "launchdarkly-demo": { - "executor": "@nrwl/node:node", - "dependsOn": [ - { - "target": "build", - "projects": "dependencies" - } - ], - "options": { - "buildTarget": "app:build", - "runtimeArgs": ["-r", "./scripts/tracing.js"], - "args": ["launchdarkly"] - } - }, - "flagsmith-demo": { - "executor": "@nrwl/node:node", - "dependsOn": [ - { - "target": "build", - "projects": "dependencies" - } - ], - "options": { - "buildTarget": "app:build", - "runtimeArgs": ["-r", "./scripts/tracing.js"], - "args": ["flagsmith"] - } - }, - "flagd-demo": { - "executor": "@nrwl/node:node", - "dependsOn": [ - { - "target": "build", - "projects": "dependencies" - } - ], - "options": { - "buildTarget": "app:build", - "runtimeArgs": ["-r", "./scripts/tracing.js"], - "args": ["flagd"] - } - }, - "go-feature-flag-demo": { - "executor": "@nrwl/node:node", - "dependsOn": [ - { - "target": "build", - "projects": "dependencies" - } - ], - "options": { - "buildTarget": "app:build", - "runtimeArgs": ["-r", "./scripts/tracing.js"], - "args": ["go"] + "runtimeArgs": [ + "-r", + "./scripts/tracing.js" + ] } }, "test": { "executor": "@nrwl/jest:jest", - "outputs": ["coverage/packages/app"], + "outputs": [ + "coverage/packages/app" + ], "options": { "jestConfig": "packages/app/jest.config.ts", "passWithNoTests": true @@ -143,4 +54,4 @@ } }, "tags": [] -} +} \ No newline at end of file diff --git a/packages/app/src/app/app.module.ts b/packages/app/src/app/app.module.ts index e0eaee77..288911d8 100644 --- a/packages/app/src/app/app.module.ts +++ b/packages/app/src/app/app.module.ts @@ -15,6 +15,8 @@ import { ServeStaticModule } from '@nestjs/serve-static'; import { join } from 'path'; import { ProvidersController } from './providers.controller'; import { ProviderService } from './provider.service'; +import { HttpModule } from '@nestjs/axios'; +import { FibonacciService } from './fibonacci/fibonacci.service'; /** * Adding hooks to at the global level will ensure they always run @@ -32,13 +34,15 @@ OpenFeature.setTransactionContextPropagator(new AsyncLocalStorageTransactionCont @Module({ imports: [ ServeStaticModule.forRoot({ - rootPath: join(__dirname, '.', 'assets', 'public'), + rootPath: join(__dirname, '..', 'ui'), }), + HttpModule, ], controllers: [FibonacciAsAServiceController, UtilsController, ProvidersController], providers: [ MessageService, HexColorService, + FibonacciService, ProviderService, { provide: OPENFEATURE_CLIENT, @@ -51,11 +55,13 @@ OpenFeature.setTransactionContextPropagator(new AsyncLocalStorageTransactionCont provide: REQUEST_DATA, useFactory: (req: Request): RequestData => { const authHeaderValue = req.header('Authorization') || 'anonymous'; + const userAgent = req.header('user-agent'); return { ip: (req.headers['x-forwarded-for'] as string) || (req.socket.remoteAddress as string), email: authHeaderValue, method: req.method, path: req.path, + ...(userAgent && { userAgent }), targetingKey: authHeaderValue, }; }, diff --git a/packages/app/src/app/fibonacci-as-a-service.controller.ts b/packages/app/src/app/fibonacci-as-a-service.controller.ts index a2bb07e2..2a698427 100644 --- a/packages/app/src/app/fibonacci-as-a-service.controller.ts +++ b/packages/app/src/app/fibonacci-as-a-service.controller.ts @@ -1,5 +1,6 @@ -import { Controller, Get, Query } from '@nestjs/common'; +import { Controller, DefaultValuePipe, Get, ParseIntPipe, Query } from '@nestjs/common'; import { fibonacci } from '@openfeature/fibonacci'; +import { FibonacciService } from './fibonacci/fibonacci.service'; import { HexColorService } from './hex-color/hex-color.service'; import { MessageService } from './message/message.service'; @@ -10,7 +11,8 @@ import { MessageService } from './message/message.service'; export class FibonacciAsAServiceController { constructor( private readonly messageService: MessageService, - private hexColorService: HexColorService + private readonly fibonacciService: FibonacciService, + private readonly hexColorService: HexColorService ) {} /** @@ -48,9 +50,7 @@ export class FibonacciAsAServiceController { * @returns */ @Get('calculate') - async getFibonacci(@Query('num') num: string) { - return { - result: await fibonacci(Number.parseInt(num)), - }; + async getFibonacci(@Query('num', new DefaultValuePipe(45), ParseIntPipe) num: number) { + return this.fibonacciService.calculateFibonacci(num); } } diff --git a/packages/app/src/app/fibonacci/fibonacci.service.ts b/packages/app/src/app/fibonacci/fibonacci.service.ts new file mode 100644 index 00000000..b8d706da --- /dev/null +++ b/packages/app/src/app/fibonacci/fibonacci.service.ts @@ -0,0 +1,35 @@ +import { HttpService } from '@nestjs/axios'; +import { Inject, Injectable } from '@nestjs/common'; +import { fibonacci } from '@openfeature/fibonacci'; +import { Client } from '@openfeature/js-sdk'; +import { OPENFEATURE_CLIENT } from '../constants'; +import { lastValueFrom, map } from 'rxjs'; + +@Injectable() +export class FibonacciService { + private readonly FIB_SERVICE_URL = process.env.FIB_SERVICE_URL || 'http://localhost:30001'; + + constructor(private readonly httpService: HttpService, @Inject(OPENFEATURE_CLIENT) private client: Client) {} + + async calculateFibonacci(num: number): Promise<{ result: number }> { + const useRemoteFibService = await this.client.getBooleanValue('use-remote-fib-service', false); + + if (useRemoteFibService) { + return lastValueFrom( + this.httpService + .get<{ result: number }>(`${this.FIB_SERVICE_URL}/calculate`, { + params: { num }, + auth: { + username: process.env.FIB_SERVICE_USER || '', + password: process.env.FIB_SERVICE_PASS || '', + }, + }) + .pipe(map((res) => res.data)) + ); + } + + return { + result: await fibonacci(num), + }; + } +} diff --git a/packages/app/src/app/provider.service.ts b/packages/app/src/app/provider.service.ts index b157c443..1756e63d 100644 --- a/packages/app/src/app/provider.service.ts +++ b/packages/app/src/app/provider.service.ts @@ -1,4 +1,4 @@ -import { Injectable } from '@nestjs/common'; +import { Injectable, Logger } from '@nestjs/common'; import { FlagdProvider } from '@openfeature/flagd-provider'; import { GoFeatureFlagProvider } from '@openfeature/go-feature-flag-provider'; import { OpenFeatureEnvProvider } from '@openfeature/js-env-provider'; @@ -24,6 +24,7 @@ type ProviderMap = Record< @Injectable() export class ProviderService { + private readonly logger = new Logger(ProviderService.name); private _currentProvider: ProviderId; private providerMap: ProviderMap = { env: { factory: () => new OpenFeatureEnvProvider() }, @@ -117,7 +118,14 @@ export class ProviderService { }; constructor() { - this._currentProvider = process.argv[2] as ProviderId; + const configuredDefaultProvider = process.argv[2] as ProviderId; + if (this.providerMap[configuredDefaultProvider]) { + this._currentProvider = process.argv[2] as ProviderId; + } else { + this.logger.warn("Using FlagD because the default provider hasn't been defined."); + this._currentProvider = 'flagd'; + } + this.switchProvider(this._currentProvider); } diff --git a/packages/app/src/app/types.ts b/packages/app/src/app/types.ts index 47ef7015..a398694a 100644 --- a/packages/app/src/app/types.ts +++ b/packages/app/src/app/types.ts @@ -3,6 +3,7 @@ export type RequestData = { ip: string; method: string; path: string; + userAgent?: string; email?: string; }; diff --git a/packages/fibonacci-service/.eslintrc.json b/packages/fibonacci-service/.eslintrc.json new file mode 100644 index 00000000..9d9c0db5 --- /dev/null +++ b/packages/fibonacci-service/.eslintrc.json @@ -0,0 +1,18 @@ +{ + "extends": ["../../.eslintrc.json"], + "ignorePatterns": ["!**/*"], + "overrides": [ + { + "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], + "rules": {} + }, + { + "files": ["*.ts", "*.tsx"], + "rules": {} + }, + { + "files": ["*.js", "*.jsx"], + "rules": {} + } + ] +} diff --git a/packages/fibonacci-service/Dockerfile b/packages/fibonacci-service/Dockerfile new file mode 100644 index 00000000..714f08cb --- /dev/null +++ b/packages/fibonacci-service/Dockerfile @@ -0,0 +1,22 @@ +FROM node:16-bullseye AS builder +WORKDIR /tmp/playground/ +COPY package*.json workspace.json tsconfig*.json nx.json babel.config.json ./ +RUN npm install +COPY packages/ ./packages/ +RUN npm run build:fib-service + +FROM node:16-bullseye as app + +WORKDIR /opt/playground/ +COPY package*.json ./ +RUN npm ci --omit=dev + +COPY --from=builder /tmp/playground/dist ./dist +# Tracing script +COPY scripts ./scripts + +LABEL org.opencontainers.image.source=https://github.com/open-feature/playground + +EXPOSE 30001 + +ENTRYPOINT ["node", "-r", "./scripts/tracing.js", "dist/packages/fibonacci-service/main.js"] diff --git a/packages/fibonacci-service/jest.config.ts b/packages/fibonacci-service/jest.config.ts new file mode 100644 index 00000000..8d31796d --- /dev/null +++ b/packages/fibonacci-service/jest.config.ts @@ -0,0 +1,16 @@ +/* eslint-disable */ +export default { + displayName: 'fibonacci-service', + preset: '../../jest.preset.js', + globals: { + 'ts-jest': { + tsconfig: '/tsconfig.spec.json', + }, + }, + testEnvironment: 'node', + transform: { + '^.+\\.[tj]s$': 'ts-jest', + }, + moduleFileExtensions: ['ts', 'js', 'html'], + coverageDirectory: '../../coverage/apps/fibonacci-service', +}; diff --git a/packages/fibonacci-service/project.json b/packages/fibonacci-service/project.json new file mode 100644 index 00000000..7ae48767 --- /dev/null +++ b/packages/fibonacci-service/project.json @@ -0,0 +1,70 @@ +{ + "name": "fibonacci-service", + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "packages/fibonacci-service/src", + "projectType": "application", + "targets": { + "build": { + "executor": "@nrwl/webpack:webpack", + "outputs": [ + "{options.outputPath}" + ], + "options": { + "target": "node", + "compiler": "tsc", + "outputPath": "dist/packages/fibonacci-service", + "main": "packages/fibonacci-service/src/main.ts", + "tsConfig": "packages/fibonacci-service/tsconfig.app.json", + "assets": [ + "packages/fibonacci-service/src/assets" + ] + }, + "configurations": { + "production": { + "optimization": true, + "extractLicenses": true, + "inspect": false, + "fileReplacements": [ + { + "replace": "packages/fibonacci-service/src/environments/environment.ts", + "with": "packages/fibonacci-service/src/environments/environment.prod.ts" + } + ] + } + } + }, + "serve": { + "executor": "@nrwl/js:node", + "options": { + "buildTarget": "fibonacci-service:build" + }, + "configurations": { + "production": { + "buildTarget": "fibonacci-service:build:production" + } + } + }, + "lint": { + "executor": "@nrwl/linter:eslint", + "outputs": [ + "{options.outputFile}" + ], + "options": { + "lintFilePatterns": [ + "packages/fibonacci-service/**/*.ts" + ] + } + }, + "test": { + "executor": "@nrwl/jest:jest", + "outputs": [ + "coverage/packages/fibonacci-service" + ], + "options": { + "jestConfig": "packages/fibonacci-service/jest.config.ts", + "passWithNoTests": true + } + } + }, + "tags": [] +} \ No newline at end of file diff --git a/packages/fibonacci-service/src/app/app.controller.ts b/packages/fibonacci-service/src/app/app.controller.ts new file mode 100644 index 00000000..fd403813 --- /dev/null +++ b/packages/fibonacci-service/src/app/app.controller.ts @@ -0,0 +1,14 @@ +import { Controller, DefaultValuePipe, Get, ParseIntPipe, Query, UseGuards } from '@nestjs/common'; +import { getNthFibBinet } from '@openfeature/fibonacci'; +import { AuthGuard } from './auth.guard'; + +@Controller() +@UseGuards(new AuthGuard()) +export class AppController { + @Get('calculate') + async getFibonacci(@Query('num', new DefaultValuePipe(50), ParseIntPipe) num: number) { + return { + result: getNthFibBinet(num), + }; + } +} diff --git a/packages/fibonacci-service/src/app/app.module.ts b/packages/fibonacci-service/src/app/app.module.ts new file mode 100644 index 00000000..b902e423 --- /dev/null +++ b/packages/fibonacci-service/src/app/app.module.ts @@ -0,0 +1,10 @@ +import { Module } from '@nestjs/common'; + +import { AppController } from './app.controller'; + +@Module({ + imports: [], + controllers: [AppController], + providers: [], +}) +export class AppModule {} diff --git a/packages/fibonacci-service/src/app/app.service.ts b/packages/fibonacci-service/src/app/app.service.ts new file mode 100644 index 00000000..3aa830f0 --- /dev/null +++ b/packages/fibonacci-service/src/app/app.service.ts @@ -0,0 +1,8 @@ +import { Injectable } from '@nestjs/common'; + +@Injectable() +export class AppService { + getData(): { message: string } { + return { message: 'Welcome to fibonacci-service!' }; + } +} diff --git a/packages/fibonacci-service/src/app/auth.guard.ts b/packages/fibonacci-service/src/app/auth.guard.ts new file mode 100644 index 00000000..a7b252a3 --- /dev/null +++ b/packages/fibonacci-service/src/app/auth.guard.ts @@ -0,0 +1,24 @@ +import { Injectable, CanActivate, ExecutionContext } from '@nestjs/common'; +import { Observable } from 'rxjs'; +import { Request } from 'express'; + +@Injectable() +export class AuthGuard implements CanActivate { + canActivate(context: ExecutionContext): boolean | Promise | Observable { + const request = context.switchToHttp().getRequest(); + const authHeader = request.header('authorization'); + + if (!authHeader) { + // Throw 401 response code + return false; + } + const auth = Buffer.from(authHeader.split(' ')[1], 'base64').toString().split(':'); + const [user, password] = auth; + + if (process.env.FIB_SERVICE_USER === user && process.env.FIB_SERVICE_PASS === password) { + return true; + } + + return false; + } +} diff --git a/packages/fibonacci-service/src/environments/environment.prod.ts b/packages/fibonacci-service/src/environments/environment.prod.ts new file mode 100644 index 00000000..c9669790 --- /dev/null +++ b/packages/fibonacci-service/src/environments/environment.prod.ts @@ -0,0 +1,3 @@ +export const environment = { + production: true, +}; diff --git a/packages/fibonacci-service/src/environments/environment.ts b/packages/fibonacci-service/src/environments/environment.ts new file mode 100644 index 00000000..a20cfe55 --- /dev/null +++ b/packages/fibonacci-service/src/environments/environment.ts @@ -0,0 +1,3 @@ +export const environment = { + production: false, +}; diff --git a/packages/fibonacci-service/src/main.ts b/packages/fibonacci-service/src/main.ts new file mode 100644 index 00000000..2f00924b --- /dev/null +++ b/packages/fibonacci-service/src/main.ts @@ -0,0 +1,18 @@ +/** + * This is not a production server yet! + * This is only a minimal backend to get started. + */ + +import { Logger } from '@nestjs/common'; +import { NestFactory } from '@nestjs/core'; + +import { AppModule } from './app/app.module'; + +async function bootstrap() { + const app = await NestFactory.create(AppModule); + const port = process.env.PORT || 30001; + await app.listen(port); + Logger.log(`🚀 Fibonacci Service is running on: http://localhost:${port}/`); +} + +bootstrap(); diff --git a/packages/fibonacci-service/tsconfig.app.json b/packages/fibonacci-service/tsconfig.app.json new file mode 100644 index 00000000..91231e40 --- /dev/null +++ b/packages/fibonacci-service/tsconfig.app.json @@ -0,0 +1,12 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "module": "commonjs", + "types": ["node"], + "emitDecoratorMetadata": true, + "target": "es2015" + }, + "exclude": ["jest.config.ts", "**/*.spec.ts", "**/*.test.ts"], + "include": ["**/*.ts"] +} diff --git a/packages/fibonacci-service/tsconfig.json b/packages/fibonacci-service/tsconfig.json new file mode 100644 index 00000000..63dbe35f --- /dev/null +++ b/packages/fibonacci-service/tsconfig.json @@ -0,0 +1,13 @@ +{ + "extends": "../../tsconfig.base.json", + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.app.json" + }, + { + "path": "./tsconfig.spec.json" + } + ] +} diff --git a/packages/fibonacci-service/tsconfig.spec.json b/packages/fibonacci-service/tsconfig.spec.json new file mode 100644 index 00000000..546f1287 --- /dev/null +++ b/packages/fibonacci-service/tsconfig.spec.json @@ -0,0 +1,9 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "module": "commonjs", + "types": ["jest", "node"] + }, + "include": ["jest.config.ts", "**/*.test.ts", "**/*.spec.ts", "**/*.d.ts"] +} diff --git a/packages/openfeature-extra/src/lib/hooks/logging-hook.ts b/packages/openfeature-extra/src/lib/hooks/logging-hook.ts index 0c48e970..3cc2aac3 100644 --- a/packages/openfeature-extra/src/lib/hooks/logging-hook.ts +++ b/packages/openfeature-extra/src/lib/hooks/logging-hook.ts @@ -1,5 +1,4 @@ -import { Hook, HookContext, ResolutionDetails, FlagValue } from '@openfeature/js-sdk'; -import { EOL } from 'os'; +import { Hook, HookContext } from '@openfeature/js-sdk'; /** * A hook that simply logs at every life-cycle stage. @@ -7,22 +6,6 @@ import { EOL } from 'os'; export class LoggingHook implements Hook { name = 'logging'; - before(hookContext: HookContext) { - console.log(`Running 'before' logger hook for flag: ${hookContext.flagKey}`); - console.log(JSON.stringify(hookContext.context, undefined, 2)); - } - - after(hookContext: HookContext, details: ResolutionDetails) { - console.log(`Running 'after' logger hook for flag: ${hookContext.flagKey}`); - console.log(`Evaluation details:${EOL}${JSON.stringify(details, undefined, 2)}`); - } - - // finally(hookContext: HookContext) { - // console.log( - // `Running 'finally' logger hook for flag: ${hookContext.flagKey}` - // ); - // } - error(hookContext: HookContext, err: Error) { console.log(`Running 'error' logger hook for flag: ${hookContext.flagKey}`); console.error(err); diff --git a/workspace.json b/workspace.json index 83dcfe9c..a358f080 100644 --- a/workspace.json +++ b/workspace.json @@ -3,6 +3,7 @@ "projects": { "app": "packages/app", "fibonacci": "packages/fibonacci", + "fibonacci-service": "packages/fibonacci-service", "js-env-provider": "packages/js-env-provider", "js-flagsmith-provider": "packages/js-flagsmith-provider", "js-harness-provider": "packages/js-harness-provider", @@ -12,4 +13,4 @@ "ui": "packages/ui" }, "$schema": "./node_modules/nx/schemas/workspace-schema.json" -} +} \ No newline at end of file