diff --git a/.clang-format b/.clang-format new file mode 100644 index 0000000..0198953 --- /dev/null +++ b/.clang-format @@ -0,0 +1,142 @@ +--- +Language: JavaScript + +# --------------------------- +# general style settings +# --------------------------- +BasedOnStyle: '' # (LLVM,Google,Chromium,Mozilla,WebKit,Microsoft,GNU,InheritParentConfig) +ColumnLimit: 0 # 0: disable column limit +LineEnding: LF # use LF line endings +UseTab: ForContinuationAndIndentation # (Never,ForIndentation,ForContinuationAndIndentation,Always) +TabWidth: 4 # recommended to set this equal to IndentWidth +IndentWidth: 4 # how wide each indent is +ContinuationIndentWidth: 4 # width for a line continuation + +# --------------------------- +# alignment options +# --------------------------- +AlignAfterOpenBracket: Align # (Align,DontAlign,AlwaysBreak,BlockIndent) +AlignArrayOfStructures: Left # (Left,Right,None) +AlignConsecutiveAssignments: None # (None,Consecutive,AcrossEmptyLines,AcrossComments,AcrossEmptyLinesAndComments) +AlignConsecutiveDeclarations: None # (None,Consecutive,AcrossEmptyLines,AcrossComments,AcrossEmptyLinesAndComments) +AlignEscapedNewlines: Left # (DontAlign,Left,LeftWithLastLine,Right) +AlignOperands: Align # (DontAlign,Align,AlignAfterOperator) +AlignTrailingComments: Always # (Leave,Always,Never) + +# --------------------------- +# short constructs on a single line +# --------------------------- +AllowShortBlocksOnASingleLine: Always # (Never,Empty,Always) +AllowShortFunctionsOnASingleLine: All # (None,InlineOnly,Empty,All) +AllowShortLambdasOnASingleLine: All # (None,Empty,Inline,All) +AllowShortIfStatementsOnASingleLine: AllIfsAndElse # (Never,WithoutElse,OnlyFirstIf,AllIfsAndElse) +AllowShortCaseLabelsOnASingleLine: true +AllowShortEnumsOnASingleLine: true +AllowShortLoopsOnASingleLine: true + +# --------------------------- +# break and wrapping options +# --------------------------- +AlwaysBreakBeforeMultilineStrings: true # when defining multi-line strings, linebreak should be inserted +BreakAfterReturnType: Automatic # is decided by PenaltyReturnTypeOnItsOwnLine +BreakBeforeBinaryOperators: None # (None,NonAssignment,All) +BreakBeforeBraces: Attach # (Attach,Linux,Mozilla,Stroustrup,Allman,Whitesmiths,GNU,WebKit,Custom) +BreakInheritanceList: BeforeColon # (BeforeColon,BeforeComma,AfterColon) +BreakConstructorInitializers: BeforeColon # (BeforeColon,BeforeComma,AfterColon) +BreakBeforeTernaryOperators: true +BreakStringLiterals: true + +# --------------------------- +# brace wrapping configuration +# --------------------------- +BraceWrapping: + AfterControlStatement: Never # (Never,MultiLine,Always) + AfterCaseLabel: false + AfterClass: false + AfterEnum: false + AfterFunction: false + AfterNamespace: false + AfterObjCDeclaration: false + AfterStruct: false + AfterUnion: false + AfterExternBlock: false + BeforeCatch: false + BeforeElse: false + BeforeLambdaBody: false + BeforeWhile: false + IndentBraces: false + SplitEmptyFunction: false + SplitEmptyRecord: false + SplitEmptyNamespace: false + +# --------------------------- +# constructor initializer and parameter packing options +# --------------------------- +ConstructorInitializerIndentWidth: 4 +PackConstructorInitializers: BinPack # (Never,BinPack,CurrentLine,NextLine,NextLineOnly) +BinPackParameters: true # use bin-packing for paramter lists +BinPackArguments: false # false: function calls either on one line or one per line + + +# --------------------------- +# additional formatting and sorting details +# --------------------------- +AllowAllArgumentsOnNextLine: false +AllowAllParametersOfDeclarationOnNextLine: false +EmptyLineAfterAccessModifier: Never # (Never,Leave,Always) +EmptyLineBeforeAccessModifier: LogicalBlock # (Never,Leave,LogicalBlock,Always) +ExperimentalAutoDetectBinPacking: false +FixNamespaceComments: true # adds comments at namespace delimiters +MaxEmptyLinesToKeep: 4 # what the maximum amount of empty lines that we're allowed to keep +ReflowComments: true # reflow comment text to match column limits +RemoveBracesLLVM: false # don't automatically remove braces +SeparateDefinitionBlocks: Leave # (Leave,Always.Never) +ShortNamespaceLines: 1 # how many lines a namespaces can be to be regarded "short" +SortIncludes: CaseSensitive # (Never,CaseSensitive,CaseInsensitive) +SortJavaStaticImport: Before # (After,Before) +SortUsingDeclarations: LexicographicNumeric # (Never,Lexicographic,LexicographicNumeric) + +# --------------------------- +# spacing options +# --------------------------- +SpaceAfterCStyleCast: false +SpaceAfterLogicalNot: false +SpaceBeforeAssignmentOperators: true +SpaceBeforeCaseColon: false +SpaceBeforeCtorInitializerColon: true +SpaceBeforeInheritanceColon: true +SpaceBeforeParens: ControlStatements # (ControlStatements,ControlStatementsExceptControlMacros,NonEmptyParentheses,Always,Custom) +SpaceBeforeParensOptions: + AfterControlStatements: true + AfterFunctionDefinitionName: false + AfterFunctionDeclarationName: false + BeforeNonEmptyParentheses: false +SpaceBeforeRangeBasedForLoopColon: true +SpaceInEmptyBlock: true +SpacesInParens: Custom +SpacesInParensOptions: + ExceptDoubleParentheses: false + InConditionalStatements: false + InCStyleCasts: false + Other: false +SpacesBeforeTrailingComments: 1 +SpacesInAngles: Never # (Never,Always,Leave) +SpacesInConditionalStatement: false +SpacesInContainerLiterals: true +SpacesInLineCommentPrefix: + Minimum: 1 + Maximum: 1 +SpacesInParentheses: false +SpacesInSquareBrackets: false +SpaceBeforeSquareBrackets: false +BitFieldColonSpacing: Both # (Both,None,Before,After) + +# --------------------------- +# indentation details +# --------------------------- +IndentAccessModifiers: false +IndentCaseLabels: false +IndentCaseBlocks: false +IndentExternBlock: AfterExternBlock # (AfterExternBlock,NoIndent,Indent) +IndentRequiresClause: false +... diff --git a/.gitignore b/.gitignore index e109b43..2cf9332 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ # unignore specific dotfiles !.gitignore !.editorconfig +!.clang-format !/.github/ # ignore specific files diff --git a/makefile b/makefile index 50bbbc7..6df209d 100644 --- a/makefile +++ b/makefile @@ -19,6 +19,6 @@ out/index.html: web/index.html cp -f $< $@ # compiles / links source code -out/script.js: web/src/*.tsx +out/script.js: web/src/*.ts @mkdir -p $(@D) - npx esbuild web/src/main.tsx $(ESFLAGS) --outfile=$@ + npx esbuild web/src/main.ts $(ESFLAGS) --outfile=$@ diff --git a/web/src/main.ts b/web/src/main.ts new file mode 100644 index 0000000..e06c775 --- /dev/null +++ b/web/src/main.ts @@ -0,0 +1,6 @@ +function main(): number { + return 0; +} + +let c = main(); +if (!!c) console.error(`main returned failure, code: ${c}`); diff --git a/web/src/main.tsx b/web/src/main.tsx deleted file mode 100644 index 5a9fa19..0000000 --- a/web/src/main.tsx +++ /dev/null @@ -1,5 +0,0 @@ -import React from 'react' -import { createRoot } from 'react-dom/client' - -const Main = () =>

Hello, World

-createRoot(document.getElementById("root")!).render(
)