├── .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