Compare commits
5 Commits
use-flatma
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
d45f1ddeb3
|
|||
| bcc3277cb9 | |||
| 12b7bde74f | |||
| 42d23fa35e | |||
| b6ee25d1dd |
23
readme.md
23
readme.md
@@ -9,7 +9,7 @@ mkdir xo-terminal && cd xo-terminal
|
||||
|
||||
# ----- Start Engine Setup -----
|
||||
# Clone the Engine Repo (Note, this uses harvey's fork of the engine repo to access the cli-test branch)
|
||||
git clone git@gitlab.com:Harvmaster/engine.git
|
||||
git clone https://gitlab.com/Harvmaster/engine.git
|
||||
|
||||
# Move into teh engine directory
|
||||
cd engine
|
||||
@@ -29,7 +29,7 @@ cd ..
|
||||
|
||||
# ----- Start State Setup -----
|
||||
# Clone the State Repo
|
||||
git clone git@gitlab.com:Harvmaster/state.git
|
||||
git clone https://gitlab.com/Harvmaster/state.git
|
||||
|
||||
# Move into the state directory
|
||||
cd state
|
||||
@@ -46,9 +46,26 @@ npm run build
|
||||
# Move back to the top level directory
|
||||
cd ..
|
||||
|
||||
# ----- Start Template Setup ----
|
||||
# Clone the Template repo
|
||||
git clone https://gitlab.com/Harvmaster/templates.git
|
||||
|
||||
# Move into themplates directory
|
||||
cd templates
|
||||
|
||||
# Install deps
|
||||
npm ci
|
||||
|
||||
#build the templates
|
||||
npm run build
|
||||
# ----- End Templates Setup ----
|
||||
|
||||
# Move back to the top level directory
|
||||
cd ..
|
||||
|
||||
# ----- Start CLI Setup -----
|
||||
# Clone the CLI Repo
|
||||
git clone git@git.harvmaster.com:Harvmaster/xo-cli.git
|
||||
git clone https://git.harvmaster.com/Harvmaster/xo-cli.git
|
||||
|
||||
# Move into the cli directory
|
||||
cd xo-cli
|
||||
|
||||
@@ -57,7 +57,7 @@ npx tsx src/index.ts # TUI
|
||||
xo-cli mnemonic create
|
||||
|
||||
# Import an existing mnemonic seed phrase
|
||||
xo-cli mnemonic import page pencil stock planet limb cluster assault speak off joke private pioneer
|
||||
xo-cli mnemonic import oven crop same above under tower promote decrease vocal pretty require slow
|
||||
|
||||
# List mnemonic basenames (use with -m)
|
||||
xo-cli mnemonic list
|
||||
|
||||
@@ -7,9 +7,9 @@ import { z } from "zod";
|
||||
|
||||
/**
|
||||
* Converts the CLI args to a key-value object and return the options object along with the other arguments still in the array.\
|
||||
* eg: `xo-cli mnemonic create page pencil stock planet limb cluster assault speak off joke private pioneer -v -o mnemonic.txt` will return:
|
||||
* eg: `xo-cli mnemonic create oven crop same above under tower promote decrease vocal pretty require slow -v -o mnemonic.txt` will return:
|
||||
* {
|
||||
* args: ["mnemonic", "create", "page", "pencil", "stock", "planet", "limb", "cluster", "assault", "speak", "off", "joke", "private", "pioneer"],
|
||||
* args: ["mnemonic", "create", "oven", "crop", "same", "above", "under", "tower", "promote", "decrease", "vocal", "pretty", "require", "slow"],
|
||||
* options: {
|
||||
* output: "mnemonic.txt",
|
||||
* verbose: "true",
|
||||
|
||||
@@ -510,7 +510,7 @@ export class Invitation extends EventEmitter<InvitationEventMap> {
|
||||
const templates = await this.engine.listImportedTemplates();
|
||||
|
||||
// For each template, we need to create a 2d array of all the outputs
|
||||
const outputs = templates.flatMap(template => {
|
||||
const outputs = templates.map(template => {
|
||||
return Object.keys(template.outputs).map(output => {
|
||||
const templateIdentifier = generateTemplateIdentifier(template);
|
||||
|
||||
@@ -522,7 +522,7 @@ export class Invitation extends EventEmitter<InvitationEventMap> {
|
||||
});
|
||||
|
||||
// then, for each output, we need to get the spendable resources
|
||||
const spendableResources = await Promise.all(outputs.map(output => {
|
||||
const spendableResources = await Promise.all(outputs.flat().map(output => {
|
||||
return this.engine.getSpendableResources(this.data, {
|
||||
templateIdentifier: output.templateIdentifier,
|
||||
outputIdentifier: output.outputIdentifier,
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
*/
|
||||
|
||||
import type { Invitation } from "../services/invitation.js";
|
||||
import type { XOInvitationCommit, XOTemplate } from "@xo-cash/types";
|
||||
import type { XOTemplate } from "@xo-cash/types";
|
||||
|
||||
/**
|
||||
* Color names for invitation states.
|
||||
@@ -249,9 +249,9 @@ export function formatInvitationId(id: string, maxLength: number = 16): string {
|
||||
* @param invitation - The invitation to check
|
||||
* @returns Array of unique entity identifiers
|
||||
*/
|
||||
export function getInvitationParticipants(commits: Array<XOInvitationCommit>): string[] {
|
||||
export function getInvitationParticipants(invitation: Invitation): string[] {
|
||||
const participants = new Set<string>();
|
||||
for (const commit of commits) {
|
||||
for (const commit of invitation.data.commits || []) {
|
||||
if (commit.entityIdentifier) {
|
||||
participants.add(commit.entityIdentifier);
|
||||
}
|
||||
@@ -267,14 +267,9 @@ export function getInvitationParticipants(commits: Array<XOInvitationCommit>): s
|
||||
* @returns True if the user has made at least one commit
|
||||
*/
|
||||
export function isUserParticipant(
|
||||
invitation: Invitation | Array<XOInvitationCommit>,
|
||||
invitation: Invitation,
|
||||
userEntityId: string | null,
|
||||
): boolean {
|
||||
if (!userEntityId) return false;
|
||||
|
||||
if (Array.isArray(invitation)) {
|
||||
return invitation.some(commit => commit.entityIdentifier === userEntityId);
|
||||
}
|
||||
|
||||
return getInvitationParticipants(invitation.data.commits).includes(userEntityId);
|
||||
return getInvitationParticipants(invitation).includes(userEntityId);
|
||||
}
|
||||
|
||||
@@ -19,8 +19,7 @@ import {
|
||||
import { BCHMnemonicURL } from "../../src/utils/bch-mnemonic-url";
|
||||
|
||||
const TEST_SEED =
|
||||
"page pencil stock planet limb cluster assault speak off joke private pioneer";
|
||||
|
||||
"oven crop same above under tower promote decrease vocal pretty require slow";
|
||||
describe("mnemonic utilities", () => {
|
||||
let tempDir: string;
|
||||
|
||||
@@ -54,7 +53,7 @@ describe("mnemonic utilities", () => {
|
||||
test("creates a mnemonic file with auto-generated name", () => {
|
||||
const filename = createMnemonicFile(tempDir, TEST_SEED);
|
||||
|
||||
expect(filename).toMatch(/^mnemonic-page$/);
|
||||
expect(filename).toMatch(/^mnemonic-oven$/);
|
||||
expect(existsSync(path.join(tempDir, filename))).toBe(true);
|
||||
});
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ import { MockRatesService } from "./rates-service";
|
||||
import { RatesService } from "../../../src/services/rates";
|
||||
|
||||
export const DEFAULT_SEED =
|
||||
"page pencil stock planet limb cluster assault speak off joke private pioneer";
|
||||
"oven crop same above under tower promote decrease vocal pretty require slow";
|
||||
|
||||
/**
|
||||
* Options for creating a fake resource (UTXO) in tests.
|
||||
|
||||
Reference in New Issue
Block a user