Skip to content
Merged
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
17 changes: 10 additions & 7 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand Down Expand Up @@ -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 }}
Expand Down Expand Up @@ -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 }}` |
Expand Down
6 changes: 2 additions & 4 deletions packages/cli/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -49,19 +49,17 @@
"@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",
"@npmcli/package-json": "5.2.0",
"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",
Expand Down
2 changes: 1 addition & 1 deletion packages/cli/src/commands/codegen.ts
Original file line number Diff line number Diff line change
@@ -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";
Expand Down
3 changes: 1 addition & 2 deletions packages/cli/src/commands/init.ts
Original file line number Diff line number Diff line change
@@ -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 {
Expand All @@ -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";
Expand Down
2 changes: 1 addition & 1 deletion packages/cli/src/lib/gitignore.ts
Original file line number Diff line number Diff line change
@@ -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());
Expand Down
8 changes: 4 additions & 4 deletions packages/cli/src/lib/graphql.ts
Original file line number Diff line number Diff line change
@@ -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;
Expand Down Expand Up @@ -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 });

Expand Down
2 changes: 1 addition & 1 deletion packages/cli/src/lib/package-json.ts
Original file line number Diff line number Diff line change
@@ -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<string, string>, checkVersion = false) {
// Read the package.json file
Expand Down
2 changes: 1 addition & 1 deletion packages/cli/src/lib/rest.ts
Original file line number Diff line number Diff line change
@@ -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.
Expand Down
2 changes: 1 addition & 1 deletion packages/cli/src/lib/tsconfig.ts
Original file line number Diff line number Diff line change
@@ -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());
Expand Down
43 changes: 43 additions & 0 deletions packages/config/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
<p align="center">
<img src="https://github.com/settlemint/btp-sdk/blob/main/logo.svg" width="200px" align="center" alt="SettleMint logo" />
<h1 align="center">SettleMint Blockchain Transformation Platform SDK (Config)</h1>
<p align="center">
✨ <a href="https://settlemint.com">https://settlemint.com</a> ✨
<br/>
Integrate the SettleMint Blockchain Transformation Platform into your application with ease.
</p>
</p>
<br/>
<p align="center">
<a href="https://github.com/settlemint/btp-sdk/actions?query=branch%3Amain"><img src="https://github.com/settlemint/btp-sdk/actions/workflows/build.yml/badge.svg?event=push&branch=main" alt="CI status" /></a>
<a href="https://opensource.org/licenses/MIT" rel="nofollow"><img src="https://img.shields.io/github/license/settlemint/btp-sdk" alt="License"></a>
<a href="https://www.npmjs.com/package/@settlemint/btp-sdk-config" rel="nofollow"><img src="https://img.shields.io/npm/dw/@settlemint/btp-sdk-config" alt="npm"></a>
<a href="https://github.com/settlemint/btp-sdk" rel="nofollow"><img src="https://img.shields.io/github/stars/settlemint/btp-sdk" alt="stars"></a>
</p>

<div align="center">
<a href="https://console.settlemint.com/documentation/">Documentation</a>
<span>&nbsp;&nbsp;•&nbsp;&nbsp;</span>
<a href="https://discord.com/invite/Mt5yqFrey9">Discord</a>
<span>&nbsp;&nbsp;•&nbsp;&nbsp;</span>
<a href="https://www.npmjs.com/package/@settlemint/btp-sdk-next">NPM</a>
<span>&nbsp;&nbsp;•&nbsp;&nbsp;</span>
<a href="https://github.com/settlemint/btp-sdk/issues">Issues</a>
<br />
</div>

## 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
```
53 changes: 53 additions & 0 deletions packages/config/package.json
Original file line number Diff line number Diff line change
@@ -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": false,
"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": {}
}
11 changes: 2 additions & 9 deletions packages/cli/src/lib/config.ts → packages/config/src/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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";

/**
Expand Down Expand Up @@ -92,14 +91,8 @@ async function parseConfig(): Promise<Config | undefined> {
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);
}

/**
Expand Down
File renamed without changes.
3 changes: 3 additions & 0 deletions packages/config/src/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
export * from "./config";
export * from "./framework";
export * from "./path";
File renamed without changes.
12 changes: 12 additions & 0 deletions packages/config/tsup.config.ts
Original file line number Diff line number Diff line change
@@ -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,
};
});
10 changes: 7 additions & 3 deletions packages/next/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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"
}
}
21 changes: 21 additions & 0 deletions packages/next/src/config/with-btp.ts
Original file line number Diff line number Diff line change
@@ -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<C extends NextConfig>(nextConfig: C, { disabled }: WithBTPOptions = {}): Promise<C> {
if (disabled) {
const cfg = await config();

return {
output: "standalone",
...nextConfig,
} as C;
}
return nextConfig;
}