├── .editorconfig ├── .git-blame-ignore-revs ├── .gitattributes ├── .github ├── FUNDING.yml ├── ISSUE_TEMPLATE │ ├── bug_report.md │ ├── config.yml │ └── feature_request.md ├── dependabot.yml └── workflows │ ├── build.yml │ ├── pr.yml │ └── release.yml ├── .gitignore ├── CREDITS.txt ├── Directory.Build.props ├── Directory.Packages.props ├── Jint.AotExample ├── Jint.AotExample.csproj └── Program.cs ├── Jint.Benchmark ├── ArrayBenchmark.cs ├── ArrayStressBenchmark.cs ├── ClassBenchmark.cs ├── DictionaryBenchmark.cs ├── Directory.Build.props ├── DromaeoBenchmark.cs ├── EngineComparisonBenchmark.cs ├── EngineConstructionBenchmark.cs ├── EvaluationBenchmark.cs ├── ForBenchmark.cs ├── FunctionBenchmark.cs ├── HashBenchmark.cs ├── InteropBenchmark.cs ├── InteropLambdaBenchmark.cs ├── Jint.Benchmark.csproj ├── JsonBenchmark.cs ├── LinqJsBenchmark.cs ├── ListInteropBenchmark.cs ├── MinimalScriptBenchmark.cs ├── ObjectAccessBenchmark.cs ├── Program.cs ├── Properties │ └── AssemblyInfo.cs ├── README.md ├── Scripts │ ├── array-stress.js │ ├── dromaeo-3d-cube-modern.js │ ├── dromaeo-3d-cube.js │ ├── dromaeo-core-eval-modern.js │ ├── dromaeo-core-eval.js │ ├── dromaeo-object-array-modern.js │ ├── dromaeo-object-array.js │ ├── dromaeo-object-regexp-modern.js │ ├── dromaeo-object-regexp.js │ ├── dromaeo-object-string-modern.js │ ├── dromaeo-object-string.js │ ├── dromaeo-string-base64-modern.js │ ├── dromaeo-string-base64.js │ ├── evaluation-modern.js │ ├── evaluation.js │ ├── linq-js.js │ ├── minimal.js │ ├── stopwatch-modern.js │ └── stopwatch.js ├── ShadowRealmBenchmark.cs ├── SingleScriptBenchmark.cs ├── StopwatchBenchmark.cs ├── StringBuilderBenchmark.cs ├── SunSpiderBenchmark.cs ├── TypedArrayBenchmark.cs └── UncacheableExpressionsBenchmark.cs ├── Jint.Repl ├── Jint.Repl.csproj └── Program.cs ├── Jint.Tests.CommonScripts ├── ConcurrencyTest.cs ├── Jint.Tests.CommonScripts.csproj ├── Scripts │ ├── 3d-cube.js │ ├── 3d-morph.js │ ├── 3d-raytrace.js │ ├── access-binary-trees.js │ ├── access-fannkuch.js │ ├── access-nbody.js │ ├── access-nsieve.js │ ├── babel-standalone.js │ ├── bitops-3bit-bits-in-byte.js │ ├── bitops-bits-in-byte.js │ ├── bitops-bitwise-and.js │ ├── bitops-nsieve-bits.js │ ├── controlflow-recursive.js │ ├── crypto-aes.js │ ├── crypto-md5.js │ ├── crypto-sha1.js │ ├── date-format-tofte.js │ ├── date-format-xparb.js │ ├── math-cordic.js │ ├── math-partial-sums.js │ ├── math-spectral-norm.js │ ├── regexp-dna.js │ ├── string-base64.js │ ├── string-fasta.js │ ├── string-tagcloud.js │ ├── string-unpack-code.js │ └── string-validate-input.js └── SunSpiderTests.cs ├── Jint.Tests.PublicInterface ├── AdvancedApiTests.cs ├── ArrayBufferTests.cs ├── CallStackTests.cs ├── ConstraintUsageTests.cs ├── ConstructorTests.cs ├── FunctionToStringTest.cs ├── InteropTests.Dynamic.cs ├── InteropTests.Json.cs ├── InteropTests.NewtonsoftJson.cs ├── InteropTests.SystemTextJson.cs ├── InteropTests.cs ├── JavaScriptExceptionTests.cs ├── Jint.Tests.PublicInterface.csproj ├── MapTests.cs ├── ModuleLoaderTests.cs ├── PublicInterfaceTests.cs ├── RavenApiUsageTests.cs ├── SetTests.cs ├── ShadowRealmTests.cs └── TimeSystemTests.cs ├── Jint.Tests.Test262 ├── .config │ └── dotnet-tools.json ├── Jint.Tests.Test262.csproj ├── README.md ├── State.cs ├── Test262Harness.settings.json ├── Test262ModuleLoader.cs ├── Test262Test.cs ├── Test262_LICENSE └── TestHarness.cs ├── Jint.Tests ├── GlobalSuppressions.cs ├── Jint.Tests.csproj ├── Parser │ ├── JavascriptParserTests.cs │ └── Scripts │ │ ├── JSXTransformer.js │ │ ├── angular.js │ │ ├── backbone.js │ │ ├── handlebars.js │ │ ├── jQuery.js │ │ ├── mootools.js │ │ └── underscore.js ├── ReplaceCulture.cs ├── RunnableInDebugOnlyAttribute.cs ├── Runtime │ ├── ArrayTests.cs │ ├── AsyncTests.cs │ ├── BigIntTests.cs │ ├── CallStackTests.cs │ ├── ClassTests.cs │ ├── ConstTests.cs │ ├── ConstructorSignatureTests.cs │ ├── Converters │ │ ├── EnumsToStringConverter.cs │ │ └── NegateBoolConverter.cs │ ├── DateTests.cs │ ├── Debugger │ │ ├── BreakPointTests.cs │ │ ├── CallStackTests.cs │ │ ├── DebugHandlerTests.cs │ │ ├── EvaluateTests.cs │ │ ├── ScopeTests.cs │ │ ├── StepFlowTests.cs │ │ ├── StepModeTests.cs │ │ └── TestHelpers.cs │ ├── DelegateWrapperTests.cs │ ├── DestructuringTests.cs │ ├── Domain │ │ ├── A.cs │ │ ├── ArrayConverterTestClass.cs │ │ ├── ClassWithField.cs │ │ ├── ClassWithStaticFields.cs │ │ ├── Colors.cs │ │ ├── Company.cs │ │ ├── CustomNamed.cs │ │ ├── Dimensional.cs │ │ ├── Enums.cs │ │ ├── FloatIndexer.cs │ │ ├── HiddenMembers.cs │ │ ├── ICompany.cs │ │ ├── IPerson.cs │ │ ├── IntegerIndexer.cs │ │ ├── JsUuid.cs │ │ ├── OverLoading.cs │ │ ├── Person.cs │ │ ├── Shape.cs │ │ ├── TextDecoder.cs │ │ ├── Thrower.cs │ │ ├── UuidConstructor.cs │ │ ├── UuidConverter.cs │ │ ├── UuidInstance.cs │ │ └── UuidPrototype.cs │ ├── EngineLimitTests.cs │ ├── EngineTests.cs │ ├── ErrorTests.cs │ ├── EvaluationContextTests.cs │ ├── ExecutionConstraintTests.cs │ ├── ExtensionMethods │ │ ├── CustomStringExtensions.cs │ │ ├── DoubleExtensions.cs │ │ ├── ExtensionMethodsTest.cs │ │ ├── FlurlExtensionTest.cs │ │ ├── ObservableExtensions.cs │ │ ├── OverrideStringPrototypeExtensions.cs │ │ └── PersonExtensions.cs │ ├── FunctionTests.cs │ ├── GeneratorTests.cs │ ├── GenericMethodTests.cs │ ├── GlobalTests.cs │ ├── InstanceOfTests.cs │ ├── InteropExplicitTypeTests.cs │ ├── InteropInterfaceExtendTests.cs │ ├── InteropTests.MemberAccess.cs │ ├── InteropTests.TypeReference.cs │ ├── InteropTests.cs │ ├── Interpreter │ │ └── JintFunctionDefinitionTest.cs │ ├── JsValueConversionTests.cs │ ├── JsonSerializerTests.cs │ ├── JsonTests.cs │ ├── MapTests.cs │ ├── MethodAmbiguityTests.cs │ ├── ModuleTests.cs │ ├── Modules │ │ └── DefaultModuleLoaderTests.cs │ ├── NullPropagation.cs │ ├── NumberTests.cs │ ├── ObjectInstanceTests.cs │ ├── OperatorOverloadingTests.cs │ ├── ParserOptionsPropagationTests.cs │ ├── PromiseTests.cs │ ├── PropertyDescriptorTests.cs │ ├── ProxyTests.cs │ ├── RegExpTests.cs │ ├── SamplesTests.cs │ ├── ScriptModulePreparationTests.ScriptPreparation.cs │ ├── Scripts │ │ ├── dir with spaces │ │ │ └── format name.js │ │ ├── dromaeo-string-base64.js │ │ ├── handlebars.js │ │ ├── knockout-3.4.0.js │ │ ├── lodash.min.js │ │ ├── modules │ │ │ ├── format-name.js │ │ │ └── user.js │ │ ├── moment.js │ │ └── prism.js │ ├── SetTests.cs │ ├── StringTests.cs │ ├── StringTetsLithuaniaData.cs │ ├── SwitchTests.cs │ ├── TestClasses │ │ ├── AsyncTestClass.cs │ │ ├── DiscordId.cs │ │ ├── HelloWorld.cs │ │ └── IndexerProperty.cs │ ├── TextTests.cs │ ├── TypeConverterTests.cs │ ├── TypeDescriptorTests.cs │ ├── TypedArrayInteropTests.cs │ ├── UnicodeTests.cs │ ├── UuidTests.cs │ └── WeakSetMapTests.cs └── xunit.runner.json ├── Jint.sln ├── Jint.sln.DotSettings ├── Jint ├── Agent.cs ├── AssemblyInfoExtras.cs ├── AstExtensions.cs ├── Collections │ ├── DictionaryBase.cs │ ├── DictionarySlim.cs │ ├── HybridDictionary.cs │ ├── IEngineDictionary.cs │ ├── ListDictionary.cs │ ├── ObjectTraverseStack.cs │ ├── RefStack.cs │ └── StringDictionarySlim.cs ├── Constraints │ ├── CancellationConstraint.cs │ ├── ConstraintsOptionsExtensions.cs │ ├── MaxStatementsConstraint.cs │ ├── MemoryLimitConstraint.cs │ └── TimeConstraint.cs ├── DeclarationBindingType.cs ├── Engine.Advanced.cs ├── Engine.Ast.cs ├── Engine.Constraints.cs ├── Engine.Defaults.cs ├── Engine.Modules.cs ├── Engine.cs ├── Extensions │ ├── AcornimaExtensions.cs │ ├── Character.cs │ ├── Hash.cs │ ├── JavascriptExtensions.cs │ ├── Polyfills.cs │ ├── ReflectionExtensions.cs │ ├── SearchValues.cs │ └── WebEncoders.cs ├── GlobalUsings.cs ├── HoistingScope.cs ├── IConstraint.cs ├── Jint.csproj ├── Jint.snk ├── JintException.cs ├── JsValueExtensions.cs ├── Key.cs ├── Native │ ├── AggregateError │ │ ├── AggregateErrorConstructor.cs │ │ └── AggregateErrorPrototype.cs │ ├── Array │ │ ├── ArrayConstructor.cs │ │ ├── ArrayInstance.cs │ │ ├── ArrayIteratorPrototype.cs │ │ ├── ArrayOperations.cs │ │ └── ArrayPrototype.cs │ ├── ArrayBuffer │ │ ├── ArrayBufferConstructor.cs │ │ ├── ArrayBufferOrder.cs │ │ └── ArrayBufferPrototype.cs │ ├── AsyncFunction │ │ ├── AsyncFunctionConstructor.cs │ │ └── AsyncFunctionPrototype.cs │ ├── AsyncGenerator │ │ ├── AsyncGeneratorFunctionConstructor.cs │ │ ├── AsyncGeneratorFunctionPrototype.cs │ │ └── AsyncGeneratorPrototype.cs │ ├── Atomics │ │ └── AtomicsInstance.cs │ ├── BigInt │ │ ├── BigIntConstructor.cs │ │ ├── BigIntInstance.cs │ │ └── BigIntPrototype.cs │ ├── Boolean │ │ ├── BooleanConstructor.cs │ │ ├── BooleanInstance.cs │ │ └── BooleanPrototype.cs │ ├── Constructor.cs │ ├── DataView │ │ ├── DataViewConstructor.cs │ │ └── DataViewPrototype.cs │ ├── Date │ │ ├── DateConstructor.cs │ │ ├── DateExtensions.cs │ │ ├── DatePrototype.cs │ │ └── MimeKit.cs │ ├── DatePresentation.cs │ ├── Error │ │ ├── ErrorConstructor.cs │ │ ├── ErrorInstance.cs │ │ └── ErrorPrototype.cs │ ├── FinalizationRegistry │ │ ├── FinalizationRegistryConstructor.cs │ │ ├── FinalizationRegistryInstance.cs │ │ └── FinalizationRegistryPrototype.cs │ ├── Function │ │ ├── BindFunction.cs │ │ ├── ClassDefinition.cs │ │ ├── ConstructorKind.cs │ │ ├── EvalFunction.cs │ │ ├── Function.cs │ │ ├── FunctionConstructor.cs │ │ ├── FunctionInstance.Dynamic.cs │ │ ├── FunctionKind.cs │ │ ├── FunctionPrototype.cs │ │ ├── FunctionThisMode.cs │ │ ├── ScriptFunction.cs │ │ └── ThrowTypeError.cs │ ├── Generator │ │ ├── GeneratorFunctionConstructor.cs │ │ ├── GeneratorFunctionPrototype.cs │ │ ├── GeneratorInstance.cs │ │ ├── GeneratorKind.cs │ │ ├── GeneratorPrototype.cs │ │ └── GeneratorState.cs │ ├── Global │ │ ├── GlobalObject.Properties.cs │ │ └── GlobalObject.cs │ ├── GroupByHelper.cs │ ├── ICallable.cs │ ├── IConstructor.cs │ ├── IJsPrimitive.cs │ ├── Intl │ │ ├── CollatorConstructor.cs │ │ ├── CollatorPrototype.cs │ │ ├── DateTimeFormatConstructor.cs │ │ ├── DateTimeFormatPrototype.cs │ │ ├── DisplayNamesConstructor.cs │ │ ├── DisplayNamesPrototype.cs │ │ ├── IntlInstance.cs │ │ ├── ListFormatConstructor.cs │ │ ├── ListFormatPrototype.cs │ │ ├── LocaleConstructor.cs │ │ ├── LocalePrototype.cs │ │ ├── NumberFormatConstructor.cs │ │ ├── NumberFormatPrototype.cs │ │ ├── PluralRulesConstructor.cs │ │ ├── PluralRulesPrototype.cs │ │ ├── RelativeTimeFormatConstructor.cs │ │ ├── RelativeTimeFormatPrototype.cs │ │ ├── SegmenterConstructor.cs │ │ └── SegmenterPrototype.cs │ ├── Iterator │ │ ├── ArrayIteratorType.cs │ │ ├── IteratorInstance.cs │ │ ├── IteratorProtocol.cs │ │ ├── IteratorPrototype.cs │ │ └── IteratorResult.cs │ ├── JsArguments.cs │ ├── JsArray.cs │ ├── JsArrayBuffer.cs │ ├── JsBigInt.cs │ ├── JsBoolean.cs │ ├── JsDataView.cs │ ├── JsDate.cs │ ├── JsEmpty.cs │ ├── JsError.cs │ ├── JsMap.cs │ ├── JsNull.cs │ ├── JsNumber.cs │ ├── JsObject.cs │ ├── JsPromise.cs │ ├── JsProxy.cs │ ├── JsRegExp.cs │ ├── JsSet.cs │ ├── JsSharedArrayBuffer.cs │ ├── JsString.cs │ ├── JsSymbol.cs │ ├── JsTypedArray.cs │ ├── JsUndefined.cs │ ├── JsValue.Convertible.cs │ ├── JsValue.cs │ ├── JsWeakMap.cs │ ├── JsWeakRef.cs │ ├── JsWeakSet.cs │ ├── Json │ │ ├── JsonInstance.cs │ │ ├── JsonParser.cs │ │ └── JsonSerializer.cs │ ├── Map │ │ ├── MapConstructor.cs │ │ ├── MapIteratorPrototype.cs │ │ └── MapPrototype.cs │ ├── Math │ │ ├── MathInstance.cs │ │ └── SumPrecise.cs │ ├── Number │ │ ├── Dtoa │ │ │ ├── Bignum.cs │ │ │ ├── BignumDtoa.cs │ │ │ ├── CachePowers.cs │ │ │ ├── DiyFp.cs │ │ │ ├── DoubleHelper.cs │ │ │ ├── DtoaBuilder.cs │ │ │ ├── DtoaMode.cs │ │ │ ├── DtoaNumberFormatter.cs │ │ │ ├── FastDtoa.cs │ │ │ └── NumberExtensions.cs │ │ ├── NumberConstructor.cs │ │ ├── NumberInstance.cs │ │ ├── NumberIntlHelper.cs │ │ └── NumberPrototype.cs │ ├── Object │ │ ├── ObjectChangeFlags.cs │ │ ├── ObjectClass.cs │ │ ├── ObjectConstructor.cs │ │ ├── ObjectInstance.Fast.cs │ │ ├── ObjectInstance.Private.cs │ │ ├── ObjectInstance.cs │ │ └── ObjectPrototype.cs │ ├── PrivateName.cs │ ├── Promise │ │ ├── PromiseConstructor.cs │ │ ├── PromiseOperations.cs │ │ ├── PromisePrototype.cs │ │ └── PromiseTypes.cs │ ├── Prototype.cs │ ├── Proxy │ │ └── ProxyConstructor.cs │ ├── Reflect │ │ └── ReflectInstance.cs │ ├── RegExp │ │ ├── RegExpConstructor.cs │ │ ├── RegExpExtensions.cs │ │ ├── RegExpPrototype.cs │ │ └── RegExpStringIteratorPrototype.cs │ ├── SameValueZeroComparer.cs │ ├── Set │ │ ├── SetConstructor.cs │ │ ├── SetIteratorPrototype.cs │ │ └── SetPrototype.cs │ ├── ShadowRealm │ │ ├── ShadowRealm.cs │ │ ├── ShadowRealmConstructor.cs │ │ └── ShadowRealmPrototype.cs │ ├── SharedArrayBuffer │ │ ├── SharedArrayBufferConstructor.cs │ │ └── SharedArrayBufferPrototype.cs │ ├── String │ │ ├── StringConstructor.cs │ │ ├── StringExecutionContext.cs │ │ ├── StringInlHelper.cs │ │ ├── StringInstance.cs │ │ ├── StringIteratorPrototype.cs │ │ └── StringPrototype.cs │ ├── Symbol │ │ ├── GlobalSymbolRegistry.cs │ │ ├── SymbolConstructor.cs │ │ ├── SymbolInstance.cs │ │ └── SymbolPrototype.cs │ ├── TypedArray │ │ ├── IntrinsicTypedArrayConstructor.cs │ │ ├── IntrinsicTypedArrayPrototype.cs │ │ ├── TypeArrayHelper.cs │ │ ├── TypedArrayConstructor.Types.cs │ │ ├── TypedArrayConstructor.Uint8Array.cs │ │ ├── TypedArrayConstructor.cs │ │ ├── TypedArrayContentType.cs │ │ ├── TypedArrayElementType.cs │ │ ├── TypedArrayPrototype.cs │ │ ├── TypedArrayValue.cs │ │ └── Uint8ArrayPrototype.cs │ ├── WeakMap │ │ ├── WeakMapConstructor.cs │ │ └── WeakMapPrototype.cs │ ├── WeakRef │ │ ├── WeakRefConstructor.cs │ │ └── WeakRefPrototype.cs │ └── WeakSet │ │ ├── WeakSetConstructor.cs │ │ └── WeakSetPrototype.cs ├── Options.Extensions.cs ├── Options.cs ├── ParsingOptions.cs ├── Pooling │ ├── ArgumentsInstancePool.cs │ ├── ConcurrentObjectPool.cs │ ├── JsValueArrayPool.cs │ ├── ObjectPool.cs │ ├── ReferencePool.cs │ └── ValueStringBuilder.cs ├── PreparationOptions.cs ├── Prepared.cs ├── Runtime │ ├── Arguments.cs │ ├── CallStack │ │ ├── CallStackElement.cs │ │ ├── CallStackElementComparer.cs │ │ ├── JintCallStack.cs │ │ └── StackGuard.cs │ ├── CommonProperties.cs │ ├── Completion.cs │ ├── Debugger │ │ ├── BreakLocation.cs │ │ ├── BreakPoint.cs │ │ ├── BreakPointCollection.cs │ │ ├── CallFrame.cs │ │ ├── DebugCallStack.cs │ │ ├── DebugEvaluationException.cs │ │ ├── DebugHandler.cs │ │ ├── DebugInformation.cs │ │ ├── DebugScope.cs │ │ ├── DebugScopeType.cs │ │ ├── DebugScopes.cs │ │ ├── DebuggerStatementHandling.cs │ │ ├── OptionalSourceBreakLocationEqualityComparer.cs │ │ └── StepMode.cs │ ├── DefaultReferenceResolver.cs │ ├── DefaultTimeSystem.cs │ ├── Descriptors │ │ ├── GetSetPropertyDescriptor.cs │ │ ├── PropertyDescriptor.cs │ │ ├── PropertyFlag.cs │ │ └── Specialized │ │ │ ├── ClrAccessDescriptor.cs │ │ │ ├── LazyPropertyDescriptor.cs │ │ │ └── ReflectionDescriptor.cs │ ├── Environments │ │ ├── Binding.cs │ │ ├── DeclarativeEnvironment.cs │ │ ├── Environment.cs │ │ ├── ExecutionContext.cs │ │ ├── FunctionEnvironment.cs │ │ ├── GlobalEnvironment.cs │ │ ├── JintEnvironment.cs │ │ ├── ModuleEnvironment.cs │ │ ├── ObjectEnvironment.cs │ │ └── PrivateEnvironment.cs │ ├── EventLoop.cs │ ├── ExceptionHelper.cs │ ├── ExecutionCanceledException.cs │ ├── ExecutionContextStack.cs │ ├── Host.cs │ ├── IScriptOrModule.Extensions.cs │ ├── IScriptOrModule.cs │ ├── ITimeSystem.cs │ ├── InternalTypes.cs │ ├── Interop │ │ ├── ClrFunction.cs │ │ ├── ClrHelper.cs │ │ ├── DefaultObjectConverter.cs │ │ ├── DefaultTypeConverter.cs │ │ ├── DelegateWrapper.cs │ │ ├── GetterFunction.cs │ │ ├── IObjectConverter.cs │ │ ├── IObjectWrapper.cs │ │ ├── IReferenceResolver.cs │ │ ├── ITypeConverter.cs │ │ ├── InteropHelper.cs │ │ ├── MethodDescriptor.cs │ │ ├── MethodInfoFunction.cs │ │ ├── NamespaceReference.cs │ │ ├── ObjectWrapper.Specialized.cs │ │ ├── ObjectWrapper.cs │ │ ├── Reflection │ │ │ ├── ConstantValueAccessor.cs │ │ │ ├── DynamicObjectAccessor.cs │ │ │ ├── ExtensionMethodCache.cs │ │ │ ├── FieldAccessor.cs │ │ │ ├── IndexerAccessor.cs │ │ │ ├── MethodAccessor.cs │ │ │ ├── NestedTypeAccessor.cs │ │ │ ├── PropertyAccessor.cs │ │ │ └── ReflectionAccessor.cs │ │ ├── SetterFunction.cs │ │ ├── TypeDescriptor.cs │ │ ├── TypeReference.cs │ │ ├── TypeReferencePrototype.cs │ │ └── TypeResolver.cs │ ├── Interpreter │ │ ├── DeclarationCache.cs │ │ ├── EvaluationContext.cs │ │ ├── Expressions │ │ │ ├── DestructuringPatternAssignmentExpression.cs │ │ │ ├── ExpressionCache.cs │ │ │ ├── JintArrayExpression.cs │ │ │ ├── JintArrowFunctionExpression.cs │ │ │ ├── JintAssignmentExpression.cs │ │ │ ├── JintAwaitExpression.cs │ │ │ ├── JintBinaryExpression.cs │ │ │ ├── JintCallExpression.cs │ │ │ ├── JintClassExpression.cs │ │ │ ├── JintConditionalExpression.cs │ │ │ ├── JintConstantExpression.cs │ │ │ ├── JintExpression.cs │ │ │ ├── JintFunctionExpression.cs │ │ │ ├── JintIdentifierExpression.cs │ │ │ ├── JintImportExpression.cs │ │ │ ├── JintLiteralExpression.cs │ │ │ ├── JintLogicalAndExpression.cs │ │ │ ├── JintLogicalOrExpression.cs │ │ │ ├── JintMemberExpression.cs │ │ │ ├── JintMetaPropertyExpression.cs │ │ │ ├── JintNewExpression.cs │ │ │ ├── JintObjectExpression.cs │ │ │ ├── JintPrivateIdentifierExpression.cs │ │ │ ├── JintSequenceExpression.cs │ │ │ ├── JintSpreadExpression.cs │ │ │ ├── JintSuperExpression.cs │ │ │ ├── JintTaggedTemplateExpression.cs │ │ │ ├── JintTemplateLiteralExpression.cs │ │ │ ├── JintThisExpression.cs │ │ │ ├── JintUnaryExpression.cs │ │ │ ├── JintUpdateExpression.cs │ │ │ ├── JintYieldExpression.cs │ │ │ └── NullishCoalescingExpression.cs │ │ ├── JintFunctionDefinition.cs │ │ ├── JintStatementList.cs │ │ └── Statements │ │ │ ├── ConstantReturnStatement.cs │ │ │ ├── JintBlockStatement.cs │ │ │ ├── JintBreakStatement.cs │ │ │ ├── JintClassDeclarationStatement.cs │ │ │ ├── JintContinueStatement.cs │ │ │ ├── JintDebuggerStatement.cs │ │ │ ├── JintDoWhileStatement.cs │ │ │ ├── JintEmptyStatement.cs │ │ │ ├── JintExportAllDeclaration.cs │ │ │ ├── JintExportDefaultDeclaration.cs │ │ │ ├── JintExportNamedDeclaration.cs │ │ │ ├── JintExpressionStatement.cs │ │ │ ├── JintForInForOfStatement.cs │ │ │ ├── JintForStatement.cs │ │ │ ├── JintFunctionDeclarationStatement.cs │ │ │ ├── JintIfStatement.cs │ │ │ ├── JintImportDeclaration.cs │ │ │ ├── JintLabeledStatement.cs │ │ │ ├── JintReturnStatement.cs │ │ │ ├── JintScript.cs │ │ │ ├── JintStatement.cs │ │ │ ├── JintSwitchBlock.cs │ │ │ ├── JintSwitchStatement.cs │ │ │ ├── JintThrowStatement.cs │ │ │ ├── JintTryStatement.cs │ │ │ ├── JintVariableDeclaration.cs │ │ │ ├── JintWhileStatement.cs │ │ │ ├── JintWithStatement.cs │ │ │ └── ProbablyBlockStatement.cs │ ├── Intrinsics.Intl.cs │ ├── Intrinsics.cs │ ├── JavaScriptException.cs │ ├── KnownKeys.cs │ ├── MemoryLimitExceededException.cs │ ├── Modules │ │ ├── BuilderModule.cs │ │ ├── CyclicModule.cs │ │ ├── DefaultModuleLoader.cs │ │ ├── FailFastModuleLoader.cs │ │ ├── IModuleLoader.cs │ │ ├── Module.cs │ │ ├── ModuleBuilder.cs │ │ ├── ModuleFactory.cs │ │ ├── ModuleLoader.cs │ │ ├── ModuleNamespace.cs │ │ ├── ModuleRequest.cs │ │ ├── ModuleRequestExtensions.cs │ │ ├── ModuleResolutionException.cs │ │ ├── ModuleStatus.cs │ │ ├── ResolvedSpecifier.cs │ │ ├── SourceTextModule.cs │ │ ├── SpecifierType.cs │ │ └── SyntheticModule.cs │ ├── OrderedDictionary.cs │ ├── OrderedSet.cs │ ├── PromiseRejectedException.cs │ ├── RangeErrorException.cs │ ├── Realm.cs │ ├── RecursionDepthOverflowException.cs │ ├── Reference.cs │ ├── ScriptRecord.cs │ ├── StatementsCountOverflowException.cs │ ├── TypeConverter.cs │ ├── TypeErrorException.cs │ └── Types.cs ├── ScriptPreparationException.cs ├── SkipLocalsInitAttribute.cs └── StrictModeScope.cs ├── LICENSE.txt ├── README.md └── _appveyor.yml /.git-blame-ignore-revs: -------------------------------------------------------------------------------- 1 | # File-scoped namespaces 2 | 9079aef684aba5adb09b021290b47ff85bc44e82 -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | 4 | Jint.Tests/** linguist-vendored 5 | Jint.Tests.Ecma/** linguist-vendored 6 | Jint.Tests.CommonScripts/** linguist-vendored 7 | Jint.Tests.Test262/** linguist-vendored 8 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: [lahma, sebastienros] 2 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Version/platform/runtime used** 11 | 12 | With which version did you encounter this behavior, which OS and NET runtime. 13 | 14 | **Describe the bug** 15 | 16 | A clear and concise description of what the bug is. 17 | 18 | **To Reproduce** 19 | 20 | Ideally code samples or better yet, xUnit test against current `main`. 21 | 22 | **Expected behavior** 23 | 24 | A clear and concise description of what you expected to happen. 25 | 26 | **Additional context** 27 | 28 | Add any other context about the problem here. 29 | 30 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: false 2 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Is your feature request related to a problem? Please describe.** 11 | 12 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 13 | 14 | **Describe the solution you'd like** 15 | 16 | A clear and concise description of what you want to happen. 17 | 18 | **Describe alternatives you've considered** 19 | 20 | A clear and concise description of any alternative solutions or features you've considered. 21 | 22 | **Additional context** 23 | 24 | Add any other context or screenshots about the feature request here. 25 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | # To get started with Dependabot version updates, you'll need to specify which 2 | # package ecosystems to update and where the package manifests are located. 3 | # Please see the documentation for all configuration options: 4 | # https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file 5 | 6 | version: 2 7 | updates: 8 | - package-ecosystem: "nuget" # See documentation for possible values 9 | directory: "/" # Location of package manifests 10 | schedule: 11 | interval: "weekly" 12 | groups: 13 | # Grouped version updates configuration 14 | all-dependencies: 15 | patterns: 16 | - "*" 17 | -------------------------------------------------------------------------------- /.github/workflows/build.yml: -------------------------------------------------------------------------------- 1 | name: Build 2 | 3 | on: 4 | 5 | push: 6 | branches: [ main, 3.x ] 7 | paths-ignore: 8 | - 'doc/**' 9 | - '**.md' 10 | 11 | env: 12 | DOTNET_NOLOGO: true 13 | DOTNET_CLI_TELEMETRY_OPTOUT: 1 14 | 15 | jobs: 16 | build: 17 | 18 | runs-on: ubuntu-latest 19 | steps: 20 | 21 | - name: Setup NET 22 | uses: actions/setup-dotnet@v4 23 | with: 24 | dotnet-version: 9.0 25 | 26 | - name: Checkout source code 27 | uses: actions/checkout@v4 28 | 29 | - name: Test 30 | run: dotnet test --configuration Release --logger GitHubActions 31 | 32 | - name: Pack with dotnet 33 | run: dotnet pack Jint/Jint.csproj --output artifacts --configuration Release -p:VersionSuffix=preview-$GITHUB_RUN_NUMBER -p:ContinuousIntegrationBuild=True 34 | 35 | - name: Push with dotnet 36 | run: dotnet nuget push artifacts/*.nupkg --api-key ${{ secrets.MYGET_API_KEY }} --skip-duplicate --source https://www.myget.org/F/jint/api/v2/package 37 | -------------------------------------------------------------------------------- /.github/workflows/pr.yml: -------------------------------------------------------------------------------- 1 | name: PR 2 | 3 | on: 4 | 5 | pull_request: 6 | branches: [ main, 3.x ] 7 | 8 | env: 9 | DOTNET_NOLOGO: true 10 | DOTNET_CLI_TELEMETRY_OPTOUT: 1 11 | 12 | concurrency: 13 | group: ${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.run_id }} 14 | cancel-in-progress: true 15 | 16 | jobs: 17 | 18 | test: 19 | 20 | name: ${{ matrix.os.name }} 21 | 22 | strategy: 23 | matrix: 24 | os: 25 | - { name: 'linux', image: 'ubuntu-latest' } 26 | - { name: 'linux - ARM', image: 'ubuntu-24.04-arm' } 27 | - { name: 'windows', image: 'windows-latest' } 28 | - { name: 'macos', image: 'macos-latest' } 29 | 30 | runs-on: ${{ matrix.os.image }} 31 | 32 | steps: 33 | 34 | - name: Setup NET 35 | uses: actions/setup-dotnet@v4 36 | with: 37 | dotnet-version: 9.0 38 | 39 | - name: Checkout source code 40 | uses: actions/checkout@v4 41 | 42 | - name: Test 43 | run: dotnet test --configuration Release --logger GitHubActions 44 | 45 | -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | name: Release 2 | 3 | on: 4 | push: 5 | tags: 6 | - 'v*.*.*' 7 | 8 | env: 9 | DOTNET_NOLOGO: true 10 | DOTNET_CLI_TELEMETRY_OPTOUT: 1 11 | 12 | jobs: 13 | build: 14 | 15 | runs-on: ubuntu-latest 16 | steps: 17 | 18 | - name: Setup NET 19 | uses: actions/setup-dotnet@v4 20 | with: 21 | dotnet-version: 9.0 22 | 23 | - name: Checkout source code 24 | uses: actions/checkout@v4 25 | 26 | - name: Test 27 | run: dotnet test --configuration Release --logger GitHubActions 28 | 29 | - name: Pack with dotnet 30 | run: | 31 | arrTag=(${GITHUB_REF//\// }) 32 | VERSION="${arrTag[2]}" 33 | VERSION="${VERSION//v}" 34 | echo "$VERSION" 35 | dotnet pack Jint/Jint.csproj --output artifacts --configuration Release -p:Version=$VERSION -p:ContinuousIntegrationBuild=True 36 | 37 | - name: Push with dotnet 38 | run: dotnet nuget push artifacts/*.nupkg --api-key ${{ secrets.NUGET_API_KEY }} --source https://api.nuget.org/v3/index.json 39 | -------------------------------------------------------------------------------- /CREDITS.txt: -------------------------------------------------------------------------------- 1 | This file contains the list of open-source tools Jint is using directly or indirectly 2 | 3 | Esprima 4 | ----- 5 | Jint contains a C# port of the Esprima Javascript parser. 6 | 7 | Website: http://esprima.org/ 8 | Copyright: Copyright (c) Ariya Hidayat 9 | License: BSD - https://github.com/ariya/esprima/blob/master/LICENSE.BSD 10 | 11 | Google Inc 12 | ----- 13 | Jint uses the FastDtoa algorithm implemented for Google V8 14 | 15 | Copyright: Copyright 2010 the V8 project authors. All rights reserved. 16 | 17 | Mozilla 18 | ----- 19 | Jint number serialization is based on the Java port of the FastDtoa algorithm from Mozilla 20 | 21 | Website: http://mozilla.org/ 22 | Copyright: Copyright (c) Mozilla 23 | License: MPL 2.0 - http://mozilla.org/MPL/2.0/ 24 | 25 | MimeKit 26 | ----- 27 | Jint date parsing utilizes code extracted from the excellent MimeKit library. 28 | 29 | Website: https://github.com/jstedfast/MimeKit 30 | Copyright: Copyright (C) 2012-2022 .NET Foundation and Contributors 31 | License: MIT - https://github.com/jstedfast/MimeKit/blob/master/LICENSE 32 | -------------------------------------------------------------------------------- /Directory.Build.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Sebastien Ros 6 | Sebastien Ros 7 | 8 | Javascript interpreter for .NET. 9 | javascript, interpreter, es5, es2015, es6, ecmascript, interop 10 | https://github.com/sebastienros/jint 11 | BSD-2-Clause 12 | 13 | 0 14 | 4.0.0 15 | beta-$(BuildNumber) 16 | $(VersionPrefix).$(BuildNumber) 17 | 18 | true 19 | true 20 | true 21 | portable 22 | snupkg 23 | 24 | true 25 | true 26 | 27 | latest 28 | enable 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /Jint.AotExample/Jint.AotExample.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Exe 5 | net9.0 6 | enable 7 | false 8 | true 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /Jint.AotExample/Program.cs: -------------------------------------------------------------------------------- 1 | using Jint; 2 | 3 | var engine = new Engine(cfg => cfg 4 | .AllowClr() 5 | ); 6 | 7 | engine.SetValue("company", new Company()); 8 | 9 | Console.WriteLine($"Company's name: {engine.Evaluate("company.name")}"); 10 | Console.WriteLine($"Company's field: {engine.Evaluate("company.field")}"); 11 | Console.WriteLine($"Company's indexer: {engine.Evaluate("company[42]")}"); 12 | Console.WriteLine($"Company's greeting: {engine.Evaluate("company.sayHello('Mary')")}"); 13 | 14 | 15 | public class Company 16 | { 17 | public string Field = "public field value"; 18 | public string Name => "Jint"; 19 | public string SayHello(string name) => $"Hello {name}!"; 20 | public int this[int index] => index; 21 | } 22 | 23 | -------------------------------------------------------------------------------- /Jint.Benchmark/ArrayStressBenchmark.cs: -------------------------------------------------------------------------------- 1 | using BenchmarkDotNet.Attributes; 2 | 3 | namespace Jint.Benchmark; 4 | 5 | [MemoryDiagnoser] 6 | public class ArrayStressBenchmark : SingleScriptBenchmark 7 | { 8 | protected override string FileName => "array-stress.js"; 9 | } 10 | -------------------------------------------------------------------------------- /Jint.Benchmark/Directory.Build.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /Jint.Benchmark/EngineConstructionBenchmark.cs: -------------------------------------------------------------------------------- 1 | using BenchmarkDotNet.Attributes; 2 | using Jint.Native; 3 | 4 | namespace Jint.Benchmark; 5 | 6 | [MemoryDiagnoser] 7 | public class EngineConstructionBenchmark 8 | { 9 | private Prepared