From 342a61b19d1e9d19ef24c3776b5b0195cf4bdc06 Mon Sep 17 00:00:00 2001
From: Roderik van der Veer
Date: Tue, 6 Aug 2024 09:15:06 +0200
Subject: [PATCH 1/3] feat: initial nextjs config wrapper and split out config
package
---
.github/workflows/build.yml | 17 +++---
packages/cli/package.json | 6 +--
packages/cli/src/commands/codegen.ts | 2 +-
packages/cli/src/commands/init.ts | 3 +-
packages/cli/src/lib/gitignore.ts | 2 +-
packages/cli/src/lib/graphql.ts | 8 +--
packages/cli/src/lib/package-json.ts | 2 +-
packages/cli/src/lib/rest.ts | 2 +-
packages/cli/src/lib/tsconfig.ts | 2 +-
packages/config/package.json | 53 +++++++++++++++++++
.../{cli/src/lib => config/src}/config.ts | 11 +---
.../{cli/src/lib => config/src}/framework.ts | 0
packages/config/src/index.ts | 3 ++
packages/{cli/src/lib => config/src}/path.ts | 0
packages/config/tsup.config.ts | 12 +++++
packages/next/package.json | 10 ++--
packages/next/src/config/with-btp.ts | 21 ++++++++
17 files changed, 120 insertions(+), 34 deletions(-)
create mode 100644 packages/config/package.json
rename packages/{cli/src/lib => config/src}/config.ts (94%)
rename packages/{cli/src/lib => config/src}/framework.ts (100%)
create mode 100644 packages/config/src/index.ts
rename packages/{cli/src/lib => config/src}/path.ts (100%)
create mode 100644 packages/config/tsup.config.ts
create mode 100644 packages/next/src/config/with-btp.ts
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 6077087df..60bacd869 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -36,8 +36,6 @@ jobs:
steps:
- name: Checkout
uses: namespacelabs/nscloud-checkout-action@v5
- with:
- fetch-depth: 0
- name: Setup caches
uses: namespacelabs/nscloud-cache-action@v1
@@ -58,11 +56,6 @@ jobs:
with:
node-version: 20
- - name: Secret Scanning
- uses: trufflesecurity/trufflehog@main
- with:
- extra_args: --only-verified
-
- run: bun install
- run: bun check
@@ -123,6 +116,15 @@ jobs:
done
echo "Updated version to $VERSION"
+ - uses: JS-DevTools/npm-publish@v3
+ with:
+ token: ${{ secrets.NPM_TOKEN }}
+ package: ./packages/config/package.json
+ access: public
+ provenance: false
+ strategy: all
+ tag: ${{ env.TAG }}
+
- uses: JS-DevTools/npm-publish@v3
with:
token: ${{ secrets.NPM_TOKEN }}
@@ -168,6 +170,7 @@ jobs:
# 📦 Packages
| Package | Install |
| ------- | -------------------- |
+ | Config | `bun add @settlemint/btp-sdk-config@${{ env.VERSION }}` |
| CLI | `bun add @settlemint/btp-sdk-cli@${{ env.VERSION }}` |
| Next | `bun add @settlemint/btp-sdk-next@${{ env.VERSION }}` |
| React | `bun add @settlemint/btp-sdk-react@${{ env.VERSION }}` |
diff --git a/packages/cli/package.json b/packages/cli/package.json
index 75cfeb2ea..979ffeea4 100644
--- a/packages/cli/package.json
+++ b/packages/cli/package.json
@@ -49,6 +49,7 @@
"@types/npmcli__package-json": "4.0.4"
},
"dependencies": {
+ "@settlemint/btp-sdk-config": "workspace:*",
"@clack/prompts": "0.7.0",
"@commander-js/extra-typings": "12.1.0",
"@graphql-codegen/cli": "5.0.2",
@@ -56,12 +57,9 @@
"commander": "12.1.0",
"cosmiconfig": "9.0.0",
"cross-spawn": "7.0.3",
- "dotenv": "16.4.5",
"openapi-typescript": "7.3.0",
"semver": "7.6.3",
- "ts-deepmerge": "7.0.1",
- "yoctocolors": "2.1.1",
- "zod": "3.23.8"
+ "yoctocolors": "2.1.1"
},
"peerDependencies": {
"graphql": "^16",
diff --git a/packages/cli/src/commands/codegen.ts b/packages/cli/src/commands/codegen.ts
index 478b015a4..577a64021 100644
--- a/packages/cli/src/commands/codegen.ts
+++ b/packages/cli/src/commands/codegen.ts
@@ -1,7 +1,7 @@
import { Command } from "@commander-js/extra-typings";
+import { config } from "@settlemint/btp-sdk-config";
import { greenBright } from "yoctocolors";
import { printAsciiArt, printCancel, printIntro, printNote, printOutro, printSpinner } from "../lib/cli-message";
-import { config } from "../lib/config";
import { createGqlClient } from "../lib/graphql";
import { createRestClient } from "../lib/rest";
import { writeTsConfig } from "../lib/tsconfig";
diff --git a/packages/cli/src/commands/init.ts b/packages/cli/src/commands/init.ts
index ed2bc27d7..1e32f613e 100644
--- a/packages/cli/src/commands/init.ts
+++ b/packages/cli/src/commands/init.ts
@@ -1,4 +1,5 @@
import { Command } from "@commander-js/extra-typings";
+import { type ConfigEnv, config, createConfig, createEnv, detectFramework } from "@settlemint/btp-sdk-config";
import { greenBright } from "yoctocolors";
import pkg from "../../package.json";
import {
@@ -12,8 +13,6 @@ import {
} from "../lib/cli-message";
import { type Works, getServices } from "../lib/cluster-manager";
import { coerceSelect, coerceText } from "../lib/coerce";
-import { type ConfigEnv, config, createConfig, createEnv } from "../lib/config";
-import { detectFramework } from "../lib/framework";
import { updateGitignore } from "../lib/gitignore";
import { addDependencies } from "../lib/package-json";
import { install } from "../lib/package-manager";
diff --git a/packages/cli/src/lib/gitignore.ts b/packages/cli/src/lib/gitignore.ts
index b9d46a730..08f732d98 100644
--- a/packages/cli/src/lib/gitignore.ts
+++ b/packages/cli/src/lib/gitignore.ts
@@ -1,6 +1,6 @@
+import { findProjectRoot } from "@settlemint/btp-sdk-config";
import { existsSync, readFileSync, writeFileSync } from "node:fs";
import { join } from "node:path";
-import { findProjectRoot } from "./path";
export function updateGitignore() {
const root = findProjectRoot(process.cwd());
diff --git a/packages/cli/src/lib/graphql.ts b/packages/cli/src/lib/graphql.ts
index 53dac7da1..d8ffb66b5 100644
--- a/packages/cli/src/lib/graphql.ts
+++ b/packages/cli/src/lib/graphql.ts
@@ -1,7 +1,7 @@
import { generate } from "@graphql-codegen/cli";
+import { findProjectRoot } from "@settlemint/btp-sdk-config";
import { mkdirSync, writeFileSync } from "node:fs";
import { join } from "node:path";
-import { findProjectRoot } from "./path";
export interface CreateGqlClientOptions {
framework: string;
@@ -29,12 +29,12 @@ export async function createGqlClient(options: CreateDefaultGqlClientOptions | C
const { framework, type, gqlUrl, personalAccessToken } = options;
// Create directory structure
- const btpDir = join(findProjectRoot(process.cwd()), ".btp");
-
+ const root = findProjectRoot(process.cwd());
+ const btpDir = join(root, ".btp");
const typeDir = join(btpDir, type);
const typeGqlDir = join(typeDir, "gql");
const typeCodegenDir = join(typeGqlDir, "codegen");
- const typeQueriesDir = join(findProjectRoot(process.cwd()), "graphql", type);
+ const typeQueriesDir = join(root, "graphql", type);
mkdirSync(typeCodegenDir, { recursive: true });
mkdirSync(typeQueriesDir, { recursive: true });
diff --git a/packages/cli/src/lib/package-json.ts b/packages/cli/src/lib/package-json.ts
index 524fa1dbf..e9a2fa467 100644
--- a/packages/cli/src/lib/package-json.ts
+++ b/packages/cli/src/lib/package-json.ts
@@ -1,6 +1,6 @@
import { type PackageJson, default as pkgj } from "@npmcli/package-json";
+import { findProjectRoot } from "@settlemint/btp-sdk-config";
import { lt } from "semver";
-import { findProjectRoot } from "./path";
export async function addDependencies(dependencies: Record, checkVersion = false) {
// Read the package.json file
diff --git a/packages/cli/src/lib/rest.ts b/packages/cli/src/lib/rest.ts
index be6504a11..cac6171e1 100644
--- a/packages/cli/src/lib/rest.ts
+++ b/packages/cli/src/lib/rest.ts
@@ -1,8 +1,8 @@
import { createConfig } from "@redocly/openapi-core";
+import { findProjectRoot } from "@settlemint/btp-sdk-config";
import { mkdirSync, writeFileSync } from "node:fs";
import { join } from "node:path";
import openapiTS, { astToString } from "openapi-typescript";
-import { findProjectRoot } from "./path";
/**
* Creates a Portal REST client based on the OpenAPI specification.
diff --git a/packages/cli/src/lib/tsconfig.ts b/packages/cli/src/lib/tsconfig.ts
index ae94adc46..bdc5372e9 100644
--- a/packages/cli/src/lib/tsconfig.ts
+++ b/packages/cli/src/lib/tsconfig.ts
@@ -1,6 +1,6 @@
+import { findProjectRoot } from "@settlemint/btp-sdk-config";
import { existsSync, mkdirSync, writeFileSync } from "node:fs";
import { join } from "node:path";
-import { findProjectRoot } from "./path";
export function writeTsConfig() {
const root = findProjectRoot(process.cwd());
diff --git a/packages/config/package.json b/packages/config/package.json
new file mode 100644
index 000000000..65cb1d294
--- /dev/null
+++ b/packages/config/package.json
@@ -0,0 +1,53 @@
+{
+ "name": "@settlemint/btp-sdk-config",
+ "version": "0.3.2",
+ "main": "./dist/index.js",
+ "module": "./dist/index.mjs",
+ "types": "./dist/index.d.ts",
+ "type": "module",
+ "private": true,
+ "license": "MIT",
+ "author": {
+ "name": "SettleMint",
+ "email": "support@settlemint.com",
+ "url": "https://settlemint.com"
+ },
+ "homepage": "https://github.com/settlemint/btp-sdk/blob/main/packages/config/README.md",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/settlemint/btp-sdk.git"
+ },
+ "bugs": {
+ "url": "https://github.com/settlemint/btp-sdk/issues",
+ "email": "support@settlemint.com"
+ },
+ "files": ["dist"],
+ "exports": {
+ "./package.json": "./package.json",
+ ".": {
+ "import": {
+ "types": "./dist/index.d.ts",
+ "default": "./dist/index.js"
+ },
+ "require": {
+ "types": "./dist/index.d.cts",
+ "default": "./dist/index.cjs"
+ }
+ }
+ },
+ "scripts": {
+ "build": "tsup src/index.ts --format cjs,esm --dts",
+ "dev": "tsup src/index.ts --format cjs,esm --dts --watch",
+ "packcheck": "attw --pack ."
+ },
+ "devDependencies": {
+ "tsup": "8.2.4"
+ },
+ "dependencies": {
+ "cosmiconfig": "^9.0.0",
+ "dotenv": "16.4.5",
+ "ts-deepmerge": "^7.0.1",
+ "zod": "^3.23.8"
+ },
+ "peerDependencies": {}
+}
diff --git a/packages/cli/src/lib/config.ts b/packages/config/src/config.ts
similarity index 94%
rename from packages/cli/src/lib/config.ts
rename to packages/config/src/config.ts
index 9c6fe1f08..04ab3b522 100644
--- a/packages/cli/src/lib/config.ts
+++ b/packages/config/src/config.ts
@@ -4,7 +4,6 @@ import { readFileSync, writeFileSync } from "node:fs";
import path from "node:path";
import { merge } from "ts-deepmerge";
import { z } from "zod";
-import { printCancel } from "./cli-message";
import { findProjectRoot } from "./path";
/**
@@ -92,14 +91,8 @@ async function parseConfig(): Promise {
if (!result) {
return undefined;
}
- try {
- // Attempt to parse and validate the configuration
- return ConfigSchema.parse(result.config);
- } catch (e) {
- // If parsing fails, print a message and return undefined
- printCancel("Configuration file does not match the expected format. Starting fresh!");
- return undefined;
- }
+ // Attempt to parse and validate the configuration
+ return ConfigSchema.parse(result.config);
}
/**
diff --git a/packages/cli/src/lib/framework.ts b/packages/config/src/framework.ts
similarity index 100%
rename from packages/cli/src/lib/framework.ts
rename to packages/config/src/framework.ts
diff --git a/packages/config/src/index.ts b/packages/config/src/index.ts
new file mode 100644
index 000000000..0e29f7b12
--- /dev/null
+++ b/packages/config/src/index.ts
@@ -0,0 +1,3 @@
+export * from "./config";
+export * from "./framework";
+export * from "./path";
diff --git a/packages/cli/src/lib/path.ts b/packages/config/src/path.ts
similarity index 100%
rename from packages/cli/src/lib/path.ts
rename to packages/config/src/path.ts
diff --git a/packages/config/tsup.config.ts b/packages/config/tsup.config.ts
new file mode 100644
index 000000000..732899ebb
--- /dev/null
+++ b/packages/config/tsup.config.ts
@@ -0,0 +1,12 @@
+import { defineConfig } from "tsup";
+
+export default defineConfig(() => {
+ return {
+ minify: true,
+ entry: ["src/index.ts"],
+ sourcemap: true,
+ clean: true,
+ treeshake: true,
+ splitting: false,
+ };
+});
diff --git a/packages/next/package.json b/packages/next/package.json
index 743912f38..bf03b4f2a 100644
--- a/packages/next/package.json
+++ b/packages/next/package.json
@@ -41,10 +41,14 @@
"packcheck": "attw --pack ."
},
"dependencies": {
- "@settlemint/btp-sdk-react": "workspace:*"
+ "@settlemint/btp-sdk-react": "workspace:*",
+ "@settlemint/btp-sdk-cli": "workspace:*"
},
"devDependencies": {
- "tsup": "8.2.4"
+ "tsup": "8.2.4",
+ "next": "14.2.5"
},
- "peerDependencies": {}
+ "peerDependencies": {
+ "next": "^14 || ^15"
+ }
}
diff --git a/packages/next/src/config/with-btp.ts b/packages/next/src/config/with-btp.ts
new file mode 100644
index 000000000..838726ce2
--- /dev/null
+++ b/packages/next/src/config/with-btp.ts
@@ -0,0 +1,21 @@
+import { config } from "@settlemint/btp-sdk-config";
+import type { NextConfig } from "next";
+
+export type WithBTPOptions = {
+ disabled?: boolean;
+};
+
+/**
+ * Modifies the passed in Next.js configuration
+ */
+export async function withBTP(nextConfig: C, { disabled }: WithBTPOptions = {}): Promise {
+ if (disabled) {
+ const cfg = await config();
+
+ return {
+ output: "standalone",
+ ...nextConfig,
+ } as C;
+ }
+ return nextConfig;
+}
From 4359cef6de452aedc94a08aa055c6d193f50962b Mon Sep 17 00:00:00 2001
From: Roderik van der Veer
Date: Tue, 6 Aug 2024 09:17:30 +0200
Subject: [PATCH 2/3] fix
---
packages/config/package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/packages/config/package.json b/packages/config/package.json
index 65cb1d294..ec1d8b35a 100644
--- a/packages/config/package.json
+++ b/packages/config/package.json
@@ -5,7 +5,7 @@
"module": "./dist/index.mjs",
"types": "./dist/index.d.ts",
"type": "module",
- "private": true,
+ "private": false,
"license": "MIT",
"author": {
"name": "SettleMint",
From ab6b122e73f89324a0168e32db705b92e0e98a00 Mon Sep 17 00:00:00 2001
From: Roderik van der Veer
Date: Tue, 6 Aug 2024 09:24:47 +0200
Subject: [PATCH 3/3] add readme
---
packages/config/README.md | 43 +++++++++++++++++++++++++++++++++++++++
1 file changed, 43 insertions(+)
create mode 100644 packages/config/README.md
diff --git a/packages/config/README.md b/packages/config/README.md
new file mode 100644
index 000000000..edd591324
--- /dev/null
+++ b/packages/config/README.md
@@ -0,0 +1,43 @@
+
+
+
SettleMint Blockchain Transformation Platform SDK (Config)
+
+ ✨ https://settlemint.com ✨
+
+ Integrate the SettleMint Blockchain Transformation Platform into your application with ease.
+
+
+
+
+
+
+
+
+
+
+
+
+## Installation
+
+```bash
+# Using npm
+npm install @settlemint/btp-sdk-config
+
+# Using yarn
+yarn add @settlemint/btp-sdk-config
+
+# Using pnpm
+pnpm add @settlemint/btp-sdk-config
+
+# Using bun
+bun add @settlemint/btp-sdk-config
+```
\ No newline at end of file