Skip to content

Commit

Permalink
Merge pull request #228 from logion-network/feature/invited-contributor
Browse files Browse the repository at this point in the history
Invited Contributor / Misc
  • Loading branch information
benoitdevos authored Jan 15, 2024
2 parents dead65b + 43e71cd commit a4cb98a
Show file tree
Hide file tree
Showing 28 changed files with 4,774 additions and 3,026 deletions.
2 changes: 1 addition & 1 deletion packages/client-browser/typedoc.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"name": "Client (Browser)",
"name": "client-browser",
"entryPoints": [
"./src/index.ts"
]
Expand Down
4 changes: 2 additions & 2 deletions packages/client-node/integration/Balance.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Numbers, Currency, CoinBalance, Lgnt } from "@logion/node-api";
import { Numbers, CoinBalance, Lgnt } from "@logion/node-api";
import { BalanceState, waitFor } from "@logion/client";

import { State, REQUESTER_ADDRESS } from "./Utils.js";
Expand All @@ -25,7 +25,7 @@ export async function transfers(state: State) {
});
expect(aliceState.transactions[0].fees.inclusion).toBeGreaterThan(0);
expect(aliceState.transactions[0].fees.storage).toBeUndefined();
expect(aliceState.transactions[0].transferValue).toBe(Currency.toCanonicalAmount(new Numbers.PrefixedNumber("5", Numbers.KILO)).toString());
expect(aliceState.transactions[0].transferValue).toBe(Lgnt.fromPrefixedNumber(new Numbers.PrefixedNumber("5", Numbers.KILO)).toString());

// User transfers to Alice.
const userClient = client.withCurrentAddress(requesterAccount)
Expand Down
4 changes: 2 additions & 2 deletions packages/client-node/integration/Utils.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { buildApiClass, Currency, Numbers, ValidAccountId } from "@logion/node-api";
import { buildApiClass, Lgnt, Numbers, ValidAccountId } from "@logion/node-api";
import { Keyring } from "@polkadot/api";

import {
Expand Down Expand Up @@ -132,7 +132,7 @@ export async function updateConfig(config: Partial<LogionClientConfig>): Promise
}

export async function initRequesterBalance(config: LogionClientConfig, signer: Signer, requester: string): Promise<void> {
await transferTokens(config, signer, ALICE, requester, Currency.toCanonicalAmount(new Numbers.PrefixedNumber("10000", Numbers.NONE)));
await transferTokens(config, signer, ALICE, requester, Lgnt.fromPrefixedNumber(new Numbers.PrefixedNumber("10000", Numbers.NONE)).canonical);
}

async function transferTokens(config: LogionClientConfig, signer: Signer, source: string, destination: string, amount: bigint) {
Expand Down
2 changes: 1 addition & 1 deletion packages/client-node/typedoc.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"name": "Client (Node.JS)",
"name": "client-node",
"entryPoints": [
"./src/index.ts"
]
Expand Down
2 changes: 1 addition & 1 deletion packages/client-react-native-fs/typedoc.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"name": "Client (React Native FS)",
"name": "client-react-native-fs",
"entryPoints": [
"./src/index.ts"
]
Expand Down
2 changes: 1 addition & 1 deletion packages/client/typedoc.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"name": "Client",
"name": "client",
"entryPoints": [
"./src/index.ts"
]
Expand Down
2 changes: 1 addition & 1 deletion packages/crossmint/typedoc.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"name": "Crossmint",
"name": "crossmint",
"entryPoints": [
"./src/index.ts"
]
Expand Down
2 changes: 1 addition & 1 deletion packages/extension/typedoc.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"name": "Extension",
"name": "extension",
"entryPoints": [
"./src/index.ts"
]
Expand Down
30 changes: 30 additions & 0 deletions packages/node-api/integration/IdentityLoc.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
import { setup, ALICE, REQUESTER, signAndSend } from "./Util.js";
import { UUID } from "../src/index.js";

export async function createIdentityLocTest() {
const { requester, alice, api } = await setup();

const createLocExtrinsic = api.polkadot.tx.logionLoc.createPolkadotIdentityLoc(
api.adapters.toLocId(IDENTITY_LOC_ID),
ALICE,
0n,
api.adapters.emptyPalletLogionLocItemsParams(),
);
await signAndSend(requester, createLocExtrinsic);

const closeExtrinsic = api.polkadot.tx.logionLoc.close(
api.adapters.toLocId(IDENTITY_LOC_ID),
null,
true,
);
await signAndSend(alice, closeExtrinsic);

const loc = await api.queries.getLegalOfficerCase(IDENTITY_LOC_ID);
expect(loc?.owner).toBe(ALICE);
expect(loc?.requesterAddress?.address).toBe(REQUESTER);
expect(loc?.requesterAddress?.type).toBe("Polkadot");
expect(loc?.closed).toBe(true);
expect(loc?.locType).toBe("Identity");
}

const IDENTITY_LOC_ID = new UUID("9cecf5ad-f1b3-40de-be62-37b43305bd9d");
81 changes: 81 additions & 0 deletions packages/node-api/integration/InvitedContributors.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
import { UUID, Adapters, Hash, Lgnt } from "../src/index.js";
import { ALICE, INVITED_CONTRIBUTOR, setup, signAndSend, signAndSendBatch } from "./Util.js";

export async function invitedContributors() {
const { api, alice, invitedContributor, requester } = await setup();

const invitedContributorIdentityLocId = new UUID();
const collectionLocId = new UUID();
await signAndSend(alice,
api.polkadot.tx.balances.transferAllowDeath(INVITED_CONTRIBUTOR, Lgnt.from(200).canonical),
);
await signAndSend(invitedContributor,
api.polkadot.tx.logionLoc.createPolkadotIdentityLoc(
invitedContributorIdentityLocId.toDecimalString(),
ALICE,
0,
api.adapters.emptyPalletLogionLocItemsParams(),
),
);
await signAndSend(alice,
api.polkadot.tx.logionLoc.close(
invitedContributorIdentityLocId.toDecimalString(),
null,
false,
),
);
await signAndSendBatch(requester, [
api.polkadot.tx.logionLoc.createCollectionLoc(
collectionLocId.toDecimalString(),
ALICE,
null,
200,
true,
0,
0,
0,
0,
api.adapters.emptyPalletLogionLocItemsParams(),
),
api.polkadot.tx.logionLoc.setInvitedContributorSelection(
collectionLocId.toDecimalString(),
INVITED_CONTRIBUTOR,
true,
),
]);
await signAndSend(alice,
api.polkadot.tx.logionLoc.close(
collectionLocId.toDecimalString(),
null,
false,
),
);

const recordId = "0x5b2ef8140cfcf72237f2182b9f5eb05eb643a26f9a823e5e804d5543976a4fb9";
const recordDescription = Hash.of("Some description");
const recordFileName = Hash.of("File name");
const recordFileContentType = Hash.of("text/plain");
const recordFileSize = "5";
const recordFileHash = Hash.fromHex("0x7d6fd7774f0d87624da6dcf16d0d3d104c3191e771fbe2f39c86aed4b2bf1a0f");
await signAndSend(invitedContributor, api.polkadot.tx.logionLoc.addTokensRecord(
api.adapters.toLocId(collectionLocId),
recordId,
recordDescription.bytes,
api.adapters.newTokensRecordFileVec([
{
name: recordFileName,
contentType: recordFileContentType,
size: recordFileSize,
hash: recordFileHash,
}
]),
));

const record = Adapters.toTokensRecord((await api.polkadot.query.logionLoc.tokensRecordsMap(collectionLocId.toDecimalString(), recordId)).unwrap());
expect(record.description).toEqual(recordDescription);
expect(record.files.length).toBe(1);
expect(record.files[0].name).toEqual(recordFileName);
expect(record.files[0].contentType).toEqual(recordFileContentType);
expect(record.files[0].size).toBe(recordFileSize);
expect(record.files[0].hash).toEqual(recordFileHash);
}
4 changes: 4 additions & 0 deletions packages/node-api/integration/Main.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,11 @@ import {
} from "./TransactionLoc.js";
import { createVote } from "./Vote.js";
import { verifiedIssuers } from "./VerifiedIssuers.js";
import { invitedContributors } from "./InvitedContributors.js";
import { storageFees, legalFees, certificateFees, ensureEnoughFunds } from "./Fees.js";
import { toPalletLogionLocOtherAccountId, toSponsorshipId, toPalletLogionLocMetadataItem, toPalletLogionLocFile, toCollectionItemToken, toCollectionItemFile } from "./Adapters.js";
import { badOriginError, moduleError } from "./Error.js";
import { createIdentityLocTest } from "./IdentityLoc.js";

describe("Logion Node API", () => {

Expand All @@ -44,6 +46,7 @@ describe("Logion Node API", () => {
it("handles properly bad origin error", badOriginError);
it("handles properly pallet error", moduleError);

it("creates identity LOC", createIdentityLocTest);
it("creates transaction LOCs", createTransactionLocTest);

it("adds metadata to transaction LOC (LLO)", addMetadataToTransactionLocTestAsLLO);
Expand All @@ -69,4 +72,5 @@ describe("Logion Node API", () => {
it("provides available regions", getAvailableRegions);

it("supports verified issuers", verifiedIssuers);
it("supports invited contributors", invitedContributors);
});
7 changes: 7 additions & 0 deletions packages/node-api/integration/Util.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ export interface State {
alice: IKeyringPair;
requester: IKeyringPair;
issuer: IKeyringPair;
invitedContributor: IKeyringPair;
}

let state: State;
Expand All @@ -22,13 +23,15 @@ export async function setup(): Promise<State> {
const alice = keyring.addFromUri(ALICE_SEED);
const requester = keyring.addFromUri(REQUESTER_SECRET_SEED);
const issuer = keyring.addFromUri(ISSUER_SECRET_SEED);
const invitedContributor = keyring.addFromUri(INVITED_CONTRIBUTOR_SECRET_SEED);
const api = await buildApiClass("ws://127.0.0.1:9944");
state = {
api,
keyring,
alice,
requester,
issuer,
invitedContributor,
};
}
return state;
Expand All @@ -48,6 +51,10 @@ export const ISSUER = "5HTA8nHHQWdN6XnciaWxjjzCHLoV8d5tME6CqT6KNDypovKU";

const ISSUER_SECRET_SEED = "earth rough predict document divide deliver unable vanish spike alarm exotic spider";

const INVITED_CONTRIBUTOR_SECRET_SEED = "october minimum future canvas range cruise jealous web renew border hover name";

export const INVITED_CONTRIBUTOR = "5F42HAi5kvD6Ao4Ze6UBiZDw7BA4zk62twNYRWAVDq3EhdWH";

export function signAndSend(keypair: IKeyringPair, extrinsic: SubmittableExtrinsic): Promise<ISubmittableResult> {
let unsub: () => void;
return new Promise((resolve, error) => {
Expand Down
4 changes: 2 additions & 2 deletions packages/node-api/integration/VerifiedIssuers.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Currency, UUID, Adapters, Hash } from "../src/index.js";
import { UUID, Adapters, Hash, Lgnt } from "../src/index.js";
import { ALICE, ISSUER, setup, signAndSend, signAndSendBatch, REQUESTER } from "./Util.js";

export async function verifiedIssuers() {
Expand All @@ -7,7 +7,7 @@ export async function verifiedIssuers() {
const issuerIdentityLocId = new UUID();
const collectionLocId = new UUID();
await signAndSend(alice,
api.polkadot.tx.balances.transferAllowDeath(ISSUER, Currency.toCanonicalAmount(Currency.nLgnt(200n))),
api.polkadot.tx.balances.transferAllowDeath(ISSUER, Lgnt.from(200).canonical),
);
await signAndSend(issuer,
api.polkadot.tx.logionLoc.createPolkadotIdentityLoc(
Expand Down
4 changes: 4 additions & 0 deletions packages/node-api/src/interfaces/augment-api-errors.ts
Original file line number Diff line number Diff line change
Expand Up @@ -191,6 +191,10 @@ declare module '@polkadot/api-base/types/errors' {
[key: string]: AugmentedError<ApiType>;
};
logionLoc: {
/**
* The provided Polkadot account has no closed, non-void identity LOC
**/
AccountNotIdentified: AugmentedError<ApiType>;
/**
* Occurs when trying to close an already closed LOC
**/
Expand Down
4 changes: 4 additions & 0 deletions packages/node-api/src/interfaces/augment-api-query.ts
Original file line number Diff line number Diff line change
Expand Up @@ -204,6 +204,10 @@ declare module '@polkadot/api-base/types/storage' {
* Requested LOCs by logion Identity LOC.
**/
identityLocLocsMap: AugmentedQuery<ApiType, (arg: u128 | AnyNumber | Uint8Array) => Observable<Option<Vec<u128>>>, [u128]> & QueryableStorageEntry<ApiType, [u128]>;
/**
* Invited Contributors by LOC
**/
invitedContributorsByLocMap: AugmentedQuery<ApiType, (arg1: u128 | AnyNumber | Uint8Array, arg2: AccountId32 | string | Uint8Array) => Observable<Option<Null>>, [u128, AccountId32]> & QueryableStorageEntry<ApiType, [u128, AccountId32]>;
/**
* All LOCs indexed by ID.
**/
Expand Down
4 changes: 4 additions & 0 deletions packages/node-api/src/interfaces/augment-api-tx.ts
Original file line number Diff line number Diff line change
Expand Up @@ -206,6 +206,10 @@ declare module '@polkadot/api-base/types/submittable' {
* See [`Pallet::nominate_issuer`].
**/
nominateIssuer: AugmentedSubmittable<(issuer: AccountId32 | string | Uint8Array, identityLocId: Compact<u128> | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [AccountId32, Compact<u128>]>;
/**
* See [`Pallet::set_invited_contributor_selection`].
**/
setInvitedContributorSelection: AugmentedSubmittable<(locId: Compact<u128> | AnyNumber | Uint8Array, invitedContributor: AccountId32 | string | Uint8Array, selected: bool | boolean | Uint8Array) => SubmittableExtrinsic<ApiType>, [Compact<u128>, AccountId32, bool]>;
/**
* See [`Pallet::set_issuer_selection`].
**/
Expand Down
9 changes: 7 additions & 2 deletions packages/node-api/src/interfaces/lookup.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1192,7 +1192,12 @@ export default {
close: {
locId: 'Compact<u128>',
seal: 'Option<H256>',
autoAck: 'bool'
autoAck: 'bool',
},
set_invited_contributor_selection: {
locId: 'Compact<u128>',
invitedContributor: 'AccountId32',
selected: 'bool'
}
}
},
Expand Down Expand Up @@ -1583,7 +1588,7 @@ export default {
* Lookup217: pallet_logion_loc::pallet::Error<T>
**/
PalletLogionLocError: {
_enum: ['AlreadyExists', 'NotFound', 'Unauthorized', 'CannotMutate', 'AlreadyClosed', 'LinkedLocNotFound', 'ReplacerLocNotFound', 'AlreadyVoid', 'ReplacerLocAlreadyVoid', 'ReplacerLocAlreadyReplacing', 'CannotMutateVoid', 'UnexpectedRequester', 'ReplacerLocWrongType', 'InvalidSubmitter', 'CollectionHasNoLimit', 'WrongCollectionLoc', 'CollectionItemAlreadyExists', 'CollectionItemTooMuchData', 'CollectionLimitsReached', 'MetadataItemInvalid', 'FileInvalid', 'LocLinkInvalid', 'CannotUpload', 'MustUpload', 'DuplicateFile', 'MissingToken', 'MissingFiles', 'TermsAndConditionsLocNotFound', 'TermsAndConditionsLocNotClosed', 'TermsAndConditionsLocVoid', 'DuplicateLocFile', 'DuplicateLocMetadata', 'DuplicateLocLink', 'TokensRecordTooMuchData', 'TokensRecordAlreadyExists', 'CannotAddRecord', 'InvalidIdentityLoc', 'AlreadyNominated', 'NotNominated', 'CannotSubmit', 'InsufficientFunds', 'AlreadyUsed', 'CannotLinkToSponsorship', 'ItemNotFound', 'ItemAlreadyAcknowledged', 'CannotCloseUnacknowledgedByOwner', 'BadTokenIssuance', 'CannotCloseUnacknowledgedByVerifiedIssuer']
_enum: ['AlreadyExists', 'NotFound', 'Unauthorized', 'CannotMutate', 'AlreadyClosed', 'LinkedLocNotFound', 'ReplacerLocNotFound', 'AlreadyVoid', 'ReplacerLocAlreadyVoid', 'ReplacerLocAlreadyReplacing', 'CannotMutateVoid', 'UnexpectedRequester', 'ReplacerLocWrongType', 'InvalidSubmitter', 'CollectionHasNoLimit', 'WrongCollectionLoc', 'CollectionItemAlreadyExists', 'CollectionItemTooMuchData', 'CollectionLimitsReached', 'MetadataItemInvalid', 'FileInvalid', 'LocLinkInvalid', 'CannotUpload', 'MustUpload', 'DuplicateFile', 'MissingToken', 'MissingFiles', 'TermsAndConditionsLocNotFound', 'TermsAndConditionsLocNotClosed', 'TermsAndConditionsLocVoid', 'DuplicateLocFile', 'DuplicateLocMetadata', 'DuplicateLocLink', 'TokensRecordTooMuchData', 'TokensRecordAlreadyExists', 'CannotAddRecord', 'InvalidIdentityLoc', 'AlreadyNominated', 'NotNominated', 'CannotSubmit', 'InsufficientFunds', 'AlreadyUsed', 'CannotLinkToSponsorship', 'ItemNotFound', 'ItemAlreadyAcknowledged', 'CannotCloseUnacknowledgedByOwner', 'BadTokenIssuance', 'CannotCloseUnacknowledgedByVerifiedIssuer', 'AccountNotIdentified']
},
/**
* Lookup218: pallet_verified_recovery::pallet::Error<T>
Expand Down
11 changes: 9 additions & 2 deletions packages/node-api/src/interfaces/types-lookup.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1273,7 +1273,13 @@ declare module '@polkadot/types/lookup' {
readonly seal: Option<H256>;
readonly autoAck: bool;
} & Struct;
readonly type: 'CreatePolkadotIdentityLoc' | 'CreateLogionIdentityLoc' | 'CreatePolkadotTransactionLoc' | 'CreateLogionTransactionLoc' | 'CreateCollectionLoc' | 'AddMetadata' | 'AddFile' | 'AddLink' | 'MakeVoid' | 'MakeVoidAndReplace' | 'AddCollectionItem' | 'NominateIssuer' | 'DismissIssuer' | 'SetIssuerSelection' | 'AddTokensRecord' | 'CreateOtherIdentityLoc' | 'Sponsor' | 'WithdrawSponsorship' | 'AcknowledgeMetadata' | 'AcknowledgeFile' | 'AcknowledgeLink' | 'Close';
readonly isSetInvitedContributorSelection: boolean;
readonly asSetInvitedContributorSelection: {
readonly locId: Compact<u128>;
readonly invitedContributor: AccountId32;
readonly selected: bool;
} & Struct;
readonly type: 'CreatePolkadotIdentityLoc' | 'CreateLogionIdentityLoc' | 'CreatePolkadotTransactionLoc' | 'CreateLogionTransactionLoc' | 'CreateCollectionLoc' | 'AddMetadata' | 'AddFile' | 'AddLink' | 'MakeVoid' | 'MakeVoidAndReplace' | 'AddCollectionItem' | 'NominateIssuer' | 'DismissIssuer' | 'SetIssuerSelection' | 'AddTokensRecord' | 'CreateOtherIdentityLoc' | 'Sponsor' | 'WithdrawSponsorship' | 'AcknowledgeMetadata' | 'AcknowledgeFile' | 'AcknowledgeLink' | 'Close' | 'SetInvitedContributorSelection';
}

/** @name PalletLogionLocItemsParams (156) */
Expand Down Expand Up @@ -1744,7 +1750,8 @@ declare module '@polkadot/types/lookup' {
readonly isCannotCloseUnacknowledgedByOwner: boolean;
readonly isBadTokenIssuance: boolean;
readonly isCannotCloseUnacknowledgedByVerifiedIssuer: boolean;
readonly type: 'AlreadyExists' | 'NotFound' | 'Unauthorized' | 'CannotMutate' | 'AlreadyClosed' | 'LinkedLocNotFound' | 'ReplacerLocNotFound' | 'AlreadyVoid' | 'ReplacerLocAlreadyVoid' | 'ReplacerLocAlreadyReplacing' | 'CannotMutateVoid' | 'UnexpectedRequester' | 'ReplacerLocWrongType' | 'InvalidSubmitter' | 'CollectionHasNoLimit' | 'WrongCollectionLoc' | 'CollectionItemAlreadyExists' | 'CollectionItemTooMuchData' | 'CollectionLimitsReached' | 'MetadataItemInvalid' | 'FileInvalid' | 'LocLinkInvalid' | 'CannotUpload' | 'MustUpload' | 'DuplicateFile' | 'MissingToken' | 'MissingFiles' | 'TermsAndConditionsLocNotFound' | 'TermsAndConditionsLocNotClosed' | 'TermsAndConditionsLocVoid' | 'DuplicateLocFile' | 'DuplicateLocMetadata' | 'DuplicateLocLink' | 'TokensRecordTooMuchData' | 'TokensRecordAlreadyExists' | 'CannotAddRecord' | 'InvalidIdentityLoc' | 'AlreadyNominated' | 'NotNominated' | 'CannotSubmit' | 'InsufficientFunds' | 'AlreadyUsed' | 'CannotLinkToSponsorship' | 'ItemNotFound' | 'ItemAlreadyAcknowledged' | 'CannotCloseUnacknowledgedByOwner' | 'BadTokenIssuance' | 'CannotCloseUnacknowledgedByVerifiedIssuer';
readonly isAccountNotIdentified: boolean;
readonly type: 'AlreadyExists' | 'NotFound' | 'Unauthorized' | 'CannotMutate' | 'AlreadyClosed' | 'LinkedLocNotFound' | 'ReplacerLocNotFound' | 'AlreadyVoid' | 'ReplacerLocAlreadyVoid' | 'ReplacerLocAlreadyReplacing' | 'CannotMutateVoid' | 'UnexpectedRequester' | 'ReplacerLocWrongType' | 'InvalidSubmitter' | 'CollectionHasNoLimit' | 'WrongCollectionLoc' | 'CollectionItemAlreadyExists' | 'CollectionItemTooMuchData' | 'CollectionLimitsReached' | 'MetadataItemInvalid' | 'FileInvalid' | 'LocLinkInvalid' | 'CannotUpload' | 'MustUpload' | 'DuplicateFile' | 'MissingToken' | 'MissingFiles' | 'TermsAndConditionsLocNotFound' | 'TermsAndConditionsLocNotClosed' | 'TermsAndConditionsLocVoid' | 'DuplicateLocFile' | 'DuplicateLocMetadata' | 'DuplicateLocLink' | 'TokensRecordTooMuchData' | 'TokensRecordAlreadyExists' | 'CannotAddRecord' | 'InvalidIdentityLoc' | 'AlreadyNominated' | 'NotNominated' | 'CannotSubmit' | 'InsufficientFunds' | 'AlreadyUsed' | 'CannotLinkToSponsorship' | 'ItemNotFound' | 'ItemAlreadyAcknowledged' | 'CannotCloseUnacknowledgedByOwner' | 'BadTokenIssuance' | 'CannotCloseUnacknowledgedByVerifiedIssuer' | 'AccountNotIdentified';
}

/** @name PalletVerifiedRecoveryError (218) */
Expand Down
2 changes: 1 addition & 1 deletion packages/node-api/typedoc.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"name": "Node API",
"name": "node-api",
"entryPoints": [
"./src/index.ts"
]
Expand Down
4 changes: 2 additions & 2 deletions website/docs/client/authentication.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,6 @@ const authenticatedClient = await client.authenticate([
```
Now you can use authenticatedClient to interact with the network.

## Authenticate with Polkadot{.js}
## Authenticate with Polkadot\{.js\}

In order to connect a webapp to logion-network, it is recommended to use [polkadot{.js} app](../extension/polkadot-js.md) extension.
In order to connect a webapp to logion-network, it is recommended to use [polkadot\{.js\} app](../extension/polkadot-js.md) extension.
4 changes: 2 additions & 2 deletions website/docs/extension/polkadot-js.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
sidebar_position: 1
---

# polkadot{.js}
# polkadot\{.js\}

![polkadot{.js} extension](/img/polkadot.png)
![polkadot\{.js\} extension](/img/polkadot.png)

This project provides some utility classes enabling the use the
[Polkadot JS extension](https://github.com/polkadot-js/extension#readme)
Expand Down
2 changes: 1 addition & 1 deletion website/docs/intro.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ sidebar_position: 1
Install package [`@logion/extension`](https://www.npmjs.com/package/@logion/extension) with your favorite package manager (recommended).
Note that the extension has [`@logion/client`](https://www.npmjs.com/package/@logion/client) as a dependency.

Alternatively if you don't want to use a Polkadot{.js} and provide your own keyring instead, you can directly use
Alternatively if you don't want to use a Polkadot\{.js\} and provide your own keyring instead, you can directly use
[`@logion/client`](https://www.npmjs.com/package/@logion/client)


Expand Down
Loading

0 comments on commit a4cb98a

Please sign in to comment.