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
27 changes: 14 additions & 13 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,18 +17,8 @@ permissions:
pull-requests: write # to be able to comment on released pull requests

jobs:
chains:
name: "Release - @kibisis/chains"
uses: ./.github/workflows/publish_release.yml
with:
package_dir: "chains"
package_name: "@kibisis/chains"
secrets:
NPM_TOKEN: ${{ secrets.NPM_PUBLISH_PACKAGES_ACCESS_TOKEN }}

encoding:
name: "Release - @kibisis/encoding"
needs: [chains]
uses: ./.github/workflows/publish_release.yml
with:
package_dir: "encoding"
Expand All @@ -38,7 +28,7 @@ jobs:

icons:
name: "Release - @kibisis/icons"
needs: [chains, encoding]
needs: [encoding]
uses: ./.github/workflows/publish_release.yml
with:
package_dir: "icons"
Expand All @@ -48,18 +38,29 @@ jobs:

utilities:
name: "Release - @kibisis/utilities"
needs: [chains, encoding, icons]
needs: [encoding, icons]
uses: ./.github/workflows/publish_release.yml
with:
package_dir: "utilities"
package_name: "@kibisis/utilities"
secrets:
NPM_TOKEN: ${{ secrets.NPM_PUBLISH_PACKAGES_ACCESS_TOKEN }}

# **MUST** come after [@kibisis/encoding] as it uses them as dependencies
chains:
name: "Release - @kibisis/chains"
needs: [encoding, icons, utilities]
uses: ./.github/workflows/publish_release.yml
with:
package_dir: "chains"
package_name: "@kibisis/chains"
secrets:
NPM_TOKEN: ${{ secrets.NPM_PUBLISH_PACKAGES_ACCESS_TOKEN }}

# **MUST** come after [@kibisis/icons, @kibisis/utilities] as it uses them as dependencies
react:
name: "Release - @kibisis/react"
needs: [chains, encoding, icons, utilities]
needs: [encoding, icons, utilities, chains]
uses: ./.github/workflows/publish_release.yml
with:
package_dir: "react"
Expand Down
9 changes: 8 additions & 1 deletion packages/chains/.lintstagedrc.mjs
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
import { resolve } from 'node:path';

export default (() => {
const packageName = 'chains';

return {
'**/*.{cjs,js,json,mjs,ts}': (filenames) => [`prettier --write ${filenames.join(' ')}`],
'**/*.{cjs,js,json,mjs,ts}': (filenames) => [
`sh -c 'pnpm -F @kibisis/${packageName} run generate:index && git add ${resolve(process.cwd(), 'packages', packageName, 'src', 'index.ts')}'`,
`prettier --write ${filenames.join(' ')}`,
],
};
})();
6 changes: 4 additions & 2 deletions packages/chains/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,8 @@
],
"scripts": {
"build": "vite build",
"build:dependencies": "exit 0",
"build:dependencies": "./scripts/prebuild.sh",
"generate:index": "tsx ./scripts/generate-index.ts",
"lint": "eslint .",
"prettier": "prettier --write \"**/*.{cjs,js,json,mjs,ts}\"",
"test": "vitest run --config vitest.config.ts"
Expand All @@ -39,6 +40,7 @@
"vitest": "catalog:"
},
"dependencies": {
"@stablelib/base64": "catalog:"
"@kibisis/encoding": "workspace:^",
"axios": "^1.10.0"
}
}
40 changes: 40 additions & 0 deletions packages/chains/scripts/generate-index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
import chalk from 'chalk';
import { readdirSync, type Stats, statSync, writeFileSync } from 'node:fs';
import { join, parse, type ParsedPath } from 'node:path';
import * as process from 'node:process';

/**
* Script that creates the index.ts file in the `src/` directory.
*/
function main(): void {
const exports = ['// exports will be generated automatically using: pnpm run generate:index'];
const srcDir = 'src';
let dir: ParsedPath;
let indexFilePath: string;
let stat: Stats;

// get utils
for (const item of readdirSync(srcDir)) {
stat = statSync(join(srcDir, item));

// if it is not a directory, move on
if (!stat.isDirectory()) {
continue;
}

dir = parse(item);

exports.push(`export * from './${dir.name}';`);
}

indexFilePath = join(srcDir, 'index.ts');

// write to index file
writeFileSync(indexFilePath, `${exports.join('\n')}\n`, 'utf-8');

console.log(`${chalk.yellow('[INFO]')}: generated indexes to "./src/index.ts"`);

process.exit(0);
}

main();
18 changes: 18 additions & 0 deletions packages/chains/scripts/prebuild.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
#!/usr/bin/env bash

# Public: Performs pre-build actions such as building dependencies.
#
# Examples
#
# ./bin/prebuild.sh
#
# Returns exit code 0.
function main {
# build workspace dependencies
pnpm -F @kibisis/encoding run build

exit 0
}

# and so, it begins...
main "$@"
47 changes: 47 additions & 0 deletions packages/chains/src/chains/Algorand.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
// constants
import { ALGORAND_CHAIN_LOGO_URI, ALGORAND_CURRENCY_ICON_URI } from '@/constants';

// decorators
import { AVMChain } from '@/decorators';

// enums
import { CAIP002Namespace } from '@/enums';

// types
import type { NetworkConfiguration } from '@/types';

export default class Algorand extends AVMChain {
// public static variables
public static readonly displayName = 'Algorand';
public static readonly iconURI = ALGORAND_CHAIN_LOGO_URI;
public static readonly namespace = CAIP002Namespace.Algorand;
public static readonly nativeCurrency = {
decimals: 6,
iconURI: ALGORAND_CURRENCY_ICON_URI,
name: 'Algo',
symbol: 'ALGO',
};
public static readonly networkConfiguration: NetworkConfiguration<CAIP002Namespace.Algorand> = {
algods: {
default: 0,
nodes: [
{
canonicalName: 'Nodely',
id: 'nodely',
origin: 'https://mainnet-api.4160.nodely.dev',
},
],
},
indexers: {
default: 0,
nodes: [
{
canonicalName: 'Nodely',
id: 'nodely',
origin: 'https://mainnet-idx.4160.nodely.dev',
},
],
},
};
public static readonly testnet = false;
}
47 changes: 47 additions & 0 deletions packages/chains/src/chains/AlgorandBetanet.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
// constants
import { ALGORAND_CHAIN_LOGO_URI, ALGORAND_CURRENCY_ICON_URI } from '@/constants';

// decorators
import { AVMChain } from '@/decorators';

// enums
import { CAIP002Namespace } from '@/enums';

// types
import type { NetworkConfiguration } from '@/types';

export default class AlgorandBetanet extends AVMChain {
// public static variables
public static readonly displayName = 'Algorand Betanet';
public static readonly iconURI = ALGORAND_CHAIN_LOGO_URI;
public static readonly namespace = CAIP002Namespace.Algorand;
public static readonly nativeCurrency = {
decimals: 6,
iconURI: ALGORAND_CURRENCY_ICON_URI,
name: 'Algo',
symbol: 'ALGO',
};
public static readonly networkConfiguration: NetworkConfiguration<CAIP002Namespace.Algorand> = {
algods: {
default: 0,
nodes: [
{
canonicalName: 'Nodely',
id: 'nodely',
origin: 'https://betanet-api.4160.nodely.dev',
},
],
},
indexers: {
default: 0,
nodes: [
{
canonicalName: 'Nodely',
id: 'nodely',
origin: 'https://betanet-idx.4160.nodely.dev',
},
],
},
};
public static readonly testnet = true;
}
47 changes: 47 additions & 0 deletions packages/chains/src/chains/AlgorandFNet.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
// constants
import { ALGORAND_CHAIN_LOGO_URI, ALGORAND_CURRENCY_ICON_URI } from '@/constants';

// decorators
import { AVMChain } from '@/decorators';

// enums
import { CAIP002Namespace } from '@/enums';

// types
import type { NetworkConfiguration } from '@/types';

export default class AlgorandFNet extends AVMChain {
// public static variables
public static readonly displayName = 'Algorand FNet';
public static readonly iconURI = ALGORAND_CHAIN_LOGO_URI;
public static readonly namespace = CAIP002Namespace.Algorand;
public static readonly nativeCurrency = {
decimals: 6,
iconURI: ALGORAND_CURRENCY_ICON_URI,
name: 'Algo',
symbol: 'ALGO',
};
public static readonly networkConfiguration: NetworkConfiguration<CAIP002Namespace.Algorand> = {
algods: {
default: 0,
nodes: [
{
canonicalName: 'Nodely',
id: 'nodely',
origin: 'https://fnet-api.4160.nodely.dev',
},
],
},
indexers: {
default: 0,
nodes: [
{
canonicalName: 'Nodely',
id: 'nodely',
origin: 'https://fnet-idx.4160.nodely.dev',
},
],
},
};
public static readonly testnet = true;
}
47 changes: 47 additions & 0 deletions packages/chains/src/chains/AlgorandTestnet.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
// constants
import { ALGORAND_CHAIN_LOGO_URI, ALGORAND_CURRENCY_ICON_URI } from '@/constants';

// decorators
import { AVMChain } from '@/decorators';

// enums
import { CAIP002Namespace } from '@/enums';

// types
import type { NetworkConfiguration } from '@/types';

export default class AlgorandTestnet extends AVMChain {
// public static variables
public static readonly displayName = 'Algorand Testnet';
public static readonly iconURI = ALGORAND_CHAIN_LOGO_URI;
public static readonly namespace = CAIP002Namespace.Algorand;
public static readonly nativeCurrency = {
decimals: 6,
iconURI: ALGORAND_CURRENCY_ICON_URI,
name: 'Algo',
symbol: 'ALGO',
};
public static readonly networkConfiguration: NetworkConfiguration<CAIP002Namespace.Algorand> = {
algods: {
default: 0,
nodes: [
{
canonicalName: 'Nodely',
id: 'nodely',
origin: 'https://testnet-api.4160.nodely.dev',
},
],
},
indexers: {
default: 0,
nodes: [
{
canonicalName: 'Nodely',
id: 'nodely',
origin: 'https://testnet-idx.4160.nodely.dev',
},
],
},
};
public static readonly testnet = true;
}
47 changes: 47 additions & 0 deletions packages/chains/src/chains/Voi.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
// constants
import { VOI_CHAIN_LOGO_URI, VOI_CURRENCY_ICON_URI } from '@/constants';

// decorators
import { AVMChain } from '@/decorators';

// enums
import { CAIP002Namespace } from '@/enums';

// types
import type { NetworkConfiguration } from '@/types';

export default class Voi extends AVMChain {
// public static variables
public static readonly displayName = 'Voi Network';
public static readonly iconURI = VOI_CHAIN_LOGO_URI;
public static readonly namespace = CAIP002Namespace.AVM;
public static readonly nativeCurrency = {
decimals: 6,
iconURI: VOI_CURRENCY_ICON_URI,
name: 'Voi',
symbol: 'VOI',
};
public static readonly networkConfiguration: NetworkConfiguration<CAIP002Namespace.AVM> = {
algods: {
default: 0,
nodes: [
{
canonicalName: 'Nodely',
id: 'nodely',
origin: 'https://mainnet-api.voi.nodely.dev',
},
],
},
indexers: {
default: 0,
nodes: [
{
canonicalName: 'Nodely',
id: 'nodely',
origin: 'https://mainnet-idx.voi.nodely.dev',
},
],
},
};
public static readonly testnet = false;
}
Loading