Compare commits
1 Commits
feature/re
...
feat/c-hig
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a6be19db6c |
@@ -226,22 +226,6 @@ const HooksEditor = () => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// Hacky way to hide Peek menu
|
|
||||||
editor.onContextMenu((e) => {
|
|
||||||
const host =
|
|
||||||
document.querySelector<HTMLElement>(".shadow-root-host");
|
|
||||||
|
|
||||||
const contextMenuItems =
|
|
||||||
host?.shadowRoot?.querySelectorAll("li.action-item");
|
|
||||||
contextMenuItems?.forEach((k) => {
|
|
||||||
// If menu item contains "Peek" lets hide it
|
|
||||||
if (k.querySelector(".action-label")?.textContent === "Peek") {
|
|
||||||
// @ts-expect-error
|
|
||||||
k["style"].display = "none";
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
validateWritability(editor);
|
validateWritability(editor);
|
||||||
}}
|
}}
|
||||||
theme={theme === "dark" ? "dark" : "light"}
|
theme={theme === "dark" ? "dark" : "light"}
|
||||||
|
|||||||
@@ -59,8 +59,6 @@ export const Input = styled("input", {
|
|||||||
},
|
},
|
||||||
"&:read-only": {
|
"&:read-only": {
|
||||||
backgroundColor: "$mauve2",
|
backgroundColor: "$mauve2",
|
||||||
color: "$text",
|
|
||||||
opacity: 0.8,
|
|
||||||
"&:focus": {
|
"&:focus": {
|
||||||
boxShadow: "inset 0px 0px 0px 1px $colors$mauve7",
|
boxShadow: "inset 0px 0px 0px 1px $colors$mauve7",
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import React, { useCallback, useEffect, useState } from "react";
|
import React, { useState } from "react";
|
||||||
import { Plus, Trash, X } from "phosphor-react";
|
import { Plus, Trash, X } from "phosphor-react";
|
||||||
import Button from "./Button";
|
import Button from "./Button";
|
||||||
import Box from "./Box";
|
import Box from "./Box";
|
||||||
@@ -25,7 +25,6 @@ import type { IAccount } from "../state";
|
|||||||
import { useSnapshot } from "valtio";
|
import { useSnapshot } from "valtio";
|
||||||
import state from "../state";
|
import state from "../state";
|
||||||
import toast from "react-hot-toast";
|
import toast from "react-hot-toast";
|
||||||
import { sha256 } from "../state/actions/deployHook";
|
|
||||||
|
|
||||||
const transactionOptions = Object.keys(tts).map((key) => ({
|
const transactionOptions = Object.keys(tts).map((key) => ({
|
||||||
label: key,
|
label: key,
|
||||||
@@ -37,7 +36,6 @@ export type SetHookData = {
|
|||||||
value: keyof TTS;
|
value: keyof TTS;
|
||||||
label: string;
|
label: string;
|
||||||
}[];
|
}[];
|
||||||
HookNamespace: string;
|
|
||||||
HookParameters: {
|
HookParameters: {
|
||||||
HookParameter: {
|
HookParameter: {
|
||||||
HookParameterName: string;
|
HookParameterName: string;
|
||||||
@@ -59,13 +57,8 @@ export const SetHookDialog: React.FC<{ account: IAccount }> = ({ account }) => {
|
|||||||
register,
|
register,
|
||||||
handleSubmit,
|
handleSubmit,
|
||||||
control,
|
control,
|
||||||
watch,
|
// formState: { errors },
|
||||||
formState: { errors },
|
} = useForm<SetHookData>();
|
||||||
} = useForm<SetHookData>({
|
|
||||||
defaultValues: {
|
|
||||||
HookNamespace: snap.files?.[snap.active]?.name?.split(".")?.[0] || "",
|
|
||||||
},
|
|
||||||
});
|
|
||||||
const { fields, append, remove } = useFieldArray({
|
const { fields, append, remove } = useFieldArray({
|
||||||
control,
|
control,
|
||||||
name: "HookParameters", // unique name for your Field Array
|
name: "HookParameters", // unique name for your Field Array
|
||||||
@@ -78,19 +71,6 @@ export const SetHookDialog: React.FC<{ account: IAccount }> = ({ account }) => {
|
|||||||
// control,
|
// control,
|
||||||
// name: "HookGrants", // unique name for your Field Array
|
// name: "HookGrants", // unique name for your Field Array
|
||||||
// });
|
// });
|
||||||
const [hashedNamespace, setHashedNamespace] = useState("");
|
|
||||||
const namespace = watch(
|
|
||||||
"HookNamespace",
|
|
||||||
snap.files?.[snap.active]?.name?.split(".")?.[0] || ""
|
|
||||||
);
|
|
||||||
const calculateHashedValue = useCallback(async () => {
|
|
||||||
const hashedVal = await sha256(namespace);
|
|
||||||
setHashedNamespace(hashedVal.toUpperCase());
|
|
||||||
}, [namespace]);
|
|
||||||
useEffect(() => {
|
|
||||||
calculateHashedValue();
|
|
||||||
}, [namespace, calculateHashedValue]);
|
|
||||||
|
|
||||||
if (!account) {
|
if (!account) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -109,7 +89,6 @@ export const SetHookDialog: React.FC<{ account: IAccount }> = ({ account }) => {
|
|||||||
}
|
}
|
||||||
toast.error(`Transaction failed! (${res?.engine_result_message})`);
|
toast.error(`Transaction failed! (${res?.engine_result_message})`);
|
||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Dialog open={isSetHookDialogOpen} onOpenChange={setIsSetHookDialogOpen}>
|
<Dialog open={isSetHookDialogOpen} onOpenChange={setIsSetHookDialogOpen}>
|
||||||
<DialogTrigger asChild>
|
<DialogTrigger asChild>
|
||||||
@@ -150,25 +129,6 @@ export const SetHookDialog: React.FC<{ account: IAccount }> = ({ account }) => {
|
|||||||
)}
|
)}
|
||||||
/>
|
/>
|
||||||
</Box>
|
</Box>
|
||||||
<Box css={{ width: "100%" }}>
|
|
||||||
<label>Hook Namespace Seed</label>
|
|
||||||
<Input
|
|
||||||
{...register("HookNamespace", { required: true })}
|
|
||||||
autoComplete={"off"}
|
|
||||||
defaultValue={
|
|
||||||
snap.files?.[snap.active]?.name?.split(".")?.[0] || ""
|
|
||||||
}
|
|
||||||
/>
|
|
||||||
{errors.HookNamespace?.type === "required" && (
|
|
||||||
<Box css={{ display: "inline", color: "$red11" }}>
|
|
||||||
Namespace is required
|
|
||||||
</Box>
|
|
||||||
)}
|
|
||||||
<Box css={{ mt: "$3" }}>
|
|
||||||
<label>Hook Namespace (sha256)</label>
|
|
||||||
<Input readOnly value={hashedNamespace} />
|
|
||||||
</Box>
|
|
||||||
</Box>
|
|
||||||
<Box css={{ width: "100%" }}>
|
<Box css={{ width: "100%" }}>
|
||||||
<label style={{ marginBottom: "10px", display: "block" }}>
|
<label style={{ marginBottom: "10px", display: "block" }}>
|
||||||
Hook parameters
|
Hook parameters
|
||||||
@@ -184,7 +144,7 @@ export const SetHookDialog: React.FC<{ account: IAccount }> = ({ account }) => {
|
|||||||
)}
|
)}
|
||||||
/>
|
/>
|
||||||
<Input
|
<Input
|
||||||
placeholder="Value (hex-quoted)"
|
placeholder="Parameter value"
|
||||||
{...register(
|
{...register(
|
||||||
`HookParameters.${index}.HookParameter.HookParameterValue`
|
`HookParameters.${index}.HookParameter.HookParameterValue`
|
||||||
)}
|
)}
|
||||||
|
|||||||
356
highlight/c.ts
Normal file
356
highlight/c.ts
Normal file
@@ -0,0 +1,356 @@
|
|||||||
|
/*---------------------------------------------------------------------------------------------
|
||||||
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
|
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||||
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
import type { languages } from '../../fillers/monaco-editor-core';
|
||||||
|
|
||||||
|
export const conf: languages.LanguageConfiguration = {
|
||||||
|
comments: {
|
||||||
|
lineComment: '//',
|
||||||
|
blockComment: ['/*', '*/']
|
||||||
|
},
|
||||||
|
brackets: [
|
||||||
|
['{', '}'],
|
||||||
|
['[', ']'],
|
||||||
|
['(', ')']
|
||||||
|
],
|
||||||
|
autoClosingPairs: [
|
||||||
|
{ open: '[', close: ']' },
|
||||||
|
{ open: '{', close: '}' },
|
||||||
|
{ open: '(', close: ')' },
|
||||||
|
{ open: "'", close: "'", notIn: ['string', 'comment'] },
|
||||||
|
{ open: '"', close: '"', notIn: ['string'] }
|
||||||
|
],
|
||||||
|
surroundingPairs: [
|
||||||
|
{ open: '{', close: '}' },
|
||||||
|
{ open: '[', close: ']' },
|
||||||
|
{ open: '(', close: ')' },
|
||||||
|
{ open: '"', close: '"' },
|
||||||
|
{ open: "'", close: "'" }
|
||||||
|
],
|
||||||
|
folding: {
|
||||||
|
markers: {
|
||||||
|
start: new RegExp('^\\s*#pragma\\s+region\\b'),
|
||||||
|
end: new RegExp('^\\s*#pragma\\s+endregion\\b')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
export const language = <languages.IMonarchLanguage>{
|
||||||
|
defaultToken: '',
|
||||||
|
tokenPostfix: '.c',
|
||||||
|
|
||||||
|
brackets: [
|
||||||
|
{ token: 'delimiter.curly', open: '{', close: '}' },
|
||||||
|
{ token: 'delimiter.parenthesis', open: '(', close: ')' },
|
||||||
|
{ token: 'delimiter.square', open: '[', close: ']' },
|
||||||
|
{ token: 'delimiter.angle', open: '<', close: '>' }
|
||||||
|
],
|
||||||
|
|
||||||
|
keywords: [
|
||||||
|
'abstract',
|
||||||
|
'amp',
|
||||||
|
'array',
|
||||||
|
'asm',
|
||||||
|
'auto',
|
||||||
|
'break',
|
||||||
|
'case',
|
||||||
|
'char',
|
||||||
|
'const',
|
||||||
|
'continue',
|
||||||
|
'default',
|
||||||
|
'do',
|
||||||
|
'double',
|
||||||
|
'dynamic_cast',
|
||||||
|
'else',
|
||||||
|
'enum',
|
||||||
|
'extern',
|
||||||
|
'float',
|
||||||
|
'for',
|
||||||
|
'goto',
|
||||||
|
'if',
|
||||||
|
'inline',
|
||||||
|
'int',
|
||||||
|
'long',
|
||||||
|
'register',
|
||||||
|
'restrict',
|
||||||
|
'return',
|
||||||
|
'short',
|
||||||
|
'signed',
|
||||||
|
'sizeof',
|
||||||
|
'static',
|
||||||
|
'struct',
|
||||||
|
'switch',
|
||||||
|
'typedef',
|
||||||
|
'union',
|
||||||
|
'unsigned',
|
||||||
|
'void',
|
||||||
|
'volatile',
|
||||||
|
'wchar_t',
|
||||||
|
'where',
|
||||||
|
'while',
|
||||||
|
|
||||||
|
'__abstract', // reserved word with two underscores
|
||||||
|
'__alignof',
|
||||||
|
'__asm',
|
||||||
|
'__assume',
|
||||||
|
'__based',
|
||||||
|
'__box',
|
||||||
|
'__builtin_alignof',
|
||||||
|
'__cdecl',
|
||||||
|
'__clrcall',
|
||||||
|
'__declspec',
|
||||||
|
'__delegate',
|
||||||
|
'__event',
|
||||||
|
'__except',
|
||||||
|
'__fastcall',
|
||||||
|
'__finally',
|
||||||
|
'__forceinline',
|
||||||
|
'__gc',
|
||||||
|
'__hook',
|
||||||
|
'__identifier',
|
||||||
|
'__if_exists',
|
||||||
|
'__if_not_exists',
|
||||||
|
'__inline',
|
||||||
|
'__int128',
|
||||||
|
'__int16',
|
||||||
|
'__int32',
|
||||||
|
'__int64',
|
||||||
|
'__int8',
|
||||||
|
'__interface',
|
||||||
|
'__leave',
|
||||||
|
'__m128',
|
||||||
|
'__m128d',
|
||||||
|
'__m128i',
|
||||||
|
'__m256',
|
||||||
|
'__m256d',
|
||||||
|
'__m256i',
|
||||||
|
'__m64',
|
||||||
|
'__multiple_inheritance',
|
||||||
|
'__newslot',
|
||||||
|
'__nogc',
|
||||||
|
'__noop',
|
||||||
|
'__nounwind',
|
||||||
|
'__novtordisp',
|
||||||
|
'__pascal',
|
||||||
|
'__pin',
|
||||||
|
'__pragma',
|
||||||
|
'__property',
|
||||||
|
'__ptr32',
|
||||||
|
'__ptr64',
|
||||||
|
'__raise',
|
||||||
|
'__restrict',
|
||||||
|
'__resume',
|
||||||
|
'__sealed',
|
||||||
|
'__single_inheritance',
|
||||||
|
'__stdcall',
|
||||||
|
'__super',
|
||||||
|
'__thiscall',
|
||||||
|
'__try',
|
||||||
|
'__try_cast',
|
||||||
|
'__typeof',
|
||||||
|
'__unaligned',
|
||||||
|
'__unhook',
|
||||||
|
'__uuidof',
|
||||||
|
'__value',
|
||||||
|
'__virtual_inheritance',
|
||||||
|
'__w64',
|
||||||
|
'__wchar_t'
|
||||||
|
],
|
||||||
|
|
||||||
|
operators: [
|
||||||
|
'=',
|
||||||
|
'>',
|
||||||
|
'<',
|
||||||
|
'!',
|
||||||
|
'~',
|
||||||
|
'?',
|
||||||
|
':',
|
||||||
|
'==',
|
||||||
|
'<=',
|
||||||
|
'>=',
|
||||||
|
'!=',
|
||||||
|
'&&',
|
||||||
|
'||',
|
||||||
|
'++',
|
||||||
|
'--',
|
||||||
|
'+',
|
||||||
|
'-',
|
||||||
|
'*',
|
||||||
|
'/',
|
||||||
|
'&',
|
||||||
|
'|',
|
||||||
|
'^',
|
||||||
|
'%',
|
||||||
|
'<<',
|
||||||
|
'>>',
|
||||||
|
'+=',
|
||||||
|
'-=',
|
||||||
|
'*=',
|
||||||
|
'/=',
|
||||||
|
'&=',
|
||||||
|
'|=',
|
||||||
|
'^=',
|
||||||
|
'%=',
|
||||||
|
'<<=',
|
||||||
|
'>>='
|
||||||
|
],
|
||||||
|
|
||||||
|
// we include these common regular expressions
|
||||||
|
symbols: /[=><!~?:&|+\-*\/\^%]+/,
|
||||||
|
escapes: /\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,
|
||||||
|
integersuffix: /([uU](ll|LL|l|L)|(ll|LL|l|L)?[uU]?)/,
|
||||||
|
floatsuffix: /[fFlL]?/,
|
||||||
|
encoding: /u|u8|U|L/,
|
||||||
|
|
||||||
|
// The main tokenizer for our languages
|
||||||
|
tokenizer: {
|
||||||
|
root: [
|
||||||
|
// C++ 11 Raw String
|
||||||
|
[/@encoding?R\"(?:([^ ()\\\t]*))\(/, { token: 'string.raw.begin', next: '@raw.$1' }],
|
||||||
|
|
||||||
|
// identifiers and keywords
|
||||||
|
[
|
||||||
|
/[a-zA-Z_]\w*/,
|
||||||
|
{
|
||||||
|
cases: {
|
||||||
|
'@keywords': { token: 'keyword.$0' },
|
||||||
|
'@default': 'identifier'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
|
||||||
|
// The preprocessor checks must be before whitespace as they check /^\s*#/ which
|
||||||
|
// otherwise fails to match later after other whitespace has been removed.
|
||||||
|
|
||||||
|
// Inclusion
|
||||||
|
[/^\s*#\s*include/, { token: 'keyword.directive.include', next: '@include' }],
|
||||||
|
|
||||||
|
// Preprocessor directive
|
||||||
|
[/^\s*#\s*\w+/, 'keyword.directive'],
|
||||||
|
|
||||||
|
// whitespace
|
||||||
|
{ include: '@whitespace' },
|
||||||
|
|
||||||
|
// [[ attributes ]].
|
||||||
|
[/\[\s*\[/, { token: 'annotation', next: '@annotation' }],
|
||||||
|
// delimiters and operators
|
||||||
|
[/[{}()\[\]]/, '@brackets'],
|
||||||
|
[/[<>](?!@symbols)/, '@brackets'],
|
||||||
|
[
|
||||||
|
/@symbols/,
|
||||||
|
{
|
||||||
|
cases: {
|
||||||
|
'@operators': 'delimiter',
|
||||||
|
'@default': ''
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
|
||||||
|
// numbers
|
||||||
|
[/\d*\d+[eE]([\-+]?\d+)?(@floatsuffix)/, 'number.float'],
|
||||||
|
[/\d*\.\d+([eE][\-+]?\d+)?(@floatsuffix)/, 'number.float'],
|
||||||
|
[/0[xX][0-9a-fA-F']*[0-9a-fA-F](@integersuffix)/, 'number.hex'],
|
||||||
|
[/0[0-7']*[0-7](@integersuffix)/, 'number.octal'],
|
||||||
|
[/0[bB][0-1']*[0-1](@integersuffix)/, 'number.binary'],
|
||||||
|
[/\d[\d']*\d(@integersuffix)/, 'number'],
|
||||||
|
[/\d(@integersuffix)/, 'number'],
|
||||||
|
|
||||||
|
// delimiter: after number because of .\d floats
|
||||||
|
[/[;,.]/, 'delimiter'],
|
||||||
|
|
||||||
|
// strings
|
||||||
|
[/"([^"\\]|\\.)*$/, 'string.invalid'], // non-teminated string
|
||||||
|
[/"/, 'string', '@string'],
|
||||||
|
|
||||||
|
// characters
|
||||||
|
[/'[^\\']'/, 'string'],
|
||||||
|
[/(')(@escapes)(')/, ['string', 'string.escape', 'string']],
|
||||||
|
[/'/, 'string.invalid']
|
||||||
|
],
|
||||||
|
|
||||||
|
whitespace: [
|
||||||
|
[/[ \t\r\n]+/, ''],
|
||||||
|
[/\/\*\*(?!\/)/, 'comment.doc', '@doccomment'],
|
||||||
|
[/\/\*/, 'comment', '@comment'],
|
||||||
|
[/\/\/.*\\$/, 'comment', '@linecomment'],
|
||||||
|
[/\/\/.*$/, 'comment']
|
||||||
|
],
|
||||||
|
|
||||||
|
comment: [
|
||||||
|
[/[^\/*]+/, 'comment'],
|
||||||
|
[/\*\//, 'comment', '@pop'],
|
||||||
|
[/[\/*]/, 'comment']
|
||||||
|
],
|
||||||
|
|
||||||
|
//For use with continuous line comments
|
||||||
|
linecomment: [
|
||||||
|
[/.*[^\\]$/, 'comment', '@pop'],
|
||||||
|
[/[^]+/, 'comment']
|
||||||
|
],
|
||||||
|
|
||||||
|
//Identical copy of comment above, except for the addition of .doc
|
||||||
|
doccomment: [
|
||||||
|
[/[^\/*]+/, 'comment.doc'],
|
||||||
|
[/\*\//, 'comment.doc', '@pop'],
|
||||||
|
[/[\/*]/, 'comment.doc']
|
||||||
|
],
|
||||||
|
|
||||||
|
string: [
|
||||||
|
[/[^\\"]+/, 'string'],
|
||||||
|
[/@escapes/, 'string.escape'],
|
||||||
|
[/\\./, 'string.escape.invalid'],
|
||||||
|
[/"/, 'string', '@pop']
|
||||||
|
],
|
||||||
|
|
||||||
|
raw: [
|
||||||
|
[
|
||||||
|
/(.*)(\))(?:([^ ()\\\t"]*))(\")/,
|
||||||
|
{
|
||||||
|
cases: {
|
||||||
|
'$3==$S2': [
|
||||||
|
'string.raw',
|
||||||
|
'string.raw.end',
|
||||||
|
'string.raw.end',
|
||||||
|
{ token: 'string.raw.end', next: '@pop' }
|
||||||
|
],
|
||||||
|
'@default': ['string.raw', 'string.raw', 'string.raw', 'string.raw']
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[/.*/, 'string.raw']
|
||||||
|
],
|
||||||
|
|
||||||
|
annotation: [
|
||||||
|
{ include: '@whitespace' },
|
||||||
|
[/[a-zA-Z0-9_]+/, 'annotation'],
|
||||||
|
[/[,:]/, 'delimiter'],
|
||||||
|
[/[()]/, '@brackets'],
|
||||||
|
[/\]\s*\]/, { token: 'annotation', next: '@pop' }]
|
||||||
|
],
|
||||||
|
|
||||||
|
include: [
|
||||||
|
[
|
||||||
|
/(\s*)(<)([^<>]*)(>)/,
|
||||||
|
[
|
||||||
|
'',
|
||||||
|
'keyword.directive.include.begin',
|
||||||
|
|
||||||
|
|
||||||
|
'string.include.identifier',
|
||||||
|
{ token: 'keyword.directive.include.end', next: '@pop' }
|
||||||
|
]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
/(\s*)(")([^"]*)(")/,
|
||||||
|
[
|
||||||
|
'',
|
||||||
|
'keyword.directive.include.begin',
|
||||||
|
'string.include.identifier',
|
||||||
|
{ token: 'keyword.directive.include.end', next: '@pop' }
|
||||||
|
]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
};
|
||||||
@@ -12,7 +12,7 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@codingame/monaco-jsonrpc": "^0.3.1",
|
"@codingame/monaco-jsonrpc": "^0.3.1",
|
||||||
"@codingame/monaco-languageclient": "^0.17.0",
|
"@codingame/monaco-languageclient": "^0.17.0",
|
||||||
"@monaco-editor/react": "^4.4.1",
|
"@monaco-editor/react": "^4.3.1",
|
||||||
"@octokit/core": "^3.5.1",
|
"@octokit/core": "^3.5.1",
|
||||||
"@radix-ui/colors": "^0.1.7",
|
"@radix-ui/colors": "^0.1.7",
|
||||||
"@radix-ui/react-alert-dialog": "^0.1.1",
|
"@radix-ui/react-alert-dialog": "^0.1.1",
|
||||||
@@ -29,10 +29,10 @@
|
|||||||
"jszip": "^3.7.1",
|
"jszip": "^3.7.1",
|
||||||
"lodash.uniqby": "^4.7.0",
|
"lodash.uniqby": "^4.7.0",
|
||||||
"lodash.xor": "^4.5.0",
|
"lodash.xor": "^4.5.0",
|
||||||
"monaco-editor": "^0.33.0",
|
"monaco-editor": "^0.30.1",
|
||||||
"next": "^12.0.4",
|
"next": "^12.0.4",
|
||||||
"next-auth": "^4.0.0-beta.5",
|
"next-auth": "^4.0.0-beta.5",
|
||||||
"next-themes": "^0.1.1",
|
"next-themes": "^0.0.15",
|
||||||
"normalize-url": "^7.0.2",
|
"normalize-url": "^7.0.2",
|
||||||
"octokit": "^1.7.0",
|
"octokit": "^1.7.0",
|
||||||
"pako": "^2.0.4",
|
"pako": "^2.0.4",
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ import en from "javascript-time-ago/locale/en.json";
|
|||||||
import { useSnapshot } from "valtio";
|
import { useSnapshot } from "valtio";
|
||||||
|
|
||||||
TimeAgo.setDefaultLocale(en.locale);
|
TimeAgo.setDefaultLocale(en.locale);
|
||||||
TimeAgo.addLocale(en);
|
TimeAgo.addLocale(en)
|
||||||
|
|
||||||
function MyApp({ Component, pageProps: { session, ...pageProps } }: AppProps) {
|
function MyApp({ Component, pageProps: { session, ...pageProps } }: AppProps) {
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import state, { IAccount } from "../index";
|
|||||||
import calculateHookOn, { TTS } from "../../utils/hookOnCalculator";
|
import calculateHookOn, { TTS } from "../../utils/hookOnCalculator";
|
||||||
import { SetHookData } from "../../components/SetHookDialog";
|
import { SetHookData } from "../../components/SetHookDialog";
|
||||||
|
|
||||||
export const sha256 = async (string: string) => {
|
const hash = async (string: string) => {
|
||||||
const utf8 = new TextEncoder().encode(string);
|
const utf8 = new TextEncoder().encode(string);
|
||||||
const hashBuffer = await crypto.subtle.digest('SHA-256', utf8);
|
const hashBuffer = await crypto.subtle.digest('SHA-256', utf8);
|
||||||
const hashArray = Array.from(new Uint8Array(hashBuffer));
|
const hashArray = Array.from(new Uint8Array(hashBuffer));
|
||||||
@@ -66,10 +66,12 @@ export const deployHook = async (account: IAccount & { name?: string }, data: Se
|
|||||||
if (!state.client) {
|
if (!state.client) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const HookNamespace = (await sha256(data.HookNamespace)).toUpperCase();
|
const HookNamespace = await hash(arrayBufferToHex(
|
||||||
|
state.files?.[state.active]?.compiledContent
|
||||||
|
).toUpperCase());
|
||||||
const hookOnValues: (keyof TTS)[] = data.Invoke.map(tt => tt.value);
|
const hookOnValues: (keyof TTS)[] = data.Invoke.map(tt => tt.value);
|
||||||
const { HookParameters } = data;
|
const { HookParameters } = data;
|
||||||
const filteredHookParameters = HookParameters.filter(hp => hp.HookParameter.HookParameterName && hp.HookParameter.HookParameterValue)?.map(aa => ({ HookParameter: { HookParameterName: toHex(aa.HookParameter.HookParameterName || ''), HookParameterValue: aa.HookParameter.HookParameterValue || '' } }));
|
const filteredHookParameters = HookParameters.filter(hp => hp.HookParameter.HookParameterName && hp.HookParameter.HookParameterValue)?.map(aa => ({ HookParameter: { HookParameterName: toHex(aa.HookParameter.HookParameterName || ''), HookParameterValue: toHex(aa.HookParameter.HookParameterValue || '') } }));
|
||||||
// const filteredHookGrants = HookGrants.filter(hg => hg.HookGrant.Authorize || hg.HookGrant.HookHash).map(hg => {
|
// const filteredHookGrants = HookGrants.filter(hg => hg.HookGrant.Authorize || hg.HookGrant.HookHash).map(hg => {
|
||||||
// return {
|
// return {
|
||||||
// HookGrant: {
|
// HookGrant: {
|
||||||
|
|||||||
@@ -28,19 +28,18 @@ export const fetchFiles = (gistId: string) => {
|
|||||||
const resHeader = await fetch(`${process.env.NEXT_PUBLIC_COMPILE_API_BASE_URL}/api/header-files`);
|
const resHeader = await fetch(`${process.env.NEXT_PUBLIC_COMPILE_API_BASE_URL}/api/header-files`);
|
||||||
if (resHeader.ok) {
|
if (resHeader.ok) {
|
||||||
resHeaderJson = await resHeader.json();
|
resHeaderJson = await resHeader.json();
|
||||||
const files = {
|
|
||||||
...res.data.files,
|
|
||||||
'hookapi.h': res.data.files?.['hookapi.h'] || { filename: 'hookapi.h', content: resHeaderJson.hookapi, language: 'C' },
|
|
||||||
'hookmacro.h': res.data.files?.['hookmacro.h'] || { filename: 'hookmacro.h', content: resHeaderJson.hookmacro, language: 'C' },
|
|
||||||
'sfcodes.h': res.data.files?.['sfcodes.h'] || { filename: 'sfcodes.h', content: resHeaderJson.sfcodes, language: 'C' },
|
|
||||||
};
|
|
||||||
res.data.files = files;
|
|
||||||
}
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.log(err)
|
console.log(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const files = {
|
||||||
|
...res.data.files,
|
||||||
|
'hookapi.h': res.data.files?.['hookapi.h'] || { filename: 'hookapi.h', content: resHeaderJson.hookapi, language: 'C' },
|
||||||
|
'hookmacro.h': res.data.files?.['hookmacro.h'] || { filename: 'hookmacro.h', content: resHeaderJson.hookmacro, language: 'C' },
|
||||||
|
'sfcodes.h': res.data.files?.['sfcodes.h'] || { filename: 'sfcodes.h', content: resHeaderJson.sfcodes, language: 'C' },
|
||||||
|
};
|
||||||
|
res.data.files = files;
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
// If you want to load templates from GIST instad, uncomment the code below and comment the code above.
|
// If you want to load templates from GIST instad, uncomment the code below and comment the code above.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import toast from "react-hot-toast";
|
import toast from "react-hot-toast";
|
||||||
import { derive, XRPL_Account } from "xrpl-accountlib";
|
import { derive } from "xrpl-accountlib";
|
||||||
|
|
||||||
import state from '../index';
|
import state from '../index';
|
||||||
import { names } from './addFaucetAccount';
|
import { names } from './addFaucetAccount';
|
||||||
@@ -12,18 +12,8 @@ export const importAccount = (secret: string) => {
|
|||||||
if (state.accounts.find((acc) => acc.secret === secret)) {
|
if (state.accounts.find((acc) => acc.secret === secret)) {
|
||||||
return toast.error("Account already added!");
|
return toast.error("Account already added!");
|
||||||
}
|
}
|
||||||
let account: XRPL_Account | null = null;
|
const account = derive.familySeed(secret);
|
||||||
try {
|
if (!account.secret.familySeed) {
|
||||||
account = derive.familySeed(secret);
|
|
||||||
} catch (err: any) {
|
|
||||||
if (err?.message) {
|
|
||||||
toast.error(err.message)
|
|
||||||
} else {
|
|
||||||
toast.error('Error occured while importing account')
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (!account || !account.secret.familySeed) {
|
|
||||||
return toast.error(`Couldn't create account!`);
|
return toast.error(`Couldn't create account!`);
|
||||||
}
|
}
|
||||||
state.accounts.push({
|
state.accounts.push({
|
||||||
|
|||||||
34
yarn.lock
34
yarn.lock
@@ -202,19 +202,19 @@
|
|||||||
resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45"
|
resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45"
|
||||||
integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==
|
integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==
|
||||||
|
|
||||||
"@monaco-editor/loader@^1.3.0":
|
"@monaco-editor/loader@^1.2.0":
|
||||||
version "1.3.0"
|
version "1.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/@monaco-editor/loader/-/loader-1.3.0.tgz#659fbaf1d612ea67b2a0519a18612d1c4813e444"
|
resolved "https://registry.yarnpkg.com/@monaco-editor/loader/-/loader-1.2.0.tgz#373fad69973384624e3d9b60eefd786461a76acd"
|
||||||
integrity sha512-N3mGq1ktC3zh7WUx3NGO+PSDdNq9Vspk/41rEmRdrCqV9vNbBTRzAOplmUpNQsi+hmTs++ERMBobMERb8Kb+3g==
|
integrity sha512-cJVCG/T/KxXgzYnjKqyAgsKDbH9mGLjcXxN6AmwumBwa2rVFkwvGcUj1RJtD0ko4XqLqJxwqsN/Z/KURB5f1OQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
state-local "^1.0.6"
|
state-local "^1.0.6"
|
||||||
|
|
||||||
"@monaco-editor/react@^4.4.1":
|
"@monaco-editor/react@^4.3.1":
|
||||||
version "4.4.1"
|
version "4.3.1"
|
||||||
resolved "https://registry.yarnpkg.com/@monaco-editor/react/-/react-4.4.1.tgz#2e2b9b369f3082b0e14f47cdbe35658fd56c7c7d"
|
resolved "https://registry.yarnpkg.com/@monaco-editor/react/-/react-4.3.1.tgz#d65bcbf174c39b6d4e7fec43d0cddda82b70a12a"
|
||||||
integrity sha512-95E/XPC4dbm/7qdkhSsU/a1kRgcn2PYhRTVIc+/cixWCZrwRURW1DRPaIZ2lOawBJ6kAOLywxuD4A4UmbT0ZIw==
|
integrity sha512-f+0BK1PP/W5I50hHHmwf11+Ea92E5H1VZXs+wvKplWUWOfyMa1VVwqkJrXjRvbcqHL+XdIGYWhWNdi4McEvnZg==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@monaco-editor/loader" "^1.3.0"
|
"@monaco-editor/loader" "^1.2.0"
|
||||||
prop-types "^15.7.2"
|
prop-types "^15.7.2"
|
||||||
|
|
||||||
"@next/env@12.1.0":
|
"@next/env@12.1.0":
|
||||||
@@ -2867,10 +2867,10 @@ minimist@^1.2.0, minimist@^1.2.5:
|
|||||||
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
|
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
|
||||||
integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
|
integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
|
||||||
|
|
||||||
monaco-editor@^0.33.0:
|
monaco-editor@^0.30.1:
|
||||||
version "0.33.0"
|
version "0.30.1"
|
||||||
resolved "https://registry.yarnpkg.com/monaco-editor/-/monaco-editor-0.33.0.tgz#842e244f3750a2482f8a29c676b5684e75ff34af"
|
resolved "https://registry.yarnpkg.com/monaco-editor/-/monaco-editor-0.30.1.tgz#47f8d18a0aa2264fc5654581741ab8d7bec01689"
|
||||||
integrity sha512-VcRWPSLIUEgQJQIE0pVT8FcGBIgFoxz7jtqctE+IiCxWugD0DwgyQBcZBhdSrdMC84eumoqMZsGl2GTreOzwqw==
|
integrity sha512-B/y4+b2O5G2gjuxIFtCE2EkM17R2NM7/3F8x0qcPsqy4V83bitJTIO4TIeZpYlzu/xy6INiY/+84BEm6+7Cmzg==
|
||||||
|
|
||||||
ms@2.0.0:
|
ms@2.0.0:
|
||||||
version "2.0.0"
|
version "2.0.0"
|
||||||
@@ -2917,10 +2917,10 @@ next-auth@^4.0.0-beta.5:
|
|||||||
preact-render-to-string "^5.1.19"
|
preact-render-to-string "^5.1.19"
|
||||||
uuid "^8.3.2"
|
uuid "^8.3.2"
|
||||||
|
|
||||||
next-themes@^0.1.1:
|
next-themes@^0.0.15:
|
||||||
version "0.1.1"
|
version "0.0.15"
|
||||||
resolved "https://registry.yarnpkg.com/next-themes/-/next-themes-0.1.1.tgz#122113a458bf1d1be5ffed66778ab924c106f82a"
|
resolved "https://registry.yarnpkg.com/next-themes/-/next-themes-0.0.15.tgz#ab0cee69cd763b77d41211f631e108beab39bf7d"
|
||||||
integrity sha512-Iqxt6rhS/KfK/iHJ0tfFjTcdLEAI0AgwFuAFrMwLOPK5e+MI3I+fzyvBoS+VaOS+NldUiazurhgwYhrfV0VXsQ==
|
integrity sha512-LTmtqYi03c4gMTJmWwVK9XkHL7h0/+XrtR970Ujvtu3s0kZNeJN24aJsi4rkZOI8i19+qq6f8j+8Duwy5jqcrQ==
|
||||||
|
|
||||||
next-tick@^1.1.0:
|
next-tick@^1.1.0:
|
||||||
version "1.1.0"
|
version "1.1.0"
|
||||||
|
|||||||
Reference in New Issue
Block a user