From 142bf2cf82f2c358b1e8c342fe5b3265f2b9eea2 Mon Sep 17 00:00:00 2001 From: Artemiy Vereshchinskiy Date: Sun, 16 Mar 2025 20:16:17 +0700 Subject: [PATCH 1/3] Add internal module setup --- platform/core/package.json | 3 ++ platform/core/src/app.module.ts | 24 +++++++++++-- platform/core/src/app.service.ts | 18 ++++++++-- pnpm-lock.yaml | 58 ++++++++++++++++++++++++++++++++ 4 files changed, 99 insertions(+), 4 deletions(-) diff --git a/platform/core/package.json b/platform/core/package.json index dfe4251..4ce24a2 100755 --- a/platform/core/package.json +++ b/platform/core/package.json @@ -102,6 +102,9 @@ "tsconfig-paths": "~3.14.1", "typescript": "5.7.2" }, + "optionalDependencies": { + "@rush-db/core-internal-module": "0.0.3" + }, "jest": { "moduleFileExtensions": [ "js", diff --git a/platform/core/src/app.module.ts b/platform/core/src/app.module.ts index 9fc882d..7a381de 100755 --- a/platform/core/src/app.module.ts +++ b/platform/core/src/app.module.ts @@ -1,4 +1,4 @@ -import { Global, Module } from '@nestjs/common' +import { Global, Module, DynamicModule, Provider } from '@nestjs/common' import { ConfigModule } from '@nestjs/config' import { APP_INTERCEPTOR } from '@nestjs/core' import { ServeStaticModule } from '@nestjs/serve-static' @@ -19,6 +19,24 @@ import { DatabaseModule } from '@/database/database.module' import { join } from 'path' +let internalModule: DynamicModule | null = null +let internalServiceProvider: Provider | null = null + +if (process.env.RUSHDB_SELF_HOSTED === 'false') { + try { + // eslint-disable-next-line @typescript-eslint/no-require-imports + const { InternalModule, InternalService } = require('@rush-db/core-internal-module') + + internalModule = InternalModule + internalServiceProvider = { + provide: 'INTERNAL_SERVICE', + useClass: InternalService + } + } catch (error) { + console.warn('Warning: @rush-db/core-internal-module is not available. Running without it.') + } +} + @Global() @Module({ imports: [ @@ -38,6 +56,7 @@ import { join } from 'path' }) ] : []), + ...(internalModule ? [internalModule] : []), ConsoleModule, BackupModule ], @@ -47,7 +66,8 @@ import { join } from 'path' provide: APP_INTERCEPTOR, useClass: ExcludeNullInterceptor }, - CliService + CliService, + ...(internalServiceProvider ? [internalServiceProvider] : []) ], controllers: [ ...(!toBoolean(process.env.RUSHDB_SERVE_STATIC) ? [AppController] : []), diff --git a/platform/core/src/app.service.ts b/platform/core/src/app.service.ts index 5965cb5..4446b9b 100755 --- a/platform/core/src/app.service.ts +++ b/platform/core/src/app.service.ts @@ -1,4 +1,18 @@ -import { Injectable } from '@nestjs/common' +import { Injectable, Inject, OnModuleInit, Logger, Optional } from '@nestjs/common' @Injectable() -export class AppService {} +export class AppService implements OnModuleInit { + private internalService?: any // Optional service reference + + constructor(@Optional() @Inject('INTERNAL_SERVICE') private readonly _internalService: any) { + this.internalService = _internalService + } + + async onModuleInit() { + if (this.internalService) { + Logger.log(this.internalService.getSecretData(), 'AppService') + } else { + Logger.warn('InternalService is not available', 'AppService') + } + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 73f75c8..9566172 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -334,6 +334,10 @@ importers: typescript: specifier: 5.7.2 version: 5.7.2 + optionalDependencies: + '@rush-db/core-internal-module': + specifier: 0.0.3 + version: 0.0.3(class-transformer@0.5.1)(express@4.21.2)(fastify@4.28.1) platform/dashboard: dependencies: @@ -3727,6 +3731,9 @@ packages: '@rtsao/scc@1.1.0': resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} + '@rush-db/core-internal-module@0.0.3': + resolution: {integrity: sha512-ZzqYPOo+7nXKz04pa+fmxsDyV98ENPbpI7yCUxY6r8FEGOTkioJCkduX16Dhjdnteu/XFwfkIj2VFRA5VL42gA==, tarball: https://npm.pkg.github.com/download/@rush-db/core-internal-module/0.0.3/61d77a4eafaf2b8ce9daac1212d58779d115db05} + '@rushstack/eslint-patch@1.10.4': resolution: {integrity: sha512-WJgX9nzTqknM393q1QJDJmoW28kUfEnybeTfVNcNAPnIx210RXm2DiXiHzfNPJNIUUb1tJnz/l4QGtJ30PgWmA==} @@ -17597,6 +17604,57 @@ snapshots: '@rtsao/scc@1.1.0': {} + '@rush-db/core-internal-module@0.0.3(class-transformer@0.5.1)(express@4.21.2)(fastify@4.28.1)': + dependencies: + '@fastify/static': 6.10.1 + '@fastify/swagger': 8.3.1 + '@nestjs-modules/mailer': 1.8.1(@nestjs/common@9.4.0(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13)(rxjs@7.6.0))(@nestjs/core@9.4.0(@nestjs/common@9.4.0(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13)(rxjs@7.6.0))(reflect-metadata@0.1.13)(rxjs@7.6.0))(nodemailer@6.9.16) + '@nestjs/axios': 2.0.0(@nestjs/common@9.4.0(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13)(rxjs@7.6.0))(axios@1.7.9)(reflect-metadata@0.1.13)(rxjs@7.6.0) + '@nestjs/common': 9.4.0(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13)(rxjs@7.6.0) + '@nestjs/config': 2.3.1(@nestjs/common@9.4.0(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13)(rxjs@7.6.0))(reflect-metadata@0.1.13)(rxjs@7.6.0) + '@nestjs/core': 9.4.0(@nestjs/common@9.4.0(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13)(rxjs@7.6.0))(reflect-metadata@0.1.13)(rxjs@7.6.0) + '@nestjs/jwt': 10.0.3(@nestjs/common@9.4.0(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13)(rxjs@7.6.0)) + '@nestjs/platform-fastify': 9.4.0(@fastify/static@6.10.1)(@nestjs/common@9.4.0(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13)(rxjs@7.6.0))(@nestjs/core@9.4.0(@nestjs/common@9.4.0(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13)(rxjs@7.6.0))(reflect-metadata@0.1.13)(rxjs@7.6.0)) + '@nestjs/serve-static': 4.0.2(@fastify/static@6.10.1)(@nestjs/common@9.4.0(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13)(rxjs@7.6.0))(@nestjs/core@9.4.0(@nestjs/common@9.4.0(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13)(rxjs@7.6.0))(reflect-metadata@0.1.13)(rxjs@7.6.0))(express@4.21.2)(fastify@4.28.1) + '@nestjs/swagger': 6.3.0(@fastify/static@6.10.1)(@nestjs/common@9.4.0(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13)(rxjs@7.6.0))(@nestjs/core@9.4.0(@nestjs/common@9.4.0(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13)(rxjs@7.6.0))(reflect-metadata@0.1.13)(rxjs@7.6.0))(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13) + '@nestjs/throttler': 5.2.0(@nestjs/common@9.4.0(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13)(rxjs@7.6.0))(@nestjs/core@9.4.0(@nestjs/common@9.4.0(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13)(rxjs@7.6.0))(reflect-metadata@0.1.13)(rxjs@7.6.0))(reflect-metadata@0.1.13) + '@nestlab/google-recaptcha': 3.3.1(@nestjs/common@9.4.0(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13)(rxjs@7.6.0))(@nestjs/core@9.4.0(@nestjs/common@9.4.0(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13)(rxjs@7.6.0))(reflect-metadata@0.1.13)(rxjs@7.6.0)) + '@types/stream-json': 1.7.8 + axios: 1.7.9 + bcryptjs: 2.4.3 + class-validator: 0.14.1 + ejs: 3.1.10 + fastify-raw-body: 4.1.0 + joi: 17.13.3 + ms: 2.1.3 + neo4j-driver: 4.4.11 + neo4j-driver-core: 4.4.11 + neogma: 1.11.1 + nestjs-console: 9.0.0(@nestjs/common@9.4.0(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13)(rxjs@7.6.0))(@nestjs/core@9.4.0(@nestjs/common@9.4.0(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13)(rxjs@7.6.0))(reflect-metadata@0.1.13)(rxjs@7.6.0)) + nodemailer: 6.9.16 + papaparse: 5.4.1 + query-string: 7.1.3 + reflect-metadata: 0.1.13 + rimraf: 6.0.1 + rxjs: 7.6.0 + stream-json: 1.9.1 + stripe: 14.25.0 + uuidv7: 0.6.3 + transitivePeerDependencies: + - '@fastify/view' + - '@nestjs/graphql' + - '@nestjs/microservices' + - '@nestjs/platform-express' + - '@nestjs/websockets' + - cache-manager + - class-transformer + - debug + - encoding + - express + - fastify + - supports-color + optional: true + '@rushstack/eslint-patch@1.10.4': {} '@selderee/plugin-htmlparser2@0.11.0': From 58d481a61f9e615bd2ea326aa0b9f5002ed95798 Mon Sep 17 00:00:00 2001 From: Artemiy Vereshchinskiy Date: Mon, 17 Mar 2025 21:13:48 +0700 Subject: [PATCH 2/3] Add internal module setup --- .github/workflows/release.yml | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index eaad100..2b5867a 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -42,21 +42,24 @@ jobs: cache: pnpm registry-url: 'https://registry.npmjs.org' - - name: Install Dependencies - run: pnpm install - - - name: Build SDK - run: pnpm --filter ./packages/javascript-sdk... build - - - name: Setup .npmrc + - name: Setup .npmrc for Public and Private Packages run: | cat << EOF > ~/.npmrc registry=https://registry.npmjs.org/ //registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }} access=public always-auth=true + + @rush-db:registry=https://npm.pkg.github.com/ + //npm.pkg.github.com/:_authToken=${{ secrets.NPM_PRIVATE_REGISTRY_TOKEN }} EOF + - name: Install Dependencies + run: pnpm install + + - name: Build SDK + run: pnpm --filter ./packages/javascript-sdk... build + - name: Determine Upcoming Version id: determine-version run: | @@ -73,6 +76,7 @@ jobs: title: "chore(release): version packages v${{ steps.determine-version.outputs.version }}" env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # @TODO: Dedupe NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} NPM_TOKEN: ${{ secrets.NPM_TOKEN }} @@ -120,6 +124,7 @@ jobs: file: platform/Dockerfile platforms: linux/amd64,linux/arm64 push: true + build-args: NPM_PRIVATE_REGISTRY_TOKEN=${{ secrets.NPM_PRIVATE_REGISTRY_TOKEN }} tags: | rushdb/platform:latest rushdb/platform:${{ needs.release.outputs.version }} From 9eea8fb07572828b87358dd10b4749454b7b36b1 Mon Sep 17 00:00:00 2001 From: Artemiy Vereshchinskiy Date: Mon, 17 Mar 2025 21:16:24 +0700 Subject: [PATCH 3/3] Add internal module setup --- .changeset/tricky-buckets-joke.md | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 .changeset/tricky-buckets-joke.md diff --git a/.changeset/tricky-buckets-joke.md b/.changeset/tricky-buckets-joke.md new file mode 100644 index 0000000..6f21975 --- /dev/null +++ b/.changeset/tricky-buckets-joke.md @@ -0,0 +1,9 @@ +--- +'rushdb-core': minor +'rushdb-docs': minor +'@rushdb/javascript-sdk': minor +'rushdb-dashboard': minor +'rushdb-website': minor +--- + +Add private package installation setup