Copy disabled (too large)
Download .txt
Showing preview only (18,634K chars total). Download the full file to get everything.
Repository: nick-thompson/react-juce
Branch: master
Commit: 0693801a8646
Files: 1112
Total size: 17.5 MB
Directory structure:
gitextract_y1uslwgj/
├── .gitbook.yaml
├── .github/
│ ├── FUNDING.yml
│ └── workflows/
│ ├── cmake.yml
│ ├── lint.yml
│ ├── node.yml
│ └── publish.yml
├── .gitignore
├── .gitmodules
├── .prettierignore
├── CMakeLists.txt
├── CONTRIBUTING.md
├── LICENSE.md
├── README.md
├── docs/
│ ├── .nojekyll
│ ├── README.md
│ ├── Resources.md
│ ├── SUMMARY.md
│ ├── components/
│ │ ├── Button.md
│ │ ├── Canvas.md
│ │ ├── Events.md
│ │ ├── Image.md
│ │ ├── ListView.md
│ │ ├── ScrollView.md
│ │ ├── Slider.md
│ │ ├── Styles.md
│ │ ├── Text.md
│ │ ├── TextInput.md
│ │ └── View.md
│ ├── guides/
│ │ ├── Debugging_With_Duktape.md
│ │ ├── Getting_Started.md
│ │ ├── Integrating_Your_Project.md
│ │ ├── Running_the_Examples.md
│ │ └── Why_Not_React_Native.md
│ └── native/
│ ├── Custom_Native_Components.md
│ └── Interop.md
├── examples/
│ └── GainPlugin/
│ ├── CMakeLists.txt
│ ├── PluginProcessor.cpp
│ ├── PluginProcessor.h
│ └── jsui/
│ ├── .gitignore
│ ├── babel.config.js
│ ├── package.json
│ ├── src/
│ │ ├── AnimatedFlexBox.js
│ │ ├── App.js
│ │ ├── Knob.js
│ │ ├── Label.js
│ │ ├── Meter.js
│ │ ├── ParameterSlider.js
│ │ ├── ParameterToggleButton.js
│ │ ├── ParameterValueContext.js
│ │ ├── ParameterValueStore.js
│ │ ├── index.js
│ │ └── nativeMethods.js
│ └── webpack.config.js
├── package.json
├── packages/
│ └── react-juce/
│ ├── .gitignore
│ ├── babel.config.js
│ ├── package.json
│ ├── scripts/
│ │ └── init.js
│ ├── src/
│ │ ├── components/
│ │ │ ├── Button.tsx
│ │ │ ├── Canvas.ts
│ │ │ ├── Image.ts
│ │ │ ├── ListView.tsx
│ │ │ ├── ScrollView.ts
│ │ │ ├── Slider.tsx
│ │ │ ├── Text.ts
│ │ │ ├── TextInput.tsx
│ │ │ └── View.ts
│ │ ├── index.tsx
│ │ └── lib/
│ │ ├── Backend.ts
│ │ ├── EventBridge.ts
│ │ ├── MacroProperties/
│ │ │ ├── Colors.ts
│ │ │ ├── Transform.ts
│ │ │ ├── index.ts
│ │ │ ├── types.d.ts
│ │ │ └── util.ts
│ │ ├── MethodTracer.ts
│ │ ├── NativeMethods.ts
│ │ ├── Renderer.ts
│ │ └── SyntheticEvents.ts
│ ├── template/
│ │ ├── .gitignore
│ │ ├── babel.config.js
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── App.js
│ │ │ └── index.js
│ │ └── webpack.config.js
│ ├── tsconfig.json
│ └── webpack.config.js
└── react_juce/
├── core/
│ ├── AppHarness.cpp
│ ├── AppHarness.h
│ ├── CanvasView.cpp
│ ├── CanvasView.h
│ ├── EcmascriptEngine.cpp
│ ├── EcmascriptEngine.h
│ ├── EcmascriptEngine_Duktape.cpp
│ ├── EcmascriptEngine_Hermes.cpp
│ ├── FileWatcher.h
│ ├── GenericEditor.cpp
│ ├── GenericEditor.h
│ ├── ImageView.cpp
│ ├── ImageView.h
│ ├── RawTextView.h
│ ├── ReactApplicationRoot.cpp
│ ├── ReactApplicationRoot.h
│ ├── ScrollView.cpp
│ ├── ScrollView.h
│ ├── ScrollViewContentShadowView.h
│ ├── ShadowView.cpp
│ ├── ShadowView.h
│ ├── ShadowView_Yoga.cpp
│ ├── TextInputView.cpp
│ ├── TextInputView.h
│ ├── TextShadowView.cpp
│ ├── TextShadowView.h
│ ├── TextShadowView_Yoga.cpp
│ ├── TextView.h
│ ├── Utils.cpp
│ ├── Utils.h
│ ├── View.cpp
│ ├── View.h
│ ├── ViewManager.cpp
│ ├── ViewManager.h
│ └── YogaImplInclude.cpp
├── duktape/
│ ├── AUTHORS.rst
│ ├── LICENSE.txt
│ ├── Makefile.cmdline
│ ├── Makefile.codepage
│ ├── Makefile.coffee
│ ├── Makefile.dukdebug
│ ├── Makefile.eval
│ ├── Makefile.eventloop
│ ├── Makefile.hello
│ ├── Makefile.jsoncbor
│ ├── Makefile.jxpretty
│ ├── Makefile.sandbox
│ ├── Makefile.sharedlibrary
│ ├── README.rst
│ ├── config/
│ │ ├── README.rst
│ │ ├── architectures/
│ │ │ ├── architecture_arm32.h.in
│ │ │ ├── architecture_arm64.h.in
│ │ │ ├── architecture_emscripten.h.in
│ │ │ ├── architecture_generic.h.in
│ │ │ ├── architecture_m68k.h.in
│ │ │ ├── architecture_mips32.h.in
│ │ │ ├── architecture_mips64.h.in
│ │ │ ├── architecture_powerpc32.h.in
│ │ │ ├── architecture_powerpc64.h.in
│ │ │ ├── architecture_sparc32.h.in
│ │ │ ├── architecture_sparc64.h.in
│ │ │ ├── architecture_superh.h.in
│ │ │ ├── architecture_x32.h.in
│ │ │ ├── architecture_x64.h.in
│ │ │ └── architecture_x86.h.in
│ │ ├── architectures.yaml
│ │ ├── compilers/
│ │ │ ├── compiler_bcc.h.in
│ │ │ ├── compiler_clang.h.in
│ │ │ ├── compiler_emscripten.h.in
│ │ │ ├── compiler_gcc.h.in
│ │ │ ├── compiler_generic.h.in
│ │ │ ├── compiler_msvc.h.in
│ │ │ ├── compiler_tinyc.h.in
│ │ │ └── compiler_vbcc.h.in
│ │ ├── compilers.yaml
│ │ ├── config-options/
│ │ │ ├── DUK_USE_32BIT_PTRS.yaml
│ │ │ ├── DUK_USE_64BIT_OPS.yaml
│ │ │ ├── DUK_USE_ALIGN_4.yaml
│ │ │ ├── DUK_USE_ALIGN_8.yaml
│ │ │ ├── DUK_USE_ALIGN_BY.yaml
│ │ │ ├── DUK_USE_ALLOW_UNDEFINED_BEHAVIOR.yaml
│ │ │ ├── DUK_USE_ARCH_STRING.yaml
│ │ │ ├── DUK_USE_ARRAY_BUILTIN.yaml
│ │ │ ├── DUK_USE_ARRAY_FASTPATH.yaml
│ │ │ ├── DUK_USE_ARRAY_PROP_FASTPATH.yaml
│ │ │ ├── DUK_USE_ASSERTIONS.yaml
│ │ │ ├── DUK_USE_ATAN2_WORKAROUNDS.yaml
│ │ │ ├── DUK_USE_AUGMENT_ERROR_CREATE.yaml
│ │ │ ├── DUK_USE_AUGMENT_ERROR_THROW.yaml
│ │ │ ├── DUK_USE_AVOID_PLATFORM_FUNCPTRS.yaml
│ │ │ ├── DUK_USE_BASE64_FASTPATH.yaml
│ │ │ ├── DUK_USE_BASE64_SUPPORT.yaml
│ │ │ ├── DUK_USE_BOOLEAN_BUILTIN.yaml
│ │ │ ├── DUK_USE_BRANCH_HINTS.yaml
│ │ │ ├── DUK_USE_BROWSER_LIKE.yaml
│ │ │ ├── DUK_USE_BUFFEROBJECT_SUPPORT.yaml
│ │ │ ├── DUK_USE_BUFLEN16.yaml
│ │ │ ├── DUK_USE_BUILTIN_INITJS.yaml
│ │ │ ├── DUK_USE_BYTECODE_DUMP_SUPPORT.yaml
│ │ │ ├── DUK_USE_BYTEORDER.yaml
│ │ │ ├── DUK_USE_BYTEORDER_FORCED.yaml
│ │ │ ├── DUK_USE_CACHE_ACTIVATION.yaml
│ │ │ ├── DUK_USE_CACHE_CATCHER.yaml
│ │ │ ├── DUK_USE_CALLSTACK_LIMIT.yaml
│ │ │ ├── DUK_USE_COMMONJS_MODULES.yaml
│ │ │ ├── DUK_USE_COMPILER_RECLIMIT.yaml
│ │ │ ├── DUK_USE_COMPILER_STRING.yaml
│ │ │ ├── DUK_USE_COMPUTED_INFINITY.yaml
│ │ │ ├── DUK_USE_COMPUTED_NAN.yaml
│ │ │ ├── DUK_USE_COROUTINE_SUPPORT.yaml
│ │ │ ├── DUK_USE_CPP_EXCEPTIONS.yaml
│ │ │ ├── DUK_USE_DATAPTR16.yaml
│ │ │ ├── DUK_USE_DATAPTR_DEC16.yaml
│ │ │ ├── DUK_USE_DATAPTR_ENC16.yaml
│ │ │ ├── DUK_USE_DATE_BUILTIN.yaml
│ │ │ ├── DUK_USE_DATE_FMT_STRFTIME.yaml
│ │ │ ├── DUK_USE_DATE_FORMAT_STRING.yaml
│ │ │ ├── DUK_USE_DATE_GET_LOCAL_TZOFFSET.yaml
│ │ │ ├── DUK_USE_DATE_GET_NOW.yaml
│ │ │ ├── DUK_USE_DATE_NOW_GETTIMEOFDAY.yaml
│ │ │ ├── DUK_USE_DATE_NOW_TIME.yaml
│ │ │ ├── DUK_USE_DATE_NOW_WINDOWS.yaml
│ │ │ ├── DUK_USE_DATE_NOW_WINDOWS_SUBMS.yaml
│ │ │ ├── DUK_USE_DATE_PARSE_STRING.yaml
│ │ │ ├── DUK_USE_DATE_PRS_GETDATE.yaml
│ │ │ ├── DUK_USE_DATE_PRS_STRPTIME.yaml
│ │ │ ├── DUK_USE_DATE_TZO_GMTIME.yaml
│ │ │ ├── DUK_USE_DATE_TZO_GMTIME_R.yaml
│ │ │ ├── DUK_USE_DATE_TZO_GMTIME_S.yaml
│ │ │ ├── DUK_USE_DATE_TZO_WINDOWS.yaml
│ │ │ ├── DUK_USE_DATE_TZO_WINDOWS_NO_DST.yaml
│ │ │ ├── DUK_USE_DDDPRINT.yaml
│ │ │ ├── DUK_USE_DDPRINT.yaml
│ │ │ ├── DUK_USE_DEBUG.yaml
│ │ │ ├── DUK_USE_DEBUGGER_DUMPHEAP.yaml
│ │ │ ├── DUK_USE_DEBUGGER_FWD_LOGGING.yaml
│ │ │ ├── DUK_USE_DEBUGGER_FWD_PRINTALERT.yaml
│ │ │ ├── DUK_USE_DEBUGGER_INSPECT.yaml
│ │ │ ├── DUK_USE_DEBUGGER_PAUSE_UNCAUGHT.yaml
│ │ │ ├── DUK_USE_DEBUGGER_SUPPORT.yaml
│ │ │ ├── DUK_USE_DEBUGGER_THROW_NOTIFY.yaml
│ │ │ ├── DUK_USE_DEBUGGER_TRANSPORT_TORTURE.yaml
│ │ │ ├── DUK_USE_DEBUG_BUFSIZE.yaml
│ │ │ ├── DUK_USE_DEBUG_LEVEL.yaml
│ │ │ ├── DUK_USE_DEBUG_WRITE.yaml
│ │ │ ├── DUK_USE_DEEP_C_STACK.yaml
│ │ │ ├── DUK_USE_DOUBLE_BE.yaml
│ │ │ ├── DUK_USE_DOUBLE_LE.yaml
│ │ │ ├── DUK_USE_DOUBLE_LINKED_HEAP.yaml
│ │ │ ├── DUK_USE_DOUBLE_ME.yaml
│ │ │ ├── DUK_USE_DPRINT.yaml
│ │ │ ├── DUK_USE_DPRINT_COLORS.yaml
│ │ │ ├── DUK_USE_DPRINT_RDTSC.yaml
│ │ │ ├── DUK_USE_DUKTAPE_BUILTIN.yaml
│ │ │ ├── DUK_USE_ENCODING_BUILTINS.yaml
│ │ │ ├── DUK_USE_ERRCREATE.yaml
│ │ │ ├── DUK_USE_ERRTHROW.yaml
│ │ │ ├── DUK_USE_ES6.yaml
│ │ │ ├── DUK_USE_ES6_OBJECT_PROTO_PROPERTY.yaml
│ │ │ ├── DUK_USE_ES6_OBJECT_SETPROTOTYPEOF.yaml
│ │ │ ├── DUK_USE_ES6_PROXY.yaml
│ │ │ ├── DUK_USE_ES6_REGEXP_BRACES.yaml
│ │ │ ├── DUK_USE_ES6_REGEXP_SYNTAX.yaml
│ │ │ ├── DUK_USE_ES6_UNICODE_ESCAPE.yaml
│ │ │ ├── DUK_USE_ES7.yaml
│ │ │ ├── DUK_USE_ES7_EXP_OPERATOR.yaml
│ │ │ ├── DUK_USE_ES8.yaml
│ │ │ ├── DUK_USE_ES9.yaml
│ │ │ ├── DUK_USE_ESBC_LIMITS.yaml
│ │ │ ├── DUK_USE_ESBC_MAX_BYTES.yaml
│ │ │ ├── DUK_USE_ESBC_MAX_LINENUMBER.yaml
│ │ │ ├── DUK_USE_EXAMPLE.yaml
│ │ │ ├── DUK_USE_EXEC_FUN_LOCAL.yaml
│ │ │ ├── DUK_USE_EXEC_INDIRECT_BOUND_CHECK.yaml
│ │ │ ├── DUK_USE_EXEC_PREFER_SIZE.yaml
│ │ │ ├── DUK_USE_EXEC_REGCONST_OPTIMIZE.yaml
│ │ │ ├── DUK_USE_EXEC_TIMEOUT_CHECK.yaml
│ │ │ ├── DUK_USE_EXPLICIT_NULL_INIT.yaml
│ │ │ ├── DUK_USE_EXTSTR_FREE.yaml
│ │ │ ├── DUK_USE_EXTSTR_INTERN_CHECK.yaml
│ │ │ ├── DUK_USE_FASTINT.yaml
│ │ │ ├── DUK_USE_FAST_REFCOUNT_DEFAULT.yaml
│ │ │ ├── DUK_USE_FATAL_HANDLER.yaml
│ │ │ ├── DUK_USE_FATAL_MAXLEN.yaml
│ │ │ ├── DUK_USE_FILE_IO.yaml
│ │ │ ├── DUK_USE_FINALIZER_SUPPORT.yaml
│ │ │ ├── DUK_USE_FINALIZER_TORTURE.yaml
│ │ │ ├── DUK_USE_FLEX_C99.yaml
│ │ │ ├── DUK_USE_FLEX_ONESIZE.yaml
│ │ │ ├── DUK_USE_FLEX_ZEROSIZE.yaml
│ │ │ ├── DUK_USE_FULL_TVAL.yaml
│ │ │ ├── DUK_USE_FUNCPTR16.yaml
│ │ │ ├── DUK_USE_FUNCPTR_DEC16.yaml
│ │ │ ├── DUK_USE_FUNCPTR_ENC16.yaml
│ │ │ ├── DUK_USE_FUNCTION_BUILTIN.yaml
│ │ │ ├── DUK_USE_FUNC_FILENAME_PROPERTY.yaml
│ │ │ ├── DUK_USE_FUNC_NAME_PROPERTY.yaml
│ │ │ ├── DUK_USE_GCC_PRAGMAS.yaml
│ │ │ ├── DUK_USE_GC_TORTURE.yaml
│ │ │ ├── DUK_USE_GET_MONOTONIC_TIME.yaml
│ │ │ ├── DUK_USE_GET_MONOTONIC_TIME_CLOCK_GETTIME.yaml
│ │ │ ├── DUK_USE_GET_MONOTONIC_TIME_WINDOWS_QPC.yaml
│ │ │ ├── DUK_USE_GET_RANDOM_DOUBLE.yaml
│ │ │ ├── DUK_USE_GLOBAL_BINDING.yaml
│ │ │ ├── DUK_USE_GLOBAL_BUILTIN.yaml
│ │ │ ├── DUK_USE_HASHBYTES_UNALIGNED_U32_ACCESS.yaml
│ │ │ ├── DUK_USE_HEAPPTR16.yaml
│ │ │ ├── DUK_USE_HEAPPTR_DEC16.yaml
│ │ │ ├── DUK_USE_HEAPPTR_ENC16.yaml
│ │ │ ├── DUK_USE_HEX_FASTPATH.yaml
│ │ │ ├── DUK_USE_HEX_SUPPORT.yaml
│ │ │ ├── DUK_USE_HOBJECT_ARRAY_ABANDON_LIMIT.yaml
│ │ │ ├── DUK_USE_HOBJECT_ARRAY_FAST_RESIZE_LIMIT.yaml
│ │ │ ├── DUK_USE_HOBJECT_ARRAY_MINGROW_ADD.yaml
│ │ │ ├── DUK_USE_HOBJECT_ARRAY_MINGROW_DIVISOR.yaml
│ │ │ ├── DUK_USE_HOBJECT_ENTRY_MINGROW_ADD.yaml
│ │ │ ├── DUK_USE_HOBJECT_ENTRY_MINGROW_DIVISOR.yaml
│ │ │ ├── DUK_USE_HOBJECT_HASH_PART.yaml
│ │ │ ├── DUK_USE_HOBJECT_HASH_PROP_LIMIT.yaml
│ │ │ ├── DUK_USE_HOBJECT_LAYOUT_1.yaml
│ │ │ ├── DUK_USE_HOBJECT_LAYOUT_2.yaml
│ │ │ ├── DUK_USE_HOBJECT_LAYOUT_3.yaml
│ │ │ ├── DUK_USE_HSTRING_ARRIDX.yaml
│ │ │ ├── DUK_USE_HSTRING_CLEN.yaml
│ │ │ ├── DUK_USE_HSTRING_EXTDATA.yaml
│ │ │ ├── DUK_USE_HSTRING_LAZY_CLEN.yaml
│ │ │ ├── DUK_USE_HTML_COMMENTS.yaml
│ │ │ ├── DUK_USE_IDCHAR_FASTPATH.yaml
│ │ │ ├── DUK_USE_INJECT_HEAP_ALLOC_ERROR.yaml
│ │ │ ├── DUK_USE_INTEGER_BE.yaml
│ │ │ ├── DUK_USE_INTEGER_LE.yaml
│ │ │ ├── DUK_USE_INTEGER_ME.yaml
│ │ │ ├── DUK_USE_INTERRUPT_COUNTER.yaml
│ │ │ ├── DUK_USE_INTERRUPT_DEBUG_FIXUP.yaml
│ │ │ ├── DUK_USE_JC.yaml
│ │ │ ├── DUK_USE_JSON_BUILTIN.yaml
│ │ │ ├── DUK_USE_JSON_DECNUMBER_FASTPATH.yaml
│ │ │ ├── DUK_USE_JSON_DECSTRING_FASTPATH.yaml
│ │ │ ├── DUK_USE_JSON_DEC_RECLIMIT.yaml
│ │ │ ├── DUK_USE_JSON_EATWHITE_FASTPATH.yaml
│ │ │ ├── DUK_USE_JSON_ENC_RECLIMIT.yaml
│ │ │ ├── DUK_USE_JSON_QUOTESTRING_FASTPATH.yaml
│ │ │ ├── DUK_USE_JSON_STRINGIFY_FASTPATH.yaml
│ │ │ ├── DUK_USE_JSON_SUPPORT.yaml
│ │ │ ├── DUK_USE_JX.yaml
│ │ │ ├── DUK_USE_LEXER_SLIDING_WINDOW.yaml
│ │ │ ├── DUK_USE_LIGHTFUNC_BUILTINS.yaml
│ │ │ ├── DUK_USE_LITCACHE_SIZE.yaml
│ │ │ ├── DUK_USE_MARKANDSWEEP_FINALIZER_TORTURE.yaml
│ │ │ ├── DUK_USE_MARK_AND_SWEEP.yaml
│ │ │ ├── DUK_USE_MARK_AND_SWEEP_RECLIMIT.yaml
│ │ │ ├── DUK_USE_MATH_BUILTIN.yaml
│ │ │ ├── DUK_USE_MATH_FMAX.yaml
│ │ │ ├── DUK_USE_MATH_FMIN.yaml
│ │ │ ├── DUK_USE_MATH_ROUND.yaml
│ │ │ ├── DUK_USE_MS_STRINGTABLE_RESIZE.yaml
│ │ │ ├── DUK_USE_NATIVE_CALL_RECLIMIT.yaml
│ │ │ ├── DUK_USE_NATIVE_STACK_CHECK.yaml
│ │ │ ├── DUK_USE_NONSTD_ARRAY_CONCAT_TRAILER.yaml
│ │ │ ├── DUK_USE_NONSTD_ARRAY_MAP_TRAILER.yaml
│ │ │ ├── DUK_USE_NONSTD_ARRAY_SPLICE_DELCOUNT.yaml
│ │ │ ├── DUK_USE_NONSTD_FUNC_CALLER_PROPERTY.yaml
│ │ │ ├── DUK_USE_NONSTD_FUNC_SOURCE_PROPERTY.yaml
│ │ │ ├── DUK_USE_NONSTD_FUNC_STMT.yaml
│ │ │ ├── DUK_USE_NONSTD_GETTER_KEY_ARGUMENT.yaml
│ │ │ ├── DUK_USE_NONSTD_JSON_ESC_U2028_U2029.yaml
│ │ │ ├── DUK_USE_NONSTD_REGEXP_DOLLAR_ESCAPE.yaml
│ │ │ ├── DUK_USE_NONSTD_SETTER_KEY_ARGUMENT.yaml
│ │ │ ├── DUK_USE_NONSTD_STRING_FROMCHARCODE_32BIT.yaml
│ │ │ ├── DUK_USE_NO_DOUBLE_ALIASING_SELFTEST.yaml
│ │ │ ├── DUK_USE_NUMBER_BUILTIN.yaml
│ │ │ ├── DUK_USE_OBJECT_BUILTIN.yaml
│ │ │ ├── DUK_USE_OBJSIZES16.yaml
│ │ │ ├── DUK_USE_OCTAL_SUPPORT.yaml
│ │ │ ├── DUK_USE_OS_STRING.yaml
│ │ │ ├── DUK_USE_PACKED_TVAL.yaml
│ │ │ ├── DUK_USE_PACKED_TVAL_POSSIBLE.yaml
│ │ │ ├── DUK_USE_PACK_CLANG_ATTR.yaml
│ │ │ ├── DUK_USE_PACK_DUMMY_MEMBER.yaml
│ │ │ ├── DUK_USE_PACK_GCC_ATTR.yaml
│ │ │ ├── DUK_USE_PACK_MSVC_PRAGMA.yaml
│ │ │ ├── DUK_USE_PANIC_ABORT.yaml
│ │ │ ├── DUK_USE_PANIC_EXIT.yaml
│ │ │ ├── DUK_USE_PANIC_HANDLER.yaml
│ │ │ ├── DUK_USE_PANIC_SEGFAULT.yaml
│ │ │ ├── DUK_USE_PARANOID_DATE_COMPUTATION.yaml
│ │ │ ├── DUK_USE_PARANOID_ERRORS.yaml
│ │ │ ├── DUK_USE_PARANOID_MATH.yaml
│ │ │ ├── DUK_USE_PC2LINE.yaml
│ │ │ ├── DUK_USE_PERFORMANCE_BUILTIN.yaml
│ │ │ ├── DUK_USE_POW_NETBSD_WORKAROUND.yaml
│ │ │ ├── DUK_USE_POW_WORKAROUNDS.yaml
│ │ │ ├── DUK_USE_PREFER_SIZE.yaml
│ │ │ ├── DUK_USE_PROMISE_BUILTIN.yaml
│ │ │ ├── DUK_USE_PROVIDE_DEFAULT_ALLOC_FUNCTIONS.yaml
│ │ │ ├── DUK_USE_RDTSC.yaml
│ │ │ ├── DUK_USE_REFCOUNT16.yaml
│ │ │ ├── DUK_USE_REFCOUNT32.yaml
│ │ │ ├── DUK_USE_REFERENCE_COUNTING.yaml
│ │ │ ├── DUK_USE_REFLECT_BUILTIN.yaml
│ │ │ ├── DUK_USE_REFZERO_FINALIZER_TORTURE.yaml
│ │ │ ├── DUK_USE_REGEXP_CANON_BITMAP.yaml
│ │ │ ├── DUK_USE_REGEXP_CANON_WORKAROUND.yaml
│ │ │ ├── DUK_USE_REGEXP_COMPILER_RECLIMIT.yaml
│ │ │ ├── DUK_USE_REGEXP_EXECUTOR_RECLIMIT.yaml
│ │ │ ├── DUK_USE_REGEXP_SUPPORT.yaml
│ │ │ ├── DUK_USE_REPL_FPCLASSIFY.yaml
│ │ │ ├── DUK_USE_REPL_ISFINITE.yaml
│ │ │ ├── DUK_USE_REPL_ISINF.yaml
│ │ │ ├── DUK_USE_REPL_ISNAN.yaml
│ │ │ ├── DUK_USE_REPL_SIGNBIT.yaml
│ │ │ ├── DUK_USE_ROM_GLOBAL_CLONE.yaml
│ │ │ ├── DUK_USE_ROM_GLOBAL_INHERIT.yaml
│ │ │ ├── DUK_USE_ROM_OBJECTS.yaml
│ │ │ ├── DUK_USE_ROM_PTRCOMP_FIRST.yaml
│ │ │ ├── DUK_USE_ROM_STRINGS.yaml
│ │ │ ├── DUK_USE_SECTION_B.yaml
│ │ │ ├── DUK_USE_SELF_TESTS.yaml
│ │ │ ├── DUK_USE_SETJMP.yaml
│ │ │ ├── DUK_USE_SHEBANG_COMMENTS.yaml
│ │ │ ├── DUK_USE_SHUFFLE_TORTURE.yaml
│ │ │ ├── DUK_USE_SIGSETJMP.yaml
│ │ │ ├── DUK_USE_SOURCE_NONBMP.yaml
│ │ │ ├── DUK_USE_STRHASH16.yaml
│ │ │ ├── DUK_USE_STRHASH_DENSE.yaml
│ │ │ ├── DUK_USE_STRHASH_SKIP_SHIFT.yaml
│ │ │ ├── DUK_USE_STRICT_DECL.yaml
│ │ │ ├── DUK_USE_STRICT_UTF8_SOURCE.yaml
│ │ │ ├── DUK_USE_STRING_BUILTIN.yaml
│ │ │ ├── DUK_USE_STRLEN16.yaml
│ │ │ ├── DUK_USE_STRTAB_CHAIN.yaml
│ │ │ ├── DUK_USE_STRTAB_CHAIN_SIZE.yaml
│ │ │ ├── DUK_USE_STRTAB_GROW_LIMIT.yaml
│ │ │ ├── DUK_USE_STRTAB_MAXSIZE.yaml
│ │ │ ├── DUK_USE_STRTAB_MINSIZE.yaml
│ │ │ ├── DUK_USE_STRTAB_PROBE.yaml
│ │ │ ├── DUK_USE_STRTAB_PTRCOMP.yaml
│ │ │ ├── DUK_USE_STRTAB_RESIZE_CHECK_MASK.yaml
│ │ │ ├── DUK_USE_STRTAB_SHRINK_LIMIT.yaml
│ │ │ ├── DUK_USE_STRTAB_TORTURE.yaml
│ │ │ ├── DUK_USE_SYMBOL_BUILTIN.yaml
│ │ │ ├── DUK_USE_TAILCALL.yaml
│ │ │ ├── DUK_USE_TARGET_INFO.yaml
│ │ │ ├── DUK_USE_TRACEBACKS.yaml
│ │ │ ├── DUK_USE_TRACEBACK_DEPTH.yaml
│ │ │ ├── DUK_USE_UNALIGNED_ACCESSES_POSSIBLE.yaml
│ │ │ ├── DUK_USE_UNDERSCORE_SETJMP.yaml
│ │ │ ├── DUK_USE_UNION_INITIALIZERS.yaml
│ │ │ ├── DUK_USE_USER_DECLARE.yaml
│ │ │ ├── DUK_USE_USER_INITJS.yaml
│ │ │ ├── DUK_USE_VALSTACK_GROW_SHIFT.yaml
│ │ │ ├── DUK_USE_VALSTACK_LIMIT.yaml
│ │ │ ├── DUK_USE_VALSTACK_SHRINK_CHECK_SHIFT.yaml
│ │ │ ├── DUK_USE_VALSTACK_SHRINK_SLACK_SHIFT.yaml
│ │ │ ├── DUK_USE_VALSTACK_UNSAFE.yaml
│ │ │ ├── DUK_USE_VARIADIC_MACROS.yaml
│ │ │ ├── DUK_USE_VERBOSE_ERRORS.yaml
│ │ │ ├── DUK_USE_VERBOSE_EXECUTOR_ERRORS.yaml
│ │ │ ├── DUK_USE_VOLUNTARY_GC.yaml
│ │ │ └── DUK_USE_ZERO_BUFFER_DATA.yaml
│ │ ├── examples/
│ │ │ ├── compliance.yaml
│ │ │ ├── debugger_support.yaml
│ │ │ ├── disable_bufferobjects.yaml
│ │ │ ├── disable_es6.yaml
│ │ │ ├── enable_debug_print0.yaml
│ │ │ ├── enable_debug_print1.yaml
│ │ │ ├── enable_debug_print2.yaml
│ │ │ ├── enable_fastint.yaml
│ │ │ ├── low_memory.yaml
│ │ │ ├── low_memory_strip.yaml
│ │ │ ├── performance_sensitive.yaml
│ │ │ ├── rom_builtins.yaml
│ │ │ ├── security_sensitive.yaml
│ │ │ ├── shallow_c_stack.yaml
│ │ │ └── timing_sensitive.yaml
│ │ ├── feature-options/
│ │ │ ├── DUK_OPT_ASSERTIONS.yaml
│ │ │ ├── DUK_OPT_BUFFEROBJECT_SUPPORT.yaml
│ │ │ ├── DUK_OPT_BUFLEN16.yaml
│ │ │ ├── DUK_OPT_DATAPTR16.yaml
│ │ │ ├── DUK_OPT_DATAPTR_DEC16.yaml
│ │ │ ├── DUK_OPT_DATAPTR_ENC16.yaml
│ │ │ ├── DUK_OPT_DDDPRINT.yaml
│ │ │ ├── DUK_OPT_DDPRINT.yaml
│ │ │ ├── DUK_OPT_DEBUG.yaml
│ │ │ ├── DUK_OPT_DEBUGGER_DUMPHEAP.yaml
│ │ │ ├── DUK_OPT_DEBUGGER_FWD_LOGGING.yaml
│ │ │ ├── DUK_OPT_DEBUGGER_FWD_PRINTALERT.yaml
│ │ │ ├── DUK_OPT_DEBUGGER_SUPPORT.yaml
│ │ │ ├── DUK_OPT_DEBUGGER_TRANSPORT_TORTURE.yaml
│ │ │ ├── DUK_OPT_DEBUG_BUFSIZE.yaml
│ │ │ ├── DUK_OPT_DECLARE.yaml
│ │ │ ├── DUK_OPT_DEEP_C_STACK.yaml
│ │ │ ├── DUK_OPT_DLL_BUILD.yaml
│ │ │ ├── DUK_OPT_DPRINT.yaml
│ │ │ ├── DUK_OPT_DPRINT_COLORS.yaml
│ │ │ ├── DUK_OPT_DPRINT_RDTSC.yaml
│ │ │ ├── DUK_OPT_EXAMPLE.yaml
│ │ │ ├── DUK_OPT_EXEC_TIMEOUT_CHECK.yaml
│ │ │ ├── DUK_OPT_EXTERNAL_STRINGS.yaml
│ │ │ ├── DUK_OPT_EXTSTR_FREE.yaml
│ │ │ ├── DUK_OPT_EXTSTR_INTERN_CHECK.yaml
│ │ │ ├── DUK_OPT_FASTINT.yaml
│ │ │ ├── DUK_OPT_FORCE_ALIGN.yaml
│ │ │ ├── DUK_OPT_FORCE_BYTEORDER.yaml
│ │ │ ├── DUK_OPT_FUNCPTR16.yaml
│ │ │ ├── DUK_OPT_FUNCPTR_DEC16.yaml
│ │ │ ├── DUK_OPT_FUNCPTR_ENC16.yaml
│ │ │ ├── DUK_OPT_FUNC_NONSTD_CALLER_PROPERTY.yaml
│ │ │ ├── DUK_OPT_FUNC_NONSTD_SOURCE_PROPERTY.yaml
│ │ │ ├── DUK_OPT_GC_TORTURE.yaml
│ │ │ ├── DUK_OPT_HAVE_CUSTOM_H.yaml
│ │ │ ├── DUK_OPT_HEAPPTR16.yaml
│ │ │ ├── DUK_OPT_HEAPPTR_DEC16.yaml
│ │ │ ├── DUK_OPT_HEAPPTR_ENC16.yaml
│ │ │ ├── DUK_OPT_INTERRUPT_COUNTER.yaml
│ │ │ ├── DUK_OPT_JSON_STRINGIFY_FASTPATH.yaml
│ │ │ ├── DUK_OPT_LIGHTFUNC_BUILTINS.yaml
│ │ │ ├── DUK_OPT_NONSTD_FUNC_CALLER_PROPERTY.yaml
│ │ │ ├── DUK_OPT_NONSTD_FUNC_SOURCE_PROPERTY.yaml
│ │ │ ├── DUK_OPT_NO_ARRAY_SPLICE_NONSTD_DELCOUNT.yaml
│ │ │ ├── DUK_OPT_NO_AUGMENT_ERRORS.yaml
│ │ │ ├── DUK_OPT_NO_BROWSER_LIKE.yaml
│ │ │ ├── DUK_OPT_NO_BUFFEROBJECT_SUPPORT.yaml
│ │ │ ├── DUK_OPT_NO_BYTECODE_DUMP_SUPPORT.yaml
│ │ │ ├── DUK_OPT_NO_COMMONJS_MODULES.yaml
│ │ │ ├── DUK_OPT_NO_ES6_OBJECT_PROTO_PROPERTY.yaml
│ │ │ ├── DUK_OPT_NO_ES6_OBJECT_SETPROTOTYPEOF.yaml
│ │ │ ├── DUK_OPT_NO_ES6_PROXY.yaml
│ │ │ ├── DUK_OPT_NO_FILE_IO.yaml
│ │ │ ├── DUK_OPT_NO_FUNC_STMT.yaml
│ │ │ ├── DUK_OPT_NO_JC.yaml
│ │ │ ├── DUK_OPT_NO_JSONC.yaml
│ │ │ ├── DUK_OPT_NO_JSONX.yaml
│ │ │ ├── DUK_OPT_NO_JX.yaml
│ │ │ ├── DUK_OPT_NO_MARK_AND_SWEEP.yaml
│ │ │ ├── DUK_OPT_NO_MS_STRINGTABLE_RESIZE.yaml
│ │ │ ├── DUK_OPT_NO_NONSTD_ACCESSOR_KEY_ARGUMENT.yaml
│ │ │ ├── DUK_OPT_NO_NONSTD_ARRAY_CONCAT_TRAILER.yaml
│ │ │ ├── DUK_OPT_NO_NONSTD_ARRAY_MAP_TRAILER.yaml
│ │ │ ├── DUK_OPT_NO_NONSTD_ARRAY_SPLICE_DELCOUNT.yaml
│ │ │ ├── DUK_OPT_NO_NONSTD_FUNC_STMT.yaml
│ │ │ ├── DUK_OPT_NO_NONSTD_JSON_ESC_U2028_U2029.yaml
│ │ │ ├── DUK_OPT_NO_NONSTD_STRING_FROMCHARCODE_32BIT.yaml
│ │ │ ├── DUK_OPT_NO_OBJECT_ES6_PROTO_PROPERTY.yaml
│ │ │ ├── DUK_OPT_NO_OBJECT_ES6_SETPROTOTYPEOF.yaml
│ │ │ ├── DUK_OPT_NO_OCTAL_SUPPORT.yaml
│ │ │ ├── DUK_OPT_NO_PACKED_TVAL.yaml
│ │ │ ├── DUK_OPT_NO_PC2LINE.yaml
│ │ │ ├── DUK_OPT_NO_REFERENCE_COUNTING.yaml
│ │ │ ├── DUK_OPT_NO_REGEXP_SUPPORT.yaml
│ │ │ ├── DUK_OPT_NO_SECTION_B.yaml
│ │ │ ├── DUK_OPT_NO_SOURCE_NONBMP.yaml
│ │ │ ├── DUK_OPT_NO_STRICT_DECL.yaml
│ │ │ ├── DUK_OPT_NO_TRACEBACKS.yaml
│ │ │ ├── DUK_OPT_NO_VERBOSE_ERRORS.yaml
│ │ │ ├── DUK_OPT_NO_VOLUNTARY_GC.yaml
│ │ │ ├── DUK_OPT_NO_ZERO_BUFFER_DATA.yaml
│ │ │ ├── DUK_OPT_OBJSIZES16.yaml
│ │ │ ├── DUK_OPT_PANIC_HANDLER.yaml
│ │ │ ├── DUK_OPT_REFCOUNT16.yaml
│ │ │ ├── DUK_OPT_SEGFAULT_ON_PANIC.yaml
│ │ │ ├── DUK_OPT_SELF_TESTS.yaml
│ │ │ ├── DUK_OPT_SETJMP.yaml
│ │ │ ├── DUK_OPT_SHUFFLE_TORTURE.yaml
│ │ │ ├── DUK_OPT_SIGSETJMP.yaml
│ │ │ ├── DUK_OPT_STRHASH16.yaml
│ │ │ ├── DUK_OPT_STRICT_UTF8_SOURCE.yaml
│ │ │ ├── DUK_OPT_STRLEN16.yaml
│ │ │ ├── DUK_OPT_STRTAB_CHAIN.yaml
│ │ │ ├── DUK_OPT_STRTAB_CHAIN_SIZE.yaml
│ │ │ ├── DUK_OPT_TARGET_INFO.yaml
│ │ │ ├── DUK_OPT_TRACEBACK_DEPTH.yaml
│ │ │ ├── DUK_OPT_UNDERSCORE_SETJMP.yaml
│ │ │ └── DUK_OPT_USER_INITJS.yaml
│ │ ├── header-snippets/
│ │ │ ├── 64bitops.h.in
│ │ │ ├── alignment_fillin.h.in
│ │ │ ├── architecture_fillins.h.in
│ │ │ ├── byteorder_derived.h.in
│ │ │ ├── byteorder_fillin.h.in
│ │ │ ├── compiler_fillins.h.in
│ │ │ ├── cpp_exception_sanity.h.in
│ │ │ ├── date_provider.h.in
│ │ │ ├── gcc_clang_visibility.h.in
│ │ │ ├── inline_workaround.h.in
│ │ │ ├── msvc_visibility.h.in
│ │ │ ├── object_layout.h.in
│ │ │ ├── packed_tval_fillin.h.in
│ │ │ ├── platform_conditionalincludes.h.in
│ │ │ ├── platform_cppextras.h.in
│ │ │ ├── platform_fillins.h.in
│ │ │ ├── platform_sharedincludes.h.in
│ │ │ ├── reject_fast_math.h.in
│ │ │ ├── types1.h.in
│ │ │ ├── types2.h.in
│ │ │ ├── types_c99.h.in
│ │ │ └── types_legacy.h.in
│ │ ├── helper-snippets/
│ │ │ ├── DUK_F_AIX.h.in
│ │ │ ├── DUK_F_AMIGAOS.h.in
│ │ │ ├── DUK_F_ANDROID.h.in
│ │ │ ├── DUK_F_APPLE.h.in
│ │ │ ├── DUK_F_ARM.h.in
│ │ │ ├── DUK_F_BCC.h.in
│ │ │ ├── DUK_F_BSD.h.in
│ │ │ ├── DUK_F_C99.h.in
│ │ │ ├── DUK_F_CLANG.h.in
│ │ │ ├── DUK_F_CPP.h.in
│ │ │ ├── DUK_F_CPP11.h.in
│ │ │ ├── DUK_F_CYGWIN.h.in
│ │ │ ├── DUK_F_DURANGO.h.in
│ │ │ ├── DUK_F_EMSCRIPTEN.h.in
│ │ │ ├── DUK_F_FLASHPLAYER.h.in
│ │ │ ├── DUK_F_FREEBSD.h.in
│ │ │ ├── DUK_F_GCC.h.in
│ │ │ ├── DUK_F_HPUX.h.in
│ │ │ ├── DUK_F_LINUX.h.in
│ │ │ ├── DUK_F_M68K.h.in
│ │ │ ├── DUK_F_MINGW.h.in
│ │ │ ├── DUK_F_MINT.h.in
│ │ │ ├── DUK_F_MIPS.h.in
│ │ │ ├── DUK_F_MSVC.h.in
│ │ │ ├── DUK_F_NETBSD.h.in
│ │ │ ├── DUK_F_NO_STDINT_H.h.in
│ │ │ ├── DUK_F_OPENBSD.h.in
│ │ │ ├── DUK_F_ORBIS.h.in
│ │ │ ├── DUK_F_POSIX.h.in
│ │ │ ├── DUK_F_PPC.h.in
│ │ │ ├── DUK_F_QNX.h.in
│ │ │ ├── DUK_F_SPARC.h.in
│ │ │ ├── DUK_F_SUN.h.in
│ │ │ ├── DUK_F_SUPERH.h.in
│ │ │ ├── DUK_F_TINSPIRE.h.in
│ │ │ ├── DUK_F_TINYC.h.in
│ │ │ ├── DUK_F_TOS.h.in
│ │ │ ├── DUK_F_UCLIBC.h.in
│ │ │ ├── DUK_F_ULL_CONSTS.h.in
│ │ │ ├── DUK_F_UNIX.h.in
│ │ │ ├── DUK_F_VBCC.h.in
│ │ │ ├── DUK_F_WINDOWS.h.in
│ │ │ └── DUK_F_X86.h.in
│ │ ├── platforms/
│ │ │ ├── platform_aix.h.in
│ │ │ ├── platform_amigaos.h.in
│ │ │ ├── platform_android.h.in
│ │ │ ├── platform_apple.h.in
│ │ │ ├── platform_cygwin.h.in
│ │ │ ├── platform_durango.h.in
│ │ │ ├── platform_emscripten.h.in
│ │ │ ├── platform_flashplayer.h.in
│ │ │ ├── platform_generic.h.in
│ │ │ ├── platform_genericbsd.h.in
│ │ │ ├── platform_genericunix.h.in
│ │ │ ├── platform_hpux.h.in
│ │ │ ├── platform_linux.h.in
│ │ │ ├── platform_openbsd.h.in
│ │ │ ├── platform_orbis.h.in
│ │ │ ├── platform_posix.h.in
│ │ │ ├── platform_qnx.h.in
│ │ │ ├── platform_solaris.h.in
│ │ │ ├── platform_tinspire.h.in
│ │ │ ├── platform_tos.h.in
│ │ │ └── platform_windows.h.in
│ │ ├── platforms.yaml
│ │ └── tags.yaml
│ ├── debugger/
│ │ ├── Makefile
│ │ ├── README.rst
│ │ ├── duk_classnames.yaml
│ │ ├── duk_debug.js
│ │ ├── duk_debug_meta.json
│ │ ├── duk_debug_proxy.js
│ │ ├── duk_debugcommands.yaml
│ │ ├── duk_debugerrors.yaml
│ │ ├── duk_opcodes.yaml
│ │ ├── package.json
│ │ └── static/
│ │ ├── index.html
│ │ ├── style.css
│ │ └── webui.js
│ ├── duk_dist_meta.json
│ ├── examples/
│ │ ├── README.rst
│ │ ├── alloc-hybrid/
│ │ │ ├── README.rst
│ │ │ ├── duk_alloc_hybrid.c
│ │ │ └── duk_alloc_hybrid.h
│ │ ├── alloc-logging/
│ │ │ ├── README.rst
│ │ │ ├── duk_alloc_logging.c
│ │ │ ├── duk_alloc_logging.h
│ │ │ └── log2gnuplot.py
│ │ ├── alloc-torture/
│ │ │ ├── README.rst
│ │ │ ├── duk_alloc_torture.c
│ │ │ └── duk_alloc_torture.h
│ │ ├── cmdline/
│ │ │ ├── README.rst
│ │ │ ├── duk_cmdline.c
│ │ │ ├── duk_cmdline.h
│ │ │ └── duk_cmdline_lowmem.c
│ │ ├── codepage-conv/
│ │ │ ├── README.rst
│ │ │ ├── duk_codepage_conv.c
│ │ │ ├── duk_codepage_conv.h
│ │ │ └── test.c
│ │ ├── coffee/
│ │ │ ├── README.rst
│ │ │ ├── globals.coffee
│ │ │ ├── hello.coffee
│ │ │ └── mandel.coffee
│ │ ├── cpp-exceptions/
│ │ │ ├── README.rst
│ │ │ └── cpp_exceptions.cpp
│ │ ├── debug-trans-dvalue/
│ │ │ ├── Makefile
│ │ │ ├── README.rst
│ │ │ ├── duk_trans_dvalue.c
│ │ │ ├── duk_trans_dvalue.h
│ │ │ └── test.c
│ │ ├── debug-trans-socket/
│ │ │ ├── README.rst
│ │ │ ├── duk_trans_socket.h
│ │ │ ├── duk_trans_socket_unix.c
│ │ │ └── duk_trans_socket_windows.c
│ │ ├── dummy-date-provider/
│ │ │ ├── README.rst
│ │ │ └── dummy_date_provider.c
│ │ ├── eval/
│ │ │ ├── README.rst
│ │ │ └── eval.c
│ │ ├── eventloop/
│ │ │ ├── README.rst
│ │ │ ├── basic-test.js
│ │ │ ├── c_eventloop.c
│ │ │ ├── c_eventloop.h
│ │ │ ├── c_eventloop.js
│ │ │ ├── client-socket-test.js
│ │ │ ├── ecma_eventloop.js
│ │ │ ├── fileio.c
│ │ │ ├── main.c
│ │ │ ├── poll.c
│ │ │ ├── server-socket-test.js
│ │ │ ├── socket.c
│ │ │ └── timer-test.js
│ │ ├── guide/
│ │ │ ├── README.rst
│ │ │ ├── fib.js
│ │ │ ├── prime.js
│ │ │ ├── primecheck.c
│ │ │ ├── process.js
│ │ │ ├── processlines.c
│ │ │ └── uppercase.c
│ │ ├── hello/
│ │ │ ├── README.rst
│ │ │ └── hello.c
│ │ ├── jxpretty/
│ │ │ ├── README.rst
│ │ │ └── jxpretty.c
│ │ └── sandbox/
│ │ ├── README.rst
│ │ └── sandbox.c
│ ├── extras/
│ │ ├── README.rst
│ │ ├── alloc-pool/
│ │ │ ├── Makefile
│ │ │ ├── README.rst
│ │ │ ├── duk_alloc_pool.c
│ │ │ ├── duk_alloc_pool.h
│ │ │ ├── ptrcomp.yaml
│ │ │ ├── ptrcomp_fixup.h
│ │ │ └── test.c
│ │ ├── cbor/
│ │ │ ├── Makefile
│ │ │ ├── README.rst
│ │ │ ├── cbordecode.py
│ │ │ ├── duk_cbor.c
│ │ │ ├── duk_cbor.h
│ │ │ ├── jsoncbor.c
│ │ │ └── run_testvectors.js
│ │ ├── console/
│ │ │ ├── Makefile
│ │ │ ├── README.rst
│ │ │ ├── duk_console.c
│ │ │ ├── duk_console.h
│ │ │ └── test.c
│ │ ├── duk-v1-compat/
│ │ │ ├── Makefile
│ │ │ ├── README.rst
│ │ │ ├── duk_v1_compat.c
│ │ │ ├── duk_v1_compat.h
│ │ │ ├── test.c
│ │ │ ├── test_compile1.js
│ │ │ ├── test_compile2.js
│ │ │ ├── test_eval1.js
│ │ │ └── test_eval2.js
│ │ ├── logging/
│ │ │ ├── Makefile
│ │ │ ├── README.rst
│ │ │ ├── duk_logging.c
│ │ │ ├── duk_logging.h
│ │ │ └── test.c
│ │ ├── minimal-printf/
│ │ │ ├── Makefile
│ │ │ ├── README.rst
│ │ │ ├── duk_minimal_printf.c
│ │ │ ├── duk_minimal_printf.h
│ │ │ └── test.c
│ │ ├── module-duktape/
│ │ │ ├── Makefile
│ │ │ ├── README.rst
│ │ │ ├── duk_module_duktape.c
│ │ │ ├── duk_module_duktape.h
│ │ │ └── test.c
│ │ ├── module-node/
│ │ │ ├── Makefile
│ │ │ ├── README.rst
│ │ │ ├── duk_module_node.c
│ │ │ ├── duk_module_node.h
│ │ │ └── test.c
│ │ └── print-alert/
│ │ ├── Makefile
│ │ ├── README.rst
│ │ ├── duk_print_alert.c
│ │ ├── duk_print_alert.h
│ │ └── test.c
│ ├── licenses/
│ │ ├── commonjs.txt
│ │ ├── lua.txt
│ │ ├── murmurhash2.txt
│ │ ├── splitmix64.txt
│ │ └── xoroshiro128plus.txt
│ ├── mandel.js
│ ├── polyfills/
│ │ ├── console-minimal.js
│ │ ├── duktape-buffer.js
│ │ ├── duktape-error-setter-nonwritable.js
│ │ ├── duktape-error-setter-writable.js
│ │ ├── duktape-isfastint.js
│ │ ├── global.js
│ │ ├── object-assign.js
│ │ ├── object-prototype-definegetter.js
│ │ ├── object-prototype-definesetter.js
│ │ ├── performance-now.js
│ │ └── promise.js
│ ├── src/
│ │ ├── duk_config.h
│ │ ├── duk_source_meta.json
│ │ ├── duktape.c
│ │ └── duktape.h
│ ├── src-input/
│ │ ├── SpecialCasing-8bit.txt
│ │ ├── SpecialCasing.txt
│ │ ├── UnicodeData-8bit.txt
│ │ ├── UnicodeData.txt
│ │ ├── builtins.yaml
│ │ ├── duk_alloc_default.c
│ │ ├── duk_api_buffer.c
│ │ ├── duk_api_bytecode.c
│ │ ├── duk_api_call.c
│ │ ├── duk_api_codec.c
│ │ ├── duk_api_compile.c
│ │ ├── duk_api_debug.c
│ │ ├── duk_api_heap.c
│ │ ├── duk_api_inspect.c
│ │ ├── duk_api_internal.h
│ │ ├── duk_api_memory.c
│ │ ├── duk_api_object.c
│ │ ├── duk_api_random.c
│ │ ├── duk_api_stack.c
│ │ ├── duk_api_string.c
│ │ ├── duk_api_time.c
│ │ ├── duk_bi_array.c
│ │ ├── duk_bi_boolean.c
│ │ ├── duk_bi_buffer.c
│ │ ├── duk_bi_date.c
│ │ ├── duk_bi_date_unix.c
│ │ ├── duk_bi_date_windows.c
│ │ ├── duk_bi_duktape.c
│ │ ├── duk_bi_encoding.c
│ │ ├── duk_bi_error.c
│ │ ├── duk_bi_function.c
│ │ ├── duk_bi_global.c
│ │ ├── duk_bi_json.c
│ │ ├── duk_bi_math.c
│ │ ├── duk_bi_number.c
│ │ ├── duk_bi_object.c
│ │ ├── duk_bi_performance.c
│ │ ├── duk_bi_pointer.c
│ │ ├── duk_bi_promise.c
│ │ ├── duk_bi_protos.h
│ │ ├── duk_bi_proxy.c
│ │ ├── duk_bi_reflect.c
│ │ ├── duk_bi_regexp.c
│ │ ├── duk_bi_string.c
│ │ ├── duk_bi_symbol.c
│ │ ├── duk_bi_thread.c
│ │ ├── duk_bi_thrower.c
│ │ ├── duk_dblunion.h
│ │ ├── duk_debug.h
│ │ ├── duk_debug_fixedbuffer.c
│ │ ├── duk_debug_macros.c
│ │ ├── duk_debug_vsnprintf.c
│ │ ├── duk_debugger.c
│ │ ├── duk_debugger.h
│ │ ├── duk_error.h
│ │ ├── duk_error_augment.c
│ │ ├── duk_error_longjmp.c
│ │ ├── duk_error_macros.c
│ │ ├── duk_error_misc.c
│ │ ├── duk_error_throw.c
│ │ ├── duk_exception.h
│ │ ├── duk_forwdecl.h
│ │ ├── duk_harray.h
│ │ ├── duk_hboundfunc.h
│ │ ├── duk_hbuffer.h
│ │ ├── duk_hbuffer_alloc.c
│ │ ├── duk_hbuffer_assert.c
│ │ ├── duk_hbuffer_ops.c
│ │ ├── duk_hbufobj.h
│ │ ├── duk_hbufobj_misc.c
│ │ ├── duk_hcompfunc.h
│ │ ├── duk_heap.h
│ │ ├── duk_heap_alloc.c
│ │ ├── duk_heap_finalize.c
│ │ ├── duk_heap_hashstring.c
│ │ ├── duk_heap_markandsweep.c
│ │ ├── duk_heap_memory.c
│ │ ├── duk_heap_misc.c
│ │ ├── duk_heap_refcount.c
│ │ ├── duk_heap_stringcache.c
│ │ ├── duk_heap_stringtable.c
│ │ ├── duk_heaphdr.h
│ │ ├── duk_heaphdr_assert.c
│ │ ├── duk_henv.h
│ │ ├── duk_hnatfunc.h
│ │ ├── duk_hobject.h
│ │ ├── duk_hobject_alloc.c
│ │ ├── duk_hobject_assert.c
│ │ ├── duk_hobject_class.c
│ │ ├── duk_hobject_enum.c
│ │ ├── duk_hobject_misc.c
│ │ ├── duk_hobject_pc2line.c
│ │ ├── duk_hobject_props.c
│ │ ├── duk_hproxy.h
│ │ ├── duk_hstring.h
│ │ ├── duk_hstring_assert.c
│ │ ├── duk_hstring_misc.c
│ │ ├── duk_hthread.h
│ │ ├── duk_hthread_alloc.c
│ │ ├── duk_hthread_builtins.c
│ │ ├── duk_hthread_misc.c
│ │ ├── duk_hthread_stacks.c
│ │ ├── duk_internal.h
│ │ ├── duk_jmpbuf.h
│ │ ├── duk_js.h
│ │ ├── duk_js_arith.c
│ │ ├── duk_js_bytecode.h
│ │ ├── duk_js_call.c
│ │ ├── duk_js_compiler.c
│ │ ├── duk_js_compiler.h
│ │ ├── duk_js_executor.c
│ │ ├── duk_js_ops.c
│ │ ├── duk_js_var.c
│ │ ├── duk_json.h
│ │ ├── duk_lexer.c
│ │ ├── duk_lexer.h
│ │ ├── duk_numconv.c
│ │ ├── duk_numconv.h
│ │ ├── duk_refcount.h
│ │ ├── duk_regexp.h
│ │ ├── duk_regexp_compiler.c
│ │ ├── duk_regexp_executor.c
│ │ ├── duk_replacements.c
│ │ ├── duk_replacements.h
│ │ ├── duk_selftest.c
│ │ ├── duk_selftest.h
│ │ ├── duk_strings.h
│ │ ├── duk_tval.c
│ │ ├── duk_tval.h
│ │ ├── duk_unicode.h
│ │ ├── duk_unicode_support.c
│ │ ├── duk_unicode_tables.c
│ │ ├── duk_util.h
│ │ ├── duk_util_bitdecoder.c
│ │ ├── duk_util_bitencoder.c
│ │ ├── duk_util_bufwriter.c
│ │ ├── duk_util_cast.c
│ │ ├── duk_util_double.c
│ │ ├── duk_util_hashbytes.c
│ │ ├── duk_util_memory.c
│ │ ├── duk_util_misc.c
│ │ ├── duk_util_tinyrandom.c
│ │ ├── duktape.h.in
│ │ └── strings.yaml
│ ├── src-noline/
│ │ ├── duk_config.h
│ │ ├── duk_source_meta.json
│ │ ├── duktape.c
│ │ └── duktape.h
│ ├── src-separate/
│ │ ├── duk_alloc_default.c
│ │ ├── duk_api_buffer.c
│ │ ├── duk_api_bytecode.c
│ │ ├── duk_api_call.c
│ │ ├── duk_api_codec.c
│ │ ├── duk_api_compile.c
│ │ ├── duk_api_debug.c
│ │ ├── duk_api_heap.c
│ │ ├── duk_api_inspect.c
│ │ ├── duk_api_internal.h
│ │ ├── duk_api_memory.c
│ │ ├── duk_api_object.c
│ │ ├── duk_api_random.c
│ │ ├── duk_api_stack.c
│ │ ├── duk_api_string.c
│ │ ├── duk_api_time.c
│ │ ├── duk_bi_array.c
│ │ ├── duk_bi_boolean.c
│ │ ├── duk_bi_buffer.c
│ │ ├── duk_bi_date.c
│ │ ├── duk_bi_date_unix.c
│ │ ├── duk_bi_date_windows.c
│ │ ├── duk_bi_duktape.c
│ │ ├── duk_bi_encoding.c
│ │ ├── duk_bi_error.c
│ │ ├── duk_bi_function.c
│ │ ├── duk_bi_global.c
│ │ ├── duk_bi_json.c
│ │ ├── duk_bi_math.c
│ │ ├── duk_bi_number.c
│ │ ├── duk_bi_object.c
│ │ ├── duk_bi_performance.c
│ │ ├── duk_bi_pointer.c
│ │ ├── duk_bi_promise.c
│ │ ├── duk_bi_protos.h
│ │ ├── duk_bi_proxy.c
│ │ ├── duk_bi_reflect.c
│ │ ├── duk_bi_regexp.c
│ │ ├── duk_bi_string.c
│ │ ├── duk_bi_symbol.c
│ │ ├── duk_bi_thread.c
│ │ ├── duk_bi_thrower.c
│ │ ├── duk_builtins.c
│ │ ├── duk_builtins.h
│ │ ├── duk_config.h
│ │ ├── duk_dblunion.h
│ │ ├── duk_debug.h
│ │ ├── duk_debug_fixedbuffer.c
│ │ ├── duk_debug_macros.c
│ │ ├── duk_debug_vsnprintf.c
│ │ ├── duk_debugger.c
│ │ ├── duk_debugger.h
│ │ ├── duk_error.h
│ │ ├── duk_error_augment.c
│ │ ├── duk_error_longjmp.c
│ │ ├── duk_error_macros.c
│ │ ├── duk_error_misc.c
│ │ ├── duk_error_throw.c
│ │ ├── duk_exception.h
│ │ ├── duk_forwdecl.h
│ │ ├── duk_harray.h
│ │ ├── duk_hboundfunc.h
│ │ ├── duk_hbuffer.h
│ │ ├── duk_hbuffer_alloc.c
│ │ ├── duk_hbuffer_assert.c
│ │ ├── duk_hbuffer_ops.c
│ │ ├── duk_hbufobj.h
│ │ ├── duk_hbufobj_misc.c
│ │ ├── duk_hcompfunc.h
│ │ ├── duk_heap.h
│ │ ├── duk_heap_alloc.c
│ │ ├── duk_heap_finalize.c
│ │ ├── duk_heap_hashstring.c
│ │ ├── duk_heap_markandsweep.c
│ │ ├── duk_heap_memory.c
│ │ ├── duk_heap_misc.c
│ │ ├── duk_heap_refcount.c
│ │ ├── duk_heap_stringcache.c
│ │ ├── duk_heap_stringtable.c
│ │ ├── duk_heaphdr.h
│ │ ├── duk_heaphdr_assert.c
│ │ ├── duk_henv.h
│ │ ├── duk_hnatfunc.h
│ │ ├── duk_hobject.h
│ │ ├── duk_hobject_alloc.c
│ │ ├── duk_hobject_assert.c
│ │ ├── duk_hobject_class.c
│ │ ├── duk_hobject_enum.c
│ │ ├── duk_hobject_misc.c
│ │ ├── duk_hobject_pc2line.c
│ │ ├── duk_hobject_props.c
│ │ ├── duk_hproxy.h
│ │ ├── duk_hstring.h
│ │ ├── duk_hstring_assert.c
│ │ ├── duk_hstring_misc.c
│ │ ├── duk_hthread.h
│ │ ├── duk_hthread_alloc.c
│ │ ├── duk_hthread_builtins.c
│ │ ├── duk_hthread_misc.c
│ │ ├── duk_hthread_stacks.c
│ │ ├── duk_internal.h
│ │ ├── duk_jmpbuf.h
│ │ ├── duk_js.h
│ │ ├── duk_js_arith.c
│ │ ├── duk_js_bytecode.h
│ │ ├── duk_js_call.c
│ │ ├── duk_js_compiler.c
│ │ ├── duk_js_compiler.h
│ │ ├── duk_js_executor.c
│ │ ├── duk_js_ops.c
│ │ ├── duk_js_var.c
│ │ ├── duk_json.h
│ │ ├── duk_lexer.c
│ │ ├── duk_lexer.h
│ │ ├── duk_numconv.c
│ │ ├── duk_numconv.h
│ │ ├── duk_refcount.h
│ │ ├── duk_regexp.h
│ │ ├── duk_regexp_compiler.c
│ │ ├── duk_regexp_executor.c
│ │ ├── duk_replacements.c
│ │ ├── duk_replacements.h
│ │ ├── duk_selftest.c
│ │ ├── duk_selftest.h
│ │ ├── duk_source_meta.json
│ │ ├── duk_strings.h
│ │ ├── duk_tval.c
│ │ ├── duk_tval.h
│ │ ├── duk_unicode.h
│ │ ├── duk_unicode_support.c
│ │ ├── duk_unicode_tables.c
│ │ ├── duk_util.h
│ │ ├── duk_util_bitdecoder.c
│ │ ├── duk_util_bitencoder.c
│ │ ├── duk_util_bufwriter.c
│ │ ├── duk_util_cast.c
│ │ ├── duk_util_double.c
│ │ ├── duk_util_hashbytes.c
│ │ ├── duk_util_memory.c
│ │ ├── duk_util_misc.c
│ │ ├── duk_util_tinyrandom.c
│ │ └── duktape.h
│ └── tools/
│ ├── combine_src.py
│ ├── configure.py
│ ├── create_spdx_license.py
│ ├── duk_meta_to_strarray.py
│ ├── dukutil.py
│ ├── dump_bytecode.py
│ ├── extract_caseconv.py
│ ├── extract_chars.py
│ ├── extract_unique_options.py
│ ├── genbuiltins.py
│ ├── genconfig.py
│ ├── json2yaml.py
│ ├── merge_debug_meta.py
│ ├── prepare_unicode_data.py
│ ├── resolve_combined_lineno.py
│ ├── scan_strings.py
│ ├── scan_used_stridx_bidx.py
│ └── yaml2json.py
├── react_juce.cpp
└── react_juce.h
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitbook.yaml
================================================
root: ./docs/
================================================
FILE: .github/FUNDING.yml
================================================
# These are supported funding model platforms
github: nick-thompson
patreon: # Replace with a single Patreon username
open_collective: # Replace with a single Open Collective username
ko_fi: # Replace with a single Ko-fi username
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username
otechie: # Replace with a single Otechie username
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
================================================
FILE: .github/workflows/cmake.yml
================================================
name: CMake
on: [push, pull_request]
env:
# Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
BUILD_TYPE: Release
jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [macos-latest, ubuntu-latest, windows-latest]
steps:
- uses: actions/checkout@v2
with:
submodules: true
- name: Fetch juce dependencies
if: matrix.os == 'ubuntu-latest'
run: sudo apt-get update && sudo apt-get install libx11-dev libxrandr-dev libxinerama-dev libxcursor-dev libxext-dev libfreetype6-dev libasound2-dev
- name: Create Build Environment
# Some projects don't allow in-source building, so create a separate build directory
# We'll use this as our working directory for all subsequent commands
run: cmake -E make_directory ${{runner.workspace}}/build
- name: Configure CMake
# Use a bash shell so we can use the same syntax for environment variable
# access regardless of the host operating system
shell: bash
working-directory: ${{runner.workspace}}/build
# Note the current convention is to use the -S and -B options here to specify source
# and build directories, but this is only available with CMake 3.13 and higher.
# The CMake binaries on the Github Actions machines are (as of this writing) 3.12
run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE
- name: Build
working-directory: ${{runner.workspace}}/build
shell: bash
# Execute the build. You can specify a specific target with "--target <NAME>"
run: cmake --build . --config $BUILD_TYPE
================================================
FILE: .github/workflows/lint.yml
================================================
name: Lint
on: [push, pull_request]
jobs:
run-linters:
name: Run linters
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: bahmutov/npm-install@v1
- name: Lint
run: npm run lint
================================================
FILE: .github/workflows/node.yml
================================================
name: Node.js
on: [push, pull_request]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup Node.js
uses: actions/setup-node@v1
with:
node-version: "12.x"
registry-url: "https://npm.pkg.github.com"
- name: Install dependencies
working-directory: ${{runner.workspace}}/react-juce/packages/react-juce
run: npm ci
- name: Build react-juce
working-directory: ${{runner.workspace}}/react-juce/packages/react-juce
run: npm run build
================================================
FILE: .github/workflows/publish.yml
================================================
name: Publish Packages
on:
release:
types: [created]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v1
with:
node-version: "12.x"
registry-url: "https://registry.npmjs.org"
- name: Install dependencies
working-directory: ${{runner.workspace}}/react-juce/packages/react-juce
run: npm ci
- name: Build react-juce
working-directory: ${{runner.workspace}}/react-juce/packages/react-juce
run: npm run build
- name: Publish
working-directory: ${{runner.workspace}}/react-juce/packages/react-juce
run: npm publish
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_AUTH_TOKEN }}
================================================
FILE: .gitignore
================================================
# Compiled object files
*.slo
*.lo
*.o
*.obj
*.tlog
*.log
.vscode/
.cache/
build
examples/TestRunner/Builds
examples/**/build
# For VSCode users
*.code-workspace
# For JetBrains users
.idea
# For vim users
*.swp
._*
*.mode1v3
*.pbxuser
*.perspectivev3
*.user
*.ncb
*.suo
*.ilk
*.pch
*.pdb
*.dep
*.idb
*.manifest
*.manifest.res
*.o
*.d
*.sdf
*.opensdf
*.VC.db
*.VC.opendb
xcuserdata
xcshareddata
*.xccheckout
*.xcscmblueprint
contents.xcworkspacedata
.DS_Store
.svn
.deps
.dirstamp
profile
node_modules
**/MacOSX/build
**/iOS/build
**/IDEWorkspaceChecks.plist
**/Linux/build
**/LinuxMakefile/build
**/VisualStudio2005/Debug
**/VisualStudio2005/Release
**/VisualStudio2008/Debug
**/VisualStudio2008/Release
**/VisualStudio2010/Debug
**/VisualStudio2010/Release
**/VisualStudio2012/Debug
**/VisualStudio2012/Release
**/VisualStudio2013/Win32
**/VisualStudio2013/x64
**/VisualStudio2015/Win32
**/VisualStudio2015/x64
**/VisualStudio2017/Win32
**/VisualStudio2017/x64
**/Builds/x64
**/.vs
**/CodeBlocks/bin
**/CodeBlocks/obj
**/CodeBlocks/*.depend
**/CodeBlocks/*.layout
**/Builds/Android/.gradle
**/Builds/Android/.idea
**/Builds/Android/build
**/Builds/Android/**/*.iml
**/Builds/Android/local.properties
**/Builds/Android/app/build
**/Builds/Android/app/.externalNativeBuild
**/Builds/Android/lib/build
**/Builds/Android/lib/.externalNativeBuild
**/Builds/CLion/cmake-build-*
**/Builds/CLion/.idea
**/doxygen/doc
**/doxygen/build
extras/Projucer/JUCECompileEngine.dylib
**/AAX_SDK_2p3p1/Libs/*.build
**/AAX_SDK_2p3p1/Libs/AAXLibrary/WinBuild/**/int
**/AAX_SDK_2p3p1/Libs/Debug
**/AAX_SDK_2p3p1/Libs/Release
**/AAX_SDK_2p3p1/Documentation
================================================
FILE: .gitmodules
================================================
[submodule "juce"]
path = ext/juce
url = ../../juce-framework/JUCE.git
[submodule "yoga"]
path = react_juce/yoga
url = ../../facebook/yoga.git
[submodule "react_juce/hermes"]
path = react_juce/hermes
url = ../../facebook/hermes.git
================================================
FILE: .prettierignore
================================================
react_juce
build
dist
ext
juce
================================================
FILE: CMakeLists.txt
================================================
cmake_minimum_required(VERSION 3.15)
project(reactjuce VERSION 0.1.0)
# Change this option to ON if you want to build the AudioPluginHost for example
# (practical to debug the plugin processor directly from your IDE)
option(JUCE_BUILD_EXTRAS "Build JUCE Extras" OFF)
# Change this option to set the JS Interpreter/Engine you wish to run React-JUCE against.
set(REACTJUCE_JS_LIBRARY DUKTAPE CACHE STRING "The JS Engine to use: either HERMES or DUKTAPE")
add_subdirectory(ext/juce)
# Adding any custom modules you might have:
juce_add_module(react_juce)
# Setup the JS engine/interpreter to use.
if (REACTJUCE_JS_LIBRARY STREQUAL "HERMES")
add_subdirectory(react_juce/hermes)
target_compile_definitions(
react_juce
INTERFACE
REACTJUCE_USE_HERMES=1
)
#TODO: We should be able to remove this include bloc once the following PR is merged
# over at hermes upstream: https://github.com/facebook/hermes/pull/454
target_include_directories(
react_juce
INTERFACE
react_juce/hermes/API/
react_juce/hermes/public/
)
target_link_libraries(
react_juce
INTERFACE
hermesapi
)
elseif (REACTJUCE_JS_LIBRARY STREQUAL "QUICKJS")
#TODO: Add QuickJS cmake settings/includes here.
elseif (REACTJUCE_JS_LIBRARY STREQUAL "DUKTAPE")
target_compile_definitions(
react_juce
INTERFACE
REACTJUCE_USE_DUKTAPE=1
)
endif()
# If you want to create new projects, you can init them in the examples folder
# and add them here with the add_subdirectory command
add_subdirectory(examples/GainPlugin)
================================================
FILE: CONTRIBUTING.md
================================================
# Contributing
We'd love to see you get involved with React-JUCE! Here are our current working guidelines, and we'll be updating and iterating on these as we go.
- Have a question? Please open a Discussion topic, not an issue
- Document every feature request, bugfix, or change with an issue
- Issues that have been assigned to someone should be considered "in progress"
- Issues with no assignee are free to claim. Please assign yourself if you want to tackle an issue to prevent duplicate efforts
- If you don't see an issue for some work you're planning, open one so that we can mark an assignee and further avoid duplication
- Priority will be established by way of labels
- Timelines will be established by way of milestones
# Style Guide
For javascript, typescript, markdown and yaml we enforce default [prettier](https://prettier.io/) formatting via a pipeline check. You can set up your IDE to format automatically, instantiate our formatting pre-commit hook by running `npm i && npx husky install` in the top-level directory, or ad-hoc by running `npm run beautify`.
On the C++ side, we don't yet have a coding style guideline, so please try to adhere to the style you see in the codebase. We will aim to get some tooling involved
soon to ameliorate that situation!
## Thank you
:pray: :heart: :rocket:
================================================
FILE: LICENSE.md
================================================
MIT License
Copyright (c) [2019] [Nicholas Thompson]
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
================================================
FILE: README.md
================================================
# React-JUCE
> Write cross-platform native apps with React.js and JUCE
React-JUCE (formerly named Blueprint) is a hybrid JavaScript/C++ framework that enables a [React.js](https://reactjs.org/) frontend for a [JUCE](http://juce.com/) application or plugin. It provides an embedded, ES5 JavaScript engine via [Duktape](http://duktape.org/), native hooks for rendering the React component tree to `juce::Component` instances, and a flexbox layout engine via [Yoga](https://yogalayout.com/).
For more information, see the introductory blog post here: [Blueprint: A JUCE Rendering Backend for React.js](https://nickwritesablog.com/blueprint-a-juce-rendering-backend-for-react-js)
## Status
**Approaching Beta**. We hope to announce a beta release in the coming weeks, after which we will aim our focus at stability and completeness on the path
to a 1.0 release.
**Anticipated Breaking Changes**
- We'll be renaming Blueprint to react-juce before beta (#34)
- ~~Updating the examples and `npm init` template to point to npm instead of the local package~~
- ~~`ReactApplicationRoot::evaluate` and `ReactApplicationRoot::evaluateFile` (#115)~~
- ~~Refactoring the hot reloader and decoupling the EcmascriptEngine from ReactApplicationRoot (#65)~~
## Resources
- Documentation: [Docs & Getting Started](https://docs.react-juce.dev)
- Discussions: [GitHub Discussions](https://github.com/nick-thompson/react-juce/discussions)
- Community: [The Audio Programmer Discord Server](https://discord.gg/3H4wwVf49v)
- Join the `#blueprint` channel and say hi!
## Maintainers
- [@nick-thompson](https://github.com/nick-thompson)
- [@joshmarler](https://github.com/JoshMarler)
## Examples
React-JUCE is a young project, but already it provides the framework on which the entire user interface for [Creative Intent's Remnant](https://www.creativeintent.co/product/remnant) plugin is built.

Besides that, you can check out the example code in the `examples/` directory. See the "Documentation" section
below for building and running the demo plugin. If you have a project written with React-JUCE that you want to share, get in touch! I would
love to showcase your work.
## Contributing
See [CONTRIBUTING.md](https://github.com/nick-thompson/react-juce/blob/master/CONTRIBUTING.md)
## License
See [LICENSE.md](https://github.com/nick-thompson/react-juce/blob/master/LICENSE.md)
================================================
FILE: docs/.nojekyll
================================================
================================================
FILE: docs/README.md
================================================
# Introduction
React-JUCE is a hybrid JavaScript/C++ framework that enables a [React.js](https://reactjs.org/) frontend for a [JUCE](http://juce.com/) application or plugin. It provides an embedded, ECMAScript-compliant JavaScript engine via [Duktape](http://duktape.org/), native hooks for rendering the React component tree via `juce::Component` instances, and a flexbox layout engine via [Yoga](https://yogalayout.com/).
For more information, see the introductory blog post here: [React-JUCE: A JUCE Rendering Backend for React.js](https://nickwritesablog.com/blueprint-a-juce-rendering-backend-for-react-js)
## Examples
React-JUCE is a young project, but already it provides the framework on which the entire user interface for [Creative Intent's Remnant](https://www.creativeintent.co/product/remnant) plugin is built.

Besides that, you can check out the example code in the `examples/` directory. See the "Documentation" section
below for building and running the demo plugin. If you have a project written with React-JUCE that you want to share, get in touch! I would
love to showcase your work.
## Contributing
Yes, please! I would be very happy to welcome your involvement. Take a look at the [open issues](https://github.com/nick-thompson/react-juce/issues)
or the [project tracker](https://github.com/nick-thompson/react-juce/projects/1) to see if there's outstanding work that you might
be able to get started. Or feel free to propose an idea or offer feedback by [opening an issue](https://github.com/nick-thompson/react-juce/issues/new) as well.
I don't have a formal style guide at the moment, so please try to match the present formatting in any code contributions.
## License
See [LICENSE.md](https://github.com/nick-thompson/react-juce/blob/master/LICENSE.md)
================================================
FILE: docs/Resources.md
================================================
# Resources
- [Introductory Blog Post](https://nickwritesablog.com/blueprint-a-juce-rendering-backend-for-react-js/)
- [The Audio Programmer Podcast](http://img.youtube.com/vi/GOuFg773eCM/0.jpg)
- [](https://www.youtube.com/watch?v=GOuFg773eCM)
- [ADC 2019 Blueprint: rendering React.js to JUCE](https://www.youtube.com/watch?v=51pdMfGU-4g)
- [](https://www.youtube.com/watch?v=51pdMfGU-4g)
================================================
FILE: docs/SUMMARY.md
================================================
# Summary
## Guides
- [Getting Started](guides/Getting_Started.md)
- [Running the Examples](guides/Running_the_Examples.md)
- [Integrating Your Project](guides/Integrating_Your_Project.md)
- [Debugging with Duktape](guides/Debugging_With_Duktape.md)
- [Why Not React Native?](guides/Why_Not_React_Native.md)
## Components
- [View](components/View.md)
- [Image](components/Image.md)
- [Text](components/Text.md)
- [Canvas](components/Canvas.md)
- [Button](components/Button.md)
- [Slider](components/Slider.md)
- [ListView](components/ListView.md)
- [ScrollView](components/ScrollView.md)
- [Style Properties](components/Styles.md)
- [Synthetic Events](components/Events.md)
## Native
- [Custom Native Components](native/Custom_Native_Components.md)
- [JS/Native Interop](native/Interop.md)
## Have a Question?
- [GitHub Discussions](https://github.com/nick-thompson/react-juce/discussions)
- [Discord Chatroom](https://discord.gg/3H4wwVf49v)
- [Open an Issue](https://github.com/nick-thompson/react-juce/issues)
================================================
FILE: docs/components/Button.md
================================================
# Button
A basic React component for rendering a button with web-like behavior and
event interactions.
## Example
```js
import React, { Component } from "react";
import { View, Button, Text } from "react-juce";
function App(props) {
return (
<View {...styles.outer}>
<Button
{...styles.button}
onClick={(e) => console.log('Click')}
onMouseEnter={(e) => console.log('Mouse Enter!)}
onMouseLeave={(e) => console.log('Mouse Leave!)}>
<Text>Click me!</Text>
</Button>
</View>
);
}
const styles = {
outer: {
width: "100%",
height: "100%",
backgroundColor: "#17191f",
justifyContent: "center",
alignItems: "center",
},
button: {
borderColor: "#66cffd",
padding: 20,
},
};
```
## Props
`Button` inherits support for all of the core `View` properties described in [View](View.md).
#### onClick
A callback property which will be invoked in response to a mouse click. The callback should
accept a single [`SyntheticMouseEvent`](Events.md) argument.
| Type | Required | Supported |
| -------- | -------- | ----------------------------------------------------------------------------------------- |
| function | No | Partial: [Standard](https://developer.mozilla.org/en-US/docs/Web/API/Element/click_event) |
## Styles
`Button` supports all of the default style properties described in [Style Properties](Styles.md).
================================================
FILE: docs/components/Canvas.md
================================================
# TODO
================================================
FILE: docs/components/Events.md
================================================
# TODO: Describe synthetic event support
================================================
FILE: docs/components/Image.md
================================================
# Image
A React component for displaying different types of images, including network images,
local image files, and image data URLs.
The example below demonstrates displaying a local image file, and a data url.
## Example
```js
import React, { Component } from "react";
import { View, Image } from "react-juce";
// Using a bundling tool like Webpack or Rollup, we can configure this import
// to read the image file from disk at the time of bundling, and embed the data
// URL in our javascript bundle which can be imported just like this.
import logoDataUri from "./logo.jpg";
function App(props) {
return (
<View {...styles.outer} onMouseDown={(e) => console.log("Mouse event!", e)}>
<Image {...styles.image} source="file:///Users/nick/Documents/logo.jpg" />
<Image {...styles.image} source={logoDataUri} />
</View>
);
}
const styles = {
outer: {
width: "100%",
height: "100%",
backgroundColor: "ff17191f",
justifyContent: "center",
alignItems: "center",
},
image: {
width: "25%",
height: "25%",
padding: 20,
},
};
```
## Props
`Image` inherits support for all of the core `View` properties described in [View](View.md).
#### source
The image source (either a remote URL ([#14](https://github.com/nick-thompson/react-juce/issues/14)), a local file resource, or a data uri).
| Type | Required | Supported |
| ------ | -------- | -------------------------------------------------------------------------- |
| string | No | Partial: [Standard](https://developer.mozilla.org/en-US/docs/Glossary/URL) |
## Styles
`Image` supports all of the default style properties described in [Style Properties](Styles.md).
================================================
FILE: docs/components/ListView.md
================================================
# TODO
================================================
FILE: docs/components/ScrollView.md
================================================
# TODO
================================================
FILE: docs/components/Slider.md
================================================
# Slider
A basic React component for rendering a linear slider or rotary knob, common in
many audio applications.
`Slider` is simply a composition of a single `View` component, a single `Canvas` component,
and a set of default drawing operations to render common slider representations.
## Example
```js
import React, { Component } from "react";
import { View, Slider, Text } from "react-juce";
function App(props) {
return (
<View {...styles.outer}>
<Slider
{...this.props}
value={props._value}
onDraw={Slider.drawRotary}
onMouseDown={props._onMouseDown}
onMouseUp={props._onMouseUp}
onChange={props._onSliderValueChange}
>
<Text>Cutoff Frequency</Text>
</Slider>
</View>
);
}
const styles = {
outer: {
width: "100%",
height: "100%",
backgroundColor: "#17191f",
justifyContent: "center",
alignItems: "center",
},
};
```
## Props
`Slider` inherits support for all of the core `View` properties described in [View](View.md).
#### sensitivity
Sets the sensitivity of a mouse drag interaction as it relates to changing the slider value.
The default value is `0.005`. Smaller numbers are less sensitive, larger numbers more sensitive.
| Type | Required | Supported |
| ------ | -------- | ------------ |
| number | No | Non-Standard |
#### value
Sets the current value of the slider.
See React.js' notion of [controlled and uncontrolled components](https://reactjs.org/docs/forms.html#controlled-components). The `Slider`
value property and `onChange` behavior follow this model.
| Type | Required | Supported |
| ------ | -------- | ------------ |
| number | No | Non-Standard |
#### onDraw
A callback property which will be invoked when its time to draw to the underlying `Canvas`.
This property is much like the `onDraw` property on the `Canvas` view itself, but with additional
arguments: (`context`, `width`, `height`, `value`).
These arguments are, respectively, the underlying canvas rendering context, the current width of the
underlying canvas object, the current height of the underlying canvas object, and the current slider value
on the range [0, 1].
Default drawing operations are provided as static members of the `Slider` class, which
can be passed directly as the `onDraw` property:
- `Slider.drawLinearHorizontal`
- `Slider.drawLinearVertical`
- `Slider.drawRotary` (Default)
| Type | Required | Supported |
| -------- | -------- | ------------ |
| function | No | Non-Standard |
#### onChange
A callback property which will be invoked when the slider's value changes. The callback should
accept a single argument: a number on the range [0, 1].
| Type | Required | Supported |
| -------- | -------- | ------------ |
| function | No | Non-Standard |
#### mapDragGestureToValue
A callback property which will be invoked to map a drag gesture to a new slider value. This
allows for customization of the drag behavior, for example:
- Behavior that maps drags "up and to the right" as increasing in value, and "down and to the left" as decreasing.
- Behavior that maps only rightward drag as increasing in value and leftward drag as decreasing invalue.
- Behavior that maps only upwards drag as increasing in value and downwards drag as decreasing invalue.
The callback should accept five arguments:
`(mouseDownX, mouseDownY, sensitivity, valueAtDragStart, dragEvent)`. Respectively, these
arguments are the x and y position of the mouse at the time of the mouseDown event, the `sensitivity`
of the slider as defined by the `sensitivity` prop above, the slider value at the time the drag started,
and the current `SyntheticMouseEvent` for the drag operation.
Default mapping operations are provided as static members of the `Slider` class, which
can be passed directly as the `mapDragGestureToValue` property:
- `Slider.linearHorizontalGestureMap`
- `Slider.linearVerticalGestureMap`
- `Slider.rotaryGestureMap` (Default)
| Type | Required | Supported |
| -------- | -------- | ------------ |
| function | No | Non-Standard |
## Styles
`Slider` supports all of the default style properties described in [Style Properties](Styles.md).
================================================
FILE: docs/components/Styles.md
================================================
# Style Properties
Style properties in React-JUCE generally aim to match the behavior and experience
of writing CSS or writing a StyleSheet with React Native. It's important to note, however,
that these style properties _are not_ proper CSS, and that we have no notion of parsing CSS
stylesheets. In React-JUCE, these properties are simple directives passed to the underlying `juce::Component`
heirarchy that yield behavior that matches much of the CSS specificiation.
At present, these style properties are applied as a top-level prop to any given component, as you would with
any other prop. In the future, we may adopt an API closer to that of React Native's StyleSheet.
## Layout Props
| Property | Support | Spec |
| ------------------ | ------- | -------------------------------------------------------------------------------- |
| flex | Yes | [Flexbox](https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Flexbox) |
| flex-grow | Yes | [Flexbox](https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Flexbox) |
| flex-shrink | Yes | [Flexbox](https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Flexbox) |
| flex-basis | Yes | [Flexbox](https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Flexbox) |
| flex-direction | Yes | [Flexbox](https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Flexbox) |
| justify-content | Yes | [Flexbox](https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Flexbox) |
| align-items | Yes | [Flexbox](https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Flexbox) |
| align-content | Yes | [Flexbox](https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Flexbox) |
| align-self | Yes | [Flexbox](https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Flexbox) |
| flex-wrap | Yes | [Flexbox](https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Flexbox) |
| position | Yes | [Flexbox](https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Flexbox) |
| left | Yes | [Flexbox](https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Flexbox) |
| top | Yes | [Flexbox](https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Flexbox) |
| right | Yes | [Flexbox](https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Flexbox) |
| bottom | Yes | [Flexbox](https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Flexbox) |
| width | Yes | [Flexbox](https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Flexbox) |
| height | Yes | [Flexbox](https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Flexbox) |
| min-width | Yes | [Flexbox](https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Flexbox) |
| min-height | Yes | [Flexbox](https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Flexbox) |
| max-width | Yes | [Flexbox](https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Flexbox) |
| max-height | Yes | [Flexbox](https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Flexbox) |
| aspect-ratio | Yes | [Flexbox](https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Flexbox) |
| direction | Yes | [Flexbox](https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Flexbox) |
| overflow | Yes | [Flexbox](https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Flexbox) |
| margin | Yes | [Flexbox](https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Flexbox) |
| margin-left | Yes | [Flexbox](https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Flexbox) |
| margin-top | Yes | [Flexbox](https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Flexbox) |
| margin-right | Yes | [Flexbox](https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Flexbox) |
| margin-bottom | Yes | [Flexbox](https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Flexbox) |
| margin-start | Yes | [Flexbox](https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Flexbox) |
| margin-end | Yes | [Flexbox](https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Flexbox) |
| margin-horizontal | Yes | [Flexbox](https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Flexbox) |
| margin-vertical | Yes | [Flexbox](https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Flexbox) |
| padding | Yes | [Flexbox](https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Flexbox) |
| padding-left | Yes | [Flexbox](https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Flexbox) |
| padding-top | Yes | [Flexbox](https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Flexbox) |
| padding-right | Yes | [Flexbox](https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Flexbox) |
| padding-bottom | Yes | [Flexbox](https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Flexbox) |
| padding-start | Yes | [Flexbox](https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Flexbox) |
| padding-end | Yes | [Flexbox](https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Flexbox) |
| padding-horizontal | Yes | [Flexbox](https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Flexbox) |
| padding-vertical | Yes | [Flexbox](https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Flexbox) |
## View Props
| Property | Support | Spec |
| -------------------------- | ------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------- |
| border-left-width | Planned [(#143)](https://github.com/nick-thompson/react-juce/issues/143) | [MDN border-width](https://developer.mozilla.org/en-US/docs/Web/CSS/border-width) |
| border-right-width | Planned [(#143)](https://github.com/nick-thompson/react-juce/issues/143) | [MDN border-width](https://developer.mozilla.org/en-US/docs/Web/CSS/border-width) |
| border-top-width | Planned [(#143)](https://github.com/nick-thompson/react-juce/issues/143) | [MDN border-width](https://developer.mozilla.org/en-US/docs/Web/CSS/border-width) |
| border-bottom-width | Planned [(#143)](https://github.com/nick-thompson/react-juce/issues/143) | [MDN border-width](https://developer.mozilla.org/en-US/docs/Web/CSS/border-width) |
| border-left-color | Planned [(#143)](https://github.com/nick-thompson/react-juce/issues/143) | [MDN border-color](https://developer.mozilla.org/en-US/docs/Web/CSS/border-color) |
| border-right-color | Planned [(#143)](https://github.com/nick-thompson/react-juce/issues/143) | [MDN border-color](https://developer.mozilla.org/en-US/docs/Web/CSS/border-color) |
| border-top-color | Planned [(#143)](https://github.com/nick-thompson/react-juce/issues/143) | [MDN border-color](https://developer.mozilla.org/en-US/docs/Web/CSS/border-color) |
| border-bottom-color | Planned [(#143)](https://github.com/nick-thompson/react-juce/issues/143) | [MDN border-color](https://developer.mozilla.org/en-US/docs/Web/CSS/border-color) |
| border-bottom-left-radius | Planned [(#143)](https://github.com/nick-thompson/react-juce/issues/143) | [MDN border-radius](https://developer.mozilla.org/en-US/docs/Web/CSS/border-radius) |
| border-bottom-right-radius | Planned [(#143)](https://github.com/nick-thompson/react-juce/issues/143) | [MDN border-radius](https://developer.mozilla.org/en-US/docs/Web/CSS/border-radius) |
| border-top-left-radius | Planned [(#143)](https://github.com/nick-thompson/react-juce/issues/143) | [MDN border-radius](https://developer.mozilla.org/en-US/docs/Web/CSS/border-radius) |
| border-top-right-radius | Planned [(#143)](https://github.com/nick-thompson/react-juce/issues/143) | [MDN border-radius](https://developer.mozilla.org/en-US/docs/Web/CSS/border-radius) |
| border-width | Planned [(#143)](https://github.com/nick-thompson/react-juce/issues/143) | [MDN border-width](https://developer.mozilla.org/en-US/docs/Web/CSS/border-width) |
| border-color | Planned [(#143)](https://github.com/nick-thompson/react-juce/issues/143) | [MDN border-color](https://developer.mozilla.org/en-US/docs/Web/CSS/border-color) |
| border-radius | Planned [(#143)](https://github.com/nick-thompson/react-juce/issues/143) | [MDN border-radius](https://developer.mozilla.org/en-US/docs/Web/CSS/border-radius) |
| background-color | Partial [(#84)](https://github.com/nick-thompson/react-juce/issues/84) | [MDN background-color](https://developer.mozilla.org/en-US/docs/Web/CSS/background-color) |
| opacity | Yes | [juce::Component::setAlpha](https://docs.juce.com/master/classComponent.html#a1b9329a87c71ed01319071e0fedac128) |
================================================
FILE: docs/components/Text.md
================================================
# Text
A React component for displaying text.
Unlike React Native and React-DOM, `Text` does not yet support nesting ([#6](https://github.com/nick-thompson/react-juce/issues/6)), though
it does happily support styling, and touch handling.
## Example
```js
import React, { Component } from "react";
import { View, Text } from "react-juce";
function App(props) {
return (
<View {...styles.outer}>
<Text {...styles.labelText}>Hello, </Text>
<Text {...styles.nameText}>{props.name}</Text>
</View>
);
}
const styles = {
outer: {
width: "100%",
height: "100%",
backgroundColor: "#17191f",
justifyContent: "center",
alignItems: "center",
},
labelText: {
color: "#626262",
fontSize: 16.0,
lineSpacing: 1.6,
},
nameText: {
color: "#6262f8",
fontSize: 16.0,
lineSpacing: 1.6,
},
};
```
## Props
`Text` inherits support for all of the core `View` properties described in [View](View.md).
#### color
The color used to draw the text
| Type | Required | Supported |
| ------ | -------- | ------------------------------------------------------------------ |
| string | No | [Standard](https://developer.mozilla.org/en-US/docs/Web/CSS/color) |
#### fontSize
The font size used to draw the text
| Type | Required | Supported |
| ------ | -------- | --------------------------------------------------------------------- |
| string | No | [Partial](https://developer.mozilla.org/en-US/docs/Web/CSS/font-size) |
#### fontFamily
The font family name with which to draw the text
| Type | Required | Supported |
| ------ | -------- | ----------------------------------------------------------------------- |
| string | No | [Partial](https://developer.mozilla.org/en-US/docs/Web/CSS/font-family) |
#### fontStyle
Sets whether the text should be rendered bold, italics, or normal.
| Type | Required | Supported |
| ------ | -------- | ---------------------------------------------------------------------- |
| string | No | [Partial](https://developer.mozilla.org/en-US/docs/Web/CSS/font-style) |
#### justification
Sets the horizontal alignment of the text within the container.
TODO: Rename this prop and match the text-align spec
| Type | Required | Supported |
| ------ | -------- | -------------------------------------------------------------------- |
| string | No | [Non-Standard](https://docs.juce.com/master/classJustification.html) |
#### kerningFactor
Sets the horizontal spacing between text characters.
TODO: Rename this prop and match the letter-spacing spec
| Type | Required | Supported |
| ------ | -------- | --------------------------------------------------------------------------------------------- |
| string | No | [Non-Standard](https://docs.juce.com/master/classFont.html#a996b7095b0956f62b71f24893e72a914) |
#### lineSpacing
Sets the height of a line box, commonly used to apply vertical spacing between
neighboring lines of text.
TODO: Rename this prop and match the line-height spec
| Type | Required | Supported |
| ------ | -------- | --------------------------------------------------------------------------------------------------------- |
| string | No | [Non-Standard](https://docs.juce.com/master/classAttributedString.html#a0506d7b2000aaebd5873ea23eca6ae6a) |
#### wordWrap
Sets the word-wrap behavior for when the text content overflows its content box.
| Type | Required | Supported |
| ------ | -------- | --------------------------------------------------------------------------------------------------------- |
| string | No | [Non-Standard](https://docs.juce.com/master/classAttributedString.html#ad752f270294ec5b2cef0c80863ee3a3c) |
## Styles
`Text` supports all of the default style properties described in [Style Properties](Styles.md).
================================================
FILE: docs/components/TextInput.md
================================================
TextInput component imitates web's `<input type="text">`.
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/text
So it supports props like `placeholder`, `maxlength`, `onInput`, etc...
TextInput also supports React's controlled components model:
https://reactjs.org/docs/uncontrolled-components.html.
If the user supplies a `value` prop,
then it never renders anything into that text editor other than
the string supplied by that `value` prop.
## Example
```js
import React, { Component } from "react";
import { Text, TextInput, View } from "react-juce";
class App extends Component {
constructor(props) {
super(props);
this._onInput = this._onInput.bind(this);
this.state = {
textValue: "",
};
}
_onInput(event) {
console.log(`onInput: ${event.value}`);
this.setState({ textValue: event.value });
}
render() {
return (
<View>
<TextInput
value={this.state.textValue}
placeholder="init message"
onInput={this._onInput}
{...styles.text_input}
/>
</View>
);
}
}
const styles = {
text_input: {
backgroundColor: "ff303030",
color: "ff66FDCF",
fontSize: 15.0,
fontFamily: "Menlo",
fontStyle: Text.FontStyleFlags.bold,
"placeholder-color": "ffAAAAAA",
height: 30,
width: 200,
},
};
export default App;
```
## Props
**TODO**: Document props. See [the class](https://github.com/nick-thompson/react-juce/blob/master/packages/react-juce/src/components/TextInput.tsx#L11) for props in the meantime.
================================================
FILE: docs/components/View.md
================================================
# View
The most fundamental of the core React-JUCE components, `View` is a container that supports layout with flexbox, style, and some event handling.
`View` maps directly to the underlying native `reactjuce::View` instance, which is effectively a simple `juce::Component`.
`View` is designed to be nested inside other views and can have 0 to many children of any type.
## Example
```js
import React, { Component } from "react";
import { View } from "react-juce";
function App(props) {
return (
<View {...styles.outer} onMouseDown={(e) => console.log("Mouse event!", e)}>
<View {...styles.inner} />
</View>
);
}
const styles = {
outer: {
width: "100%",
height: "100%",
backgroundColor: "ff17191f",
justifyContent: "center",
alignItems: "center",
},
inner: {
width: "25%",
height: "25%",
backgroundColor: "ffa7191f",
},
};
```
## Props
#### onMeasure
A callback which will be invoked any time the `View`'s layout calculation changes.
The callback should accept a single argument, a [SyntheticEvent](Events.md) object holding
a `width` and `height` property reflecting the new size of the `View`.
| Type | Required | Supported |
| -------- | -------- | ----------------- |
| function | No | Yes: Non-Standard |
#### onMouseDown
A callback which will be invoked in response to a mouse button down event on the
underlying native component. The callback should accept a single argument, a [SyntheticMouseEvent](Events.md)
object similar in interface to [MouseEvent](https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent).
| Type | Required | Supported |
| -------- | -------- | ----------------- |
| function | No | Partial: Standard |
#### onMouseUp
A callback which will be invoked in response to a mouse button up event on the
underlying native component. The callback should accept a single argument, a [SyntheticMouseEvent](Events.md)
object similar in interface to [MouseEvent](https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent).
| Type | Required | Supported |
| -------- | -------- | ----------------- |
| function | No | Partial: Standard |
#### onMouseEnter
A callback which will be invoked in response to a mouse entering the local bounds of a native component.
The callback should accept a single argument, a `SyntheticMouseEvent`
object similar in interface to [MouseEvent](https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent).
| Type | Required | Supported |
| -------- | -------- | ----------------- |
| function | No | Partial: Standard |
#### onMouseLeave
A callback which will be invoked in response to a mouse leaving the local bounds of a native component.
The callback should accept a single argument, a `SyntheticMouseEvent`
object similar in interface to [MouseEvent](https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent).
| Type | Required | Supported |
| -------- | -------- | ----------------- |
| function | No | Partial: Standard |
#### onMouseDoubleClick
A callback which will be invoked in response to a mouse button double click on the
underlying native component. The callback should accept a single argument, a [SyntheticMouseEvent](Events.md)
object similar in interface to [MouseEvent](https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent).
| Type | Required | Supported |
| -------- | -------- | ----------------- |
| function | No | Partial: Standard |
#### onKeyPress
A callback which will be invoked in response to a key press event while the
underlying native component has focus. The callback should accept a single argument, a [SyntheticKeyboardEvent](Events.md)
object similar in interface to [KeyboardEvent](https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent).
| Type | Required | Supported |
| -------- | -------- | ----------------- |
| function | No | Partial: Standard |
## Styles
`View` supports all of the default style properties described in [Style Properties](Styles.md).
================================================
FILE: docs/guides/Debugging_With_Duktape.md
================================================
# Debugger Support
(Because console.log() isn't always enough)
Note, there are known issues debugging on Windows. See [Known Issues](#known-issues)
JS debugging support for React-JUCE/Duktape is available via [Visual Studio Code](https://code.visualstudio.com/) using the [Duktape Debugger](https://marketplace.visualstudio.com/items?itemName=HaroldBrenes.duk-debug) extension.
Currently this is the only debug client known to support the use of source maps with Duktape.
If you do become aware of other Duktape debug clients that may work well with React-JUCE, please open an issue with details for us to investigate.
React-JUCE provides an implementation of the Duktape debugging interface via `EcmascriptEngine::debuggerAttach` and `EcmascriptEngine::debuggerDetach`.
If you are using the `ReactApplicationRoot` class to host your React app/ui then you can enjoy a debugging experience similar to that of React Native.
In debug builds with `JUCE_DEBUG` defined, ensure your editor has focus and use the `CTRL-d/CMD-d` command to trigger a call to `EcmascriptEngine::debuggerAttach`.
This command blocks the UI and awaits connection from a debug client. You can then attach your debugger, continue execution and set breakpoints etc.
To configure the Duktape debugger extension for use with React-JUCE, you will need to do the following:
- Download/Add the Duktape debugger extension.
- Ensure you have compiled React-JUCE and your application/plugin in debug mode (with `JUCE_DEBUG` defined).
- Add a launch configuration for debugging your UI.
An example launch configuration for use with the `GainPlugin` example project is provided below.
Note that `localRoot` points to the root `workspaceFolder`. In this case we assume `workspaceFolder` to be `examples/GainPlugin/jsui`.
The `outDir` entry points to the build directory containing the compiled JS bundle you wish to debug.
This `outDir` directory should also contain the bundle's associated source map.
```
{
"version": "0.2.0",
"configurations": [
{
"name": "JSUI Debug Attach",
"type": "duk",
"request": "attach",
"address": "localhost",
"port": 9091,
"localRoot": "${workspaceFolder}",
"sourceMaps": true,
"outDir": "${workspaceFolder}/build/js",
"stopOnEntry": false,
"debugLog": false
}
]
}
```
To ensure debugging works reliably, you need to ensure your source map has been generated by webpack using [devtool](https://webpack.js.org/configuration/devtool/).
The following option should be added to the `output` key in your webpack config:
`devtoolModuleFilenameTemplate: 'webpack:///[absolute-resource-path]'`
You also need to ensure that your bundle is not minified, this can be achieved by building your JS bundle with `webpack --mode=development`.
In the case of the `GainPlugin` example this can be achieved by running `npm run start` in `GainPlugin/jsui`.
The `webpack.config.js` template provided by React-JUCE enables all of this for you. See: [Starting a new Project](New_Project.md) for a project
template setup which includes debugger support. Project template files are available under `react-juce/packages/react-juce/template`.
Example `webpack.config.js`:
```
module.exports = {
entry: './src/index.js',
// This is the section you care about for debugging.
output: {
path: __dirname + '/build/js',
filename: 'main.js',
sourceMapFilename: "[file].map",
devtoolModuleFilenameTemplate: 'webpack:///[absolute-resource-path]'
},
devtool: "source-map",
module: {
rules: [
{
test: /\.(js|jsx)$/,
exclude: /node_modules/,
use: ['babel-loader']
},
{
test: /\.svg$/,
exclude: /node_modules/,
use: ['svg-inline-loader']
},
{
test: /\.(png|jpeg|jpg|gif)$/,
use: [
{
loader: 'url-loader',
options: {
limit: true,
esModule: false
}
}
]
}
]
},
}
```
To test debugging support using the `GainPlugin` example do the following:
- Open the `GainPlugin/jsui` directory in Visual Studio Code.
- Add the `launch.json` configuration from above to your `.vscode` directory under `GainPlugin/jsui`.
- Run `npm run start` in the `jsui` directory
- Start the standalone plugin app in your IDE (i.e. Visual Studio/Xcode)
- Give the `GainPlugin`'s UI/PluginEditor focus and hit `CTRL-d` (Win) / `CMD-d` (Mac)
- Start the `JSUI Debug Attach` launch task from the VSCode debugger menu.
- Set some breakpoints, profit!
## Known Issues
- Debugging support is currently experimental and issues may occur from time to time whilst we refine the experience.
- At present there are some issues debugging duktape under Windows. The vscode-duktape-debug extension requires a patch to resolve source map entries, without this patch setting breakpoints in source files fails. To obtain a version of the extension with this patch you can fetch https://github.com/JoshMarler/vscode-duktape-debug/tree/topic/fix-windows-debug-blueprint. To use this version of the extension run `npm install` in the `vscode-duktape-debug` root followed by `npm run compile`. You can then copy the contents of `vscode-duktape-debug/dist` to your vscode extensions directory which is usually under `.vscode` in your home folder. Copy the contents of `vscode-duktape-debug/dist` to `.vscode/extensions/haroldbrenes.duk-debug-0.5.6`. There are issues attaching the debugger with breakpoints already set in vscode on Windows. You will need to attach the debugger and then set breakpoints once attached.
## Acknowledgements
Thanks to [harold-b](https://github.com/harold-b/vscode-duktape-debug) for his excellent extension.
================================================
FILE: docs/guides/Getting_Started.md
================================================
# Getting Started
This guide assumes you have some familiarity with [React.js](https://reactjs.org/) and with [JUCE](https://juce.com/), and it is therefore recommended that you spend some time getting comfortable there, if you're not already, before embarking on this guide.
## Dependencies
To get started with React-JUCE, you'll first need to install a few dependencies:
- [Node.js](https://nodejs.org/en/) v8.11.0+
- [npm](https://www.npmjs.com/) v5.6.0+
- [JUCE](https://juce.com/) v5.4.2+ (Optional if you are only running the examples)
- Xcode10.2+ (MacOS)
- Visual Studio 2017+ (Windows)
Once you have the dependencies installed, we need to clone the React-JUCE repository
itself. React-JUCE's git repository contains necessary submodules, so we'll need to
collect those as well, which we can do one of two ways:
```bash
$ git clone --recurse-submodules git@github.com:nick-thompson/react-juce.git
```
or
```bash
$ git clone git@github.com:nick-thompson/react-juce.git
$ cd react-juce
$ git submodule update --init --recursive
```
Note that the `git@github.com` prefix here indicates cloning via SSH. If you prefer
to work with git via HTTPS you'll want to swap in `https://github.com/nick-thompson/react-juce.git`
in the above commands.
At this point, we've got everything ready to get our project up and running. Let's
move on to the next step, [running the demo plugin](Running_the_Examples.md).
================================================
FILE: docs/guides/Integrating_Your_Project.md
================================================
# Starting a New Project
This step assumes you've already reviewed the [Getting Started](Getting_Started.md) guide. If not,
please start there!
Ok, so you're ready to add some React.js to your JUCE project. Whether that's a totally new project or a preexisting project, getting React-JUCE involved is the same. If you're starting your project from scratch, I recommend running through the [Getting started with the Projucer](https://docs.juce.com/master/tutorial_new_projucer_project.html) tutorial on the JUCE website, if you haven't already.
Now before we write any code, we have to add React-JUCE to our JUCE project. Fortunately, JUCE makes this super
easy with the JUCE module format, and React-JUCE abides by that format. Follow along with the [Manage JUCE modules](https://docs.juce.com/master/tutorial_manage_projucer_project.html#tutorial_manage_projucer_project_managing_modules) section of the Projucer tutorial, wherein you'll need to add the React-JUCE module by pointing the Projucer to its location on disk. The actual React-JUCE JUCE module is located in the `react_juce` subdirectory of the root of the React-JUCE project.
## Template Generator
Next, the first thing we want to do here is write some React.js, so let's start with a "Hello World!" of our own. React-JUCE's `react-juce` npm package carries a template generator that you can use to boostrap a React application for your project. For this step, let's assume your JUCE project directory is at `~/MyProject`, the source files are at `~/MyProject/Source`, and we want to put the React application source at `~/MyProject/Source/jsui` (note, you can put this wherever you want). Now, to use the template generator, we start again at the root of the React-JUCE git repository:
```bash
$ pwd
/Users/nick/Dev/react-juce
$ cd packages/react-juce
$ npm run init -- ~/MyProject/Source/jsui
```
The template generator will create the `jsui` directory as suggested in the example command above, fill it
with a basic "Hello World!" app, and install local dependencies like React.js and Webpack. Like the [[GainPlugin Example|running-the-example]], we now need to build our output bundle.
```bash
$ cd ~/MyProject/Source/jsui
$ npm start
```
At this point we've got our app bundle ready to roll, so let's turn over to the native side to mount this into
our JUCE project.
## Native Code
Because we've already added the React-JUCE module to our Projucer project, we can jump straight into the code on the native side. Part of the native React-JUCE API is a particularly important class called `reactjuce::ReactApplicationRoot`. This class is mostly just a `juce::Component`, and in that way you should think about using it the same way you might use a `juce::Slider` in your application.
For example, let's suppose that we have our `MainComponent` or our `AudioProcessorPluginEditor` at the top of our project:
```cpp
class MainComponent : public Component
{
public:
//==============================================================================
MainComponent();
~MainComponent();
//==============================================================================
void paint (Graphics&) override;
void resized() override;
private:
//==============================================================================
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MainComponent)
};
```
Adding the `reactjuce::ReactApplicationRoot` is easy, and should be familiar if you've worked with `juce::Component`s before:
```cpp
class MainComponent : public Component
{
public:
//==============================================================================
MainComponent()
{
addAndMakeVisible(appRoot);
setSize(400, 300);
}
~MainComponent();
//==============================================================================
void paint (Graphics&) override;
void resized() override
{
appRoot.setBounds(getLocalBounds());
}
private:
//==============================================================================
reactjuce::ReactApplicationRoot appRoot;
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MainComponent)
};
```
It's important to note here that our `appRoot` will be the point at which our React application code from earlier
will "take over," and it's also important to note that you can add this `appRoot` wherever you need it in your application. For example, if you want to write your entire interface in React, you should mount your `appRoot` at the top of your application in your `MainComponent` or your `AudioProcessorPluginEditor`. If instead you want only to write your preset switcher in React, you can build the rest of your interface as usual with JUCE, and add the `appRoot` wherever the preset switcher should go within the context of your interface.
Now we're almost done here, but if you compile and run right now you won't see your "Hello from React.js!"– of course, we haven't told the `appRoot` where to find the JavaScript bundle we made! So, putting the last piece together here:
```cpp
class MainComponent : public Component
{
public:
//==============================================================================
MainComponent()
{
// First thing we have to do is load our javascript bundle from the build
// directory so that we can evaluate it within our appRot.
// TODO: Replace this with the appropriate path to your javascript bundle!
File bundle = File("/path/to/your/jsui/build/js/main.js");
addAndMakeVisible(appRoot);
appRoot.evaluate(bundle);
setSize(400, 300);
}
~MainComponent();
//==============================================================================
void paint (Graphics&) override;
void resized() override
{
appRoot.setBounds(getLocalBounds());
}
private:
//==============================================================================
reactjuce::ReactApplicationRoot appRoot;
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MainComponent)
};
```
That's it! We've now integrated React-JUCE into our project, and now you can write freely in React.js and watch your application take shape.
================================================
FILE: docs/guides/Running_the_Examples.md
================================================
# Running the GainPlugin Example project
This step assumes you've already reviewed the [Getting Started](Getting_Started.md) guide. If not,
please start there!
## GainPlugin

React-JUCE includes an extremely simple utility gain plugin to demonstrate the minimal
code required for integrating React-JUCE into a JUCE project. To get it running,
we only need two steps: compiling the JavaScript bundle, and then compiling and
running the native code.
### JavaScript Bundle
All React-JUCE projects have two components: we have the native code that knows how
to mount the React application into our JUCE project and satisfy calls from React's
reconciler, and then we have the React.js application code that we want to run in the
native environment. In order to ease this handoff, we're using a tool in this
example called [Webpack](https://webpack.js.org/) that can compile a complete JavaScript project into a single
file. That single file is then the only thing we need to execute in the native
environment.
To get the GainPlugin up and running for the first time, we have to first perform
that compilation step. So, from the root of the `React-JUCE` git repository:
```bash
$ cd examples/GainPlugin/Source/jsui/
```
The `jsui/` directory here is the top level directory of all the
React.js application code that we used to build the example interface.
We use a build step managed by npm to compile all of our application javascript
into a single file that can be easily loaded up in the native app:
```bash
$ npm install
$ npm run build
```
At this point, you'll see an output file in `examples/GainPlugin/Source/jsui/build/js/`. That file location is important, because that's where the native code looks for executing the output file.
### Native
Now that we have our JavaScript bundle, the last step is simple: just hit Build and
Run from your IDE! When the JUCE PluginEditor gets initialized, it will find your
JavaScript build and evaluate it within the embedded interpreter to draw the
GainPlugin interface.
## Hot Reloading
The GainPlugin example is preconfigured with hot reloading, so that as you edit
the React application code, your interface will redraw itself instantly. In order
to take advantage of this, we need to recompile our JavaScript bundle on the
fly as we're editing our code. Fortunately, Webpack makes that simple, so from
within the `jsui/` directory:
```bash
$ npm start
```
This will first build your JavaScript bundle, then wait and watch your source files
for changes. When it finds a change, it will pick that change up and incrementally
rebuild your bundle. In turn, React-JUCE will pick up the change to the bundle file
and redraw your interface.
Now that you're up and running, take a minute to tweak the GainPlugin React
application to get a sense of the workflow! When you're done, let's move on to
the next step, [adding React-JUCE to your own project](New_Project.md).
================================================
FILE: docs/guides/Why_Not_React_Native.md
================================================
# Why Not React Native?
The React community first formed in 2013 when React was introduced as a framework for writing web applications. Shortly thereafter, the team announced React Native for rendering native iOS and Android mobile apps, and the React community grew accordingly. The community then introduced a project for rendering native Windows desktop apps from React, and since then several projects have spun off with similar goals. Why, then, do we need another one in React-JUCE?
To start, I think it's helpful to clarify the goals of these projects and the underlying philosophy that brings them together. Then, I think's helpful to recognize JUCE's utility and popularity in the audio application development space. Finally, once we've covered those points, I think the answer to our original question becomes quite clear, and shows why React-JUCE stands to make an impact in the audio application development space.
## The React Philosophy
When the React team introduced React Native in 2015, they made a point to clarify that React and React Native were different projects. With its introduction, they started sharing the idea "Learn once, write anywhere," which we still see in their messaging today. What we see from that message is that their goal was never to be able to write a React web app and then push a button to ship that same app to native mobile. Rather, the goal was slightly higher level.
At the initial React.js announcement, the library focused totally on web applications. When React Native showed up, we saw the team split out the React DOM package. This step is very illuminating. After that, to talk about React in the context of a cross-platform web/mobile app, we have to consider three things: React, React DOM, and React Native. This distinction is helpful in that it shows React itself is only an abstract tool. It deals in abstract representations of a user interface, and the business logic around that user interface. But eventually this abstraction layer decays to real rendering primitives, and here we see what separates React DOM and React Native. React DOM provides a library of rendering primitives targeting the Web DOM. React Native provides a library of rendering primitives targeting native platform components in iOS and Android. (As a brief aside, this distinction in rendering primitives is exactly where React-JUCE fits into the picture as well, offering a library of rendering primitives that target JUCE.)
Through this lens, React Native's "Learn once, write anywhere" philosophy makes sense. Different rendering primitives on different platforms may have totally different semantics, and the idea of writing an application against one set of rendering primitives and then pushing a button to render against a new set of primitives just falls over in some cases. But the idea of _working in React_ never changes. With these tools, a single team can write a web application and then turn around and write a native iOS, Android or Windows desktop application with total familiarity. This isn't "push a button, render anywhere," it's about lowering the barrier to entry to new platforms, unifying the development experience, and empowering developers to cross what have long been great divides in our industry.
## The JUCE Ecosystem
Our brief survey of the React landscape tells a compelling story when viewed from the perspective of a generic application developer. But what happens when we look from the perspective of an audio application developer?
React Native solves a very non-trivial problem in the way it bridges between iOS and Android. A React Native developer can write a single application and deploy it to two totally different platforms, while React Native takes care of answering all the prerequisite questions about how to get an application up and running on each respective platform, how to provision that top level window, and how to evaluate the application JavaScript bundle in an embedded interpreter.
JUCE takes its place in the audio application development ecosystem answering very similar questions. Nearly all audio applications start with the same two requirements:
- A window provisioned somewhere (either directly or perhaps by a host program) into which we can render our interface
- An audio buffer from the driver on which we can operate our signal processing
Unfortunately, in audio, and especially when we consider audio plugin development, this is a combinatorial problem which grows extremely quickly. To answer even the first bullet point above, we have a lot to consider.
- How do I get to that top-level window when running as an AAX plugin on Windows?
- What rendering primitives do I use once I'm there? Windows Platform APIs?
- How do I get to that top-level window when running as an AU plugin on MacOS?
- And what rendering primitives can I use here? CoreGraphics?
- And what if I want to ship the same application as a standalone Linux application? Or even an embedded Linux application? How do I get to that top-level window against X11 there?
I could keep that list running for a _long_ time. And that's just to address the first of the core requirements of an audio application; the same list runs back for getting access to the underlying audio callback in all of these scenarios.
Here, I think it's fair to say that JUCE has solved a massively challenging problem very elegantly in abstracting over all of these combinations. To write an audio application with JUCE, developers need only start from the core questions about _what_ the application will do once it has access to that window and the underlying audio buffer, and JUCE will take care of extending that functionality across all of the combinations of target platform, windowing system, audio driver, and plugin host. This is why, in my opinion, JUCE has become such a widely adopted framework for audio application development.
## React + JUCE = <3
Against this backdrop, a compelling case for React-JUCE is already starting to reveal itself. But before going any further, I think it's worthwhile to say that React Native and React Native Windows _are_ great options.
If your goal is singular in focus, say, to ship an audio application on iOS, then starting at React Native is an excellent choice. React Native will solve the top level window question for you, and you may then have to solve the problem of "How do I get to that audio buffer when running as a standalone on iOS," but that's a problem you'll only need to solve once. Or you might start at JUCE and figure out how to mount React Native into the window that JUCE provisions for you. Either way, in a scenario like this, your project will be neatly limited in the scope of the problems that you have to solve. I would happily recommend to people with a goal that has this type of focus to use React Native, or React Native Windows.
But this approach starts to break down when the project goal broadens. For example, maybe you want to ship your audio application as a standalone desktop app and a standalone iOS app. Now, if you start with React Native, you can find your answer to the question above for getting to the audio buffer just the same on iOS, but what happens when you want to ship to desktop? Well, maybe the audio buffer part is the same, and surely if you've integrated JUCE into your React Native project you can rely on JUCE for that part here too, but React Native doesn't render to desktop. So do you integrate a different framework for writing the desktop interface? Maybe you can integrate React Native Windows, but what about MacOS? Suddenly we're creeping back into the combinatorial problem we mentioned above, and we haven't even cracked this door open to include shipping the application as a cross-platform audio plugin, or potentially as a Linux application.
Here is exactly the place where React-JUCE finds its home. With React-JUCE, we can leverage JUCE's elegant solution to this hugely combinatorial problem, while at the same time leveraging the capabilities that React has introduced to the world of app UI programming, with no extra overhead. Shipping an audio application with React as a standalone application across MacOS, Windows, Linux, and as a plugin across AAX, AU, VST3, LV2 is now as easy as it should be.
And there's more still. It would be a shame to acknowledge the popularity of JUCE without addressing all of the many projects already shipped or actively underway with JUCE. React-JUCE is designed to be trivially integrated into any existing JUCE project: anywhere you can mount a `juce::Component`, whether that's in an existing project or a brand new project, you can mount React-JUCE, and start writing React.
I started this project with the goal of fully embracing the "Learn once, write anywhere" message introduced by React and React Native. It's my hope now that in the same way React Native empowers React developers to approach mobile platforms, React-JUCE empowers developers to approach the audio application space.
================================================
FILE: docs/native/Custom_Native_Components.md
================================================
# TODO
================================================
FILE: docs/native/Interop.md
================================================
# JavaScript/Native Interop
There are generally two ways to cross the Native/JavaScript boundary:
1. You can pass C++ values and functions into JavaScript, and JavaScript values and functions into C++ directly or via an event model
2. Or, you can create a custom native View and render it in your React component tree
## Value Passing
To pass C++ values and functions into your JS environment, see `EcmascriptEngine::registerNativeProperty`
and `EcmascriptEngine::registerNativeMethod`. These methods will install the given values on either the `global`
object, or named object of your choosing.
In the other direction, you can pass values from JavaScript into C++ either via invoking the methods that
were installed via `EcmascriptEngine::registerNativeMethod` or by assigning a value to a named object accessible
from the global object, and looking that value up or invoking it on the C++ side with `EcmascriptEngine::evaluateInline` or `EcmascriptEngine::invoke`.
### Example
```cpp
// From C++
engine->registerNativeProperty("world", "Hello!");
engine->registerNativeMethod("sayHello", [this](juce::var::NativeFunctionArgs const& args) {
// Here, `args.arguments[0]` comes from JavaScript
std::cout << args.arguments[0].toStdString() << std::endl;
});
```
```js
// Then, from js
console.log("Hello", global.world);
global.sayHello("World!");
```
And similarly, in the other direction:
```js
// From js
global.myFun = (x) => x * x;
global.myValue = 17;
```
```cpp
// From C++
auto myValue = engine->evaluateInline("global.myValue");
auto result = engine->invoke("myFun", (int) myValue);
```
## Custom Native View
Now the other option is to define a totally custom native view, and register it with React.
To do this, you can make your own C++ class that inherits `reactjuce::View`, and override the necessary methods.
Basically, a `reactjuce::View` is just a `juce::Component` with some extra goodies.
For greater detail, see [Custom Native Components](Custom_Native_Components.md), but for a brief example, see below.
### Example
```cpp
class MyCoolView : public reactjuce::View {
void paint(juce::Graphics& g) override {
// Do your own paint routine like usual.
// You can also treat this whole class instance like your normal juce::Components. Add children, `addAndMakeVisible`,
// `resized` and everything!
}
}
```
Now once you've got your custom view implementation, you have to tell React about it so that you can use it. The end goal with this is to be able to write something like this:
```js
function MyReactApp(props) {
return (
<View>
<MyCoolView customProp="hi" otherCustomProp="bye" />
</View>
);
}
```
With this, you can write your juce::Components like normal, but use React to compose these things together into your full application.
So, how do we register your C++ class with React? All you need is `ReactApplicationRoot::registerViewType`:
```cpp
mAppRoot.registerViewType("MyCoolView", []() {
// This lambda will be called when we need to construct one of your custom view instances. So, first, we make one:
auto view = std::make_unique<MyCoolView>();
// Then we need to construct a shadow view, which will govern the layout. 99% of the time, you can just use the
// default shadow view:
auto shadowView = std::make_unique<ShadowViewType>(view.get());
// Then just return these guys as a pair
return {std::move(view), std::move(shadowView)};
});
```
That's it, React can now understand your `MyCoolView`!
Now there's one last cosmetic issue. In React, you can always make elements with `React.createElement("MyCoolView", props, children);`,
but you rarely see that because people are used to using JSX and writing `<MyCoolView {...props}>`.
If you want to use JSX like that you have to make this little wrapper to abstract over the dynamic string argument:
```js
function MyCoolView(props) {
return React.createElement("MyCoolView", props, props.children);
}
// Now I can use it elsewhere in JSX...
function MyApp(props) {
return <MyCoolView {...props} />;
}
```
================================================
FILE: examples/GainPlugin/CMakeLists.txt
================================================
cmake_minimum_required(VERSION 3.15)
project(GainPlugin VERSION 0.1.0)
# `juce_add_plugin` adds a static library target with the name passed as the first argument.
# This target is a normal CMake target, but has a lot of extra properties set
# up by default. As well as this shared code static library, this function adds targets for each of
# the formats specified by the FORMATS arguments. This function accepts many optional arguments.
# Check the readme at `docs/CMake API.md` in the JUCE repo for the full list.
juce_add_plugin(GainPlugin
# VERSION ... # Set this if the plugin version is different to the project version
# ICON_BIG ... # ICON_* arguments specify a path to an image file to use as an icon for the Standalone
# ICON_SMALL ...
# COMPANY_NAME ... # Specify the name of the plugin's author
# IS_SYNTH TRUE/FALSE # Is this a synth or an effect?
# NEEDS_MIDI_INPUT TRUE/FALSE # Does the plugin need midi input?
# NEEDS_MIDI_OUTPUT TRUE/FALSE # Does the plugin need midi output?
# IS_MIDI_EFFECT TRUE/FALSE # Is this plugin a MIDI effect?
# EDITOR_WANTS_KEYBOARD_FOCUS TRUE/FALSE # Does the editor need keyboard focus?
# COPY_PLUGIN_AFTER_BUILD TRUE/FALSE # Should the plugin be installed to a default location after building?
PLUGIN_MANUFACTURER_CODE Reju # A four-character manufacturer id with at least one upper-case character
PLUGIN_CODE Dem0 # A unique four-character plugin id with at least one upper-case character
FORMATS AU VST3 Standalone # The formats to build. Other valid formats are: AAX Unity VST AU AUv3
PRODUCT_NAME "ReactJUCEGainPlugin") # The name of the final executable, which can differ from the target name
# `juce_generate_juce_header` will create a JuceHeader.h for a given target, which will be generated
# into your build tree. This should be included with `#include <JuceHeader.h>`. The include path for
# this header will be automatically added to the target. The main function of the JuceHeader is to
# include all your JUCE module headers; if you're happy to include module headers directly, you
# probably don't need to call this.
juce_generate_juce_header(GainPlugin)
# `target_sources` adds source files to a target. We pass the target that needs the sources as the
# first argument, then a visibility parameter for the sources (PRIVATE is normally best practice,
# although it doesn't really affect executable targets). Finally, we supply a list of source files
# that will be built into the target. This is a standard CMake command.
target_sources(GainPlugin PRIVATE PluginProcessor.cpp)
# Add an explicit include path here so that React-juce's EcmascriptEngine can find
# the included Duktape source. You can optionally point this elsewhere if you'd like to
# include a custom Duktape build.
target_include_directories(GainPlugin PRIVATE react_juce/)
# `target_compile_definitions` adds some preprocessor definitions to our target. In a Projucer
# project, these might be passed in the 'Preprocessor Definitions' field. JUCE modules also make use
# of compile definitions to switch certain features on/off, so if there's a particular feature you
# need that's not on by default, check the module header for the correct flag to set here. These
# definitions will be visible both to your code, and also the JUCE module code, so for new
# definitions, pick unique names that are unlikely to collide! This is a standard CMake command.
target_compile_definitions(GainPlugin
PRIVATE
GAINPLUGIN_SOURCE_DIR="${CMAKE_CURRENT_SOURCE_DIR}"
JUCE_WEB_BROWSER=0 # If you remove this, add `NEEDS_WEB_BROWSER TRUE` to the `juce_add_plugin` call
JUCE_USE_CURL=0 # If you remove this, add `NEEDS_CURL TRUE` to the `juce_add_plugin` call
JUCE_VST3_CAN_REPLACE_VST2=0)
# `target_link_libraries` links libraries and JUCE modules to other libraries or executables. Here,
# we're linking our executable target to the `juce::juce_audio_utils` module. Inter-module
# dependencies are resolved automatically, so `juce_core`, `juce_events` and so on will also be
# linked automatically. If we'd generated a binary data target above, we would need to link to it
# here too. This is a standard CMake command.
target_link_libraries(GainPlugin PRIVATE
juce::juce_recommended_config_flags
juce::juce_recommended_lto_flags
juce::juce_recommended_warning_flags
juce::juce_core
juce::juce_audio_basics
juce::juce_audio_devices
juce::juce_audio_processors
juce::juce_audio_utils
juce::juce_graphics
juce::juce_gui_basics
react_juce)
================================================
FILE: examples/GainPlugin/PluginProcessor.cpp
================================================
/*
==============================================================================
This file was auto-generated!
It contains the basic framework code for a JUCE plugin processor.
==============================================================================
*/
#include "PluginProcessor.h"
//==============================================================================
/** Helper function for generating the parameter layout. */
AudioProcessorValueTreeState::ParameterLayout createParameterLayout()
{
AudioProcessorValueTreeState::ParameterLayout params (
std::make_unique<AudioParameterFloat>(
"MainGain",
"Gain",
NormalisableRange<float>(0.0, 1.0),
0.8,
String(),
AudioProcessorParameter::genericParameter,
[](float value, int /* maxLength */) {
return String(Decibels::gainToDecibels(value), 1) + "dB";
},
nullptr
),
std::make_unique<AudioParameterBool>(
"MainMute",
"Mute",
false
)
);
return params;
}
//==============================================================================
GainPluginAudioProcessor::GainPluginAudioProcessor()
: AudioProcessor (BusesProperties()
.withInput ("Input", AudioChannelSet::stereo(), true)
.withOutput ("Output", AudioChannelSet::stereo(), true)),
params(*this, nullptr, JucePlugin_Name, createParameterLayout())
{
}
GainPluginAudioProcessor::~GainPluginAudioProcessor()
{
stopTimer();
}
//==============================================================================
const String GainPluginAudioProcessor::getName() const
{
return JucePlugin_Name;
}
bool GainPluginAudioProcessor::acceptsMidi() const
{
#if JucePlugin_WantsMidiInput
return true;
#else
return false;
#endif
}
bool GainPluginAudioProcessor::producesMidi() const
{
#if JucePlugin_ProducesMidiOutput
return true;
#else
return false;
#endif
}
bool GainPluginAudioProcessor::isMidiEffect() const
{
#if JucePlugin_IsMidiEffect
return true;
#else
return false;
#endif
}
double GainPluginAudioProcessor::getTailLengthSeconds() const
{
return 0.0;
}
int GainPluginAudioProcessor::getNumPrograms()
{
return 1; // NB: some hosts don't cope very well if you tell them there are 0 programs,
// so this should be at least 1, even if you're not really implementing programs.
}
int GainPluginAudioProcessor::getCurrentProgram()
{
return 0;
}
void GainPluginAudioProcessor::setCurrentProgram (int /* index */) {}
const String GainPluginAudioProcessor::getProgramName (int /* index */) { return {}; }
void GainPluginAudioProcessor::changeProgramName (int /* index */, const String& /* newName */) {}
//==============================================================================
void GainPluginAudioProcessor::prepareToPlay (double sampleRate, int /* samplesPerBlock */)
{
gain.reset(sampleRate, 0.02);
}
void GainPluginAudioProcessor::releaseResources()
{
// When playback stops, you can use this as an opportunity to free up any
// spare memory, etc.
}
#ifndef JucePlugin_PreferredChannelConfigurations
bool GainPluginAudioProcessor::isBusesLayoutSupported (const BusesLayout& layouts) const
{
#if JucePlugin_IsMidiEffect
ignoreUnused (layouts);
return true;
#else
// This is the place where you check if the layout is supported.
// In this template code we only support mono or stereo.
if (layouts.getMainOutputChannelSet() != AudioChannelSet::mono()
&& layouts.getMainOutputChannelSet() != AudioChannelSet::stereo())
return false;
// This checks if the input layout matches the output layout
#if ! JucePlugin_IsSynth
if (layouts.getMainOutputChannelSet() != layouts.getMainInputChannelSet())
return false;
#endif
return true;
#endif
}
#endif
void GainPluginAudioProcessor::processBlock (AudioBuffer<float>& buffer, MidiBuffer& /* midiMessages */)
{
ScopedNoDenormals noDenormals;
auto totalNumInputChannels = getTotalNumInputChannels();
auto totalNumOutputChannels = getTotalNumOutputChannels();
// In case we have more outputs than inputs, this code clears any output
// channels that didn't contain input data, (because these aren't
// guaranteed to be empty - they may contain garbage).
// This is here to avoid people getting screaming feedback
// when they first compile a plugin, but obviously you don't need to keep
// this code if your algorithm always overwrites all the output channels.
for (auto i = totalNumInputChannels; i < totalNumOutputChannels; ++i)
buffer.clear (i, 0, buffer.getNumSamples());
// Our intense dsp processing
gain.setTargetValue(*params.getRawParameterValue("MainGain"));
gain.applyGain(buffer, buffer.getNumSamples());
if (auto *muteParam = dynamic_cast<AudioParameterBool*>(params.getParameter("MainMute")))
{
bool muted = muteParam->get();
if (muted)
buffer.applyGain(0.0f);
}
// Read current block gain peak value
gainPeakValue = buffer.getMagnitude (0, buffer.getNumSamples());
}
//==============================================================================
bool GainPluginAudioProcessor::hasEditor() const
{
return true; // (change this to false if you choose to not supply an editor)
}
AudioProcessorEditor* GainPluginAudioProcessor::createEditor()
{
// The GainPlugin example uses the GenericEditor, which is a default
// AudioProcessorEditor provided that will automatically bootstrap
// your React root, install some native method hooks for parameter interaction
// if you provide an AudioProcessorValueTreeState, and manage hot reloading
// of the source bundle. You can always start with the GenericEditor
// then switch to a custom editor when you need more explicit control.
File sourceDir = File(GAINPLUGIN_SOURCE_DIR);
File bundle = sourceDir.getChildFile("jsui/build/js/main.js");
auto* editor = new reactjuce::GenericEditor(*this, bundle);
editor->setResizable(true, true);
editor->setResizeLimits(400, 240, 400 * 2, 240 * 2);
editor->getConstrainer()->setFixedAspectRatio(400.0 / 240.0);
editor->setSize (400, 240);
// Start timer to dispatch gainPeakValues event to update Meter values
startTimer(100);
return editor;
}
void GainPluginAudioProcessor::timerCallback()
{
if (auto* editor = dynamic_cast<reactjuce::GenericEditor*>(getActiveEditor()))
{
// Dispatch gainPeakValues event used by Meter React component
editor->getReactAppRoot().dispatchEvent(
"gainPeakValues",
static_cast<float>(gainPeakValue),
static_cast<float>(gainPeakValue)
);
}
}
//==============================================================================
void GainPluginAudioProcessor::getStateInformation (MemoryBlock& /* destData */)
{
// You should use this method to store your parameters in the memory block.
// You could do that either as raw data, or use the XML or ValueTree classes
// as intermediaries to make it easy to save and load complex data.
}
void GainPluginAudioProcessor::setStateInformation (const void* /* data */, int /* sizeInBytes */)
{
// You should use this method to restore your parameters from this memory block,
// whose contents will have been created by the getStateInformation() call.
}
//==============================================================================
// This creates new instances of the plugin..
AudioProcessor* JUCE_CALLTYPE createPluginFilter()
{
return new GainPluginAudioProcessor();
}
================================================
FILE: examples/GainPlugin/PluginProcessor.h
================================================
/*
==============================================================================
This file was auto-generated!
It contains the basic framework code for a JUCE plugin processor.
==============================================================================
*/
#pragma once
#include "../JuceLibraryCode/JuceHeader.h"
//==============================================================================
/**
*/
class GainPluginAudioProcessor : public AudioProcessor, private Timer
{
public:
//==============================================================================
GainPluginAudioProcessor();
~GainPluginAudioProcessor() override;
//==============================================================================
void prepareToPlay (double sampleRate, int samplesPerBlock) override;
void releaseResources() override;
#ifndef JucePlugin_PreferredChannelConfigurations
bool isBusesLayoutSupported (const BusesLayout& layouts) const override;
#endif
void processBlock (AudioBuffer<float>&, MidiBuffer&) override;
//==============================================================================
AudioProcessorEditor* createEditor() override;
bool hasEditor() const override;
//==============================================================================
const String getName() const override;
bool acceptsMidi() const override;
bool producesMidi() const override;
bool isMidiEffect() const override;
double getTailLengthSeconds() const override;
//==============================================================================
int getNumPrograms() override;
int getCurrentProgram() override;
void setCurrentProgram (int index) override;
const String getProgramName (int index) override;
void changeProgramName (int index, const String& newName) override;
//==============================================================================
void getStateInformation (MemoryBlock& destData) override;
void setStateInformation (const void* data, int sizeInBytes) override;
//==============================================================================
AudioProcessorValueTreeState& getValueTreeState() { return params; }
void timerCallback() override;
private:
//==============================================================================
AudioProcessorValueTreeState params;
LinearSmoothedValue<float> gain;
std::atomic<float> gainPeakValue;
//==============================================================================
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (GainPluginAudioProcessor)
};
================================================
FILE: examples/GainPlugin/jsui/.gitignore
================================================
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
# dependencies
/node_modules
/.pnp
.pnp.js
# testing
/coverage
# production
/build
# misc
.DS_Store
.env.local
.env.development.local
.env.test.local
.env.production.local
npm-debug.log*
yarn-debug.log*
yarn-error.log*
================================================
FILE: examples/GainPlugin/jsui/babel.config.js
================================================
module.exports = {
presets: [
[
"@babel/preset-env",
{
modules: "umd",
},
],
"@babel/preset-react",
],
plugins: [
"@babel/plugin-proposal-class-properties",
[
"@babel/plugin-transform-runtime",
{
absoluteRuntime: false,
corejs: 3,
version: "7.11.2",
},
],
],
};
================================================
FILE: examples/GainPlugin/jsui/package.json
================================================
{
"name": "ui",
"version": "0.1.0",
"private": true,
"dependencies": {
"@babel/runtime-corejs3": "^7.11.2",
"file-loader": "6.1.0",
"react": "^16.13.1",
"react-juce": "^0.2.16"
},
"devDependencies": {
"@babel/core": "^7.11.1",
"@babel/plugin-proposal-class-properties": "^7.10.4",
"@babel/plugin-transform-runtime": "^7.11.0",
"@babel/preset-env": "^7.11.0",
"@babel/preset-react": "^7.10.4",
"babel-loader": "^8.0.4",
"svg-inline-loader": "^0.8.0",
"url-loader": "4.1.0",
"webpack": "^5.46.0",
"webpack-cli": "^4.7.2"
},
"scripts": {
"start": "webpack -w --mode=development",
"build": "webpack --mode=production"
}
}
================================================
FILE: examples/GainPlugin/jsui/src/AnimatedFlexBox.js
================================================
import React, { Component } from "react";
import { View, Text } from "react-juce";
class AnimatedFlexBoxExample extends Component {
render() {
return (
<View {...styles.container}>
<View {...styles.cell}>
<Text {...styles.text}>Look at me, cell #1!</Text>
</View>
<View {...styles.cell}>
<Text {...styles.text}>Look at me, cell #2!</Text>
</View>
<View {...styles.cell}>
<Text {...styles.text}>Look at me, cell #3!</Text>
</View>
<View {...styles.cell}>
<Text {...styles.text}>Look at me, cell #4!</Text>
</View>
<View {...styles.cell}>
<Text {...styles.text}>Look at me, cell #5!</Text>
</View>
<View {...styles.cell}>
<Text {...styles.text}>Look at me, cell #6!</Text>
</View>
<View {...styles.cell}>
<Text {...styles.text}>Look at me, cell #7!</Text>
</View>
<View {...styles.cell}>
<Text {...styles.text}>Look at me, cell #8!</Text>
</View>
</View>
);
}
}
const styles = {
container: {
width: "100%",
height: "100%",
backgroundColor: "#17191f",
justifyContent: "flex-start",
alignContent: "flex-start",
flexWrap: "wrap",
layoutAnimated: {
duration: 200.0,
frameRate: 45,
easing: View.EasingFunctions.quadraticInOut,
},
},
cell: {
flex: 0.0,
width: 100.0,
height: 100.0,
justifyContent: "space-around",
alignItems: "center",
backgroundColor: "#87898f",
margin: 6.0,
padding: 6.0,
},
text: {
fontSize: 16.0,
lineSpacing: 1.6,
justification: Text.JustificationFlags.centred,
},
};
export default AnimatedFlexBoxExample;
================================================
FILE: examples/GainPlugin/jsui/src/App.js
================================================
// import AnimatedFlexBoxExample from "./AnimatedFlexBox";
import Meter from "./Meter";
import Knob from "./Knob";
import ParameterToggleButton from "./ParameterToggleButton";
import React, { Component } from "react";
import { Canvas, Image, Text, View } from "react-juce";
function animatedDraw(ctx) {
let now = Date.now() / 10;
let width = now % 100;
let red = Math.sqrt(width / 100) * 255;
let hex = Math.floor(red).toString(16);
ctx.fillStyle = `#${hex}ffaa`;
ctx.fillRect(0, 0, width, 2);
}
// Example of callback for image onLoad/onError
function imageLoaded() {
console.log("Image is loaded!");
}
function imageError(error) {
console.log(error.name);
console.log(error.message);
}
class App extends Component {
constructor(props) {
super(props);
this._onMuteToggled = this._onMuteToggled.bind(this);
this.state = {
muted: false,
};
}
_onMuteToggled(toggled) {
this.setState({
muted: toggled,
});
}
render() {
// Uncomment here to watch the animated flex box example in action
// return (
// <View {...styles.container}>
// <AnimatedFlexBoxExample />
// </View>
// );
const muteBackgroundColor = this.state.muted
? "#66FDCF"
: "hsla(162, 97%, 70%, 0)";
const muteTextColor = this.state.muted
? "#17191f"
: "hsla(162, 97%, 70%, 1)";
const logo_url =
"https://raw.githubusercontent.com/nick-thompson/react-juce/master/examples/GainPlugin/jsui/src/logo.png";
//const logo_png = require('./logo.png');
//const logo_svg = require('./logo.svg');
return (
<View {...styles.container}>
<View {...styles.content}>
<Image
source={logo_url}
onLoad={imageLoaded}
onError={imageError}
{...styles.logo}
/>
<Knob paramId="MainGain" />
<Meter {...styles.meter} />
<Canvas {...styles.canvas} animate={true} onDraw={animatedDraw} />
<ParameterToggleButton
paramId="MainMute"
onToggled={this._onMuteToggled}
background-color={muteBackgroundColor}
{...styles.mute_button}
>
<Text color={muteTextColor} {...styles.mute_button_text}>
MUTE
</Text>
</ParameterToggleButton>
</View>
</View>
);
}
}
const styles = {
container: {
width: "100%",
height: "100%",
backgroundColor:
"linear-gradient(45deg, hsla(225, 15%, 11%, 0.3), #17191f 50%)",
justifyContent: "center",
alignItems: "center",
},
content: {
flex: 1.0,
flexDirection: "column",
justifyContent: "space-around",
alignItems: "center",
padding: 24.0,
maxWidth: 600,
aspectRatio: 400.0 / 240.0,
},
logo: {
flex: 0.0,
width: "80%",
aspectRatio: 281.6 / 35.0,
placement: Image.PlacementFlags.centred,
},
meter: {
flex: 0.0,
width: 100.0,
height: 16.0,
},
canvas: {
flex: 0.0,
width: 100.0,
height: 2,
marginTop: 10,
},
mute_button: {
justifyContent: "center",
alignItems: "center",
borderRadius: 5.0,
borderWidth: 2.0,
borderColor: "rgba(102, 253, 207, 1)",
marginTop: 10,
minWidth: 30.0,
minHeight: 30.0,
width: "20%",
height: "17.5%",
},
mute_button_text: {
fontSize: 20.0,
lineSpacing: 1.6,
fontStyle: Text.FontStyleFlags.bold,
},
};
export default App;
================================================
FILE: examples/GainPlugin/jsui/src/Knob.js
================================================
import React from "react";
import ParameterSlider from "./ParameterSlider";
import { Slider } from "react-juce";
import Label from "./Label";
import { useParameter } from "./ParameterValueContext";
import { View } from "react-juce";
const sliderFillColor = "#66FDCF";
const sliderTrackColor = "#626262";
const drawRotary = Slider.drawRotary(sliderTrackColor, sliderFillColor);
const Knob = ({ paramId }) => {
const { stringValue, currentValue } = useParameter(paramId);
return (
<View {...styles.container}>
<ParameterSlider
paramId={paramId}
value={currentValue}
onDraw={drawRotary}
mapDragGestureToValue={Slider.rotaryGestureMap}
{...styles.slider}
/>
<Label value={stringValue} {...styles.label} />
</View>
);
};
const styles = {
container: {
minWidth: 100.0,
minHeight: 100.0,
width: "55%",
height: "55%",
marginTop: 15,
marginBottom: 15,
justifyContent: "center",
alignItems: "center",
},
slider: {
width: "100%",
height: "100%",
},
label: {
width: "100%",
height: "100%",
flex: 1.0,
justifyContent: "center",
alignItems: "center",
interceptClickEvents: false,
position: "absolute",
},
};
export default Knob;
================================================
FILE: examples/GainPlugin/jsui/src/Label.js
================================================
import React, { memo } from "react";
import { Text, View } from "react-juce";
const Label = ({ value, ...props }) => {
return (
<View {...props}>
<Text {...styles.labelText}>{value}</Text>
</View>
);
};
const styles = {
labelText: {
color: "#626262",
fontSize: 16.0,
lineSpacing: 1.6,
},
};
export default memo(Label);
================================================
FILE: examples/GainPlugin/jsui/src/Meter.js
================================================
import React, { Component } from "react";
import { EventBridge, Image, Text, View } from "react-juce";
class Meter extends Component {
constructor(props) {
super(props);
this._onMeasure = this._onMeasure.bind(this);
this._onMeterValues = this._onMeterValues.bind(this);
this.state = {
width: 0,
height: 0,
lcPeak: 0.0,
rcPeak: 0.0,
};
}
componentDidMount() {
EventBridge.addListener("gainPeakValues", this._onMeterValues);
}
componentWillUnmount() {
EventBridge.removeListener("gainPeakValues", this._onMeterValues);
}
_onMeterValues(lcPeak, rcPeak) {
this.setState({
lcPeak,
rcPeak,
});
}
_onMeasure(e) {
this.setState({
width: e.width,
height: e.height,
});
}
_renderVectorGraphics(lcPeak, rcPeak, width, height) {
// Similar to the audio side of this, this is a pretty rudimentary
// way of drawing a gain meter; we'd get a much nicer response by using
// a peak envelope follower with instant attack and a smooth release for
// each channel, but this is just a demo plugin.
return `
<svg
width="${width}"
height="${height}"
viewBox="0 0 ${width} ${height}"
version="1.1"
xmlns="http://www.w3.org/2000/svg">
<rect
x="${0}" y="${0}"
width="${width}" height="${height * 0.45}"
fill="#626262" />
<rect
x="${0}" y="${0}"
width="${width * Math.min(1.0, lcPeak)}" height="${height * 0.45}"
fill="#66FDCF" />
<rect
x="${0}" y="${height * 0.5}"
width="${width}" height="${height * 0.45}"
fill="#626262" />
<rect
x="${0}" y="${height * 0.5}"
width="${width * Math.min(1.0, rcPeak)}" height="${height * 0.45}"
fill="#66FDCF" />
</svg>
`;
}
render() {
const { lcPeak, rcPeak, width, height } = this.state;
return (
<View {...this.props} onMeasure={this._onMeasure}>
<Image
{...styles.canvas}
source={this._renderVectorGraphics(lcPeak, rcPeak, width, height)}
/>
</View>
);
}
}
const styles = {
canvas: {
flex: 1.0,
height: "100%",
width: "100%",
position: "absolute",
left: 0.0,
top: 0.0,
interceptClickEvents: false,
},
};
export default Meter;
================================================
FILE: examples/GainPlugin/jsui/src/ParameterSlider.js
================================================
import React, { memo, useCallback } from "react";
import { Slider } from "react-juce";
import {
beginParameterChangeGesture,
endParameterChangeGesture,
setParameterValueNotifyingHost,
} from "./nativeMethods";
const ParameterSlider = ({ value, paramId, children, ...props }) => {
const onMouseDown = (e) => {
beginParameterChangeGesture(paramId);
};
const onMouseUp = (e) => {
endParameterChangeGesture(paramId);
};
const onSliderValueChange = (value) => {
setParameterValueNotifyingHost(paramId, value);
};
return (
<Slider
{...props}
value={value}
onMouseDown={onMouseDown}
onMouseUp={onMouseUp}
onChange={onSliderValueChange}
>
{children}
</Slider>
);
};
// TODO: PropTypes Validation
// paramId should be required and has type of string
// https://www.npmjs.com/package/prop-types
export default memo(ParameterSlider);
================================================
FILE: examples/GainPlugin/jsui/src/ParameterToggleButton.js
================================================
import ParameterValueStore from "./ParameterValueStore";
import React, { Component } from "react";
import { Button } from "react-juce";
import {
beginParameterChangeGesture,
endParameterChangeGesture,
setParameterValueNotifyingHost,
} from "./nativeMethods";
class ParameterToggleButton extends Component {
constructor(props) {
super(props);
this._handleClick = this._handleClick.bind(this);
this._handleEnter = this._handleEnter.bind(this);
this._handleLeave = this._handleLeave.bind(this);
this._onParameterValueChange = this._onParameterValueChange.bind(this);
const paramState = ParameterValueStore.getParameterState(
this.props.paramId
);
const initialDefaultValue =
typeof paramState.defaultValue === "number"
? paramState.defaultValue
: 0.0;
const initialValue =
typeof paramState.currentValue === "number"
? paramState.currentValue
: 0.0;
this.defaultBorderColor = "#66FDCF";
this.hoverBorderColor = "#66CFFD";
this.state = {
defaultValue: initialDefaultValue,
value: initialValue,
borderColor: this.defaultBorderColor,
};
if (typeof this.props.onToggled === "function") {
this.props.onToggled(initialValue !== 0.0);
}
}
componentDidMount() {
ParameterValueStore.addListener(
ParameterValueStore.CHANGE_EVENT,
this._onParameterValueChange
);
}
componentWillUnmount() {
ParameterValueStore.removeListener(
ParameterValueStore.CHANGE_EVENT,
this._onParameterValueChange
);
}
_handleClick(e) {
const newValue = this.state.value === 0.0 ? 1.0 : 0.0;
this.setState({
value: newValue,
});
if (
typeof this.props.paramId === "string" &&
this.props.paramId.length > 0
) {
setParameterValueNotifyingHost(this.props.paramId, newValue);
}
if (typeof this.props.onToggled === "function") {
this.props.onToggled(newValue !== 0.0);
}
}
_handleEnter(e) {
beginParameterChangeGesture(this.props.paramId);
this.setState({
borderColor: this.hoverBorderColor,
});
}
_handleLeave(e) {
endParameterChangeGesture(this.props.paramId);
this.setState({
borderColor: this.defaultBorderColor,
});
}
_onParameterValueChange(paramId) {
const shouldUpdate =
typeof this.props.paramId === "string" &&
this.props.paramId.length > 0 &&
this.props.paramId === paramId;
if (shouldUpdate) {
const state = ParameterValueStore.getParameterState(paramId);
const newDefaultValue = state.defaultValue;
const newValue = state.currentValue;
this.setState({
defaultValue: newDefaultValue,
value: newValue,
});
if (typeof this.props.onToggled === "function") {
this.props.onToggled(newValue !== 0.0);
}
}
}
render() {
const { parameterId, onToggled, ...other } = this.props;
return (
<Button
{...other}
borderColor={this.state.borderColor}
onClick={this._handleClick}
onMouseEnter={this._handleEnter}
onMouseLeave={this._handleLeave}
>
{this.props.children}
</Button>
);
}
}
export default ParameterToggleButton;
================================================
FILE: examples/GainPlugin/jsui/src/ParameterValueContext.js
================================================
import React, {
createContext,
useContext,
useState,
useCallback,
useEffect,
} from "react";
import { EventBridge } from "react-juce";
export const ParamIds = {
MainGain: "MainGain",
MainMute: "MainMute",
};
const defaultValues = {
MainGain: {
defaultValue: 0.0,
currentValue: 0.0,
stringValue: "loading",
},
MainMute: {
defaultValue: false,
currentValue: false,
stringValue: "loading",
},
};
export const ParameterValueContext = createContext(defaultValues);
export const useParameter = (paramId) => {
return useContext(ParameterValueContext)[paramId];
};
export const ParameterValueProvider = ({ children }) => {
const [params, setParams] = useState(defaultValues);
const onParameterValueChange = useCallback(
(index, changedParamId, defaultValue, currentValue, stringValue) => {
if (!ParamIds[changedParamId]) return;
setParams((prevParams) => ({
...prevParams,
[changedParamId]: {
index,
defaultValue,
currentValue,
stringValue,
},
}));
},
[]
);
useEffect(() => {
EventBridge.addListener("parameterValueChange", onParameterValueChange);
return () => {
EventBridge.removeListener(
"parameterValueChange",
onParameterValueChange
);
};
}, [onParameterValueChange]);
return (
<ParameterValueContext.Provider value={params}>
{children}
</ParameterValueContext.Provider>
);
};
================================================
FILE: examples/GainPlugin/jsui/src/ParameterValueStore.js
================================================
import EventEmitter from "events";
import { EventBridge } from "react-juce";
/** This is more or less a proxy to the EventBridge's parameter events that
* caches last known values and provides components a way to access the
* cache.
*/
class ParameterValueStore extends EventEmitter {
constructor() {
super();
this.CHANGE_EVENT = "change";
this.setMaxListeners(100);
this._onParameterValueChange = this._onParameterValueChange.bind(this);
EventBridge.addListener(
"parameterValueChange",
this._onParameterValueChange
);
this.state = {};
}
getParameterState(paramId) {
if (!this.state.hasOwnProperty(paramId)) {
return {};
}
return this.state[paramId];
}
_onParameterValueChange(
index,
paramId,
defaultValue,
currentValue,
stringValue
) {
this.state[paramId] = {
parameterIndex: index,
parameterId: paramId,
defaultValue: defaultValue,
currentValue: currentValue,
stringValue: stringValue,
};
this.emit(this.CHANGE_EVENT, paramId);
}
}
const __singletonInstance = new ParameterValueStore();
export default __singletonInstance;
================================================
FILE: examples/GainPlugin/jsui/src/index.js
================================================
import React from "react";
import ReactJUCE from "react-juce";
import App from "./App";
import { ParameterValueProvider } from "./ParameterValueContext";
ReactJUCE.render(
<ParameterValueProvider>
<App />
</ParameterValueProvider>,
ReactJUCE.getRootContainer()
);
================================================
FILE: examples/GainPlugin/jsui/src/nativeMethods.js
================================================
export const beginParameterChangeGesture = (paramId) =>
global.beginParameterChangeGesture(paramId);
export const endParameterChangeGesture = (paramId) =>
global.endParameterChangeGesture(paramId);
export const setParameterValueNotifyingHost = (paramId, value) =>
global.setParameterValueNotifyingHost(paramId, value);
================================================
FILE: examples/GainPlugin/jsui/webpack.config.js
================================================
const webpack = require("webpack");
module.exports = {
entry: "./src/index.js",
output: {
path: __dirname + "/build/js",
filename: "main.js",
sourceMapFilename: "[file].map",
devtoolModuleFilenameTemplate: (info) =>
`webpack:///${info.absoluteResourcePath.replace(/\\/g, "/")}`,
},
// Required for duktape to ensure webpack chunk do not contain arrow functions
target: ["web", "es5"],
devtool: "source-map",
module: {
rules: [
{
test: /\.(js|jsx)$/,
exclude: /node_modules/,
use: ["babel-loader"],
},
{
test: /\.svg$/,
exclude: /node_modules/,
use: ["svg-inline-loader"],
},
{
test: /\.(png|jpeg|jpg|gif)$/,
use: [
{
loader: "url-loader",
options: {
limit: true,
esModule: false,
},
},
],
},
],
},
plugins: [
new webpack.DefinePlugin({
"process.env.NODE_DEBUG": JSON.stringify(process.env.NODE_DEBUG),
}),
],
};
================================================
FILE: package.json
================================================
{
"name": "blueprint",
"version": "0.1.0",
"description": "Write cross-platform native apps with React and JUCE",
"directories": {
"example": "examples"
},
"repository": {
"type": "git",
"url": "git+https://github.com/nick-thompson/react-juce.git"
},
"devDependencies": {
"husky": "^4.3.8",
"lint-staged": "^10.5.3",
"prettier": "2.2.1"
},
"scripts": {
"beautify": "prettier --write .",
"lint": "prettier --check ."
},
"husky": {
"hooks": {
"pre-commit": "lint-staged"
}
},
"lint-staged": {
"*.{ts,tsx,js,jsx,css,md,yml,yaml}": "prettier --write"
}
}
================================================
FILE: packages/react-juce/.gitignore
================================================
dist
================================================
FILE: packages/react-juce/babel.config.js
================================================
module.exports = {
presets: [
"@babel/preset-env",
"@babel/preset-react",
"@babel/preset-typescript",
],
plugins: [
"@babel/plugin-proposal-class-properties",
"@babel/plugin-proposal-object-rest-spread",
[
"@babel/plugin-transform-runtime",
{
absoluteRuntime: false,
corejs: 3,
version: "^7.11.2",
},
],
],
};
================================================
FILE: packages/react-juce/package.json
================================================
{
"name": "react-juce",
"version": "0.2.16",
"description": "Write cross-platform native apps with React.js and JUCE.",
"repository": {
"type": "git",
"url": "https://github.com/nick-thompson/react-juce.git"
},
"main": "dist/index.js",
"types": "dist/index.d.ts",
"files": [
"dist/index.js",
"dist/index.d.ts",
"dist/lib",
"dist/components",
"dist/src"
],
"author": "Nick Thompson",
"devDependencies": {
"@babel/cli": "^7.10.0",
"@babel/core": "^7.11.1",
"@babel/plugin-proposal-class-properties": "^7.11.0",
"@babel/plugin-transform-runtime": "^7.11.0",
"@babel/preset-env": "^7.11.0",
"@babel/preset-react": "^7.10.4",
"@babel/preset-typescript": "^7.10.4",
"@types/core-js": "^2.5.4",
"@types/invariant": "^2.2.33",
"@types/node": "^14.6.4",
"@types/react": "^16.9.41",
"@types/react-reconciler": "^0.18.0",
"awesome-typescript-loader": "^5.2.1",
"chalk": "^2.4.2",
"fs-extra": "^8.1.0",
"typescript": "^3.9.6",
"webpack": "^5.46.0",
"webpack-cli": "^4.7.2"
},
"dependencies": {
"@babel/runtime-corejs3": "^7.11.2",
"camelcase": "^6.2.0",
"color-string": "^1.5.4",
"core-js": "2.6.0",
"invariant": "^2.2.4",
"known-css-properties": "^0.20.0",
"matrix-js": "^1.5.1",
"object-inspect": "^1.11.0",
"react-reconciler": "^0.25.1"
},
"peerDependencies": {
"react": "^16.13.1"
},
"scripts": {
"build": "webpack --mode=production",
"watch": "webpack --watch --mode=development",
"init": "node scripts/init.js"
}
}
================================================
FILE: packages/react-juce/scripts/init.js
================================================
#!/usr/bin/env node
var assert = require("assert");
var chalk = require("chalk");
var cp = require("child_process");
var fs = require("fs-extra");
var path = require("path");
var args = process.argv.slice(2);
assert(
typeof args[0] === "string" && args[0].length > 0,
"Must provide a path to the directory in which to initialize the template."
);
var targetDir = path.resolve(args[0]);
var packageDir = path.resolve(__dirname, "..");
var templateDir = path.resolve(packageDir, "template");
console.log("Initializing a React-JUCE template in:", chalk.green(targetDir));
console.log("Directory tree will be created if it does not exist.");
fs.mkdirp(targetDir, function (err) {
if (err) {
console.error(chalk.red(err));
process.exit(1);
}
console.log("[*] Copying template files");
fs.copy(templateDir, targetDir, function (err) {
if (err) {
console.error(chalk.red(err));
process.exit(1);
}
console.log("[*] Installing dependencies");
cp.exec("npm install", { cwd: targetDir }, function (err, stdout, stderr) {
if (err) {
console.error(chalk.red(err));
console.error(stderr);
process.exit(1);
}
console.log();
console.log(`
${chalk.blue(
"Success!"
)} Initialized a React-JUCE template in ${chalk.green(targetDir)}
You can now get started by typing:
${chalk.blue("cd")} ${args[0]}
${chalk.blue("npm start")}
Then adding the reactjuce::ReactApplicationRoot component to your project.
`);
});
});
});
================================================
FILE: packages/react-juce/src/components/Button.tsx
================================================
import React, { Component } from "react";
import { View } from "./View";
import { SyntheticMouseEvent } from "../lib/SyntheticEvents";
import { ViewInstance } from "../lib/Backend";
//TODO: Once ViewProps work is complete we can probably
// remove this in favour of ViewProps.
export interface ButtonProps {
onClick: (e: SyntheticMouseEvent) => void;
onMouseDown?: (e: SyntheticMouseEvent) => void;
onMouseUp?: (e: SyntheticMouseEvent) => void;
onMouseEnter?: (e: SyntheticMouseEvent) => void;
onMouseLeave?: (e: SyntheticMouseEvent) => void;
}
type ButtonState = {
down: boolean;
};
/**
* A simple Button component which can be used as a building block
* for more complex button types.
*
* @example
*
* <Button onClick={() => { console.log("clicked"); }} {...styles.button}>
* <Text {...styles.text}>
Hello World
* </Text>
* </Button>
*
* const styles = {
* text: {
* 'font-size': 18.0,
* 'line-spacing': 1.6,
* 'color': 'ff626262'
* },
* button: {
* 'justify-content': 'center',
* 'align-items': 'center',
* 'width': '100%',
* 'height': '100%',
* 'border-radius': 5.0,
* 'border-width': 2.0,
* 'border-color': 'ff626262'
* }
* };
*
*/
export class Button extends Component<ButtonProps, ButtonState> {
private _ref: React.RefObject<ViewInstance>;
constructor(props: ButtonProps) {
super(props);
this._ref = React.createRef();
this.state = {
down: false,
};
}
handleDown = (e: SyntheticMouseEvent): void => {
if (typeof this.props.onMouseDown === "function")
this.props.onMouseDown.call(null, e);
this.setState({
down: true,
});
};
handleUp = (e: SyntheticMouseEvent): void => {
if (typeof this.props.onMouseUp === "function")
this.props.onMouseUp.call(null, e);
this.setState({
down: false,
});
if (typeof this.props.onClick === "function") {
const instance = this._ref ? this._ref.current : null;
if (instance && instance.contains(e.relatedTarget)) {
this.props.onClick(e);
}
}
};
render = () => {
const { onMouseDown, onMouseUp, onClick, ...other } = this.props;
const opacity = this.state.down ? 0.8 : 1.0;
return (
<View
onMouseDown={this.handleDown}
onMouseUp={this.handleUp}
opacity={opacity}
viewRef={this._ref}
{...other}
>
{this.props.children}
</View>
);
};
}
================================================
FILE: packages/react-juce/src/components/Canvas.ts
================================================
import React, { Component } from "react";
import Colors from "../lib/MacroProperties/Colors";
// TODO: Need to explicitly bind this to members?
export class CanvasRenderingContext {
private _drawCommands: any[];
constructor() {
this._drawCommands = [];
}
reset() {
this._drawCommands = [];
}
getDrawCommands(): any[] {
return this._drawCommands;
}
//================================================================================
// Properties
// TODO: Support fillStyle/strokeStyle pattern.
// TODO: Support fillStyle/strokeStyle gradient.
set fillStyle(value: string) {
value = Colors.colorStringToAlphaHex(value);
this._drawCommands.push(["setFillStyle", value]);
}
set strokeStyle(value: string) {
value = Colors.colorStringToAlphaHex(value);
this._drawCommands.push(["setStrokeStyle", value]);
}
set lineWidth(value: number) {
this._drawCommands.push(["setLineWidth", value]);
}
set font(value: string) {
this._drawCommands.push(["setFont", value]);
}
set textAlign(value: string) {
this._drawCommands.push(["setTextAlign", value]);
}
//================================================================================
// Rect functions
fillRect(x: number, y: number, width: number, height: number): void {
this._drawCommands.push(["fillRect", x, y, width, height]);
}
strokeRect(x: number, y: number, width: number, height: number): void {
this._drawCommands.push(["strokeRect", x, y, width, height]);
}
strokeRoundedRect(
x: number,
y: number,
width: number,
height: number,
cornerSize: number
): void {
this._drawCommands.push([
"strokeRoundedRect",
x,
y,
width,
height,
cornerSize,
]);
}
fillRoundedRect(
x: number,
y: number,
width: number,
height: number,
cornerSize: number
): void {
this._drawCommands.push([
"fillRoundedRect",
x,
y,
width,
height,
cornerSize,
]);
}
clearRect(x: number, y: number, width: number, height: number): void {
this._drawCommands.push(["clearRect", x, y, width, height]);
}
//================================================================================
// Path functions
//
// TODO: Should we split things out into CanvasRenderingContextPath
// so things like close()/stroke() are more obvious when looking at API.
// If you look at the ts type definitions for CanvasRenderingContext2D
// CanvasRenderingContext2D is composed of other objects like CanvasRenderingContextPath
// which contains all path methods. What is the best way to do this in JS and share
// a drawCommands instance?
beginPath(): void {
this._drawCommands.push(["beginPath"]);
}
lineTo(x: number, y: number): void {
this._drawCommands.push(["lineTo", x, y]);
}
moveTo(x: number, y: number): void {
this._drawCommands.push(["moveTo", x, y]);
}
arc(
x: number,
y: number,
radius: number,
startAngle: number,
endAngle: number
): void {
//TODO: Add support for optional antiClockWise?: boolean arg
this._drawCommands.push(["arc", x, y, radius, startAngle, endAngle]);
}
quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void {
this._drawCommands.push(["quadraticCurveTo", cpx, cpy, x, y]);
}
closePath(): void {
this._drawCommands.push(["close"]);
}
stroke(): void {
this._drawCommands.push(["stroke"]);
}
fill(): void {
this._drawCommands.push(["fill"]);
}
//================================================================================
// Transform functions
rotate(angle: number): void {
this._drawCommands.push(["rotate", angle]);
}
translate(x: number, y: number): void {
this._drawCommands.push(["translate", x, y]);
}
setTransform(
a: number,
b: number,
c: number,
d: number,
e: number,
f: number
): void {
this._drawCommands.push(["setTransform", a, b, c, d, e, f]);
}
resetTransform(): void {
this._drawCommands.push(["resetTransform"]);
}
//================================================================================
// Image functions
//
//TODO: Add support for other drawImage overloads.
// Currently only support SVG string. What is correct
// type to use here?
drawImage(image: string, dx: number, dy: number): void {
this._drawCommands.push(["drawImage", image, dx, dy]);
}
//================================================================================
// Text functions
strokeText(text: string, x: number, y: number, maxWidth?: number): void {
if (maxWidth === undefined)
this._drawCommands.push(["strokeText", text, x, y]);
else this._drawCommands.push(["strokeText", text, x, y, maxWidth]);
}
fillText(text: string, x: number, y: number, maxWidth?: number): void {
if (maxWidth === undefined)
this._drawCommands.push(["fillText", text, x, y]);
else this._drawCommands.push(["fillText", text, x, y, maxWidth]);
}
//================================================================================
}
export interface CanvasProps {
onDraw: (ctx: CanvasRenderingContext) => void;
onMeasure?: (e: any) => void;
stateful?: boolean;
}
interface CanvasState {
width: number;
height: number;
}
export class Canvas extends Component<CanvasProps, CanvasState> {
private _ctx: CanvasRenderingContext;
constructor(props: CanvasProps) {
super(props);
this._ctx = new CanvasRenderingContext();
this._onMeasure = this._onMeasure.bind(this);
this._onDraw = this._onDraw.bind(this);
this.state = {
width: 0,
height: 0,
};
}
_onMeasure(e: any) {
this.setState({
width: e.width,
height: e.height,
});
if (typeof this.props.onMeasure === "function") {
this.props.onMeasure(e);
}
}
_onDraw(): any[] {
if (typeof this.props.onDraw === "function") {
this._ctx.reset();
this.props.onDraw(this._ctx);
return this._ctx.getDrawCommands();
}
return [];
}
render() {
return React.createElement(
"CanvasView",
Object.assign({}, this.props, {
onDraw: () => {
return this._onDraw();
},
onMeasure: (e: any) => {
this._onMeasure(e);
},
}),
this.props.children
);
}
}
================================================
FILE: packages/react-juce/src/components/Image.ts
================================================
import React from "react";
export function Image(props: any) {
return React.createElement("Image", props, props.children);
}
Image.PlacementFlags = {
xLeft: 1,
xRight: 2,
xMid: 4,
yTop: 8,
yBottom: 16,
yMid: 32,
stretchToFit: 64,
fillDestination: 128,
onlyReduceInSize: 256,
onlyIncreaseInSize: 512,
doNotResize: 256 | 512,
centred: 4 + 32,
};
================================================
FILE: packages/react-juce/src/components/ListView.tsx
================================================
import React, { Component, PropsWithChildren, ReactElement } from "react";
import { ViewInstance } from "../lib/Backend";
import { ScrollView, ScrollEvent } from "./ScrollView";
import invariant from "invariant";
type ListViewState = {
scrollTopPosition: number;
width: number;
height: number;
};
type VirtualPositions = {
innerHeight: number;
startIndex: number;
endIndex: number;
};
/**
* ScrollParams is passed to ListView's scrollToIndex
* function.
*
* @property index - The index of the item in the ListView's data
* source to scroll to.
*
* @property offset - A normalised value between 0.0 and 1.0 which
* will offset the position of the ListView item
* (specified by index) from the top of the ListView.
* i.e. offset == 0.5 positions the item at index in
* the center of the ListView.
*/
export interface ScrollParams {
index: number;
offset: number;
}
/**
* Prop type for ListView.
*
* @property data - Array of objects to use when populating ListView items
* via the renderItem callback.
*
* @property renderItem - Callback to render a ListView item given an element
* from the supplied data source.
*
* @property itemHeight - Fixed height in pixels for a single item in the
* ListView.
*/
export interface ListViewProps {
data: any[];
renderItem: (any) => ReactElement;
itemHeight: number;
}
/**
* A lightweight "virtualised list" implementation that allows for
* the efficient rendering of a large number of objects within a
* ScrollView. ListView supports the full set of ScrollViewProps
* for styling etc.
*
* Note, at present ListView requires the user to specify a fixed
* itemHeight property in order to calculate which items to render
* within the list based on scroll position. This may change in
* future versions.
*
* @example
*
* function getListViewItems() {
* let items = [];
*
* for (let i = 0; i < 5000; ++i) {
* const name = "Item " + i;
* const category = i % 2 ? "A" : "B";
*
* items.push({id: i, name: name, category: category});
* }
*
* return items;
* }
*
* <ListView
* height="100%"
* width="50%"
* overflow="hidden"
* scroll-on-drag={true}
* data={getListViewItems()}
* renderItem={(item, index, props) => <Item name={item.name} category={item.category} {...props}/>}
* itemHeight={50}
* />
*
*/
export class ListView extends Component<
PropsWithChildren<ListViewProps | any>,
ListViewState
> {
private _ref: React.RefObject<ViewInstance>;
constructor(props: PropsWithChildren<ListViewProps | any>) {
super(props);
this._ref = React.createRef();
this._onMeasure = this._onMeasure.bind(this);
this._calculateVirtualPositions = this._calculateVirtualPositions.bind(
this
);
this._setScrollTopPosition = this._setScrollTopPosition.bind(this);
this.scrollToIndex = this.scrollToIndex.bind(this);
this.state = {
scrollTopPosition: 0,
width: 0,
height: 0,
};
}
_onMeasure(e: any): void {
this.setState({
width: e.width,
height: e.height,
});
}
_calculateVirtualPositions(): VirtualPositions {
const totalItems = this.props.data.length;
const innerHeight = this.props.itemHeight * totalItems;
invariant(
this.props.itemHeight > 0,
"Zero or negative itemHeight passed to ListView"
);
// Pad num rendered items by 1 so we always render the same number of items
// which allows us to use a fixed key value on each item in the list.
const numItems = Math.floor(this.state.height / this.props.itemHeight) + 1;
const startIndex = Math.floor(
this.state.scrollTopPosition / this.props.itemHeight
);
const endIndex = Math.min(totalItems - 1, startIndex + numItems);
return {
innerHeight: innerHeight,
startIndex: startIndex,
endIndex: endIndex,
};
}
_setScrollTopPosition(e: ScrollEvent): void {
this.setState({
scrollTopPosition: e.scrollTop,
});
if (typeof this.props.onScroll === "function") {
this.props.onScroll(e);
}
}
scrollToIndex(scrollParams: ScrollParams) {
invariant(
scrollParams.index >= 0 && scrollParams.index <= this.props.data.length,
"scrollParams.index must be between 0 and props.data.length"
);
invariant(
scrollParams.offset >= 0.0 && scrollParams.offset <= 1.0,
"scrollParams.offset must be normalised between 0.0 and 1.0"
);
const numItems = Math.floor(this.state.height / this.props.itemHeight);
const xPos = 0;
let yPos =
this.props.itemHeight * scrollParams.index -
this.props.itemHeight * numItems * scrollParams.offset;
const scrollViewInstance = this._ref ? this._ref.current : null;
if (scrollViewInstance) {
//@ts-ignore
scrollViewInstance.scrollToPosition(xPos, yPos);
}
}
render() {
const positions: VirtualPositions = this._calculateVirtualPositions();
const items: any = [];
// List items must have a key but we ensure the key remains fixed here
// so that we simply re-render the existing views/components rather than
// replacing them. This stops issues occuring when dynamically adding and removing
// components inside a juce::Viewport.
if (this.state.height > 0) {
for (let i = positions.startIndex; i <= positions.endIndex; ++i) {
items.push(
this.props.renderItem(this.props.data[i], i, {
position: "absolute",
top: this.props.itemHeight * i,
key: positions.endIndex - i,
})
);
}
}
return (
<ScrollView
{...this.props}
onMeasure={this._onMeasure}
onScroll={this._setScrollTopPosition}
viewRef={this._ref}
>
<ScrollView.ContentView
{...styles.scrollViewContent}
height={positions.innerHeight}
>
{items}
</ScrollView.ContentView>
</ScrollView>
);
}
}
const styles = {
scrollViewContent: {
flexDirection: "column",
flex: 1.0,
flexShrink: 0.0,
},
};
================================================
FILE: packages/react-juce/src/components/ScrollView.ts
================================================
import React, { PropsWithChildren } from "react";
import invariant from "invariant";
function ScrollViewContentView(props: any) {
return React.createElement("ScrollViewContentView", props, props.children);
}
function parseScrollbarColorProp(scrollbarColorProp: string) {
const values = scrollbarColorProp.split(" ");
invariant(
values.length === 2,
'scrollbar-color should be a space separated string with two values: "{thumbColor} {trackColor}".'
);
return {
"scrollbar-thumb-color": values[0],
"scrollbar-track-color": values[1],
};
}
function parseScrollbarWidthProp(scrollBarWidthProp: string | number) {
invariant(
typeof scrollBarWidthProp === "string" ||
typeof scrollBarWidthProp === "number",
"scrollbar-width should be a string or a number."
);
let props = {};
if (typeof scrollBarWidthProp === "string") {
switch (scrollBarWidthProp) {
// JUCE's look and feel V2 uses 18px as default scrollbar thickness.
case "auto":
props["scrollbar-width"] = 18;
return props;
case "thin":
props["scrollbar-width"] = 9;
return props;
case "none":
props["overflow-x"] = "hidden";
props["overflow-y"] = "hidden";
props["scroll-on-drag"] = true;
return props;
default:
invariant(
false,
"scrollbar-width as string should be one of 'auto', 'thin' or 'none'"
);
}
}
props["scrollbar-width"] = scrollBarWidthProp;
return props;
}
function parseOverflowProp(
overflowProp: string | undefined,
overflowXProp: string | undefined,
overflowYProp: string | undefined
) {
let props = {};
props["overflow-x"] = overflowXProp || overflowProp;
props["overflow-y"] = overflowYProp || overflowProp;
return props;
}
export interface ScrollEvent {
scrollTop: number;
scrollLeft: number;
}
export interface ScrollViewProps {
overflow?: string;
"overflow-x"?: string;
"overflow-y"?: string;
"scrollbar-color"?: string;
"scrollbar-width"?: string | number;
"scroll-on-drag"?: boolean;
onScroll: (e: ScrollEvent) => void;
}
//TODO: Remove any once ViewProps typed
export function ScrollView(props: PropsWithChildren<ScrollViewProps | any>) {
const child = React.Children.only(props.children);
invariant(
child && child["type"] === ScrollViewContentView,
"ScrollView must have only one child, and that child must be a ScrollView.ContentView."
);
// Unpack non-native props
let {
overflow,
"scrollbar-color": scrollbarColor,
"scrollbar-width": scrollBarWidth,
...other
} = props;
if (typeof scrollbarColor !== "undefined")
Object.assign(other, parseScrollbarColorProp(scrollbarColor));
if (typeof scrollBarWidth !== "undefined")
Object.assign(other, parseScrollbarWidthProp(scrollBarWidth));
if (typeof overflow !== "undefined")
Object.assign(
other,
parseOverflowProp(overflow, other["overflow-x"], other["overflow-y"])
);
return React.createElement("ScrollView", other, child);
}
ScrollView.ContentView = ScrollViewContentView;
================================================
FILE: packages/react-juce/src/components/Slider.tsx
================================================
import React, { Component, PropsWithChildren } from "react";
import invariant from "invariant";
import { Canvas, CanvasRenderingContext } from "./Canvas";
import { View } from "./View";
import { SyntheticMouseEvent } from "../lib/SyntheticEvents";
// Some simple helpers for slider drag gesture -> value mapping
const _linearHorizontalGestureMap = (
mouseDownX: number,
mouseDownY: number,
sensitivity: number,
valueAtDragStart: number,
dragEvent: SyntheticMouseEvent
): number => {
const dx = dragEvent.x - mouseDownX;
return Math.max(0.0, Math.min(1.0, valueAtDragStart + dx * sensitivity));
};
const _linearVerticalGestureMap = (
mouseDownX: number,
mouseDownY: number,
sensitivity: number,
valueAtDragStart: number,
dragEvent: SyntheticMouseEvent
): number => {
const dy = dragEvent.y - mouseDownY;
return Math.max(0.0, Math.min(1.0, valueAtDragStart - dy * sensitivity));
};
const _rotaryGestureMap = (
mouseDownX: number,
mouseDownY: number,
sensitivity: number,
valueAtDragStart: number,
dragEvent: SyntheticMouseEvent
): number => {
const dx = dragEvent.x - mouseDownX;
const dy = mouseDownY - dragEvent.y;
return Math.max(
0.0,
Math.min(1.0, valueAtDragStart + (dx + dy) * sensitivity)
);
};
const _drawLinearHorizontalSlider = (trackColor: string, fillColor: string) => {
return (
ctx: CanvasRenderingContext,
width: number,
height: number,
value: number
): void => {
const lineWidth = 2.0;
const x = 0 + lineWidth / 2;
const y = 0 + lineWidth / 2;
width = width - lineWidth;
height = height - lineWidth;
const fillWidth = value * width;
ctx.lineWidth = lineWidth;
ctx.strokeStyle = trackColor;
ctx.fillStyle = fillColor;
ctx.fillRect(x, y, fillWidth, height);
ctx.strokeRect(x, y, width, height);
};
};
const _drawLinearVerticalSlider = (trackColor: string, fillColor: string) => {
return (
ctx: CanvasRenderingContext,
width: number,
height: number,
value: number
): void => {
const lineWidth = 2.0;
const x = 0 + lineWidth / 2;
const y = 0 + lineWidth / 2;
width = width - lineWidth;
height = height - lineWidth;
const fillHeight = value * height;
const fillY = y + (height - fillHeight);
ctx.lineWidth = lineWidth;
ctx.strokeStyle = trackColor;
ctx.fillStyle = fillColor;
ctx.fillRect(x, fillY, width, fillHeight);
ctx.strokeRect(x, y, width, height);
};
};
function _drawArc(
ctx,
centerX,
centerY,
radius,
arcSize,
startAngle,
endAngle,
lineWidth
) {
const deltaX = centerX;
const deltaY = centerY;
const rotateAngle = ((180 + 180 * (1 - arcSize)) * Math.PI) / 180;
ctx.lineWidth = lineWidth;
ctx.beginPath();
ctx.moveTo(centerX - lineWidth / 2, 0);
ctx.arc(
centerX - lineWidth / 2,
centerY - lineWidth / 2,
radius,
startAngle,
endAngle
);
ctx.translate(deltaX, deltaY);
ctx.rotate(rotateAngle);
ctx.translate(-deltaX, -deltaY);
ctx.stroke();
ctx.resetTransform();
}
const _drawRotarySlider = (trackColor, fillColor) => {
return (ctx, width, height, value) => {
const lineWidth = 3;
const arcSize = 0.8;
const radius = Math.min(width, height) * 0.5 - lineWidth / 2;
const centerX = width / 2;
const centerY = height / 2;
const strokeStart = 0;
const strokeEnd = 2 * Math.PI * arcSize;
const fillStart = -(2.5 * Math.PI * arcSize);
const fillEnd = fillStart + value * (2 * Math.PI * arcSize);
ctx.strokeStyle = trackColor;
_drawArc(
ctx,
centerX,
centerY,
radius,
arcSize,
strokeStart,
strokeEnd,
lineWidth
);
ctx.strokeStyle = fillColor;
_drawArc(
ctx,
centerX,
centerY,
radius,
arcSize,
fillStart,
fillEnd,
lineWidth
);
};
};
export interface SliderProps {
value?: number;
sensitivity?: number;
onChange?: (value: number) => void;
onDraw?: (
ctx: CanvasRenderingContext,
width: number,
height: number,
value: number
) => void;
mapDragGestureToValue?: (
mouseDownX: number,
mouseDownY: number,
sensitivity: number,
valueAtDragStart: number,
dragEvent: SyntheticMouseEvent
) => number;
}
type SliderState = {
width: number;
height: number;
value: number;
};
/**
* A generic slider component which can be used as a building block for more complex
* sliders.
*
* Slider takes an onDraw function prop for rendering the Slider using a CanvasRenderingContext.
* Slider also accepts a mapDragGestureToValue pop which allows customisation when converting mouse drag
* positions/events to the Slider's normalised value reported via the onChange prop callback.
*
* Some default onDraw and mapDragGestureToValue implementations are provided:
* @see Slider.drawLinearHorizontal
* @see Slider.drawLinearVertical
* @see Slider.drawRotary
*
* @see Slider.linearHorizontalGestureMap
* @see Slider.linearVerticalGestureMap
* @see Slider.rotaryGestureMap
*
* @example
*
* <Slider
* onChange={(value) => console.log("Slider value changed: " + value)}
* onDraw={Slider.drawRotary('ff66FDCF', 'ff626262')}
* mapDragGestureToValue={Slider.rotaryGestureMap}
* />
*
*/
export class Slider extends Component<
PropsWithChildren<SliderProps | any>,
SliderState
> {
static linearHorizontalGestureMap = _linearHorizontalGestureMap;
static linearVerticalGestureMap = _linearVerticalGestureMap;
static rotaryGestureMap = _rotaryGestureMap;
static drawLinearHorizontal = _drawLinearHorizontalSlider;
static drawLinearVertical = _drawLinearVerticalSlider;
static drawRotary = _drawRotarySlider;
private _valueAtDragStart = 0.0;
private _mouseDownX = 0;
private _mouseDownY = 0;
static defaultProps = {
sensitivity: 1 / 200,
onDraw: _drawRotarySlider("ff626262", "ff66FDCF"),
mapDragGestureToValue: _rotaryGestureMap,
};
constructor(props: PropsWithChildren<SliderProps | any>) {
super(props);
this._onMeasure = this._onMeasure.bind(this);
this._onMouseDown = this._onMouseDown.bind(this);
this._onMouseDrag = this._onMouseDrag.bind(this);
this._onDraw = this._onDraw.bind(this);
this.state = {
width: 0,
height: 0,
value: 0.0,
};
}
_onMeasure(e: any) {
this.setState({
width: e.width,
height: e.height,
});
}
_onMouseDown(e: SyntheticMouseEvent) {
this._valueAtDragStart = this.props.hasOwnProperty("value")
? this.props.value
: this.state.value;
this._mouseDownX = e.x;
this._mouseDownY = e.y;
if (typeof this.props.onMouseDown === "function") {
this.props.onMouseDown(e);
}
}
_onMouseDrag(e: SyntheticMouseEvent) {
let value = 0.0;
if (typeof this.props.mapDragGestureToValue !== "function") {
invariant(false, "Invalid gesture mapping function supplied.");
return;
}
value = this.props.mapDragGestureToValue(
this._mouseDownX,
this._mouseDownY,
this.props.sensitivity,
this._valueAtDragStart,
e
);
if (!this.props.hasOwnProperty("value")) {
this.setState({
value: value,
});
}
if (typeof this.props.onChange === "function") {
this.props.onChange(value);
}
if (typeof this.props.onMouseDrag === "function") {
this.props.onMouseDrag(e);
}
}
_onDraw(ctx: CanvasRenderingContext) {
const value = this.props.hasOwnProperty("value")
? this.props.value
: this.state.value;
if (typeof this.props.onDraw === "function") {
return this.props.onDraw(ctx, this.state.width, this.state.height, value);
}
}
render() {
return (
<View
{...this.props}
onMeasure={this._onMeasure}
onMouseDown={this._onMouseDown}
onMouseDrag={this._onMouseDrag}
>
<Canvas onDraw={this._onDraw} {...styles.canvas} />
{this.props.children}
</View>
);
}
}
const styles = {
canvas: {
width: "100%",
height: "100%",
position: "absolute",
interceptClickEvents: false,
},
};
================================================
FILE: packages/react-juce/src/components/Text.ts
================================================
import React from "react";
export function Text(props: any) {
return React.createElement("Text", props, props.children);
}
Text.WordWrap = {
none: 0,
byWord: 1,
byChar: 2,
};
Text.FontStyleFlags = {
plain: 0,
bold: 1,
italic: 2,
underlined: 4,
};
Text.JustificationFlags = {
left: 1,
right: 2,
horizontallyCentred: 4,
top: 8,
bottom: 16,
verticallyCentred: 32,
horizontallyJustified: 64,
centred: 36,
centredLeft: 33,
centredRight: 34,
centredTop: 12,
centredBottom: 20,
topLeft: 9,
topRight: 10,
bottomLeft: 17,
bottomRight: 18,
};
================================================
FILE: packages/react-juce/src/components/TextInput.tsx
================================================
import React, { PropsWithChildren } from "react";
export interface InputEvent {
value: string;
}
export interface ChangeEvent {
value: string;
}
export interface TextInputProps {
value?: string;
color?: string;
fontSize?: number;
fontStyle?: number;
fontFamily?: string;
justification?: number;
"kerning-factor"?: number;
placeholder?: string;
"placeholder-color"?: string;
maxlength?: number;
readonly?: boolean;
"outline-color"?: string;
"focused-outline-color"?: string;
"highlighted-text-color"?: string;
"highlight-color"?: string;
"caret-color"?: string;
onChange?: (e: ChangeEvent) => void;
onInput?: (e: InputEvent) => void;
}
export function TextInput(props: PropsWithChildren<TextInputProps | any>) {
return React.createElement("TextInput", props, props.children);
}
================================================
FILE: packages/react-juce/src/components/View.ts
================================================
import React from "react";
// We'll need to wrap the default native components in stuff like this so that
// you can use <View> in your JSX. Otherwise we need the dynamic friendliness
// of the createElement call (note that the type is a string...);
export function View(props: any) {
return React.createElement("View", props, props.children);
}
View.ClickEventFlags = {
disableClickEvents: 0,
allowClickEvents: 1,
allowClickEventsExcludingChildren: 2,
allowClickEventsOnlyOnChildren: 3,
};
View.EasingFunctions = {
linear: 0,
quadraticIn: 1,
quadraticOut: 2,
quadraticInOut: 3,
};
================================================
FILE: packages/react-juce/src/index.tsx
================================================
/** Polyfill ES2015 data structures with core-js. */
import "core-js/es6/set";
import "core-js/es6/map";
import Backend from "./lib/Backend";
import Renderer, { TracedRenderer } from "./lib/Renderer";
export { default as EventBridge } from "./lib/EventBridge";
export * from "./components/View";
export * from "./components/ScrollView";
export * from "./components/Canvas";
export * from "./components/Text";
export * from "./components/TextInput";
export * from "./components/Image";
export * from "./components/Button";
export * from "./components/Slider";
export * from "./components/ListView";
export * from "./lib/SyntheticEvents";
let __renderStarted = false;
let __preferredRenderer = Renderer;
export default {
getRootContainer() {
return Backend.getRootContainer();
},
render(
element: any,
container: any,
callback?: () => void | null | undefined
) {
console.log("Render started...");
// Create a root Container if it doesnt exist
if (!container._rootContainer) {
//TODO: Double check passing false for final param "hydrate correct"
container._rootContainer = __preferredRenderer.createContainer(
container,
false,
false
);
}
// Update the root Container
return __preferredRenderer.updateContainer(
element,
container._rootContainer,
null,
// TODO: callback in __preferredRenderer.updateContainer is not optional.
// @ts-ignore
callback
);
},
enableMethodTrace() {
if (__renderStarted) {
throw new Error("Cannot enable method trace after initial render.");
}
__preferredRenderer = TracedRenderer;
},
};
================================================
FILE: packages/react-juce/src/lib/Backend.ts
================================================
import { all as allCssProps } from "known-css-properties";
import camelCase from "camelcase";
import NativeMethods from "./NativeMethods";
import SyntheticEvents, {
SyntheticMouseEvent,
SyntheticKeyboardEvent,
} from "./SyntheticEvents";
import { macroPropertyGetters } from "./MacroProperties";
import Colors from "./MacroProperties/Colors";
//TODO: Keep this union or introduce a common base class ViewInstanceBase?
export type Instance = ViewInstance | RawTextViewInstance;
let __rootViewInstance: ViewInstance | null = null;
let __viewRegistry: Map<string, Instance> = new Map<string, Instance>();
let __lastMouseDownViewId: string | null = null;
// get any css properties not beginning with a "-",
// and build a map from any camelCase versions to
// the hyphenated version
const cssPropsMap = allCssProps
.filter((s) => !s.startsWith("-") && s.includes("-"))
.reduce((acc, v) => Object.assign(acc, { [camelCase(v)]: v }), {});
export class ViewInstance {
private _id: string;
private _type: string;
public _children: Instance[];
public _props: any = null;
public _parent: any = null;
constructor(id: string, type: string, props?: any, parent?: ViewInstance) {
this._id = id;
this._type = type;
this._children = [];
this._props = props;
this._parent = parent;
//TODO: This has been added to resolve a bug in
// our Button component when calling contains()
// on a viewRef. This is a result of wrapping our
// viewRefs in a Proxy object which means this is
// no longer bound to the original ViewInstance object
// during the contains call. Ideally we would use Reflect.get()
// here but Duktape does not fully support Reflect at the moment.
this.contains = this.contains.bind(this);
}
getViewId(): string {
return this._id;
}
getType(): string {
return this._type;
}
getChildIndex(childInstance: Instance): number {
for (let i = 0; i < this._children.length; ++i) {
if (this._children[i] === childInstance) {
return i;
}
}
return -1;
}
appendChild(childInstance: Instance): any {
childInstance._parent = this;
this._children.push(childInstance);
//@ts-ignore
return NativeMethods.insertChild(this._id, childInstance._id, -1);
}
insertChild(childInstance: Instance, index: number): any {
childInstance._parent = this;
this._children.splice(index, 0, childInstance);
//@ts-ignore
return NativeMethods.insertChild(this._id, childInstance._id, index);
}
removeChild(childInstance: Instance): any {
const index = this._children.indexOf(childInstance);
if (index >= 0) {
this._children.splice(index, 1);
__viewRegistry.delete(childInstance.getViewId());
//@ts-ignore
return NativeMethods.removeChild(this._id, childInstance._id);
}
}
setProperty(propKey: string, value: any): any {
// if the supplied propkey is a camelCase equivalent
// of a css prop, first convert it to kebab-case
propKey = cssPropsMap[propKey] || propKey;
// convert provided color string to alpha-hex code for JUCE
let nativeValue;
if (Colors.isColorProperty(propKey)) {
value = Colors.colorStringToAlphaHex(value);
if (value.startsWith("linear-gradient")) {
nativeValue = Colors.convertLinearGradientStringToNativeObject(value);
}
}
this._props = Object.assign({}, this._props, {
[propKey]: value,
});
// Our React Ref equivalent. This is needed
// as it appears the 'ref' prop isn't passed through
// to our renderer's setProperty from the reconciler.
// We wrap the ViewInstance in a proxy object here to allow
// invocation of native ViewInstance methods via React refs.
// If a property is not present on the ViewInstance object
// we assume the caller is attempting to access/invoke a
// native View method.
if (propKey === "viewRef") {
value.current = new Proxy(this, {
get: function (target, prop, receiver) {
if (prop in target) {
return target[prop];
}
return function (...args) {
//@ts-ignore
return NativeMethods.invokeViewMethod(target._id, prop, ...args);
};
},
});
return;
}
if (macroPropertyGetters.hasOwnProperty(propKey)) {
//@ts-ignore
for (const [k, v] of macroPropertyGetters[propKey](value))
NativeMethods.setViewProperty(this._id, k, v);
return;
}
//@ts-ignore
return NativeMethods.setViewProperty(
this._id,
propKey,
nativeValue ? nativeValue : value
);
}
contains(node: Instance): boolean {
if (node === this) {
return true;
}
for (let i = 0; i < this._children.length; ++i) {
const child = this._children[i];
// A ViewInstance may hold RawTextViewInstances but a
// RawTextViewInstance contains no children.
if (child instanceof ViewInstance && child.contains(node)) return true;
}
return false;
}
}
export class RawTextViewInstance {
private _id: string;
private _text: string;
public _parent: ViewInstance;
constructor(id: string, text: string, parent: ViewInstance) {
this._id = id;
this._text = text;
this._parent = parent;
}
getViewId(): string {
return this._id;
}
getText() {
return this._text;
}
setTextValue(text: string): any {
this._text = text;
//@ts-ignore
return NativeMethods.setRawTextValue(this._id, text);
}
}
function __getRootContainer(): ViewInstance {
if (__rootViewInstance !== null) return __rootViewInstance;
//@ts-ignore
const id = NativeMethods.getRootInstanceId();
__rootViewInstance = new ViewInstance(id, "View");
return __rootViewInstance;
}
function __hasFunctionProp(view: ViewInstance, prop: string) {
return (
view._props.hasOwnProperty(prop) && typeof view._props[prop] === "function"
);
}
function __callEventHandlerIfPresent(
view: Instance,
eventType: string,
event: any
) {
if (view instanceof ViewInstance && __hasFunctionProp(view, eventType)) {
view._props[eventType](event);
}
}
function __bubbleEvent(view: Instance, eventType: string, event: any): void {
if (view && view !== __getRootContainer()) {
// Always call the event callback on the target before bubbling.
// Some events may not bubble or have bubble defined. i.e. onMeasure
__callEventHandlerIfPresent(view, eventType, event);
if (event.bubbles) __bubbleEvent(view._parent, eventType, event);
}
}
//@ts-ignore
NativeMethods.dispatchViewEvent = function dispatchEvent(
viewId: string,
eventType: string,
event: any
) {
if (__viewRegistry.hasOwnProperty(viewId)) {
const instance = __viewRegistry[viewId];
// Convert target/relatedTarget to concrete ViewInstance refs
if (event.target && __viewRegistry.hasOwnProperty(event.target)) {
event.target = __viewRegistry[event.target];
}
if (
event.relatedTarget &&
__viewRegistry.hasOwnProperty(event.relatedTarget)
) {
event.relatedTarget = __viewRegistry[event.relatedTarget];
}
// Convert native event object into it's SyntheticEvent equivalent if required.
if (SyntheticEvents.isMouseEventHandler(eventType))
event = new SyntheticMouseEvent(event);
else if (SyntheticEvents.isKeyboardEventHandler(eventType))
event = new SyntheticKeyboardEvent(event);
// If mouseDown event we store the target viewId as the last view
// to recieve a mouseDown for "onClick" book-keeping.
if (eventType === "onMouseDown") {
__lastMouseDownViewId = viewId;
__bubbleEvent(instance, eventType, event);
return;
}
if (eventType === "onMouseUp") {
__bubbleEvent(instance, eventType, event);
if (__lastMouseDownViewId && viewId === __lastMouseDownViewId) {
__lastMouseDownViewId = null;
__bubbleEvent(instance, "onClick", event);
}
return;
}
__bubbleEvent(instance, eventType, event);
}
};
export default {
getRootContainer(): ViewInstance {
return __getRootContainer();
},
createViewInstance(
viewType: string,
props: any,
parentInstance: ViewInstance
): ViewInstance {
//@ts-ignore
const id = NativeMethods.createViewInstance(viewType);
const instance = new ViewInstance(id, viewType, props, parentInstance);
__viewRegistry[id] = instance;
return instance;
},
createTextViewInstance(text: string, parentInstance: ViewInstance) {
//@ts-ignore
const id = NativeMethods.createTextViewInstance(text);
const instance = new RawTextViewInstance(id, text, parentInstance);
__viewRegistry[id] = instance;
return instance;
},
resetAfterCommit() {
//@ts-ignore
return NativeMethods.resetAfterCommit();
},
};
================================================
FILE: packages/react-juce/src/lib/EventBridge.ts
================================================
import EventEmitter from "events";
import NativeMethods from "./NativeMethods";
const EventBridge = new EventEmitter.EventEmitter();
EventBridge.setMaxListeners(30);
// An internal hook for the native side, from which we propagate events through
// the EventEmitter interface.
// @ts-ignore
NativeMethods.dispatchEvent = function dispatchEvent(
eventType: string,
...args: any
): void {
EventBridge.emit(eventType, ...args);
};
export default EventBridge;
================================================
FILE: packages/react-juce/src/lib/MacroProperties/Colors.ts
================================================
import ColorString from "color-string";
import ColorNames from "color-name";
const COLOR_PROPERTIES = ["border-color", "background-color", "color"];
const isColorProperty = (propKey: string): boolean => {
return COLOR_PROPERTIES.includes(propKey);
};
const colorStringToAlphaHex = (colorString: string): string => {
//From Hex
if (colorString.startsWith("#") && colorString.length === 7) {
return `ff${colorString}`.replace("#", "");
}
//From RGB or RGBA
else if (colorString.startsWith("rgb")) {
const rgbValues = colorString
.split("(")[1]
.split(")")[0]
.replace(/ /g, "")
.split(",");
const alphaValue =
rgbValues.length === 4
? //@ts-ignore
percentToHex(100 * rgbValues.pop())
: "ff";
const hex = rgbValues.map((color) => {
const hex = Number.parseInt(color).toString(16);
return hex.length == 1 ? "0" + hex : hex;
});
return alphaValue + hex.join("");
}
//From HSL or HSLA
else if (colorString.startsWith("hsl")) {
const hslValues = colorString
.split("(")[1]
.split(")")[0]
.replace(/ |[%]/g, "")
.split(",");
const alphaValue =
hslValues.length === 4
? //@ts-ignore
percentToHex(100 * hslValues.pop())
: "ff";
const hex = hslToHex(
Number.parseInt(hslValues[0]),
Number.parseInt(hslValues[1]),
Number.parseInt(hslValues[2])
);
return alphaValue + hex;
}
//From Linear Gradient
else if (colorString.startsWith("linear-gradient")) {
const lgValues = colorString
.split(/\((.+)/)[1]
.split(/\)$/)[0]
.split(/,+(?![^\(]*\))/)
.map((item) => {
return item.split(" ");
});
//concat any arrays that contain hsl or rba strings
lgValues.forEach((itemArr, idx) => {
if (itemArr.find((item) => item.includes("(")) !== undefined) {
const itemArrClone = itemArr.slice();
const startIdx = itemArrClone.findIndex((item) => item.includes("("));
const endIdx = itemArrClone.findIndex((item) => item.includes(")"));
const colorHSLRGB = itemArrClone.slice(startIdx, endIdx + 1).join("");
itemArr.splice(startIdx, endIdx + 1, colorHSLRGB);
lgValues[idx] = itemArr;
} else {
lgValues[idx] = itemArr;
}
});
//flatten array
const lgValuesCleaned: Array<String> = [].concat
// @ts-ignore
.apply([], lgValues)
.filter((item) => {
return item != "";
});
//converts any colorStrings in linear gradient to alpha-hex
let skipCurrentIdx = -1;
const lgValuesConverted = lgValuesCleaned
.map((value, idx) => {
if (skipCurrentIdx == idx) return;
// @ts-ignore
let convertedColorString = colorStringToAlphaHex(value);
//check if the next element is a percent and attach to current and remove it
const nextIdx = idx + 1;
if (
lgValuesCleaned[nextIdx] !== undefined &&
lgValuesCleaned[nextIdx].includes("%") &&
!lgValuesCleaned[nextIdx].includes("(")
) {
convertedColorString += lgValuesCleaned[nextIdx];
skipCurrentIdx = nextIdx;
}
return convertedColorString;
})
.filter((item) => {
return item !== undefined;
});
return "linear-gradient(" + lgValuesConverted.join(",") + ")";
}
//From Named Colours
else if (Object.keys(ColorNames).includes(colorString)) {
const rgbValues = ColorString.get.rgb(colorString);
const hex = ColorString.to.hex(rgbValues);
return colorStringToAlphaHex(hex);
} else {
return colorString;
}
};
const convertLinearGradientStringToNativeObject = (
lgColorStringHex: string
): object => {
const linearGradientNativeObject = {};
const lgValues = lgColorStringHex
.split(/\((.+)/)[1]
.split(/\)$/)[0]
.replace(/ /g, "")
.split(/,+(?![^\(]*\))/);
//Check for directional words
let angle: number = 0;
let rotation: string = lgValues[0];
if (rotation == "toleft") angle = 270;
if (rotation == "toright") angle = 90;
if (rotation == "tobottom") angle = 180;
if (rotation == "totop") angle = 0;
//These are not the exact match to CSS as boundary dimensions are required for calculation
if (rotation == "totopleft" || rotation == "tolefttop") angle = 295;
if (rotation == "totopright" || rotation == "torighttop") angle = 45;
if (rotation == "tobottomright" || rotation == "torightbottom") angle = 115;
if (rotation == "tobottomleft" || rotation == "toleftbottom") angle = 205;
//Check for Turns
if (rotation.includes("turn")) {
rotation = rotation.replace("turn", "");
const turns: number = parseFloat(rotation);
angle = 360 * turns;
}
//Check for Degrees
if (rotation.includes("deg")) {
rotation = rotation.replace("deg", "");
angle = parseInt(rotation);
}
linearGradientNativeObject["angle"] = angle;
linearGradientNativeObject["colours"] = [];
const colorPositions: Array<String> = lgValues.slice(1);
colorPositions.forEach((colorPos, idx) => {
const hexPosObj = { id: idx };
const hex = colorPos.slice(0, 8);
//check string is an alpha hex
const isValidAlphaHex =
// @ts-ignore
hex.match(
/^[0-9a-fA-F]{8}$|#[0-9a-fA-F]{6}$|#[0-9a-fA-F]{4}$|#[0-9a-fA-F]{3}$/
).length > 0;
if (!isValidAlphaHex) return;
colorPos = colorPos.replace(hex, "");
if (colorPos.includes("%")) {
colorPos = colorPos.replace("%", "");
// @ts-ignore
let colorPercent = parseInt(colorPos) / 100;
//check if previous percent is greater or equal to the current
if (linearGradientNativeObject["colours"].length > 0) {
const previousPos =
linearGradientNativeObject["colours"][idx - 1]["position"];
if (previousPos >= colorPercent) colorPercent = previousPos + 0.001;
}
hexPosObj["position"] = colorPercent;
} else {
if (idx == 0) {
hexPosObj["position"] = 0.0;
} else if (idx == colorPositions.length - 1) {
hexPosObj["position"] = 1.0;
}
//assign null and iterate over again later
else {
hexPosObj["position"] = undefined;
}
}
hexPosObj["hex"] = hex;
linearGradientNativeObject["colours"].push(hexPosObj);
});
//Find half way between previous and next given percent if no percentage assigned
linearGradientNativeObject["colours"].forEach((colorPos, idx) => {
if (colorPos["position"] === undefined) {
//find next color with percentage
const colorsClone = JSON.parse(
JSON.stringify(linearGradientNativeObject["colours"])
);
let currentArrayChunk = colorsClone.splice(idx);
const nextColorPercent = currentArrayChunk.find(
(colorPos) => colorPos["position"] != undefined && colorPos["id"] !== 0
);
const nextColorPercentIdx = currentArrayChunk.findIndex(
(colorPos) => colorPos["position"] != undefined && colorPos["id"] !== 0
);
currentArrayChunk = currentArrayChunk.splice(0, nextColorPercentIdx + 1);
const previousColorPercent = colorsClone[idx - 1];
const y = nextColorPercent["position"];
const x = previousColorPercent["position"];
const n = currentArrayChunk.length + 1;
//assign evenly distributed values to each undefined color in current array chunk
currentArrayChunk.forEach((colorPosChunk, idx) => {
idx += 1;
if (colorPosChunk["position"] === undefined) {
const colorPosition = x + ((y - x) / (n - 1)) * idx;
const colorPosObj =
linearGradientNativeObject["colours"][colorPosChunk["id"]];
colorPosObj["position"] = colorPosition;
}
});
}
});
return linearGradientNativeObject;
};
const hslToHex = (h: number, s: number, l: number): string => {
l /= 100;
const a = (s * Math.min(l, 1 - l)) / 100;
const f = (n) => {
const k = (n + h / 30) % 12;
const color = l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);
return Math.round(255 * color)
.toString(16)
.padStart(2, "0");
};
return `${f(0)}${f(8)}${f(4)}`;
};
const percentToHex = (p: number): string => {
p = p > 100 ? 100 : p;
const intValue = Math.round((p / 100) * 255);
const hexValue = intValue.toString(16);
return hexValue.padStart(2, "0").toLowerCase();
};
export default {
isColorProperty,
colorStringToAlphaHex,
convertLinearGradientStringToNativeObject,
};
================================================
FILE: packages/react-juce/src/lib/MacroProperties/Transform.ts
================================================
import { TPropertyAssignment } from "./types";
import { getMacroCalls } from "./util";
import matrix from "matrix-js";
const rotateMultipliers = {
deg: Math.PI / 180.0,
grad: Math.PI / 200.0,
rad: 1,
turn: 2 * Math.PI,
};
const angleUnitMatcher = new RegExp(
`(-?[0-9]*\.?[0-9]+)(${Object.keys(rotateMultipliers).join("|")}|)$`
);
const toRadians = (arg: string) => {
// @ts-ignore
let [, angle, unit] = angleUnitMatcher.exec(arg);
let angleFloat = parseFloat(angle);
if (angleFloat === NaN) return NaN;
if (unit === "" && angleFloat !== 0) return NaN;
angleFloat *= rotateMultipliers[unit] || 1;
return angleFloat;
};
const stringArgsToFloat = (...args: string[]) => args.map(parseFloat);
const stringArgsToRadians = (...args: string[]) => args.map(toRadians);
const identity = matrix([
[1, 0, 0, 0],
[0, 1, 0, 0],
[0, 0, 1, 0],
[0, 0, 0, 1],
]);
const rotate3d = (x: number, y: number, z: number, theta: number) => {
const sinTheta = Math.sin(theta);
const cosTheta = Math.cos(theta);
const r = Math.sqrt(x ** 2 + y ** 2 + z ** 2);
if (r === 0) {
return identity;
}
const [u, v, w] = [x / r, y / r, z / r];
return matrix([
[
cosTheta + (1 - cosTheta) * u ** 2,
u * v * (1 - cosTheta) - w * sinTheta,
u * w * (1 - cosTheta) + v * sinTheta,
0,
],
[
v * u * (1 - cosTheta) + w * sinTheta,
cosTheta + (1 - cosTheta) * v ** 2,
v * w * (1 - cosTheta) - u * sinTheta,
0,
],
[
w * u * (1 - cosTheta) - v * sinTheta,
w * v * (1 - cosTheta) + u * sinTheta,
cosTheta + (1 - cosTheta) * w ** 2,
0,
],
[0, 0, 0, 1],
]);
};
const rotateX = (theta: number) => rotate3d(1, 0, 0, theta);
const rotateY = (theta: number) => rotate3d(0, 1, 0, theta);
const rotateZ = (theta: number) => rotate3d(0, 0, 1, theta);
const scale3d = (sx = 1, sy = 1, sz = 1) =>
matrix([
[sx, 0, 0, 0],
[0, sy, 0, 0],
[0, 0, sz, 0],
[0, 0, 0, 1],
]);
const scale = (sx = 1, sy = 1) => scale3d(sx, sy);
const scaleX = (sx = 1) => scale(sx);
const scaleY = (sy = 1) => scale(1, sy);
const scaleZ = (sz = 1) => scale3d(1, 1, sz);
const skew = (alpha = 0, beta = 0) => {
const tanAlpha = Math.tan(alpha) || 0;
const tanBeta = Math.tan(beta) || 0;
return matrix([
[1 + tanAlpha * tanBeta, tanAlpha, 0, 0],
[tanBeta, 1, 0, 0],
[0, 0, 1, 0],
[0, 0, 0, 1],
]);
};
const skewX = (theta: number) => skew(theta);
const skewY = (theta: number) => skew(0, theta);
const translate3d = (dx = 0, dy = 0, dz = 0) =>
matrix([
[1, 0, 0, dx],
[0, 1, 0, dy],
[0, 0, 1, dz],
[0, 0, 0, 1],
]);
const translate = (dx = 0, dy = 0) => translate3d(dx, dy, 0);
const translateX = (dx = 0) => translate3d(dx);
const translateY = (dy = 0) => translate3d(0, dy);
const translateZ = (dz = 0) => translate3d(0, 0, dz);
const argsTransformMap = {
matrix: stringArgsToFloat,
matrix3d: stringArgsToFloat,
rotate: stringArgsToRadians,
rotate3d: (x, y, z, t) => [...stringArgsToFloat(x, y, z), toRadians(t)],
rotateX: stringArgsToRadians,
rotateY: stringArgsToRadians,
rotateZ: stringArgsToRadians,
scale: stringArgsToFloat,
scale3d: stringArgsToFloat,
scaleX: stringArgsToFloat,
scaleY: stringArgsToFloat,
scaleZ: stringArgsToFloat,
skew: stringArgsToRadians,
skewX: stringArgsToRadians,
skewY: stringArgsToRadians,
translate: stringArgsToFloat,
translate3d: stringArgsToFloat,
translateX: stringArgsToFloat,
translateY: stringArgsToFloat,
translateZ: stringArgsToFloat,
};
const transformMatrixMap = {
none: identity,
matrix: (l11, l12, dx, l21, l22, dy) =>
matrix([
[l11, l12, 0, dx],
[l21, l22, 0, dy],
[0, 0, 1, 0],
[0, 0, 0, 1],
]),
matrix3d: (
m11,
m12,
m13,
m14,
m21,
m22,
m23,
m24,
m31,
m32,
m33,
m34,
m41,
m42,
m43,
m44
) =>
matrix([
[m11, m12, m13, m14],
[m21, m22, m23, m24],
[m31, m32, m33, m34],
[m41, m42, m43, m44],
]),
// perspective: ()=>identity, // TODO
rotate: rotateZ,
rotateX,
rotateY,
rotateZ,
scale,
scale3d,
scaleX,
scaleY,
scaleZ,
skew,
skewX,
skewY,
translate,
translate3d,
translateX,
translateY,
translateZ,
};
const matrixToArray = (m) => m().reduce((acc, v) => [...acc, ...v]);
export default function (value: string): TPropertyAssignment[] {
const calls = getMacroCalls(value);
// operations performed right to left
// i.e. transform: translateY(20) rotate(90deg)
// means rotate 90 degrees, then translate up 20
// so we reverse in-place the calls array which initially
// has the translation first followed by the rotate.
calls.reverse();
//@ts-ignore
const transformMatrix = calls.reduce((acc, { macro: f, args }) => {
if (!transformMatrixMap.hasOwnProperty(f)) {
return acc;
}
const argsTransform = argsTransformMap[f] || (() => args);
const transform = transformMatrixMap[f](...argsTransform(...args));
return matrix(transform.prod(acc));
}, identity);
return [["transform-matrix", matrixToArray(transformMatrix)]];
}
================================================
FILE: packages/react-juce/src/lib/MacroProperties/index.ts
================================================
import transformPropertiesGetter from "./Transform";
export const macroPropertyGetters = {
transform: transformPropertiesGetter,
};
================================================
FILE: packages/react-juce/src/lib/MacroProperties/types.d.ts
================================================
export type TMacroCall = {
macro: string;
args: string[];
};
export type TPropertyAssignment = [string, string | number];
================================================
FILE: packages/react-juce/src/lib/MacroProperties/util.ts
================================================
import { TMacroCall } from "./types";
// don't try too hard, we don't need to support qouted strings containing commas etc.
export const splitArgs = (a: string) => {
const argArray = a.trim().split(/\s*,\s*/);
if (argArray.length === 1 && argArray[0] === "") return [];
return argArray;
};
export const getMacroCalls = (s: string): TMacroCall[] => {
const macroMatcher = String.raw`([a-zA-Z0-9]+)\(([^)]*)\)`;
let r = new RegExp(macroMatcher, "g");
// the rest would be trivial with matchAll
// which duktape sadly lacks
const matches = s.match(r);
if (!matches) return [];
// unset "g" flag, otherwise r.exec returns null when multiple matches occurred
r = new RegExp(macroMatcher);
const macroCalls = [];
for (const match of matches) {
// @ts-ignore
const [, macro, args] = r.exec(match);
macroCalls.push({
// @ts-ignore
macro,
// @ts-ignore
args: splitArgs(args),
});
}
return macroCalls;
};
================================================
FILE: packages/react-juce/src/lib/MethodTracer.ts
================================================
//@ts-nocheck
var inspect = require("object-inspect");
/** An object to be used as an ES6 Proxy handler to trace method calls and
undefined property accesses on the target object.
*/
export default {
get(target, propKey, receiver) {
const f = target[propKey];
if (typeof f === "undefined") {
console.log(
"MethodTrace: Stubbing undefined property access for",
propKey
);
return function _noop(...args) {
console.log(
"MethodTrace Stub:",
propKey,
...args.map((arg) => {
return inspect(arg, { depth: 1 });
})
);
};
}
if (typeof f === "function") {
return function _traced(...args) {
console.log(
"MethodTrace:",
propKey,
...args.map((arg) => {
return inspect(arg, { depth: 1 });
})
);
return f.apply(this, args);
};
}
return f;
},
};
================================================
FILE: packages/react-juce/src/lib/NativeMethods.ts
================================================
let Native = global["__NativeBindings__"] || {};
let DefaultExport = Native;
declare var process: {
env: {
NODE_ENV: string;
};
};
if (process.env.NODE_ENV !== "production") {
// @ts-ignore
DefaultExport = new Proxy(Native, {
get: function (target, propKey, receiver) {
if (
target.hasOwnProperty(propKey) &&
typeof target[propKey] === "function"
) {
return function __NativeMethodWrapper__(...args: any): any {
return target[propKey].call(null, ...args);
};
}
return function __NativeMethodWrapper__() {
console.warn(
`WARNING: Attempt to access undefined native method ${target}`
);
};
},
});
}
export default DefaultExport;
================================================
FILE: packages/react-juce/src/lib/Renderer.ts
================================================
import MethodTracer from "./MethodTracer";
import ReactReconciler from "react-reconciler";
import Backend, { ViewInstance, RawTextViewInstance } from "./Backend";
import invariant from "invariant";
type HostContext = {
isInTextParent: boolean;
};
//TODO: This should really be types against ReactReconciler.HostConfig with the generics typed out.
const HostConfig = {
/** Time provider. */
now: Date.now,
/** Indicates to the reconciler that our DOM tree supports mutating operations
* like appendChild, removeChild, etc.
*/
supportsMutation: true,
/** Provides the context for rendering the root level element.
*
* Really only using this and `getChildHostContext` for enforcing nesting
* constraints, such as that raw text content must be a child of a <Text>
* element.
*/
getRootHostContext(rootContainerInstance: ViewInstance): HostContext {
return {
isInTextParent: false,
};
},
/** Provides the context for rendering a child element.
*/
getChildHostContext(
parentHostContext: HostContext,
elementType: string,
rootContainerInstance: ViewInstance
): HostContext {
const isInTextParent =
parentHostContext.isInTextParent || elementType === "Text";
return { isInTextParent };
},
prepareForCommit: (...args: any) => {},
resetAfterCommit: (...args: any) => {
Backend.resetAfterCommit();
},
/** Called to determine whether or not a new text value can be set on an
* existing node, or if a new text node needs to be created.
*
* This is essentially born from the fact in that in a Web DOM, there are certain
* nodes, such as <textarea>, that support a `textContent` property. Setting the
* node's `textContent` property is different from creating a TextNode and appending
* it to the node's children array. This method signals which option to take.
*
* In our case, we return `false` always because we have no nodes in the JUCE
* backend that support this kind of behavior. All text nodes must be created as
* RawTextViewInstances as children of a TextViewInstance.
*/
shouldSetTextContent(elementType: string, props: any) {
return false;
},
/** Create a new DOM node. */
createInstance(
elementType: string,
props: any,
rootContainerInstance: ViewInstance,
hostContext: HostContext,
internalInstanceHandle: any
): ViewInstance {
invariant(
!hostContext.isInTextParent,
"Nesting elements inside of <Text> is currently not supported."
);
return Backend.createViewInstance(
elementType,
props,
rootContainerInstance
);
},
/** Create a new text node. */
createTextInstance(
text: string,
rootContainerInstance: ViewInstance,
hostContext: HostContext,
internalInstanceHandle: any
): RawTextViewInstance {
invariant(
hostContext.isInTextParent,
"Raw text strings must be rendered within a <Text> element."
);
return Backend.createTextViewInstance(text, rootContainerInstance);
},
/** Mount the child to its container. */
appendInitialChild(parentInstance: ViewInstance, child: ViewInstance): void {
parentInstance.appendChild(child);
},
/** For each newly constructed node, once we finish the assignment of children
* this method will be called to finalize the node. We take this opportunity
* to propagate relevant properties to the node.
*/
finalizeInitialChildren(
instance: ViewInstance,
elementType: string,
props: any,
rootContainerInstance: ViewInstance
): void {
Object.keys(props).forEach(function (propKey) {
if (propKey !== "children") {
instance.setProperty(propKey, props[propKey]);
}
});
},
/** During a state change, this method will be called to identify the set of
* properties that need to be updated. This is more-or-less an opportunity
* for us to diff our props before propagating.
*/
prepareUpdate(
domElement: any,
elementType: string,
oldProps: any,
newProps: any,
rootContainerInstance: ViewInstance,
hostContext: HostContext
) {
// The children prop will be handled separately via the tree update.
let { children: oldChildren, ...op } = oldProps;
let { children: newChildren, ...np } = newProps;
// We construct a new payload of property values that are either new or
// have changed for this element.
let payload: any = {};
for (let key in np) {
if (np.hasOwnProperty(key) && np[key] !== op[key]) {
payload[key] = np[key];
}
}
return payload;
},
/** Following from `prepareUpdate` above, this is our opportunity to apply
* the update payload to a given instance.
*/
commitUpdate(
instance: ViewInstance,
updatePayload: any,
elementType: string,
oldProps: any,
newProps: any,
internalInstanceHandle: any
): void {
Object.keys(updatePayload).forEach(function (propKey: string): void {
instance.setProperty(propKey, updatePayload[propKey]);
});
},
/** Similar to the previous method, this is our opportunity to apply text
* updates to a given instance.
*/
commitTextUpdate(
instance: RawTextViewInstance,
oldText: string,
newText: string
): void {
if (typeof newText === "string" && oldText !== newText) {
instance.setTextValue(newText);
}
},
/** TODO
*/
commitMount(
instance: ViewInstance,
type: string,
newProps: any,
internalInstanceHandle: any
): void {
// Noop
},
/** Append a child to a parent instance. */
appendChild(parentInstance: ViewInstance, child: ViewInstance): void {
parentInstance.appendChild(child);
},
/** Append a child to a parent container.
* TODO: Not really sure how this is different from the above.
*/
appendChildToContainer(
parentContainer: ViewInstance,
child: ViewInstance
): void {
parentContainer.appendChild(child);
},
/** Inserts a child node into a parent's children array, just before the
* second given child node.
*/
insertBefore(
parentInstance: ViewInstance,
child: ViewInstance,
beforeChild: ViewInstance
): void {
let index = parentInstance.getChildIndex(beforeChild);
if (index < 0)
throw new Error(
"Failed to find child instance for insertBefore operation."
);
parentInstance.insertChild(child, index);
},
/** Remove a child from a parent instance. */
removeChild(parentInstance: ViewInstance, child: ViewInstance): void {
parentInstance.removeChild(child);
},
/** Remove a child from a parent container. */
removeChildFromContainer(
parentContainer: ViewInstance,
child: ViewInstance
): void {
parentContainer.removeChild(child);
},
};
//TODO: Applied ts-ignore here as TS complains about missing functions on HostConfig
//@ts-ignore
export default ReactReconciler(HostConfig);
export const TracedRenderer = ReactReconciler(
new Proxy(HostConfig, MethodTracer)
);
================================================
FILE: packages/react-juce/src/lib/SyntheticEvents.ts
================================================
import { Instance } from "./Backend";
export class SyntheticEvent {
public bubbles: boolean;
public defaultPrevented: boolean;
public target: Instance;
private _internal: any;
constructor(props: any) {
this.bubbles = true;
this.defaultPrevented = false;
const { target, ...other } = props;
this.target = target;
this._internal = other;
}
stopPropagation(): void {
this.bubbles = false;
}
preventDefault(): void {
this.defaultPrevented = true;
}
}
export class SyntheticMouseEvent extends SyntheticEvent {
public x: number;
public y: number;
public clientX: number;
public clientY: number;
public screenX: number;
public screenY: number;
public relatedTarget: Instance;
constructor(props: any) {
super(props);
this.x = this.clientX = props.x;
this.y = this.clientY = props.y;
this.screenX = props.screenX;
this.screenY = props.screenY;
this.relatedTarget = props.relatedTarget;
}
}
export class SyntheticKeyboardEvent extends SyntheticEvent {
public keyCode: number;
public key: string;
constructor(props: any) {
super(props);
this.keyCode = props.keyCode;
this.key = props.key;
}
}
export default {
isMouseEventHandler(key: string): boolean {
const k = key.toLowerCase();
return (
k === "onmousedown" ||
k == "onmouseup" ||
k == "onmouseenter" ||
k == "onmouseleave" ||
k == "onmousedrag" ||
k == "onmouseclick"
);
},
isKeyboardEventHandler(key: string): boolean {
const k = key.toLowerCase();
return k === "onkeydown" || k == "onkeyup" || k == "onkeypress";
},
};
================================================
FILE: packages/react-juce/template/.gitignore
================================================
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
# dependencies
/node_modules
/.pnp
.pnp.js
# testing
/coverage
# production
/build
# misc
.DS_Store
.env.local
.env.development.local
.env.test.local
.env.production.local
npm-debug.log*
yarn-debug.log*
yarn-error.log*
================================================
FILE: packages/react-juce/template/babel.config.js
================================================
module.exports = {
presets: [
[
"@babel/preset-env",
{
modules: "umd",
},
],
"@babel/preset-react",
],
plugins: [
"@babel/plugin-proposal-class-properties",
[
"@babel/plugin-transform-runtime",
{
absoluteRuntime: false,
corejs: 3,
version: "7.11.2",
},
],
],
};
================================================
FILE: packages/react-juce/template/package.json
================================================
{
"name": "ui",
"version": "0.1.0",
"private": true,
"dependencies": {
"@babel/runtime-corejs3": "^7.10.3",
"react-juce": "^0.2.10",
"react": "^16.6.3"
},
"devDependencies": {
"@babel/core": "^7.2.0",
"@babel/plugin-proposal-class-properties": "^7.10.4",
"@babel/plugin-transform-runtime": "^7.10.3",
"@babel/preset-env": "^7.2.0",
"@babel/preset-react": "^7.0.0",
"babel-loader": "^8.0.4",
"svg-inline-loader": "^0.8.0",
"webpack": "^4.27.1",
"webpack-cli": "^3.1.2"
},
"scripts": {
"start": "webpack -w --mode=development",
"build": "webpack --mode=production"
}
}
================================================
FILE: packages/react-juce/template/src/App.js
================================================
import React, { Component } from "react";
import { View, Text } from "react-juce";
class App extends Component {
render() {
return (
<View {...styles.container}>
<View {...styles.content}>
<Text {...styles.text}>Hello from React.js!</Text>
</View>
</View>
);
}
}
const styles = {
container: {
width: "100%",
height: "100%",
"background-color": "ff17191f",
},
content: {
flex: 1.0,
"justify-content": "center",
"align-items": "center",
},
text: {
"font-size": 18.0,
"line-spacing": 1.6,
color: "ff626262",
},
};
export default App;
================================================
FILE: packages/react-juce/template/src/index.js
================================================
import React from "react";
import ReactJUCE from "react-juce";
import App from "./App";
ReactJUCE.render(<App />, ReactJUCE.getRootContainer());
================================================
FILE: packages/react-juce/template/webpack.config.js
================================================
module.exports = {
entry: "./src/index.js",
output: {
path: __dirname + "/build/js",
filename: "main.js",
sourceMapFilename: "[file].map",
devtoolModuleFilenameTemplate: (info) =>
`webpack:///${info.absoluteResourcePath.replace(/\\/g, "/")}`,
},
devtool: "source-map",
module: {
rules: [
{
test: /\.(js|jsx)$/,
exclude: /node_modules/,
use: ["babel-loader"],
},
{
test: /\.svg$/,
exclude: /node_modules/,
use: ["svg-inline-loader"],
},
],
},
};
================================================
FILE: packages/react-juce/tsconfig.json
================================================
{
"compilerOptions": {
"module": "commonjs",
"target": "es6",
"lib": ["es2015", "dom"],
"declaration": true,
"sourceMap": true,
"isolatedModules": true,
"esModuleInterop": true,
"allowJs": true,
"noImplicitAny": false,
"strict": true,
"strictNullChecks": true,
"skipLibCheck": true,
"jsx": "react"
},
"include": ["./src/**/*"]
}
================================================
FILE: packages/react-juce/webpack.config.js
================================================
const path = require("path");
module.exports = (env) => {
return {
entry: "./src/index.tsx",
output: {
path: path.resolve(__dirname, "dist"),
filename: "index.js",
libraryTarget: "umd",
globalObject: "this",
sourceMapFilename: "[file].map",
devtoolModuleFilenameTemplate: "webpack:///[absolute-resource-path]",
},
externals: {
react: {
root: "React",
commonjs2: "react",
commonjs: "react",
amd: "react",
},
},
target: ["web", "es5"],
devtool: "source-map",
resolve: {
extensions: [".ts", ".tsx", ".js"],
},
module: {
rules: [
{
test: /\.tsx?$/,
exclude: path.resolve(__dirname, "node_modules"),
use: [
{
loader: "awesome-typescript-loader",
options: {
useBabel: true,
babelCore: "@babel/core",
declarationDir: path.resolve(__dirname, "dist"),
},
},
],
},
{
test: /\.js$/,
include: [
path.resolve(__dirname, "node_modules", "matrix-js"),
path.resolve(__dirname, "node_modules", "camelcase"),
],
use: [
{
loader: "awesome-typescript-loader",
options: {
useBabel: true,
babelCore: "@babel/core",
},
},
],
},
{
test: /\.svg$/,
exclude: path.resolve(__dirname, "node_modules"),
use: ["svg-inline-loader"],
},
],
},
watchOptions: {
ignored: [
path.resolve(__dirname, "dist"),
path.resolve(__dirname, "node_modules"),
],
},
};
};
================================================
FILE: react_juce/core/AppHarness.cpp
================================================
/*
==============================================================================
AppHarness.cpp
Created: 21 Nov 2020 11:27:37am
==============================================================================
*/
#include "AppHarness.h"
namespace reactjuce
{
//==============================================================================
AppHarness::AppHarness(ReactApplicationRoot& _appRoot)
: appRoot(_appRoot)
{
JUCE_ASSERT_MESSAGE_THREAD
fileWatcher = std::make_unique<FileWatcher>([this]() { handleFilesChanged(); });
}
//==============================================================================
void AppHarness::watch (const juce::File& f)
{
if (fileWatcher)
{
sourceFileTypeMap[f.getFullPathName()] = false;
fileWatcher->watch(f);
}
}
void AppHarness::watch (const std::vector<juce::File>& fs)
{
if (fileWatcher)
{
for (const auto& f : fs)
watch(f);
}
}
void AppHarness::watchBytecode (const juce::File& f)
{
if (fileWatcher)
{
sourceFileTypeMap[f.getFullPathName()] = true;
fileWatcher->watch(f);
}
}
void AppHarness::watchBytecode (const std::vector<juce::File>& fs)
{
if (fileWatcher)
{
for (const auto& f : fs)
watchBytecode(f);
}
}
void AppHarness::start()
{
// Nothing to do if we haven't watched any files
if (fileWatcher == nullptr)
return;
// Run initial callbacks and file eval.
handleFilesChanged();
// Finally, kick off the file watch process
fileWatcher->start();
}
void AppHarness::stop()
{
if (fileWatcher)
fileWatcher->stop();
}
void AppHarness::once()
{
// Nothing to do if we haven't watched any files
if (fileWatcher == nullptr)
return;
// Run callback and eval step once.
handleFilesChanged();
}
void AppHarness::handleFilesChanged()
{
appRoot.reset();
appRoot.bindNativeRenderingHooks();
if (onBeforeAll) { onBeforeAll(); }
for (const auto& f : fileWatcher->getWatchedFiles())
{
if (onBeforeEach) { onBeforeEach(f); }
try
{
const bool isBytecode = sourceFileTypeMap[f.getFullPathName()];
if (isBytecode)
appRoot.evaluateBytecode(f);
else
appRoot.evaluate(f);
}
catch (const EcmascriptEngine::Error& err)
{
// We may fall in here in Release builds when ReactApplicationRoot hasn't
// caught the error for us to show the red screen. In this case, we call
// a user supplied error handler if we have one, else just break the loop
// and await the next file change event.
if (onEvalError)
{
onEvalError(err);
break;
}
else
{
throw err;
}
}
if (onAfterEach) { onAfterEach(f); }
}
if (onAfterAll) { onAfterAll(); }
}
}
================================================
FILE: react_juce/core/AppHarness.h
================================================
/*
==============================================================================
AppHarness.h
Created: 21 Nov 2020 11:27:37am
==============================================================================
*/
#pragma once
#include "EcmascriptEngine.h"
#include "FileWatcher.h"
#include "ReactApplicationRoot.h"
namespace reactjuce
{
/** The AppHarness is a simple class which composes over your ReactApplicationRoot
* to provide file watching and hot reloading behavior for the bundle files your app evaluates.
*
* To use, you should only need to make a AppHarness, set it to `watch()` any
* of your files, and then call `start()` (called automatically in Debug builds).
*
* For custom behavior, you can attach callbacks at each of the four reloading stages:
* onBeforeAll – Invoked before evaluating any watched bundle
* onBeforeEach – Invoked before evaluating each watched bundle
* onAfterEach – Invoked after evaluating each watched bundle
* onAfterAll – Invoked after evaluating all watched bundles
* onEvalError – Invoked for an uncaught exception during bundle evaluation
*/
class AppHarness
{
public:
//==============================================================================
explicit AppHarness(ReactApplicationRoot& _appRoot);
//==============================================================================
/** Add JS bundle file to be watched/managed by the AppHarness. */
void watch (const juce::File& f);
void watch (const std::vector<juce::File>& fs);
void watchBytecode (const juce::File& f);
void watchBytecode (const std::vector<juce::File>& fs);
/** Run the initial evaluation step and then watch for file changes. */
void start();
/** Stop any running file watch. */
void stop();
/** Run the initial evaluation step exactly once.
*
* It may be helpful to use AppHarness::start in DEBUG builds when you want
* hot reloading for development, then switch in RELEASE builds to using
*
gitextract_y1uslwgj/
├── .gitbook.yaml
├── .github/
│ ├── FUNDING.yml
│ └── workflows/
│ ├── cmake.yml
│ ├── lint.yml
│ ├── node.yml
│ └── publish.yml
├── .gitignore
├── .gitmodules
├── .prettierignore
├── CMakeLists.txt
├── CONTRIBUTING.md
├── LICENSE.md
├── README.md
├── docs/
│ ├── .nojekyll
│ ├── README.md
│ ├── Resources.md
│ ├── SUMMARY.md
│ ├── components/
│ │ ├── Button.md
│ │ ├── Canvas.md
│ │ ├── Events.md
│ │ ├── Image.md
│ │ ├── ListView.md
│ │ ├── ScrollView.md
│ │ ├── Slider.md
│ │ ├── Styles.md
│ │ ├── Text.md
│ │ ├── TextInput.md
│ │ └── View.md
│ ├── guides/
│ │ ├── Debugging_With_Duktape.md
│ │ ├── Getting_Started.md
│ │ ├── Integrating_Your_Project.md
│ │ ├── Running_the_Examples.md
│ │ └── Why_Not_React_Native.md
│ └── native/
│ ├── Custom_Native_Components.md
│ └── Interop.md
├── examples/
│ └── GainPlugin/
│ ├── CMakeLists.txt
│ ├── PluginProcessor.cpp
│ ├── PluginProcessor.h
│ └── jsui/
│ ├── .gitignore
│ ├── babel.config.js
│ ├── package.json
│ ├── src/
│ │ ├── AnimatedFlexBox.js
│ │ ├── App.js
│ │ ├── Knob.js
│ │ ├── Label.js
│ │ ├── Meter.js
│ │ ├── ParameterSlider.js
│ │ ├── ParameterToggleButton.js
│ │ ├── ParameterValueContext.js
│ │ ├── ParameterValueStore.js
│ │ ├── index.js
│ │ └── nativeMethods.js
│ └── webpack.config.js
├── package.json
├── packages/
│ └── react-juce/
│ ├── .gitignore
│ ├── babel.config.js
│ ├── package.json
│ ├── scripts/
│ │ └── init.js
│ ├── src/
│ │ ├── components/
│ │ │ ├── Button.tsx
│ │ │ ├── Canvas.ts
│ │ │ ├── Image.ts
│ │ │ ├── ListView.tsx
│ │ │ ├── ScrollView.ts
│ │ │ ├── Slider.tsx
│ │ │ ├── Text.ts
│ │ │ ├── TextInput.tsx
│ │ │ └── View.ts
│ │ ├── index.tsx
│ │ └── lib/
│ │ ├── Backend.ts
│ │ ├── EventBridge.ts
│ │ ├── MacroProperties/
│ │ │ ├── Colors.ts
│ │ │ ├── Transform.ts
│ │ │ ├── index.ts
│ │ │ ├── types.d.ts
│ │ │ └── util.ts
│ │ ├── MethodTracer.ts
│ │ ├── NativeMethods.ts
│ │ ├── Renderer.ts
│ │ └── SyntheticEvents.ts
│ ├── template/
│ │ ├── .gitignore
│ │ ├── babel.config.js
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── App.js
│ │ │ └── index.js
│ │ └── webpack.config.js
│ ├── tsconfig.json
│ └── webpack.config.js
└── react_juce/
├── core/
│ ├── AppHarness.cpp
│ ├── AppHarness.h
│ ├── CanvasView.cpp
│ ├── CanvasView.h
│ ├── EcmascriptEngine.cpp
│ ├── EcmascriptEngine.h
│ ├── EcmascriptEngine_Duktape.cpp
│ ├── EcmascriptEngine_Hermes.cpp
│ ├── FileWatcher.h
│ ├── GenericEditor.cpp
│ ├── GenericEditor.h
│ ├── ImageView.cpp
│ ├── ImageView.h
│ ├── RawTextView.h
│ ├── ReactApplicationRoot.cpp
│ ├── ReactApplicationRoot.h
│ ├── ScrollView.cpp
│ ├── ScrollView.h
│ ├── ScrollViewContentShadowView.h
│ ├── ShadowView.cpp
│ ├── ShadowView.h
│ ├── ShadowView_Yoga.cpp
│ ├── TextInputView.cpp
│ ├── TextInputView.h
│ ├── TextShadowView.cpp
│ ├── TextShadowView.h
│ ├── TextShadowView_Yoga.cpp
│ ├── TextView.h
│ ├── Utils.cpp
│ ├── Utils.h
│ ├── View.cpp
│ ├── View.h
│ ├── ViewManager.cpp
│ ├── ViewManager.h
│ └── YogaImplInclude.cpp
├── duktape/
│ ├── AUTHORS.rst
│ ├── LICENSE.txt
│ ├── Makefile.cmdline
│ ├── Makefile.codepage
│ ├── Makefile.coffee
│ ├── Makefile.dukdebug
│ ├── Makefile.eval
│ ├── Makefile.eventloop
│ ├── Makefile.hello
│ ├── Makefile.jsoncbor
│ ├── Makefile.jxpretty
│ ├── Makefile.sandbox
│ ├── Makefile.sharedlibrary
│ ├── README.rst
│ ├── config/
│ │ ├── README.rst
│ │ ├── architectures/
│ │ │ ├── architecture_arm32.h.in
│ │ │ ├── architecture_arm64.h.in
│ │ │ ├── architecture_emscripten.h.in
│ │ │ ├── architecture_generic.h.in
│ │ │ ├── architecture_m68k.h.in
│ │ │ ├── architecture_mips32.h.in
│ │ │ ├── architecture_mips64.h.in
│ │ │ ├── architecture_powerpc32.h.in
│ │ │ ├── architecture_powerpc64.h.in
│ │ │ ├── architecture_sparc32.h.in
│ │ │ ├── architecture_sparc64.h.in
│ │ │ ├── architecture_superh.h.in
│ │ │ ├── architecture_x32.h.in
│ │ │ ├── architecture_x64.h.in
│ │ │ └── architecture_x86.h.in
│ │ ├── architectures.yaml
│ │ ├── compilers/
│ │ │ ├── compiler_bcc.h.in
│ │ │ ├── compiler_clang.h.in
│ │ │ ├── compiler_emscripten.h.in
│ │ │ ├── compiler_gcc.h.in
│ │ │ ├── compiler_generic.h.in
│ │ │ ├── compiler_msvc.h.in
│ │ │ ├── compiler_tinyc.h.in
│ │ │ └── compiler_vbcc.h.in
│ │ ├── compilers.yaml
│ │ ├── config-options/
│ │ │ ├── DUK_USE_32BIT_PTRS.yaml
│ │ │ ├── DUK_USE_64BIT_OPS.yaml
│ │ │ ├── DUK_USE_ALIGN_4.yaml
│ │ │ ├── DUK_USE_ALIGN_8.yaml
│ │ │ ├── DUK_USE_ALIGN_BY.yaml
│ │ │ ├── DUK_USE_ALLOW_UNDEFINED_BEHAVIOR.yaml
│ │ │ ├── DUK_USE_ARCH_STRING.yaml
│ │ │ ├── DUK_USE_ARRAY_BUILTIN.yaml
│ │ │ ├── DUK_USE_ARRAY_FASTPATH.yaml
│ │ │ ├── DUK_USE_ARRAY_PROP_FASTPATH.yaml
│ │ │ ├── DUK_USE_ASSERTIONS.yaml
│ │ │ ├── DUK_USE_ATAN2_WORKAROUNDS.yaml
│ │ │ ├── DUK_USE_AUGMENT_ERROR_CREATE.yaml
│ │ │ ├── DUK_USE_AUGMENT_ERROR_THROW.yaml
│ │ │ ├── DUK_USE_AVOID_PLATFORM_FUNCPTRS.yaml
│ │ │ ├── DUK_USE_BASE64_FASTPATH.yaml
│ │ │ ├── DUK_USE_BASE64_SUPPORT.yaml
│ │ │ ├── DUK_USE_BOOLEAN_BUILTIN.yaml
│ │ │ ├── DUK_USE_BRANCH_HINTS.yaml
│ │ │ ├── DUK_USE_BROWSER_LIKE.yaml
│ │ │ ├── DUK_USE_BUFFEROBJECT_SUPPORT.yaml
│ │ │ ├── DUK_USE_BUFLEN16.yaml
│ │ │ ├── DUK_USE_BUILTIN_INITJS.yaml
│ │ │ ├── DUK_USE_BYTECODE_DUMP_SUPPORT.yaml
│ │ │ ├── DUK_USE_BYTEORDER.yaml
│ │ │ ├── DUK_USE_BYTEORDER_FORCED.yaml
│ │ │ ├── DUK_USE_CACHE_ACTIVATION.yaml
│ │ │ ├── DUK_USE_CACHE_CATCHER.yaml
│ │ │ ├── DUK_USE_CALLSTACK_LIMIT.yaml
│ │ │ ├── DUK_USE_COMMONJS_MODULES.yaml
│ │ │ ├── DUK_USE_COMPILER_RECLIMIT.yaml
│ │ │ ├── DUK_USE_COMPILER_STRING.yaml
│ │ │ ├── DUK_USE_COMPUTED_INFINITY.yaml
│ │ │ ├── DUK_USE_COMPUTED_NAN.yaml
│ │ │ ├── DUK_USE_COROUTINE_SUPPORT.yaml
│ │ │ ├── DUK_USE_CPP_EXCEPTIONS.yaml
│ │ │ ├── DUK_USE_DATAPTR16.yaml
│ │ │ ├── DUK_USE_DATAPTR_DEC16.yaml
│ │ │ ├── DUK_USE_DATAPTR_ENC16.yaml
│ │ │ ├── DUK_USE_DATE_BUILTIN.yaml
│ │ │ ├── DUK_USE_DATE_FMT_STRFTIME.yaml
│ │ │ ├── DUK_USE_DATE_FORMAT_STRING.yaml
│ │ │ ├── DUK_USE_DATE_GET_LOCAL_TZOFFSET.yaml
│ │ │ ├── DUK_USE_DATE_GET_NOW.yaml
│ │ │ ├── DUK_USE_DATE_NOW_GETTIMEOFDAY.yaml
│ │ │ ├── DUK_USE_DATE_NOW_TIME.yaml
│ │ │ ├── DUK_USE_DATE_NOW_WINDOWS.yaml
│ │ │ ├── DUK_USE_DATE_NOW_WINDOWS_SUBMS.yaml
│ │ │ ├── DUK_USE_DATE_PARSE_STRING.yaml
│ │ │ ├── DUK_USE_DATE_PRS_GETDATE.yaml
│ │ │ ├── DUK_USE_DATE_PRS_STRPTIME.yaml
│ │ │ ├── DUK_USE_DATE_TZO_GMTIME.yaml
│ │ │ ├── DUK_USE_DATE_TZO_GMTIME_R.yaml
│ │ │ ├── DUK_USE_DATE_TZO_GMTIME_S.yaml
│ │ │ ├── DUK_USE_DATE_TZO_WINDOWS.yaml
│ │ │ ├── DUK_USE_DATE_TZO_WINDOWS_NO_DST.yaml
│ │ │ ├── DUK_USE_DDDPRINT.yaml
│ │ │ ├── DUK_USE_DDPRINT.yaml
│ │ │ ├── DUK_USE_DEBUG.yaml
│ │ │ ├── DUK_USE_DEBUGGER_DUMPHEAP.yaml
│ │ │ ├── DUK_USE_DEBUGGER_FWD_LOGGING.yaml
│ │ │ ├── DUK_USE_DEBUGGER_FWD_PRINTALERT.yaml
│ │ │ ├── DUK_USE_DEBUGGER_INSPECT.yaml
│ │ │ ├── DUK_USE_DEBUGGER_PAUSE_UNCAUGHT.yaml
│ │ │ ├── DUK_USE_DEBUGGER_SUPPORT.yaml
│ │ │ ├── DUK_USE_DEBUGGER_THROW_NOTIFY.yaml
│ │ │ ├── DUK_USE_DEBUGGER_TRANSPORT_TORTURE.yaml
│ │ │ ├── DUK_USE_DEBUG_BUFSIZE.yaml
│ │ │ ├── DUK_USE_DEBUG_LEVEL.yaml
│ │ │ ├── DUK_USE_DEBUG_WRITE.yaml
│ │ │ ├── DUK_USE_DEEP_C_STACK.yaml
│ │ │ ├── DUK_USE_DOUBLE_BE.yaml
│ │ │ ├── DUK_USE_DOUBLE_LE.yaml
│ │ │ ├── DUK_USE_DOUBLE_LINKED_HEAP.yaml
│ │ │ ├── DUK_USE_DOUBLE_ME.yaml
│ │ │ ├── DUK_USE_DPRINT.yaml
│ │ │ ├── DUK_USE_DPRINT_COLORS.yaml
│ │ │ ├── DUK_USE_DPRINT_RDTSC.yaml
│ │ │ ├── DUK_USE_DUKTAPE_BUILTIN.yaml
│ │ │ ├── DUK_USE_ENCODING_BUILTINS.yaml
│ │ │ ├── DUK_USE_ERRCREATE.yaml
│ │ │ ├── DUK_USE_ERRTHROW.yaml
│ │ │ ├── DUK_USE_ES6.yaml
│ │ │ ├── DUK_USE_ES6_OBJECT_PROTO_PROPERTY.yaml
│ │ │ ├── DUK_USE_ES6_OBJECT_SETPROTOTYPEOF.yaml
│ │ │ ├── DUK_USE_ES6_PROXY.yaml
│ │ │ ├── DUK_USE_ES6_REGEXP_BRACES.yaml
│ │ │ ├── DUK_USE_ES6_REGEXP_SYNTAX.yaml
│ │ │ ├── DUK_USE_ES6_UNICODE_ESCAPE.yaml
│ │ │ ├── DUK_USE_ES7.yaml
│ │ │ ├── DUK_USE_ES7_EXP_OPERATOR.yaml
│ │ │ ├── DUK_USE_ES8.yaml
│ │ │ ├── DUK_USE_ES9.yaml
│ │ │ ├── DUK_USE_ESBC_LIMITS.yaml
│ │ │ ├── DUK_USE_ESBC_MAX_BYTES.yaml
│ │ │ ├── DUK_USE_ESBC_MAX_LINENUMBER.yaml
│ │ │ ├── DUK_USE_EXAMPLE.yaml
│ │ │ ├── DUK_USE_EXEC_FUN_LOCAL.yaml
│ │ │ ├── DUK_USE_EXEC_INDIRECT_BOUND_CHECK.yaml
│ │ │ ├── DUK_USE_EXEC_PREFER_SIZE.yaml
│ │ │ ├── DUK_USE_EXEC_REGCONST_OPTIMIZE.yaml
│ │ │ ├── DUK_USE_EXEC_TIMEOUT_CHECK.yaml
│ │ │ ├── DUK_USE_EXPLICIT_NULL_INIT.yaml
│ │ │ ├── DUK_USE_EXTSTR_FREE.yaml
│ │ │ ├── DUK_USE_EXTSTR_INTERN_CHECK.yaml
│ │ │ ├── DUK_USE_FASTINT.yaml
│ │ │ ├── DUK_USE_FAST_REFCOUNT_DEFAULT.yaml
│ │ │ ├── DUK_USE_FATAL_HANDLER.yaml
│ │ │ ├── DUK_USE_FATAL_MAXLEN.yaml
│ │ │ ├── DUK_USE_FILE_IO.yaml
│ │ │ ├── DUK_USE_FINALIZER_SUPPORT.yaml
│ │ │ ├── DUK_USE_FINALIZER_TORTURE.yaml
│ │ │ ├── DUK_USE_FLEX_C99.yaml
│ │ │ ├── DUK_USE_FLEX_ONESIZE.yaml
│ │ │ ├── DUK_USE_FLEX_ZEROSIZE.yaml
│ │ │ ├── DUK_USE_FULL_TVAL.yaml
│ │ │ ├── DUK_USE_FUNCPTR16.yaml
│ │ │ ├── DUK_USE_FUNCPTR_DEC16.yaml
│ │ │ ├── DUK_USE_FUNCPTR_ENC16.yaml
│ │ │ ├── DUK_USE_FUNCTION_BUILTIN.yaml
│ │ │ ├── DUK_USE_FUNC_FILENAME_PROPERTY.yaml
│ │ │ ├── DUK_USE_FUNC_NAME_PROPERTY.yaml
│ │ │ ├── DUK_USE_GCC_PRAGMAS.yaml
│ │ │ ├── DUK_USE_GC_TORTURE.yaml
│ │ │ ├── DUK_USE_GET_MONOTONIC_TIME.yaml
│ │ │ ├── DUK_USE_GET_MONOTONIC_TIME_CLOCK_GETTIME.yaml
│ │ │ ├── DUK_USE_GET_MONOTONIC_TIME_WINDOWS_QPC.yaml
│ │ │ ├── DUK_USE_GET_RANDOM_DOUBLE.yaml
│ │ │ ├── DUK_USE_GLOBAL_BINDING.yaml
│ │ │ ├── DUK_USE_GLOBAL_BUILTIN.yaml
│ │ │ ├── DUK_USE_HASHBYTES_UNALIGNED_U32_ACCESS.yaml
│ │ │ ├── DUK_USE_HEAPPTR16.yaml
│ │ │ ├── DUK_USE_HEAPPTR_DEC16.yaml
│ │ │ ├── DUK_USE_HEAPPTR_ENC16.yaml
│ │ │ ├── DUK_USE_HEX_FASTPATH.yaml
│ │ │ ├── DUK_USE_HEX_SUPPORT.yaml
│ │ │ ├── DUK_USE_HOBJECT_ARRAY_ABANDON_LIMIT.yaml
│ │ │ ├── DUK_USE_HOBJECT_ARRAY_FAST_RESIZE_LIMIT.yaml
│ │ │ ├── DUK_USE_HOBJECT_ARRAY_MINGROW_ADD.yaml
│ │ │ ├── DUK_USE_HOBJECT_ARRAY_MINGROW_DIVISOR.yaml
│ │ │ ├── DUK_USE_HOBJECT_ENTRY_MINGROW_ADD.yaml
│ │ │ ├── DUK_USE_HOBJECT_ENTRY_MINGROW_DIVISOR.yaml
│ │ │ ├── DUK_USE_HOBJECT_HASH_PART.yaml
│ │ │ ├── DUK_USE_HOBJECT_HASH_PROP_LIMIT.yaml
│ │ │ ├── DUK_USE_HOBJECT_LAYOUT_1.yaml
│ │ │ ├── DUK_USE_HOBJECT_LAYOUT_2.yaml
│ │ │ ├── DUK_USE_HOBJECT_LAYOUT_3.yaml
│ │ │ ├── DUK_USE_HSTRING_ARRIDX.yaml
│ │ │ ├── DUK_USE_HSTRING_CLEN.yaml
│ │ │ ├── DUK_USE_HSTRING_EXTDATA.yaml
│ │ │ ├── DUK_USE_HSTRING_LAZY_CLEN.yaml
│ │ │ ├── DUK_USE_HTML_COMMENTS.yaml
│ │ │ ├── DUK_USE_IDCHAR_FASTPATH.yaml
│ │ │ ├── DUK_USE_INJECT_HEAP_ALLOC_ERROR.yaml
│ │ │ ├── DUK_USE_INTEGER_BE.yaml
│ │ │ ├── DUK_USE_INTEGER_LE.yaml
│ │ │ ├── DUK_USE_INTEGER_ME.yaml
│ │ │ ├── DUK_USE_INTERRUPT_COUNTER.yaml
│ │ │ ├── DUK_USE_INTERRUPT_DEBUG_FIXUP.yaml
│ │ │ ├── DUK_USE_JC.yaml
│ │ │ ├── DUK_USE_JSON_BUILTIN.yaml
│ │ │ ├── DUK_USE_JSON_DECNUMBER_FASTPATH.yaml
│ │ │ ├── DUK_USE_JSON_DECSTRING_FASTPATH.yaml
│ │ │ ├── DUK_USE_JSON_DEC_RECLIMIT.yaml
│ │ │ ├── DUK_USE_JSON_EATWHITE_FASTPATH.yaml
│ │ │ ├── DUK_USE_JSON_ENC_RECLIMIT.yaml
│ │ │ ├── DUK_USE_JSON_QUOTESTRING_FASTPATH.yaml
│ │ │ ├── DUK_USE_JSON_STRINGIFY_FASTPATH.yaml
│ │ │ ├── DUK_USE_JSON_SUPPORT.yaml
│ │ │ ├── DUK_USE_JX.yaml
│ │ │ ├── DUK_USE_LEXER_SLIDING_WINDOW.yaml
│ │ │ ├── DUK_USE_LIGHTFUNC_BUILTINS.yaml
│ │ │ ├── DUK_USE_LITCACHE_SIZE.yaml
│ │ │ ├── DUK_USE_MARKANDSWEEP_FINALIZER_TORTURE.yaml
│ │ │ ├── DUK_USE_MARK_AND_SWEEP.yaml
│ │ │ ├── DUK_USE_MARK_AND_SWEEP_RECLIMIT.yaml
│ │ │ ├── DUK_USE_MATH_BUILTIN.yaml
│ │ │ ├── DUK_USE_MATH_FMAX.yaml
│ │ │ ├── DUK_USE_MATH_FMIN.yaml
│ │ │ ├── DUK_USE_MATH_ROUND.yaml
│ │ │ ├── DUK_USE_MS_STRINGTABLE_RESIZE.yaml
│ │ │ ├── DUK_USE_NATIVE_CALL_RECLIMIT.yaml
│ │ │ ├── DUK_USE_NATIVE_STACK_CHECK.yaml
│ │ │ ├── DUK_USE_NONSTD_ARRAY_CONCAT_TRAILER.yaml
│ │ │ ├── DUK_USE_NONSTD_ARRAY_MAP_TRAILER.yaml
│ │ │ ├── DUK_USE_NONSTD_ARRAY_SPLICE_DELCOUNT.yaml
│ │ │ ├── DUK_USE_NONSTD_FUNC_CALLER_PROPERTY.yaml
│ │ │ ├── DUK_USE_NONSTD_FUNC_SOURCE_PROPERTY.yaml
│ │ │ ├── DUK_USE_NONSTD_FUNC_STMT.yaml
│ │ │ ├── DUK_USE_NONSTD_GETTER_KEY_ARGUMENT.yaml
│ │ │ ├── DUK_USE_NONSTD_JSON_ESC_U2028_U2029.yaml
│ │ │ ├── DUK_USE_NONSTD_REGEXP_DOLLAR_ESCAPE.yaml
│ │ │ ├── DUK_USE_NONSTD_SETTER_KEY_ARGUMENT.yaml
│ │ │ ├── DUK_USE_NONSTD_STRING_FROMCHARCODE_32BIT.yaml
│ │ │ ├── DUK_USE_NO_DOUBLE_ALIASING_SELFTEST.yaml
│ │ │ ├── DUK_USE_NUMBER_BUILTIN.yaml
│ │ │ ├── DUK_USE_OBJECT_BUILTIN.yaml
│ │ │ ├── DUK_USE_OBJSIZES16.yaml
│ │ │ ├── DUK_USE_OCTAL_SUPPORT.yaml
│ │ │ ├── DUK_USE_OS_STRING.yaml
│ │ │ ├── DUK_USE_PACKED_TVAL.yaml
│ │ │ ├── DUK_USE_PACKED_TVAL_POSSIBLE.yaml
│ │ │ ├── DUK_USE_PACK_CLANG_ATTR.yaml
│ │ │ ├── DUK_USE_PACK_DUMMY_MEMBER.yaml
│ │ │ ├── DUK_USE_PACK_GCC_ATTR.yaml
│ │ │ ├── DUK_USE_PACK_MSVC_PRAGMA.yaml
│ │ │ ├── DUK_USE_PANIC_ABORT.yaml
│ │ │ ├── DUK_USE_PANIC_EXIT.yaml
│ │ │ ├── DUK_USE_PANIC_HANDLER.yaml
│ │ │ ├── DUK_USE_PANIC_SEGFAULT.yaml
│ │ │ ├── DUK_USE_PARANOID_DATE_COMPUTATION.yaml
│ │ │ ├── DUK_USE_PARANOID_ERRORS.yaml
│ │ │ ├── DUK_USE_PARANOID_MATH.yaml
│ │ │ ├── DUK_USE_PC2LINE.yaml
│ │ │ ├── DUK_USE_PERFORMANCE_BUILTIN.yaml
│ │ │ ├── DUK_USE_POW_NETBSD_WORKAROUND.yaml
│ │ │ ├── DUK_USE_POW_WORKAROUNDS.yaml
│ │ │ ├── DUK_USE_PREFER_SIZE.yaml
│ │ │ ├── DUK_USE_PROMISE_BUILTIN.yaml
│ │ │ ├── DUK_USE_PROVIDE_DEFAULT_ALLOC_FUNCTIONS.yaml
│ │ │ ├── DUK_USE_RDTSC.yaml
│ │ │ ├── DUK_USE_REFCOUNT16.yaml
│ │ │ ├── DUK_USE_REFCOUNT32.yaml
│ │ │ ├── DUK_USE_REFERENCE_COUNTING.yaml
│ │ │ ├── DUK_USE_REFLECT_BUILTIN.yaml
│ │ │ ├── DUK_USE_REFZERO_FINALIZER_TORTURE.yaml
│ │ │ ├── DUK_USE_REGEXP_CANON_BITMAP.yaml
│ │ │ ├── DUK_USE_REGEXP_CANON_WORKAROUND.yaml
│ │ │ ├── DUK_USE_REGEXP_COMPILER_RECLIMIT.yaml
│ │ │ ├── DUK_USE_REGEXP_EXECUTOR_RECLIMIT.yaml
│ │ │ ├── DUK_USE_REGEXP_SUPPORT.yaml
│ │ │ ├── DUK_USE_REPL_FPCLASSIFY.yaml
│ │ │ ├── DUK_USE_REPL_ISFINITE.yaml
│ │ │ ├── DUK_USE_REPL_ISINF.yaml
│ │ │ ├── DUK_USE_REPL_ISNAN.yaml
│ │ │ ├── DUK_USE_REPL_SIGNBIT.yaml
│ │ │ ├── DUK_USE_ROM_GLOBAL_CLONE.yaml
│ │ │ ├── DUK_USE_ROM_GLOBAL_INHERIT.yaml
│ │ │ ├── DUK_USE_ROM_OBJECTS.yaml
│ │ │ ├── DUK_USE_ROM_PTRCOMP_FIRST.yaml
│ │ │ ├── DUK_USE_ROM_STRINGS.yaml
│ │ │ ├── DUK_USE_SECTION_B.yaml
│ │ │ ├── DUK_USE_SELF_TESTS.yaml
│ │ │ ├── DUK_USE_SETJMP.yaml
│ │ │ ├── DUK_USE_SHEBANG_COMMENTS.yaml
│ │ │ ├── DUK_USE_SHUFFLE_TORTURE.yaml
│ │ │ ├── DUK_USE_SIGSETJMP.yaml
│ │ │ ├── DUK_USE_SOURCE_NONBMP.yaml
│ │ │ ├── DUK_USE_STRHASH16.yaml
│ │ │ ├── DUK_USE_STRHASH_DENSE.yaml
│ │ │ ├── DUK_USE_STRHASH_SKIP_SHIFT.yaml
│ │ │ ├── DUK_USE_STRICT_DECL.yaml
│ │ │ ├── DUK_USE_STRICT_UTF8_SOURCE.yaml
│ │ │ ├── DUK_USE_STRING_BUILTIN.yaml
│ │ │ ├── DUK_USE_STRLEN16.yaml
│ │ │ ├── DUK_USE_STRTAB_CHAIN.yaml
│ │ │ ├── DUK_USE_STRTAB_CHAIN_SIZE.yaml
│ │ │ ├── DUK_USE_STRTAB_GROW_LIMIT.yaml
│ │ │ ├── DUK_USE_STRTAB_MAXSIZE.yaml
│ │ │ ├── DUK_USE_STRTAB_MINSIZE.yaml
│ │ │ ├── DUK_USE_STRTAB_PROBE.yaml
│ │ │ ├── DUK_USE_STRTAB_PTRCOMP.yaml
│ │ │ ├── DUK_USE_STRTAB_RESIZE_CHECK_MASK.yaml
│ │ │ ├── DUK_USE_STRTAB_SHRINK_LIMIT.yaml
│ │ │ ├── DUK_USE_STRTAB_TORTURE.yaml
│ │ │ ├── DUK_USE_SYMBOL_BUILTIN.yaml
│ │ │ ├── DUK_USE_TAILCALL.yaml
│ │ │ ├── DUK_USE_TARGET_INFO.yaml
│ │ │ ├── DUK_USE_TRACEBACKS.yaml
│ │ │ ├── DUK_USE_TRACEBACK_DEPTH.yaml
│ │ │ ├── DUK_USE_UNALIGNED_ACCESSES_POSSIBLE.yaml
│ │ │ ├── DUK_USE_UNDERSCORE_SETJMP.yaml
│ │ │ ├── DUK_USE_UNION_INITIALIZERS.yaml
│ │ │ ├── DUK_USE_USER_DECLARE.yaml
│ │ │ ├── DUK_USE_USER_INITJS.yaml
│ │ │ ├── DUK_USE_VALSTACK_GROW_SHIFT.yaml
│ │ │ ├── DUK_USE_VALSTACK_LIMIT.yaml
│ │ │ ├── DUK_USE_VALSTACK_SHRINK_CHECK_SHIFT.yaml
│ │ │ ├── DUK_USE_VALSTACK_SHRINK_SLACK_SHIFT.yaml
│ │ │ ├── DUK_USE_VALSTACK_UNSAFE.yaml
│ │ │ ├── DUK_USE_VARIADIC_MACROS.yaml
│ │ │ ├── DUK_USE_VERBOSE_ERRORS.yaml
│ │ │ ├── DUK_USE_VERBOSE_EXECUTOR_ERRORS.yaml
│ │ │ ├── DUK_USE_VOLUNTARY_GC.yaml
│ │ │ └── DUK_USE_ZERO_BUFFER_DATA.yaml
│ │ ├── examples/
│ │ │ ├── compliance.yaml
│ │ │ ├── debugger_support.yaml
│ │ │ ├── disable_bufferobjects.yaml
│ │ │ ├── disable_es6.yaml
│ │ │ ├── enable_debug_print0.yaml
│ │ │ ├── enable_debug_print1.yaml
│ │ │ ├── enable_debug_print2.yaml
│ │ │ ├── enable_fastint.yaml
│ │ │ ├── low_memory.yaml
│ │ │ ├── low_memory_strip.yaml
│ │ │ ├── performance_sensitive.yaml
│ │ │ ├── rom_builtins.yaml
│ │ │ ├── security_sensitive.yaml
│ │ │ ├── shallow_c_stack.yaml
│ │ │ └── timing_sensitive.yaml
│ │ ├── feature-options/
│ │ │ ├── DUK_OPT_ASSERTIONS.yaml
│ │ │ ├── DUK_OPT_BUFFEROBJECT_SUPPORT.yaml
│ │ │ ├── DUK_OPT_BUFLEN16.yaml
│ │ │ ├── DUK_OPT_DATAPTR16.yaml
│ │ │ ├── DUK_OPT_DATAPTR_DEC16.yaml
│ │ │ ├── DUK_OPT_DATAPTR_ENC16.yaml
│ │ │ ├── DUK_OPT_DDDPRINT.yaml
│ │ │ ├── DUK_OPT_DDPRINT.yaml
│ │ │ ├── DUK_OPT_DEBUG.yaml
│ │ │ ├── DUK_OPT_DEBUGGER_DUMPHEAP.yaml
│ │ │ ├── DUK_OPT_DEBUGGER_FWD_LOGGING.yaml
│ │ │ ├── DUK_OPT_DEBUGGER_FWD_PRINTALERT.yaml
│ │ │ ├── DUK_OPT_DEBUGGER_SUPPORT.yaml
│ │ │ ├── DUK_OPT_DEBUGGER_TRANSPORT_TORTURE.yaml
│ │ │ ├── DUK_OPT_DEBUG_BUFSIZE.yaml
│ │ │ ├── DUK_OPT_DECLARE.yaml
│ │ │ ├── DUK_OPT_DEEP_C_STACK.yaml
│ │ │ ├── DUK_OPT_DLL_BUILD.yaml
│ │ │ ├── DUK_OPT_DPRINT.yaml
│ │ │ ├── DUK_OPT_DPRINT_COLORS.yaml
│ │ │ ├── DUK_OPT_DPRINT_RDTSC.yaml
│ │ │ ├── DUK_OPT_EXAMPLE.yaml
│ │ │ ├── DUK_OPT_EXEC_TIMEOUT_CHECK.yaml
│ │ │ ├── DUK_OPT_EXTERNAL_STRINGS.yaml
│ │ │ ├── DUK_OPT_EXTSTR_FREE.yaml
│ │ │ ├── DUK_OPT_EXTSTR_INTERN_CHECK.yaml
│ │ │ ├── DUK_OPT_FASTINT.yaml
│ │ │ ├── DUK_OPT_FORCE_ALIGN.yaml
│ │ │ ├── DUK_OPT_FORCE_BYTEORDER.yaml
│ │ │ ├── DUK_OPT_FUNCPTR16.yaml
│ │ │ ├── DUK_OPT_FUNCPTR_DEC16.yaml
│ │ │ ├── DUK_OPT_FUNCPTR_ENC16.yaml
│ │ │ ├── DUK_OPT_FUNC_NONSTD_CALLER_PROPERTY.yaml
│ │ │ ├── DUK_OPT_FUNC_NONSTD_SOURCE_PROPERTY.yaml
│ │ │ ├── DUK_OPT_GC_TORTURE.yaml
│ │ │ ├── DUK_OPT_HAVE_CUSTOM_H.yaml
│ │ │ ├── DUK_OPT_HEAPPTR16.yaml
│ │ │ ├── DUK_OPT_HEAPPTR_DEC16.yaml
│ │ │ ├── DUK_OPT_HEAPPTR_ENC16.yaml
│ │ │ ├── DUK_OPT_INTERRUPT_COUNTER.yaml
│ │ │ ├── DUK_OPT_JSON_STRINGIFY_FASTPATH.yaml
│ │ │ ├── DUK_OPT_LIGHTFUNC_BUILTINS.yaml
│ │ │ ├── DUK_OPT_NONSTD_FUNC_CALLER_PROPERTY.yaml
│ │ │ ├── DUK_OPT_NONSTD_FUNC_SOURCE_PROPERTY.yaml
│ │ │ ├── DUK_OPT_NO_ARRAY_SPLICE_NONSTD_DELCOUNT.yaml
│ │ │ ├── DUK_OPT_NO_AUGMENT_ERRORS.yaml
│ │ │ ├── DUK_OPT_NO_BROWSER_LIKE.yaml
│ │ │ ├── DUK_OPT_NO_BUFFEROBJECT_SUPPORT.yaml
│ │ │ ├── DUK_OPT_NO_BYTECODE_DUMP_SUPPORT.yaml
│ │ │ ├── DUK_OPT_NO_COMMONJS_MODULES.yaml
│ │ │ ├── DUK_OPT_NO_ES6_OBJECT_PROTO_PROPERTY.yaml
│ │ │ ├── DUK_OPT_NO_ES6_OBJECT_SETPROTOTYPEOF.yaml
│ │ │ ├── DUK_OPT_NO_ES6_PROXY.yaml
│ │ │ ├── DUK_OPT_NO_FILE_IO.yaml
│ │ │ ├── DUK_OPT_NO_FUNC_STMT.yaml
│ │ │ ├── DUK_OPT_NO_JC.yaml
│ │ │ ├── DUK_OPT_NO_JSONC.yaml
│ │ │ ├── DUK_OPT_NO_JSONX.yaml
│ │ │ ├── DUK_OPT_NO_JX.yaml
│ │ │ ├── DUK_OPT_NO_MARK_AND_SWEEP.yaml
│ │ │ ├── DUK_OPT_NO_MS_STRINGTABLE_RESIZE.yaml
│ │ │ ├── DUK_OPT_NO_NONSTD_ACCESSOR_KEY_ARGUMENT.yaml
│ │ │ ├── DUK_OPT_NO_NONSTD_ARRAY_CONCAT_TRAILER.yaml
│ │ │ ├── DUK_OPT_NO_NONSTD_ARRAY_MAP_TRAILER.yaml
│ │ │ ├── DUK_OPT_NO_NONSTD_ARRAY_SPLICE_DELCOUNT.yaml
│ │ │ ├── DUK_OPT_NO_NONSTD_FUNC_STMT.yaml
│ │ │ ├── DUK_OPT_NO_NONSTD_JSON_ESC_U2028_U2029.yaml
│ │ │ ├── DUK_OPT_NO_NONSTD_STRING_FROMCHARCODE_32BIT.yaml
│ │ │ ├── DUK_OPT_NO_OBJECT_ES6_PROTO_PROPERTY.yaml
│ │ │ ├── DUK_OPT_NO_OBJECT_ES6_SETPROTOTYPEOF.yaml
│ │ │ ├── DUK_OPT_NO_OCTAL_SUPPORT.yaml
│ │ │ ├── DUK_OPT_NO_PACKED_TVAL.yaml
│ │ │ ├── DUK_OPT_NO_PC2LINE.yaml
│ │ │ ├── DUK_OPT_NO_REFERENCE_COUNTING.yaml
│ │ │ ├── DUK_OPT_NO_REGEXP_SUPPORT.yaml
│ │ │ ├── DUK_OPT_NO_SECTION_B.yaml
│ │ │ ├── DUK_OPT_NO_SOURCE_NONBMP.yaml
│ │ │ ├── DUK_OPT_NO_STRICT_DECL.yaml
│ │ │ ├── DUK_OPT_NO_TRACEBACKS.yaml
│ │ │ ├── DUK_OPT_NO_VERBOSE_ERRORS.yaml
│ │ │ ├── DUK_OPT_NO_VOLUNTARY_GC.yaml
│ │ │ ├── DUK_OPT_NO_ZERO_BUFFER_DATA.yaml
│ │ │ ├── DUK_OPT_OBJSIZES16.yaml
│ │ │ ├── DUK_OPT_PANIC_HANDLER.yaml
│ │ │ ├── DUK_OPT_REFCOUNT16.yaml
│ │ │ ├── DUK_OPT_SEGFAULT_ON_PANIC.yaml
│ │ │ ├── DUK_OPT_SELF_TESTS.yaml
│ │ │ ├── DUK_OPT_SETJMP.yaml
│ │ │ ├── DUK_OPT_SHUFFLE_TORTURE.yaml
│ │ │ ├── DUK_OPT_SIGSETJMP.yaml
│ │ │ ├── DUK_OPT_STRHASH16.yaml
│ │ │ ├── DUK_OPT_STRICT_UTF8_SOURCE.yaml
│ │ │ ├── DUK_OPT_STRLEN16.yaml
│ │ │ ├── DUK_OPT_STRTAB_CHAIN.yaml
│ │ │ ├── DUK_OPT_STRTAB_CHAIN_SIZE.yaml
│ │ │ ├── DUK_OPT_TARGET_INFO.yaml
│ │ │ ├── DUK_OPT_TRACEBACK_DEPTH.yaml
│ │ │ ├── DUK_OPT_UNDERSCORE_SETJMP.yaml
│ │ │ └── DUK_OPT_USER_INITJS.yaml
│ │ ├── header-snippets/
│ │ │ ├── 64bitops.h.in
│ │ │ ├── alignment_fillin.h.in
│ │ │ ├── architecture_fillins.h.in
│ │ │ ├── byteorder_derived.h.in
│ │ │ ├── byteorder_fillin.h.in
│ │ │ ├── compiler_fillins.h.in
│ │ │ ├── cpp_exception_sanity.h.in
│ │ │ ├── date_provider.h.in
│ │ │ ├── gcc_clang_visibility.h.in
│ │ │ ├── inline_workaround.h.in
│ │ │ ├── msvc_visibility.h.in
│ │ │ ├── object_layout.h.in
│ │ │ ├── packed_tval_fillin.h.in
│ │ │ ├── platform_conditionalincludes.h.in
│ │ │ ├── platform_cppextras.h.in
│ │ │ ├── platform_fillins.h.in
│ │ │ ├── platform_sharedincludes.h.in
│ │ │ ├── reject_fast_math.h.in
│ │ │ ├── types1.h.in
│ │ │ ├── types2.h.in
│ │ │ ├── types_c99.h.in
│ │ │ └── types_legacy.h.in
│ │ ├── helper-snippets/
│ │ │ ├── DUK_F_AIX.h.in
│ │ │ ├── DUK_F_AMIGAOS.h.in
│ │ │ ├── DUK_F_ANDROID.h.in
│ │ │ ├── DUK_F_APPLE.h.in
│ │ │ ├── DUK_F_ARM.h.in
│ │ │ ├── DUK_F_BCC.h.in
│ │ │ ├── DUK_F_BSD.h.in
│ │ │ ├── DUK_F_C99.h.in
│ │ │ ├── DUK_F_CLANG.h.in
│ │ │ ├── DUK_F_CPP.h.in
│ │ │ ├── DUK_F_CPP11.h.in
│ │ │ ├── DUK_F_CYGWIN.h.in
│ │ │ ├── DUK_F_DURANGO.h.in
│ │ │ ├── DUK_F_EMSCRIPTEN.h.in
│ │ │ ├── DUK_F_FLASHPLAYER.h.in
│ │ │ ├── DUK_F_FREEBSD.h.in
│ │ │ ├── DUK_F_GCC.h.in
│ │ │ ├── DUK_F_HPUX.h.in
│ │ │ ├── DUK_F_LINUX.h.in
│ │ │ ├── DUK_F_M68K.h.in
│ │ │ ├── DUK_F_MINGW.h.in
│ │ │ ├── DUK_F_MINT.h.in
│ │ │ ├── DUK_F_MIPS.h.in
│ │ │ ├── DUK_F_MSVC.h.in
│ │ │ ├── DUK_F_NETBSD.h.in
│ │ │ ├── DUK_F_NO_STDINT_H.h.in
│ │ │ ├── DUK_F_OPENBSD.h.in
│ │ │ ├── DUK_F_ORBIS.h.in
│ │ │ ├── DUK_F_POSIX.h.in
│ │ │ ├── DUK_F_PPC.h.in
│ │ │ ├── DUK_F_QNX.h.in
│ │ │ ├── DUK_F_SPARC.h.in
│ │ │ ├── DUK_F_SUN.h.in
│ │ │ ├── DUK_F_SUPERH.h.in
│ │ │ ├── DUK_F_TINSPIRE.h.in
│ │ │ ├── DUK_F_TINYC.h.in
│ │ │ ├── DUK_F_TOS.h.in
│ │ │ ├── DUK_F_UCLIBC.h.in
│ │ │ ├── DUK_F_ULL_CONSTS.h.in
│ │ │ ├── DUK_F_UNIX.h.in
│ │ │ ├── DUK_F_VBCC.h.in
│ │ │ ├── DUK_F_WINDOWS.h.in
│ │ │ └── DUK_F_X86.h.in
│ │ ├── platforms/
│ │ │ ├── platform_aix.h.in
│ │ │ ├── platform_amigaos.h.in
│ │ │ ├── platform_android.h.in
│ │ │ ├── platform_apple.h.in
│ │ │ ├── platform_cygwin.h.in
│ │ │ ├── platform_durango.h.in
│ │ │ ├── platform_emscripten.h.in
│ │ │ ├── platform_flashplayer.h.in
│ │ │ ├── platform_generic.h.in
│ │ │ ├── platform_genericbsd.h.in
│ │ │ ├── platform_genericunix.h.in
│ │ │ ├── platform_hpux.h.in
│ │ │ ├── platform_linux.h.in
│ │ │ ├── platform_openbsd.h.in
│ │ │ ├── platform_orbis.h.in
│ │ │ ├── platform_posix.h.in
│ │ │ ├── platform_qnx.h.in
│ │ │ ├── platform_solaris.h.in
│ │ │ ├── platform_tinspire.h.in
│ │ │ ├── platform_tos.h.in
│ │ │ └── platform_windows.h.in
│ │ ├── platforms.yaml
│ │ └── tags.yaml
│ ├── debugger/
│ │ ├── Makefile
│ │ ├── README.rst
│ │ ├── duk_classnames.yaml
│ │ ├── duk_debug.js
│ │ ├── duk_debug_meta.json
│ │ ├── duk_debug_proxy.js
│ │ ├── duk_debugcommands.yaml
│ │ ├── duk_debugerrors.yaml
│ │ ├── duk_opcodes.yaml
│ │ ├── package.json
│ │ └── static/
│ │ ├── index.html
│ │ ├── style.css
│ │ └── webui.js
│ ├── duk_dist_meta.json
│ ├── examples/
│ │ ├── README.rst
│ │ ├── alloc-hybrid/
│ │ │ ├── README.rst
│ │ │ ├── duk_alloc_hybrid.c
│ │ │ └── duk_alloc_hybrid.h
│ │ ├── alloc-logging/
│ │ │ ├── README.rst
│ │ │ ├── duk_alloc_logging.c
│ │ │ ├── duk_alloc_logging.h
│ │ │ └── log2gnuplot.py
│ │ ├── alloc-torture/
│ │ │ ├── README.rst
│ │ │ ├── duk_alloc_torture.c
│ │ │ └── duk_alloc_torture.h
│ │ ├── cmdline/
│ │ │ ├── README.rst
│ │ │ ├── duk_cmdline.c
│ │ │ ├── duk_cmdline.h
│ │ │ └── duk_cmdline_lowmem.c
│ │ ├── codepage-conv/
│ │ │ ├── README.rst
│ │ │ ├── duk_codepage_conv.c
│ │ │ ├── duk_codepage_conv.h
│ │ │ └── test.c
│ │ ├── coffee/
│ │ │ ├── README.rst
│ │ │ ├── globals.coffee
│ │ │ ├── hello.coffee
│ │ │ └── mandel.coffee
│ │ ├── cpp-exceptions/
│ │ │ ├── README.rst
│ │ │ └── cpp_exceptions.cpp
│ │ ├── debug-trans-dvalue/
│ │ │ ├── Makefile
│ │ │ ├── README.rst
│ │ │ ├── duk_trans_dvalue.c
│ │ │ ├── duk_trans_dvalue.h
│ │ │ └── test.c
│ │ ├── debug-trans-socket/
│ │ │ ├── README.rst
│ │ │ ├── duk_trans_socket.h
│ │ │ ├── duk_trans_socket_unix.c
│ │ │ └── duk_trans_socket_windows.c
│ │ ├── dummy-date-provider/
│ │ │ ├── README.rst
│ │ │ └── dummy_date_provider.c
│ │ ├── eval/
│ │ │ ├── README.rst
│ │ │ └── eval.c
│ │ ├── eventloop/
│ │ │ ├── README.rst
│ │ │ ├── basic-test.js
│ │ │ ├── c_eventloop.c
│ │ │ ├── c_eventloop.h
│ │ │ ├── c_eventloop.js
│ │ │ ├── client-socket-test.js
│ │ │ ├── ecma_eventloop.js
│ │ │ ├── fileio.c
│ │ │ ├── main.c
│ │ │ ├── poll.c
│ │ │ ├── server-socket-test.js
│ │ │ ├── socket.c
│ │ │ └── timer-test.js
│ │ ├── guide/
│ │ │ ├── README.rst
│ │ │ ├── fib.js
│ │ │ ├── prime.js
│ │ │ ├── primecheck.c
│ │ │ ├── process.js
│ │ │ ├── processlines.c
│ │ │ └── uppercase.c
│ │ ├── hello/
│ │ │ ├── README.rst
│ │ │ └── hello.c
│ │ ├── jxpretty/
│ │ │ ├── README.rst
│ │ │ └── jxpretty.c
│ │ └── sandbox/
│ │ ├── README.rst
│ │ └── sandbox.c
│ ├── extras/
│ │ ├── README.rst
│ │ ├── alloc-pool/
│ │ │ ├── Makefile
│ │ │ ├── README.rst
│ │ │ ├── duk_alloc_pool.c
│ │ │ ├── duk_alloc_pool.h
│ │ │ ├── ptrcomp.yaml
│ │ │ ├── ptrcomp_fixup.h
│ │ │ └── test.c
│ │ ├── cbor/
│ │ │ ├── Makefile
│ │ │ ├── README.rst
│ │ │ ├── cbordecode.py
│ │ │ ├── duk_cbor.c
│ │ │ ├── duk_cbor.h
│ │ │ ├── jsoncbor.c
│ │ │ └── run_testvectors.js
│ │ ├── console/
│ │ │ ├── Makefile
│ │ │ ├── README.rst
│ │ │ ├── duk_console.c
│ │ │ ├── duk_console.h
│ │ │ └── test.c
│ │ ├── duk-v1-compat/
│ │ │ ├── Makefile
│ │ │ ├── README.rst
│ │ │ ├── duk_v1_compat.c
│ │ │ ├── duk_v1_compat.h
│ │ │ ├── test.c
│ │ │ ├── test_compile1.js
│ │ │ ├── test_compile2.js
│ │ │ ├── test_eval1.js
│ │ │ └── test_eval2.js
│ │ ├── logging/
│ │ │ ├── Makefile
│ │ │ ├── README.rst
│ │ │ ├── duk_logging.c
│ │ │ ├── duk_logging.h
│ │ │ └── test.c
│ │ ├── minimal-printf/
│ │ │ ├── Makefile
│ │ │ ├── README.rst
│ │ │ ├── duk_minimal_printf.c
│ │ │ ├── duk_minimal_printf.h
│ │ │ └── test.c
│ │ ├── module-duktape/
│ │ │ ├── Makefile
│ │ │ ├── README.rst
│ │ │ ├── duk_module_duktape.c
│ │ │ ├── duk_module_duktape.h
│ │ │ └── test.c
│ │ ├── module-node/
│ │ │ ├── Makefile
│ │ │ ├── README.rst
│ │ │ ├── duk_module_node.c
│ │ │ ├── duk_module_node.h
│ │ │ └── test.c
│ │ └── print-alert/
│ │ ├── Makefile
│ │ ├── README.rst
│ │ ├── duk_print_alert.c
│ │ ├── duk_print_alert.h
│ │ └── test.c
│ ├── licenses/
│ │ ├── commonjs.txt
│ │ ├── lua.txt
│ │ ├── murmurhash2.txt
│ │ ├── splitmix64.txt
│ │ └── xoroshiro128plus.txt
│ ├── mandel.js
│ ├── polyfills/
│ │ ├── console-minimal.js
│ │ ├── duktape-buffer.js
│ │ ├── duktape-error-setter-nonwritable.js
│ │ ├── duktape-error-setter-writable.js
│ │ ├── duktape-isfastint.js
│ │ ├── global.js
│ │ ├── object-assign.js
│ │ ├── object-prototype-definegetter.js
│ │ ├── object-prototype-definesetter.js
│ │ ├── performance-now.js
│ │ └── promise.js
│ ├── src/
│ │ ├── duk_config.h
│ │ ├── duk_source_meta.json
│ │ ├── duktape.c
│ │ └── duktape.h
│ ├── src-input/
│ │ ├── SpecialCasing-8bit.txt
│ │ ├── SpecialCasing.txt
│ │ ├── UnicodeData-8bit.txt
│ │ ├── UnicodeData.txt
│ │ ├── builtins.yaml
│ │ ├── duk_alloc_default.c
│ │ ├── duk_api_buffer.c
│ │ ├── duk_api_bytecode.c
│ │ ├── duk_api_call.c
│ │ ├── duk_api_codec.c
│ │ ├── duk_api_compile.c
│ │ ├── duk_api_debug.c
│ │ ├── duk_api_heap.c
│ │ ├── duk_api_inspect.c
│ │ ├── duk_api_internal.h
│ │ ├── duk_api_memory.c
│ │ ├── duk_api_object.c
│ │ ├── duk_api_random.c
│ │ ├── duk_api_stack.c
│ │ ├── duk_api_string.c
│ │ ├── duk_api_time.c
│ │ ├── duk_bi_array.c
│ │ ├── duk_bi_boolean.c
│ │ ├── duk_bi_buffer.c
│ │ ├── duk_bi_date.c
│ │ ├── duk_bi_date_unix.c
│ │ ├── duk_bi_date_windows.c
│ │ ├── duk_bi_duktape.c
│ │ ├── duk_bi_encoding.c
│ │ ├── duk_bi_error.c
│ │ ├── duk_bi_function.c
│ │ ├── duk_bi_global.c
│ │ ├── duk_bi_json.c
│ │ ├── duk_bi_math.c
│ │ ├── duk_bi_number.c
│ │ ├── duk_bi_object.c
│ │ ├── duk_bi_performance.c
│ │ ├── duk_bi_pointer.c
│ │ ├── duk_bi_promise.c
│ │ ├── duk_bi_protos.h
│ │ ├── duk_bi_proxy.c
│ │ ├── duk_bi_reflect.c
│ │ ├── duk_bi_regexp.c
│ │ ├── duk_bi_string.c
│ │ ├── duk_bi_symbol.c
│ │ ├── duk_bi_thread.c
│ │ ├── duk_bi_thrower.c
│ │ ├── duk_dblunion.h
│ │ ├── duk_debug.h
│ │ ├── duk_debug_fixedbuffer.c
│ │ ├── duk_debug_macros.c
│ │ ├── duk_debug_vsnprintf.c
│ │ ├── duk_debugger.c
│ │ ├── duk_debugger.h
│ │ ├── duk_error.h
│ │ ├── duk_error_augment.c
│ │ ├── duk_error_longjmp.c
│ │ ├── duk_error_macros.c
│ │ ├── duk_error_misc.c
│ │ ├── duk_error_throw.c
│ │ ├── duk_exception.h
│ │ ├── duk_forwdecl.h
│ │ ├── duk_harray.h
│ │ ├── duk_hboundfunc.h
│ │ ├── duk_hbuffer.h
│ │ ├── duk_hbuffer_alloc.c
│ │ ├── duk_hbuffer_assert.c
│ │ ├── duk_hbuffer_ops.c
│ │ ├── duk_hbufobj.h
│ │ ├── duk_hbufobj_misc.c
│ │ ├── duk_hcompfunc.h
│ │ ├── duk_heap.h
│ │ ├── duk_heap_alloc.c
│ │ ├── duk_heap_finalize.c
│ │ ├── duk_heap_hashstring.c
│ │ ├── duk_heap_markandsweep.c
│ │ ├── duk_heap_memory.c
│ │ ├── duk_heap_misc.c
│ │ ├── duk_heap_refcount.c
│ │ ├── duk_heap_stringcache.c
│ │ ├── duk_heap_stringtable.c
│ │ ├── duk_heaphdr.h
│ │ ├── duk_heaphdr_assert.c
│ │ ├── duk_henv.h
│ │ ├── duk_hnatfunc.h
│ │ ├── duk_hobject.h
│ │ ├── duk_hobject_alloc.c
│ │ ├── duk_hobject_assert.c
│ │ ├── duk_hobject_class.c
│ │ ├── duk_hobject_enum.c
│ │ ├── duk_hobject_misc.c
│ │ ├── duk_hobject_pc2line.c
│ │ ├── duk_hobject_props.c
│ │ ├── duk_hproxy.h
│ │ ├── duk_hstring.h
│ │ ├── duk_hstring_assert.c
│ │ ├── duk_hstring_misc.c
│ │ ├── duk_hthread.h
│ │ ├── duk_hthread_alloc.c
│ │ ├── duk_hthread_builtins.c
│ │ ├── duk_hthread_misc.c
│ │ ├── duk_hthread_stacks.c
│ │ ├── duk_internal.h
│ │ ├── duk_jmpbuf.h
│ │ ├── duk_js.h
│ │ ├── duk_js_arith.c
│ │ ├── duk_js_bytecode.h
│ │ ├── duk_js_call.c
│ │ ├── duk_js_compiler.c
│ │ ├── duk_js_compiler.h
│ │ ├── duk_js_executor.c
│ │ ├── duk_js_ops.c
│ │ ├── duk_js_var.c
│ │ ├── duk_json.h
│ │ ├── duk_lexer.c
│ │ ├── duk_lexer.h
│ │ ├── duk_numconv.c
│ │ ├── duk_numconv.h
│ │ ├── duk_refcount.h
│ │ ├── duk_regexp.h
│ │ ├── duk_regexp_compiler.c
│ │ ├── duk_regexp_executor.c
│ │ ├── duk_replacements.c
│ │ ├── duk_replacements.h
│ │ ├── duk_selftest.c
│ │ ├── duk_selftest.h
│ │ ├── duk_strings.h
│ │ ├── duk_tval.c
│ │ ├── duk_tval.h
│ │ ├── duk_unicode.h
│ │ ├── duk_unicode_support.c
│ │ ├── duk_unicode_tables.c
│ │ ├── duk_util.h
│ │ ├── duk_util_bitdecoder.c
│ │ ├── duk_util_bitencoder.c
│ │ ├── duk_util_bufwriter.c
│ │ ├── duk_util_cast.c
│ │ ├── duk_util_double.c
│ │ ├── duk_util_hashbytes.c
│ │ ├── duk_util_memory.c
│ │ ├── duk_util_misc.c
│ │ ├── duk_util_tinyrandom.c
│ │ ├── duktape.h.in
│ │ └── strings.yaml
│ ├── src-noline/
│ │ ├── duk_config.h
│ │ ├── duk_source_meta.json
│ │ ├── duktape.c
│ │ └── duktape.h
│ ├── src-separate/
│ │ ├── duk_alloc_default.c
│ │ ├── duk_api_buffer.c
│ │ ├── duk_api_bytecode.c
│ │ ├── duk_api_call.c
│ │ ├── duk_api_codec.c
│ │ ├── duk_api_compile.c
│ │ ├── duk_api_debug.c
│ │ ├── duk_api_heap.c
│ │ ├── duk_api_inspect.c
│ │ ├── duk_api_internal.h
│ │ ├── duk_api_memory.c
│ │ ├── duk_api_object.c
│ │ ├── duk_api_random.c
│ │ ├── duk_api_stack.c
│ │ ├── duk_api_string.c
│ │ ├── duk_api_time.c
│ │ ├── duk_bi_array.c
│ │ ├── duk_bi_boolean.c
│ │ ├── duk_bi_buffer.c
│ │ ├── duk_bi_date.c
│ │ ├── duk_bi_date_unix.c
│ │ ├── duk_bi_date_windows.c
│ │ ├── duk_bi_duktape.c
│ │ ├── duk_bi_encoding.c
│ │ ├── duk_bi_error.c
│ │ ├── duk_bi_function.c
│ │ ├── duk_bi_global.c
│ │ ├── duk_bi_json.c
│ │ ├── duk_bi_math.c
│ │ ├── duk_bi_number.c
│ │ ├── duk_bi_object.c
│ │ ├── duk_bi_performance.c
│ │ ├── duk_bi_pointer.c
│ │ ├── duk_bi_promise.c
│ │ ├── duk_bi_protos.h
│ │ ├── duk_bi_proxy.c
│ │ ├── duk_bi_reflect.c
│ │ ├── duk_bi_regexp.c
│ │ ├── duk_bi_string.c
│ │ ├── duk_bi_symbol.c
│ │ ├── duk_bi_thread.c
│ │ ├── duk_bi_thrower.c
│ │ ├── duk_builtins.c
│ │ ├── duk_builtins.h
│ │ ├── duk_config.h
│ │ ├── duk_dblunion.h
│ │ ├── duk_debug.h
│ │ ├── duk_debug_fixedbuffer.c
│ │ ├── duk_debug_macros.c
│ │ ├── duk_debug_vsnprintf.c
│ │ ├── duk_debugger.c
│ │ ├── duk_debugger.h
│ │ ├── duk_error.h
│ │ ├── duk_error_augment.c
│ │ ├── duk_error_longjmp.c
│ │ ├── duk_error_macros.c
│ │ ├── duk_error_misc.c
│ │ ├── duk_error_throw.c
│ │ ├── duk_exception.h
│ │ ├── duk_forwdecl.h
│ │ ├── duk_harray.h
│ │ ├── duk_hboundfunc.h
│ │ ├── duk_hbuffer.h
│ │ ├── duk_hbuffer_alloc.c
│ │ ├── duk_hbuffer_assert.c
│ │ ├── duk_hbuffer_ops.c
│ │ ├── duk_hbufobj.h
│ │ ├── duk_hbufobj_misc.c
│ │ ├── duk_hcompfunc.h
│ │ ├── duk_heap.h
│ │ ├── duk_heap_alloc.c
│ │ ├── duk_heap_finalize.c
│ │ ├── duk_heap_hashstring.c
│ │ ├── duk_heap_markandsweep.c
│ │ ├── duk_heap_memory.c
│ │ ├── duk_heap_misc.c
│ │ ├── duk_heap_refcount.c
│ │ ├── duk_heap_stringcache.c
│ │ ├── duk_heap_stringtable.c
│ │ ├── duk_heaphdr.h
│ │ ├── duk_heaphdr_assert.c
│ │ ├── duk_henv.h
│ │ ├── duk_hnatfunc.h
│ │ ├── duk_hobject.h
│ │ ├── duk_hobject_alloc.c
│ │ ├── duk_hobject_assert.c
│ │ ├── duk_hobject_class.c
│ │ ├── duk_hobject_enum.c
│ │ ├── duk_hobject_misc.c
│ │ ├── duk_hobject_pc2line.c
│ │ ├── duk_hobject_props.c
│ │ ├── duk_hproxy.h
│ │ ├── duk_hstring.h
│ │ ├── duk_hstring_assert.c
│ │ ├── duk_hstring_misc.c
│ │ ├── duk_hthread.h
│ │ ├── duk_hthread_alloc.c
│ │ ├── duk_hthread_builtins.c
│ │ ├── duk_hthread_misc.c
│ │ ├── duk_hthread_stacks.c
│ │ ├── duk_internal.h
│ │ ├── duk_jmpbuf.h
│ │ ├── duk_js.h
│ │ ├── duk_js_arith.c
│ │ ├── duk_js_bytecode.h
│ │ ├── duk_js_call.c
│ │ ├── duk_js_compiler.c
│ │ ├── duk_js_compiler.h
│ │ ├── duk_js_executor.c
│ │ ├── duk_js_ops.c
│ │ ├── duk_js_var.c
│ │ ├── duk_json.h
│ │ ├── duk_lexer.c
│ │ ├── duk_lexer.h
│ │ ├── duk_numconv.c
│ │ ├── duk_numconv.h
│ │ ├── duk_refcount.h
│ │ ├── duk_regexp.h
│ │ ├── duk_regexp_compiler.c
│ │ ├── duk_regexp_executor.c
│ │ ├── duk_replacements.c
│ │ ├── duk_replacements.h
│ │ ├── duk_selftest.c
│ │ ├── duk_selftest.h
│ │ ├── duk_source_meta.json
│ │ ├── duk_strings.h
│ │ ├── duk_tval.c
│ │ ├── duk_tval.h
│ │ ├── duk_unicode.h
│ │ ├── duk_unicode_support.c
│ │ ├── duk_unicode_tables.c
│ │ ├── duk_util.h
│ │ ├── duk_util_bitdecoder.c
│ │ ├── duk_util_bitencoder.c
│ │ ├── duk_util_bufwriter.c
│ │ ├── duk_util_cast.c
│ │ ├── duk_util_double.c
│ │ ├── duk_util_hashbytes.c
│ │ ├── duk_util_memory.c
│ │ ├── duk_util_misc.c
│ │ ├── duk_util_tinyrandom.c
│ │ └── duktape.h
│ └── tools/
│ ├── combine_src.py
│ ├── configure.py
│ ├── create_spdx_license.py
│ ├── duk_meta_to_strarray.py
│ ├── dukutil.py
│ ├── dump_bytecode.py
│ ├── extract_caseconv.py
│ ├── extract_chars.py
│ ├── extract_unique_options.py
│ ├── genbuiltins.py
│ ├── genconfig.py
│ ├── json2yaml.py
│ ├── merge_debug_meta.py
│ ├── prepare_unicode_data.py
│ ├── resolve_combined_lineno.py
│ ├── scan_strings.py
│ ├── scan_used_stridx_bidx.py
│ └── yaml2json.py
├── react_juce.cpp
└── react_juce.h
Showing preview only (909K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (8859 symbols across 385 files)
FILE: examples/GainPlugin/PluginProcessor.cpp
function createParameterLayout (line 16) | AudioProcessorValueTreeState::ParameterLayout createParameterLayout()
function String (line 56) | const String GainPluginAudioProcessor::getName() const
function String (line 105) | const String GainPluginAudioProcessor::getProgramName (int /* index */) ...
function AudioProcessorEditor (line 180) | AudioProcessorEditor* GainPluginAudioProcessor::createEditor()
FILE: examples/GainPlugin/jsui/src/AnimatedFlexBox.js
class AnimatedFlexBoxExample (line 4) | class AnimatedFlexBoxExample extends Component {
method render (line 5) | render() {
FILE: examples/GainPlugin/jsui/src/App.js
function animatedDraw (line 8) | function animatedDraw(ctx) {
function imageLoaded (line 19) | function imageLoaded() {
function imageError (line 23) | function imageError(error) {
class App (line 28) | class App extends Component {
method constructor (line 29) | constructor(props) {
method _onMuteToggled (line 38) | _onMuteToggled(toggled) {
method render (line 44) | render() {
FILE: examples/GainPlugin/jsui/src/Meter.js
class Meter (line 4) | class Meter extends Component {
method constructor (line 5) | constructor(props) {
method componentDidMount (line 19) | componentDidMount() {
method componentWillUnmount (line 23) | componentWillUnmount() {
method _onMeterValues (line 27) | _onMeterValues(lcPeak, rcPeak) {
method _onMeasure (line 34) | _onMeasure(e) {
method _renderVectorGraphics (line 41) | _renderVectorGraphics(lcPeak, rcPeak, width, height) {
method render (line 73) | render() {
FILE: examples/GainPlugin/jsui/src/ParameterToggleButton.js
class ParameterToggleButton (line 10) | class ParameterToggleButton extends Component {
method constructor (line 11) | constructor(props) {
method componentDidMount (line 47) | componentDidMount() {
method componentWillUnmount (line 54) | componentWillUnmount() {
method _handleClick (line 61) | _handleClick(e) {
method _handleEnter (line 80) | _handleEnter(e) {
method _handleLeave (line 87) | _handleLeave(e) {
method _onParameterValueChange (line 94) | _onParameterValueChange(paramId) {
method render (line 117) | render() {
FILE: examples/GainPlugin/jsui/src/ParameterValueStore.js
class ParameterValueStore (line 8) | class ParameterValueStore extends EventEmitter {
method constructor (line 9) | constructor() {
method getParameterState (line 25) | getParameterState(paramId) {
method _onParameterValueChange (line 33) | _onParameterValueChange(
FILE: packages/react-juce/src/components/Button.tsx
type ButtonProps (line 9) | interface ButtonProps {
type ButtonState (line 17) | type ButtonState = {
class Button (line 51) | class Button extends Component<ButtonProps, ButtonState> {
method constructor (line 54) | constructor(props: ButtonProps) {
FILE: packages/react-juce/src/components/Canvas.ts
class CanvasRenderingContext (line 5) | class CanvasRenderingContext {
method constructor (line 8) | constructor() {
method reset (line 12) | reset() {
method getDrawCommands (line 16) | getDrawCommands(): any[] {
method fillStyle (line 24) | set fillStyle(value: string) {
method strokeStyle (line 29) | set strokeStyle(value: string) {
method lineWidth (line 34) | set lineWidth(value: number) {
method font (line 38) | set font(value: string) {
method textAlign (line 42) | set textAlign(value: string) {
method fillRect (line 48) | fillRect(x: number, y: number, width: number, height: number): void {
method strokeRect (line 52) | strokeRect(x: number, y: number, width: number, height: number): void {
method strokeRoundedRect (line 56) | strokeRoundedRect(
method fillRoundedRect (line 73) | fillRoundedRect(
method clearRect (line 90) | clearRect(x: number, y: number, width: number, height: number): void {
method beginPath (line 103) | beginPath(): void {
method lineTo (line 107) | lineTo(x: number, y: number): void {
method moveTo (line 111) | moveTo(x: number, y: number): void {
method arc (line 115) | arc(
method quadraticCurveTo (line 126) | quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void {
method closePath (line 130) | closePath(): void {
method stroke (line 134) | stroke(): void {
method fill (line 138) | fill(): void {
method rotate (line 144) | rotate(angle: number): void {
method translate (line 148) | translate(x: number, y: number): void {
method setTransform (line 152) | setTransform(
method resetTransform (line 163) | resetTransform(): void {
method drawImage (line 173) | drawImage(image: string, dx: number, dy: number): void {
method strokeText (line 179) | strokeText(text: string, x: number, y: number, maxWidth?: number): void {
method fillText (line 185) | fillText(text: string, x: number, y: number, maxWidth?: number): void {
type CanvasProps (line 194) | interface CanvasProps {
type CanvasState (line 200) | interface CanvasState {
class Canvas (line 205) | class Canvas extends Component<CanvasProps, CanvasState> {
method constructor (line 208) | constructor(props: CanvasProps) {
method _onMeasure (line 221) | _onMeasure(e: any) {
method _onDraw (line 232) | _onDraw(): any[] {
method render (line 243) | render() {
FILE: packages/react-juce/src/components/Image.ts
function Image (line 3) | function Image(props: any) {
FILE: packages/react-juce/src/components/ListView.tsx
type ListViewState (line 8) | type ListViewState = {
type VirtualPositions (line 14) | type VirtualPositions = {
type ScrollParams (line 33) | interface ScrollParams {
type ListViewProps (line 50) | interface ListViewProps {
class ListView (line 93) | class ListView extends Component<
method constructor (line 99) | constructor(props: PropsWithChildren<ListViewProps | any>) {
method _onMeasure (line 117) | _onMeasure(e: any): void {
method _calculateVirtualPositions (line 124) | _calculateVirtualPositions(): VirtualPositions {
method _setScrollTopPosition (line 150) | _setScrollTopPosition(e: ScrollEvent): void {
method scrollToIndex (line 160) | scrollToIndex(scrollParams: ScrollParams) {
method render (line 186) | render() {
FILE: packages/react-juce/src/components/ScrollView.ts
function ScrollViewContentView (line 5) | function ScrollViewContentView(props: any) {
function parseScrollbarColorProp (line 9) | function parseScrollbarColorProp(scrollbarColorProp: string) {
function parseScrollbarWidthProp (line 23) | function parseScrollbarWidthProp(scrollBarWidthProp: string | number) {
function parseOverflowProp (line 59) | function parseOverflowProp(
type ScrollEvent (line 72) | interface ScrollEvent {
type ScrollViewProps (line 77) | interface ScrollViewProps {
function ScrollView (line 88) | function ScrollView(props: PropsWithChildren<ScrollViewProps | any>) {
FILE: packages/react-juce/src/components/Slider.tsx
function _drawArc (line 99) | function _drawArc(
type SliderProps (line 176) | interface SliderProps {
type SliderState (line 195) | type SliderState = {
class Slider (line 227) | class Slider extends Component<
method constructor (line 249) | constructor(props: PropsWithChildren<SliderProps | any>) {
method _onMeasure (line 264) | _onMeasure(e: any) {
method _onMouseDown (line 271) | _onMouseDown(e: SyntheticMouseEvent) {
method _onMouseDrag (line 284) | _onMouseDrag(e: SyntheticMouseEvent) {
method _onDraw (line 315) | _onDraw(ctx: CanvasRenderingContext) {
method render (line 325) | render() {
FILE: packages/react-juce/src/components/Text.ts
function Text (line 3) | function Text(props: any) {
FILE: packages/react-juce/src/components/TextInput.tsx
type InputEvent (line 3) | interface InputEvent {
type ChangeEvent (line 7) | interface ChangeEvent {
type TextInputProps (line 11) | interface TextInputProps {
function TextInput (line 35) | function TextInput(props: PropsWithChildren<TextInputProps | any>) {
FILE: packages/react-juce/src/components/View.ts
function View (line 6) | function View(props: any) {
FILE: packages/react-juce/src/index.tsx
method getRootContainer (line 25) | getRootContainer() {
method render (line 29) | render(
method enableMethodTrace (line 57) | enableMethodTrace() {
FILE: packages/react-juce/src/lib/Backend.ts
type Instance (line 12) | type Instance = ViewInstance | RawTextViewInstance;
class ViewInstance (line 25) | class ViewInstance {
method constructor (line 32) | constructor(id: string, type: string, props?: any, parent?: ViewInstan...
method getViewId (line 49) | getViewId(): string {
method getType (line 53) | getType(): string {
method getChildIndex (line 57) | getChildIndex(childInstance: Instance): number {
method appendChild (line 67) | appendChild(childInstance: Instance): any {
method insertChild (line 76) | insertChild(childInstance: Instance, index: number): any {
method removeChild (line 85) | removeChild(childInstance: Instance): any {
method setProperty (line 98) | setProperty(propKey: string, value: any): any {
method contains (line 155) | contains(node: Instance): boolean {
class RawTextViewInstance (line 172) | class RawTextViewInstance {
method constructor (line 177) | constructor(id: string, text: string, parent: ViewInstance) {
method getViewId (line 183) | getViewId(): string {
method getText (line 187) | getText() {
method setTextValue (line 191) | setTextValue(text: string): any {
function __getRootContainer (line 198) | function __getRootContainer(): ViewInstance {
function __hasFunctionProp (line 208) | function __hasFunctionProp(view: ViewInstance, prop: string) {
function __callEventHandlerIfPresent (line 214) | function __callEventHandlerIfPresent(
function __bubbleEvent (line 224) | function __bubbleEvent(view: Instance, eventType: string, event: any): v...
method getRootContainer (line 284) | getRootContainer(): ViewInstance {
method createViewInstance (line 287) | createViewInstance(
method createTextViewInstance (line 299) | createTextViewInstance(text: string, parentInstance: ViewInstance) {
method resetAfterCommit (line 307) | resetAfterCommit() {
FILE: packages/react-juce/src/lib/MacroProperties/Colors.ts
constant COLOR_PROPERTIES (line 4) | const COLOR_PROPERTIES = ["border-color", "background-color", "color"];
FILE: packages/react-juce/src/lib/MacroProperties/types.d.ts
type TMacroCall (line 1) | type TMacroCall = {
type TPropertyAssignment (line 6) | type TPropertyAssignment = [string, string | number];
FILE: packages/react-juce/src/lib/MethodTracer.ts
method get (line 9) | get(target, propKey, receiver) {
FILE: packages/react-juce/src/lib/Renderer.ts
type HostContext (line 7) | type HostContext = {
method getRootHostContext (line 27) | getRootHostContext(rootContainerInstance: ViewInstance): HostContext {
method getChildHostContext (line 35) | getChildHostContext(
method shouldSetTextContent (line 63) | shouldSetTextContent(elementType: string, props: any) {
method createInstance (line 68) | createInstance(
method createTextInstance (line 88) | createTextInstance(
method appendInitialChild (line 103) | appendInitialChild(parentInstance: ViewInstance, child: ViewInstance): v...
method finalizeInitialChildren (line 111) | finalizeInitialChildren(
method prepareUpdate (line 128) | prepareUpdate(
method commitUpdate (line 156) | commitUpdate(
method commitTextUpdate (line 172) | commitTextUpdate(
method commitMount (line 184) | commitMount(
method appendChild (line 194) | appendChild(parentInstance: ViewInstance, child: ViewInstance): void {
method appendChildToContainer (line 201) | appendChildToContainer(
method insertBefore (line 211) | insertBefore(
method removeChild (line 227) | removeChild(parentInstance: ViewInstance, child: ViewInstance): void {
method removeChildFromContainer (line 232) | removeChildFromContainer(
FILE: packages/react-juce/src/lib/SyntheticEvents.ts
class SyntheticEvent (line 3) | class SyntheticEvent {
method constructor (line 9) | constructor(props: any) {
method stopPropagation (line 19) | stopPropagation(): void {
method preventDefault (line 23) | preventDefault(): void {
class SyntheticMouseEvent (line 28) | class SyntheticMouseEvent extends SyntheticEvent {
method constructor (line 37) | constructor(props: any) {
class SyntheticKeyboardEvent (line 48) | class SyntheticKeyboardEvent extends SyntheticEvent {
method constructor (line 52) | constructor(props: any) {
method isMouseEventHandler (line 61) | isMouseEventHandler(key: string): boolean {
method isKeyboardEventHandler (line 74) | isKeyboardEventHandler(key: string): boolean {
FILE: packages/react-juce/template/src/App.js
class App (line 4) | class App extends Component {
method render (line 5) | render() {
FILE: react_juce/core/AppHarness.cpp
type reactjuce (line 13) | namespace reactjuce
FILE: react_juce/core/AppHarness.h
function namespace (line 17) | namespace reactjuce
FILE: react_juce/core/CanvasView.cpp
type reactjuce (line 12) | namespace reactjuce
function setFillStyle (line 16) | void setFillStyle(CanvasView::CanvasContext &ctx,
function setStrokeStyle (line 30) | void setStrokeStyle(CanvasView::CanvasContext &ctx,
function setLineWidth (line 44) | void setLineWidth(CanvasView::CanvasContext &ctx,
function setFont (line 88) | void setFont(CanvasView::CanvasContext &ctx,
function setTextAlign (line 130) | void setTextAlign(CanvasView::CanvasContext &ctx,
function fillRect (line 170) | void fillRect(CanvasView::CanvasContext &ctx,
function strokeRect (line 185) | void strokeRect(CanvasView::CanvasContext &ctx,
function strokeRoundedRect (line 200) | void strokeRoundedRect(CanvasView::CanvasContext &ctx,
function fillRoundedRect (line 222) | void fillRoundedRect(CanvasView::CanvasContext &ctx,
function clearRect (line 238) | void clearRect(CanvasView::CanvasContext &ctx,
function beginPath (line 257) | void beginPath(CanvasView::CanvasContext &ctx,
function lineTo (line 269) | void lineTo(CanvasView::CanvasContext &ctx,
function moveTo (line 282) | void moveTo(CanvasView::CanvasContext &ctx,
function arc (line 295) | void arc(CanvasView::CanvasContext &ctx,
function quadraticCurveTo (line 314) | void quadraticCurveTo(CanvasView::CanvasContext &ctx,
function closePath (line 329) | void closePath(CanvasView::CanvasContext &ctx,
function stroke (line 340) | void stroke(CanvasView::CanvasContext &ctx,
function fill (line 351) | void fill(CanvasView::CanvasContext &ctx,
function rotate (line 362) | void rotate(CanvasView::CanvasContext &ctx,
function translate (line 375) | void translate(CanvasView::CanvasContext &ctx,
function setTransform (line 389) | void setTransform(CanvasView::CanvasContext &ctx,
function resetTransform (line 407) | void resetTransform(CanvasView::CanvasContext &ctx,
function drawImage (line 423) | void drawImage(CanvasView::CanvasContext &ctx,
function strokeText (line 462) | void strokeText(CanvasView::CanvasContext &ctx,
function fillText (line 494) | void fillText(CanvasView::CanvasContext &ctx,
FILE: react_juce/core/CanvasView.h
function namespace (line 15) | namespace reactjuce
FILE: react_juce/core/EcmascriptEngine.cpp
type reactjuce (line 19) | namespace reactjuce
FILE: react_juce/core/EcmascriptEngine.h
type Error (line 36) | struct Error
type FatalError (line 56) | struct FatalError
type Pimpl (line 165) | struct Pimpl
FILE: react_juce/core/EcmascriptEngine_Duktape.cpp
type reactjuce (line 78) | namespace reactjuce
type detail (line 81) | namespace detail
function fatalErrorHandler (line 84) | static void fatalErrorHandler (void* udata, const char* msg)
function getContextDump (line 90) | static juce::String getContextDump(duk_context* ctx)
function safeCall (line 98) | static void safeCall(duk_context* ctx, const int numArgs)
function safeEvalString (line 109) | static void safeEvalString(duk_context* ctx, const juce::String& s)
function safeCompileFile (line 120) | static void safeCompileFile(duk_context* ctx, const juce::File& file)
type EcmascriptEngine::Pimpl (line 140) | struct EcmascriptEngine::Pimpl : private juce::Timer
method Pimpl (line 142) | Pimpl() { reset(); }
method evaluateInline (line 151) | juce::var evaluateInline (const juce::String& code)
method evaluate (line 169) | juce::var evaluate (const juce::File& code)
method evaluateBytecode (line 190) | juce::var evaluateBytecode(const juce::File &code)
method registerNativeProperty (line 196) | void registerNativeProperty (const juce::String& name, const juce::v...
method registerNativeProperty (line 206) | void registerNativeProperty (const juce::String& target, const juce:...
method invoke (line 224) | juce::var invoke (const juce::String& name, const std::vector<juce::...
type TimeoutFunctionManager (line 256) | struct TimeoutFunctionManager : private juce::MultiTimer
method clearTimeout (line 263) | juce::var clearTimeout(const int id)
method newTimeout (line 272) | int newTimeout(const juce::var::NativeFunction f, const int timeou...
method timerCallback (line 280) | void timerCallback(int id) override
type TimeoutFunction (line 296) | struct TimeoutFunction
method TimeoutFunction (line 298) | TimeoutFunction(const juce::var::NativeFunction _f, const std::v...
method registerNativeTimerFunction (line 312) | void registerNativeTimerFunction(const char* name, MethodType method)
method registerTimerGlobals (line 332) | void registerTimerGlobals()
method reset (line 344) | void reset()
method debuggerAttach (line 373) | void debuggerAttach()
method debuggerDetach (line 400) | void debuggerDetach()
method timerCallback (line 407) | void timerCallback() override
type LambdaHelper (line 414) | struct LambdaHelper {
method LambdaHelper (line 415) | LambdaHelper(juce::var::NativeFunction fn, uint32_t _id)
method duk_ret_t (line 418) | static duk_ret_t invokeFromDukContext(duk_context* ctx)
method duk_ret_t (line 468) | static duk_ret_t invokeFromDukContextLightFunc(duk_context* ctx)
method duk_ret_t (line 507) | static duk_ret_t callbackFinalizer (duk_context* ctx)
method removeLambdaHelper (line 537) | void removeLambdaHelper (LambdaHelper* helper)
method pushVarToDukStack (line 543) | void pushVarToDukStack (std::shared_ptr<duk_context> ctx, const juce...
method readVarFromDukStack (line 638) | juce::var readVarFromDukStack (std::shared_ptr<duk_context> ctx, duk...
FILE: react_juce/core/EcmascriptEngine_Hermes.cpp
type reactjuce (line 26) | namespace reactjuce
class JSIMemoryBuffer (line 31) | class JSIMemoryBuffer : public jsi::Buffer
method JSIMemoryBuffer (line 34) | explicit JSIMemoryBuffer(std::unique_ptr<juce::MemoryBlock> mem)
method size (line 38) | size_t size() const override
type CopyableJSIMethodWrapper (line 53) | struct CopyableJSIMethodWrapper
method CopyableJSIMethodWrapper (line 55) | explicit CopyableJSIMethodWrapper(jsi::Function f)
function jsiArrayToVarArray (line 66) | juce::var jsiArrayToVarArray(const jsi::Array &v, jsi::Runtime &runtime)
function jsiMethodToVarMethod (line 79) | juce::var::NativeFunction jsiMethodToVarMethod(jsi::Function v, jsi::R...
function jsiObjectToVarObject (line 96) | juce::var jsiObjectToVarObject(const jsi::Object &v, jsi::Runtime &run...
function jsiValueToVar (line 111) | juce::var jsiValueToVar(const jsi::Value &v, jsi::Runtime &runtime)
function varObjectToJSIObject (line 156) | jsi::Object varObjectToJSIObject(juce::DynamicObject *v, jsi::Runtime ...
function varMethodToJSIMethod (line 169) | jsi::Function varMethodToJSIMethod(juce::var::NativeFunction &v, jsi::...
function varArrayToJSIArray (line 189) | jsi::Array varArrayToJSIArray(const juce::Array<juce::var> *v, jsi::Ru...
function varToJSIValue (line 204) | jsi::Value varToJSIValue(const juce::var &v, jsi::Runtime &runtime)
type EcmascriptEngine::Pimpl (line 254) | struct EcmascriptEngine::Pimpl
type TimeoutFunctionManager (line 257) | struct TimeoutFunctionManager : private juce::MultiTimer
method TimeoutFunctionManager (line 259) | explicit TimeoutFunctionManager(jsi::Runtime &rt)
method clear (line 268) | void clear()
method clearTimeout (line 278) | jsi::Value clearTimeout(const int id)
method newTimeout (line 288) | jsi::Value newTimeout(jsi::Function f, const int timeoutMillis, st...
method timerCallback (line 297) | void timerCallback(int id) override
type TimeoutFunction (line 315) | struct TimeoutFunction
method TimeoutFunction (line 317) | TimeoutFunction(jsi::Function _f, std::vector<jsi::Value> _args,...
method Pimpl (line 333) | Pimpl()
method evaluateInline (line 341) | juce::var evaluateInline(const juce::String &code)
method evaluate (line 357) | juce::var evaluate(const juce::File &code)
method evaluateBytecode (line 373) | juce::var evaluateBytecode(const juce::File &code)
method registerNativeProperty (line 393) | void registerNativeProperty(const juce::String &name, const juce::va...
method registerNativeProperty (line 405) | void registerNativeProperty(const juce::String &target, const juce::...
method invoke (line 420) | juce::var invoke(const juce::String &name, const std::vector<juce::v...
method createSetTimerFunction (line 459) | jsi::Function createSetTimerFunction(bool isInterval)
method createClearTimerFunction (line 486) | jsi::Function createClearTimerFunction()
method reset (line 505) | void reset()
method debuggerAttach (line 546) | void debuggerAttach()
method debuggerDetach (line 552) | void debuggerDetach()
FILE: react_juce/core/FileWatcher.h
function namespace (line 13) | namespace reactjuce
FILE: react_juce/core/GenericEditor.cpp
type reactjuce (line 13) | namespace reactjuce
FILE: react_juce/core/GenericEditor.h
function namespace (line 16) | namespace reactjuce
FILE: react_juce/core/ImageView.cpp
function isWellFormedURL (line 18) | bool isWellFormedURL(const juce::URL& url)
type reactjuce (line 27) | namespace reactjuce
FILE: react_juce/core/ImageView.h
function namespace (line 15) | namespace reactjuce
FILE: react_juce/core/RawTextView.h
function namespace (line 15) | namespace reactjuce
FILE: react_juce/core/ReactApplicationRoot.cpp
type reactjuce (line 13) | namespace reactjuce
function JUCE_ASSERT_MESSAGE_THREAD (line 114) | JUCE_ASSERT_MESSAGE_THREAD
function catch (line 120) | catch (const EcmascriptEngine::Error& err)
function JUCE_ASSERT_MESSAGE_THREAD (line 129) | JUCE_ASSERT_MESSAGE_THREAD
function catch (line 135) | catch (const EcmascriptEngine::Error& err)
FILE: react_juce/core/ReactApplicationRoot.h
function namespace (line 18) | namespace reactjuce
FILE: react_juce/core/ScrollView.cpp
type reactjuce (line 13) | namespace reactjuce
type detail (line 15) | namespace detail
function makeScrollEventObject (line 17) | juce::var makeScrollEventObject(float scrollTopPosition, float scrol...
FILE: react_juce/core/ScrollView.h
function namespace (line 15) | namespace reactjuce
type ScrollEvent (line 50) | struct ScrollEvent
FILE: react_juce/core/ShadowView.cpp
type reactjuce (line 7) | namespace reactjuce
function View (line 37) | View* ShadowView::getAssociatedView()
FILE: react_juce/core/ShadowView.h
type BoundsAnimator (line 10) | struct BoundsAnimator
function EasingType (line 14) | enum class EasingType
function lerp (line 52) | static constexpr float lerp (float a, float b, double t) { return a + ...
function timerCallback (line 54) | void timerCallback() override
function class (line 98) | class ShadowView
FILE: react_juce/core/ShadowView_Yoga.cpp
type reactjuce (line 11) | namespace reactjuce
function getYogaNodeFloatSetter (line 17) | const auto getYogaNodeFloatSetter(Setter setter, Args... args) {
function getYogaNodeDimensionSetter (line 28) | const auto getYogaNodeDimensionSetter(Setter setter, SetterPercent set...
function getYogaNodeDimensionAutoSetter (line 44) | const auto getYogaNodeDimensionAutoSetter(Setter setter, SetterPercent...
function getYogaNodeEnumSetter (line 55) | const auto getYogaNodeEnumSetter(Setter setter, EnumMap &map) {
class PropertySetterMap (line 119) | class PropertySetterMap {
method PropertySetterMap (line 126) | PropertySetterMap(std::initializer_list<std::pair<const K, F>> init)...
method call (line 127) | bool call(const K& key, const V& v, YGNodeRef node) const {
class ShadowView::ShadowViewPimpl (line 189) | class ShadowView::ShadowViewPimpl
method ShadowViewPimpl (line 193) | ShadowViewPimpl(View* v)
method setProperty (line 206) | bool setProperty (const juce::String& name, const juce::var& newValue)
method addChild (line 213) | void addChild (ShadowView* childView, int index = -1)
method removeChild (line 229) | void removeChild (ShadowView* childView)
method View (line 241) | View* getAssociatedView() { return view; }
method getCachedLayoutBounds (line 244) | juce::Rectangle<float> getCachedLayoutBounds()
method computeViewLayout (line 254) | void computeViewLayout(const float width, const float height)
method flushViewLayout (line 260) | void flushViewLayout()
method flushViewLayoutAnimated (line 294) | void flushViewLayoutAnimated(double const durationMs, int const fram...
FILE: react_juce/core/TextInputView.cpp
type reactjuce (line 13) | namespace reactjuce
type detail (line 15) | namespace detail
function makeInputEventObject (line 17) | static juce::var makeInputEventObject(const juce::String &value)
function makeChangeEventObject (line 24) | static juce::var makeChangeEventObject(const juce::String &value)
FILE: react_juce/core/TextInputView.h
function namespace (line 15) | namespace reactjuce
function textInput (line 104) | textInput(props)
FILE: react_juce/core/TextShadowView.cpp
type reactjuce (line 8) | namespace reactjuce
FILE: react_juce/core/TextShadowView.h
function namespace (line 7) | namespace reactjuce
FILE: react_juce/core/TextShadowView_Yoga.cpp
type reactjuce (line 4) | namespace reactjuce
function YGSize (line 12) | YGSize measureTextNode(YGNodeRef node, float width, YGMeasureMode widt...
class TextShadowView::TextShadowViewPimpl (line 35) | class TextShadowView::TextShadowViewPimpl
method TextShadowViewPimpl (line 38) | explicit TextShadowViewPimpl(TextShadowView &tv)
method markDirty (line 45) | void markDirty()
FILE: react_juce/core/TextView.h
function namespace (line 15) | namespace reactjuce
FILE: react_juce/core/Utils.cpp
type reactjuce (line 12) | namespace reactjuce
type detail (line 14) | namespace detail
function makeErrorObject (line 16) | juce::var makeErrorObject(const juce::String& errorName, const juce:...
function makeColorVariant (line 26) | std::variant<juce::Colour, juce::ColourGradient> makeColorVariant(co...
FILE: react_juce/core/Utils.h
function namespace (line 15) | namespace reactjuce
FILE: react_juce/core/View.cpp
type reactjuce (line 16) | namespace reactjuce
type detail (line 19) | namespace detail
function getMouseEventRelatedTarget (line 21) | static juce::var getMouseEventRelatedTarget(const juce::MouseEvent& ...
function makeViewEventObject (line 36) | static juce::var makeViewEventObject (const juce::NamedValueSet& pro...
function makeViewEventObject (line 51) | static juce::var makeViewEventObject (const juce::MouseEvent& me, co...
function makeViewEventObject (line 64) | static juce::var makeViewEventObject (const juce::KeyPress& ke, cons...
function ViewId (line 76) | ViewId View::getViewId() const
FILE: react_juce/core/View.h
function namespace (line 15) | namespace reactjuce
FILE: react_juce/core/ViewManager.cpp
type reactjuce (line 20) | namespace reactjuce
type GenericViewFactory (line 28) | struct GenericViewFactory
function ViewId (line 63) | ViewId ViewManager::createViewInstance(const juce::String& viewType)
function ViewId (line 77) | ViewId ViewManager::createTextViewInstance(const juce::String& value)
function View (line 251) | View* ViewManager::getViewByRefId (const juce::Identifier& refId)
FILE: react_juce/core/ViewManager.h
function namespace (line 18) | namespace reactjuce
FILE: react_juce/duktape/debugger/duk_debug.js
function bufferToDebugString (line 138) | function bufferToDebugString(buf) {
function writeDebugStringToBuffer (line 163) | function writeDebugStringToBuffer(str, buf, off) {
function stringToDebugString (line 175) | function stringToDebugString(str) {
function prettyDebugValue (line 180) | function prettyDebugValue(x) {
function prettyUiNumber (line 201) | function prettyUiNumber(x) {
function prettyUiString (line 217) | function prettyUiString(x, cliplen) {
function prettyUiStringUnquoted (line 246) | function prettyUiStringUnquoted(x, cliplen) {
function prettyUiDebugValue (line 282) | function prettyUiDebugValue(x, cliplen) {
function prettyDebugMessage (line 331) | function prettyDebugMessage(msg) {
function prettyDebugCommand (line 336) | function prettyDebugCommand(cmd) {
function decodeAndNormalizeSource (line 343) | function decodeAndNormalizeSource(data) {
function RateLimited (line 385) | function RateLimited(tokens, rate, cb) {
function SourceFileManager (line 432) | function SourceFileManager(directories) {
function tryLookup (line 498) | function tryLookup() {
function DebugProtocolParser (line 530) | function DebugProtocolParser(inputStream,
function formatDebugValue (line 860) | function formatDebugValue(v) {
function Debugger (line 1027) | function Debugger() {
function DebugWebServer (line 1805) | function DebugWebServer() {
function DebugProxy (line 2172) | function DebugProxy(serverPort) {
function main (line 2419) | function main() {
FILE: react_juce/duktape/debugger/duk_debug_proxy.js
function jxEncode (line 61) | function jxEncode(v) {
function plainBufferCopy (line 65) | function plainBufferCopy(typedarray) {
function isObject (line 75) | function isObject(x) {
function readFully (line 80) | function readFully(filename, cb) {
function JsonProxyServer (line 129) | function JsonProxyServer(host, port) {
function JsonConnHandler (line 176) | function JsonConnHandler(server) {
function TargetConnHandler (line 596) | function TargetConnHandler(server) {
function consume (line 781) | function consume(n) {
function main (line 959) | function main() {
FILE: react_juce/duktape/debugger/static/webui.js
function formatBytes (line 49) | function formatBytes(x) {
function doSourceUpdate (line 63) | function doSourceUpdate() {
function doUiUpdate (line 142) | function doUiUpdate() {
function submitEval (line 536) | function submitEval() {
function setSourceText (line 578) | function setSourceText(data) {
function setSourceSelect (line 592) | function setSourceSelect(fileName) {
function requestSourceRefetch (line 616) | function requestSourceRefetch() {
function fetchSourceList (line 685) | function fetchSourceList() {
function loadCurrFunc (line 762) | function loadCurrFunc() {
FILE: react_juce/duktape/examples/alloc-hybrid/duk_alloc_hybrid.c
type pool_size_spec (line 20) | typedef struct {
type pool_free_entry (line 38) | struct pool_free_entry
type pool_free_entry (line 39) | typedef struct pool_free_entry pool_free_entry;
type pool_free_entry (line 40) | struct pool_free_entry {
type pool_header (line 44) | typedef struct {
type pool_state (line 52) | typedef struct {
function dump_pool_state (line 65) | static void dump_pool_state(pool_state *st) {
function dump_pool_state (line 85) | static void dump_pool_state(pool_state *st) {
function duk_free_hybrid (line 260) | void duk_free_hybrid(void *udata, void *ptr) {
FILE: react_juce/duktape/examples/alloc-logging/duk_alloc_logging.c
type alloc_hdr (line 26) | typedef struct {
function write_log (line 39) | static void write_log(const char *fmt, ...) {
function duk_free_logging (line 127) | void duk_free_logging(void *udata, void *ptr) {
FILE: react_juce/duktape/examples/alloc-logging/log2gnuplot.py
function main (line 14) | def main():
FILE: react_juce/duktape/examples/alloc-torture/duk_alloc_torture.c
type alloc_hdr (line 26) | typedef struct {
function check_red_zone (line 37) | static void check_red_zone(alloc_hdr *hdr) {
function duk_free_torture (line 167) | void duk_free_torture(void *udata, void *ptr) {
FILE: react_juce/duktape/examples/cmdline/duk_cmdline.c
function set_resource_limits (line 145) | static void set_resource_limits(rlim_t mem_limit_value) {
function my_sighandler (line 176) | static void my_sighandler(int x) {
function set_sigint_handler (line 180) | static void set_sigint_handler(void) {
function cmdline_fatal_handler (line 186) | static void cmdline_fatal_handler(void *udata, const char *msg) {
function print_pop_error (line 196) | static void print_pop_error(duk_context *ctx, FILE *f) {
function duk_ret_t (line 202) | static duk_ret_t wrapped_compile_execute(duk_context *ctx, void *udata) {
function duk_ret_t (line 422) | static duk_ret_t linenoise_add_completion(duk_context *ctx) {
function linenoise_freehints (line 487) | static void linenoise_freehints(void *ptr) {
function linenoise_completion (line 494) | static void linenoise_completion(const char *buf, linenoiseCompletions *...
function handle_fh (line 527) | static int handle_fh(duk_context *ctx, FILE *f, const char *filename, co...
function handle_file (line 654) | static int handle_file(duk_context *ctx, const char *filename, const cha...
function handle_eval (line 691) | static int handle_eval(duk_context *ctx, char *code) {
function handle_interactive (line 718) | static int handle_interactive(duk_context *ctx) {
function handle_interactive (line 796) | static int handle_interactive(duk_context *ctx) {
function duk_ret_t (line 870) | static duk_ret_t fileio_read_file(duk_context *ctx) {
function duk_ret_t (line 925) | static duk_ret_t fileio_write_file(duk_context *ctx) {
function duk_ret_t (line 967) | static duk_ret_t string_frombufferraw(duk_context *ctx) {
function duk_idx_t (line 977) | static duk_idx_t debugger_request(duk_context *ctx, void *udata, duk_idx...
function debugger_detached (line 1007) | static void debugger_detached(duk_context *ctx, void *udata) {
function duk_context (line 1045) | static duk_context *create_duktape_heap(int alloc_provider, int debugger...
function destroy_duktape_heap (line 1231) | static void destroy_duktape_heap(duk_context *ctx, int alloc_provider) {
function main (line 1263) | int main(int argc, char *argv[]) {
function duk_cmdline_stack_check (line 1590) | int duk_cmdline_stack_check(void) {
function duk_cmdline_stack_check (line 1623) | int duk_cmdline_stack_check(void) {
FILE: react_juce/duktape/examples/cmdline/duk_cmdline_lowmem.c
function duk__safe_print_chars (line 87) | static void duk__safe_print_chars(const char *p, duk_size_t len, int unt...
function lowmem_init (line 106) | void lowmem_init(void) {
function lowmem_free (line 155) | void lowmem_free(void) {
function duk_ret_t (line 163) | static duk_ret_t lowmem__dump_binding(duk_context *ctx) {
function lowmem_dump (line 168) | void lowmem_dump(void) {
function lowmem_register (line 199) | void lowmem_register(duk_context *ctx) {
function lowmem_write_alloc_log (line 218) | static void lowmem_write_alloc_log(const char *fmt, ...) {
function lowmem_free_wrapped (line 276) | void lowmem_free_wrapped(void *udata, void *ptr) {
function duk_uint16_t (line 292) | duk_uint16_t lowmem_enc16(void *ud, void *p) {
function lowmem_extstr_free_1 (line 503) | void lowmem_extstr_free_1(const void *ptr) {
function lowmem_extstr_free_2 (line 917) | void lowmem_extstr_free_2(const void *ptr) {
function lowmem_extstr_free_3 (line 962) | void lowmem_extstr_free_3(const void *ptr) {
function lowmem_start_exec_timeout (line 981) | void lowmem_start_exec_timeout(void) {
function lowmem_clear_exec_timeout (line 985) | void lowmem_clear_exec_timeout(void) {
function duk_bool_t (line 989) | duk_bool_t lowmem_exec_timeout_check(void *udata) {
FILE: react_juce/duktape/examples/codepage-conv/duk_codepage_conv.c
function duk_decode_string_codepage (line 17) | void duk_decode_string_codepage(duk_context *ctx, const char *str, size_...
FILE: react_juce/duktape/examples/codepage-conv/test.c
function duk_ret_t (line 269) | static duk_ret_t duk__print(duk_context *ctx) {
function main (line 278) | int main(int argc, char *argv[]) {
FILE: react_juce/duktape/examples/cpp-exceptions/cpp_exceptions.cpp
class my_class (line 47) | class my_class {
function duk_ret_t (line 66) | duk_ret_t test1(duk_context *ctx) {
function duk_ret_t (line 73) | duk_ret_t test1_safecall(duk_context *ctx, void *udata) {
function duk_ret_t (line 83) | duk_ret_t test2(duk_context *ctx) {
function duk_ret_t (line 94) | duk_ret_t test2_safecall(duk_context *ctx, void *udata) {
function duk_ret_t (line 108) | duk_ret_t test3(duk_context *ctx) {
function duk_ret_t (line 115) | duk_ret_t test3_safecall(duk_context *ctx, void *udata) {
class my_exception (line 125) | class my_exception : public std::exception {
function duk_ret_t (line 131) | duk_ret_t test4(duk_context *ctx) {
function duk_ret_t (line 139) | duk_ret_t test4_safecall(duk_context *ctx, void *udata) {
class my_exception2 (line 149) | class my_exception2 : public std::exception {
function duk_ret_t (line 155) | duk_ret_t test5(duk_context *ctx) {
function duk_ret_t (line 163) | duk_ret_t test5_safecall(duk_context *ctx, void *udata) {
function duk_ret_t (line 168) | static duk_ret_t duk__print(duk_context *ctx) {
function main (line 176) | int main(int argc, char *argv[]) {
FILE: react_juce/duktape/examples/debug-trans-dvalue/duk_trans_dvalue.c
function duk_dvalue (line 51) | duk_dvalue *duk_dvalue_alloc(void) {
function duk_dvalue_free (line 60) | void duk_dvalue_free(duk_dvalue *dv) {
function duk__dvalue_bufesc (line 68) | static void duk__dvalue_bufesc(duk_dvalue *dv, char *buf, size_t maxbyte...
function duk_dvalue_to_string (line 95) | void duk_dvalue_to_string(duk_dvalue *dv, char *buf) {
function duk_dvalue (line 177) | duk_dvalue *duk_dvalue_make_tag(int tag) {
function duk_dvalue (line 184) | duk_dvalue *duk_dvalue_make_tag_int(int tag, int intval) {
function duk_dvalue (line 192) | duk_dvalue *duk_dvalue_make_tag_double(int tag, double dblval) {
function duk_dvalue (line 200) | duk_dvalue *duk_dvalue_make_tag_data(int tag, const char *buf, size_t le...
function duk_dvalue (line 221) | duk_dvalue *duk_dvalue_make_tag_int_data(int tag, int intval, const char...
function duk__trans_dvalue_double_byteswap (line 232) | static void duk__trans_dvalue_double_byteswap(duk_trans_dvalue_ctx *ctx,...
function duk__trans_dvalue_parse_u32 (line 257) | static unsigned int duk__trans_dvalue_parse_u32(duk_trans_dvalue_ctx *ct...
function duk__trans_dvalue_parse_i32 (line 268) | static int duk__trans_dvalue_parse_i32(duk_trans_dvalue_ctx *ctx, unsign...
function duk__trans_dvalue_parse_u16 (line 280) | static unsigned int duk__trans_dvalue_parse_u16(duk_trans_dvalue_ctx *ct...
function duk__trans_dvalue_parse_double (line 287) | static double duk__trans_dvalue_parse_double(duk_trans_dvalue_ctx *ctx, ...
function duk__trans_buffer_rebase (line 376) | static void duk__trans_buffer_rebase(duk_trans_buffer *dbuf) {
function duk_trans_dvalue_ctx (line 391) | duk_trans_dvalue_ctx *duk_trans_dvalue_init(void) {
function duk_trans_dvalue_free (line 452) | void duk_trans_dvalue_free(duk_trans_dvalue_ctx *ctx) {
function duk_trans_dvalue_send (line 460) | void duk_trans_dvalue_send(duk_trans_dvalue_ctx *ctx, duk_dvalue *dv) {
function duk__trans_dvalue_send_and_free (line 713) | static void duk__trans_dvalue_send_and_free(duk_trans_dvalue_ctx *ctx, d...
function duk_trans_dvalue_send_eom (line 719) | void duk_trans_dvalue_send_eom(duk_trans_dvalue_ctx *ctx) {
function duk_trans_dvalue_send_req (line 723) | void duk_trans_dvalue_send_req(duk_trans_dvalue_ctx *ctx) {
function duk_trans_dvalue_send_rep (line 727) | void duk_trans_dvalue_send_rep(duk_trans_dvalue_ctx *ctx) {
function duk_trans_dvalue_send_err (line 731) | void duk_trans_dvalue_send_err(duk_trans_dvalue_ctx *ctx) {
function duk_trans_dvalue_send_nfy (line 735) | void duk_trans_dvalue_send_nfy(duk_trans_dvalue_ctx *ctx) {
function duk_trans_dvalue_send_integer (line 739) | void duk_trans_dvalue_send_integer(duk_trans_dvalue_ctx *ctx, int val) {
function duk_trans_dvalue_send_string (line 743) | void duk_trans_dvalue_send_string(duk_trans_dvalue_ctx *ctx, const char ...
function duk_trans_dvalue_send_lstring (line 747) | void duk_trans_dvalue_send_lstring(duk_trans_dvalue_ctx *ctx, const char...
function duk_trans_dvalue_send_buffer (line 751) | void duk_trans_dvalue_send_buffer(duk_trans_dvalue_ctx *ctx, const char ...
function duk_trans_dvalue_send_unused (line 755) | void duk_trans_dvalue_send_unused(duk_trans_dvalue_ctx *ctx) {
function duk_trans_dvalue_send_undefined (line 759) | void duk_trans_dvalue_send_undefined(duk_trans_dvalue_ctx *ctx) {
function duk_trans_dvalue_send_null (line 763) | void duk_trans_dvalue_send_null(duk_trans_dvalue_ctx *ctx) {
function duk_trans_dvalue_send_true (line 767) | void duk_trans_dvalue_send_true(duk_trans_dvalue_ctx *ctx) {
function duk_trans_dvalue_send_false (line 771) | void duk_trans_dvalue_send_false(duk_trans_dvalue_ctx *ctx) {
function duk_trans_dvalue_send_number (line 775) | void duk_trans_dvalue_send_number(duk_trans_dvalue_ctx *ctx, double val) {
function duk_trans_dvalue_send_object (line 779) | void duk_trans_dvalue_send_object(duk_trans_dvalue_ctx *ctx, int classnu...
function duk_trans_dvalue_send_pointer (line 783) | void duk_trans_dvalue_send_pointer(duk_trans_dvalue_ctx *ctx, const char...
function duk_trans_dvalue_send_lightfunc (line 787) | void duk_trans_dvalue_send_lightfunc(duk_trans_dvalue_ctx *ctx, int lf_f...
function duk_trans_dvalue_send_heapptr (line 791) | void duk_trans_dvalue_send_heapptr(duk_trans_dvalue_ctx *ctx, const char...
function duk_trans_dvalue_send_req_cmd (line 795) | void duk_trans_dvalue_send_req_cmd(duk_trans_dvalue_ctx *ctx, int cmd) {
function duk_dvalue (line 800) | static duk_dvalue *duk__trans_trial_parse_dvalue(duk_trans_dvalue_ctx *c...
function duk_dvalue (line 1044) | static duk_dvalue *duk__trans_trial_parse_handshake(duk_trans_dvalue_ctx...
function duk__trans_call_cooperate (line 1075) | static void duk__trans_call_cooperate(duk_trans_dvalue_ctx *ctx, int blo...
function duk__trans_call_received (line 1081) | static void duk__trans_call_received(duk_trans_dvalue_ctx *ctx, duk_dval...
function duk__trans_call_handshake (line 1087) | static void duk__trans_call_handshake(duk_trans_dvalue_ctx *ctx, const c...
function duk__trans_call_detached (line 1093) | static void duk__trans_call_detached(duk_trans_dvalue_ctx *ctx) {
function duk_size_t (line 1103) | duk_size_t duk_trans_dvalue_read_cb(void *udata, char *buffer, duk_size_...
function duk_size_t (line 1135) | duk_size_t duk_trans_dvalue_write_cb(void *udata, const char *buffer, du...
function duk_size_t (line 1194) | duk_size_t duk_trans_dvalue_peek_cb(void *udata) {
function duk_trans_dvalue_read_flush_cb (line 1208) | void duk_trans_dvalue_read_flush_cb(void *udata) {
function duk_trans_dvalue_write_flush_cb (line 1219) | void duk_trans_dvalue_write_flush_cb(void *udata) {
function duk_trans_dvalue_detached_cb (line 1230) | void duk_trans_dvalue_detached_cb(duk_context *duk_ctx, void *udata) {
FILE: react_juce/duktape/examples/debug-trans-dvalue/duk_trans_dvalue.h
type duk_dvalue (line 6) | typedef struct duk_dvalue duk_dvalue;
type duk_trans_buffer (line 7) | typedef struct duk_trans_buffer duk_trans_buffer;
type duk_trans_dvalue_ctx (line 8) | typedef struct duk_trans_dvalue_ctx duk_trans_dvalue_ctx;
type duk_dvalue (line 38) | struct duk_dvalue {
type duk_trans_buffer (line 47) | struct duk_trans_buffer {
type duk_trans_dvalue_ctx (line 54) | struct duk_trans_dvalue_ctx {
FILE: react_juce/duktape/examples/debug-trans-dvalue/test.c
function my_cooperate (line 11) | void my_cooperate(duk_trans_dvalue_ctx *ctx, int block) {
function my_received (line 108) | void my_received(duk_trans_dvalue_ctx *ctx, duk_dvalue *dv) {
function my_handshake (line 130) | void my_handshake(duk_trans_dvalue_ctx *ctx, const char *line) {
function my_detached (line 143) | void my_detached(duk_trans_dvalue_ctx *ctx) {
function duk_ret_t (line 152) | static duk_ret_t native_print(duk_context *ctx) {
function main (line 160) | int main(int argc, char *argv[]) {
FILE: react_juce/duktape/examples/debug-trans-socket/duk_trans_socket_unix.c
function duk_trans_socket_init (line 39) | void duk_trans_socket_init(void) {
function duk_trans_socket_finish (line 81) | void duk_trans_socket_finish(void) {
function duk_trans_socket_waitconn (line 92) | void duk_trans_socket_waitconn(void) {
function duk_size_t (line 145) | duk_size_t duk_trans_socket_read_cb(void *udata, char *buffer, duk_size_...
function duk_size_t (line 209) | duk_size_t duk_trans_socket_write_cb(void *udata, const char *buffer, du...
function duk_size_t (line 270) | duk_size_t duk_trans_socket_peek_cb(void *udata) {
function duk_trans_socket_read_flush_cb (line 331) | void duk_trans_socket_read_flush_cb(void *udata) {
function duk_trans_socket_write_flush_cb (line 353) | void duk_trans_socket_write_flush_cb(void *udata) {
FILE: react_juce/duktape/examples/debug-trans-socket/duk_trans_socket_windows.c
function duk_trans_socket_init (line 81) | void duk_trans_socket_init(void) {
function duk_trans_socket_finish (line 155) | void duk_trans_socket_finish(void) {
function duk_trans_socket_waitconn (line 170) | void duk_trans_socket_waitconn(void) {
function duk_size_t (line 219) | duk_size_t duk_trans_socket_read_cb(void *udata, char *buffer, duk_size_...
function duk_size_t (line 283) | duk_size_t duk_trans_socket_write_cb(void *udata, const char *buffer, du...
function duk_size_t (line 336) | duk_size_t duk_trans_socket_peek_cb(void *udata) {
function duk_trans_socket_read_flush_cb (line 375) | void duk_trans_socket_read_flush_cb(void *udata) {
function duk_trans_socket_write_flush_cb (line 397) | void duk_trans_socket_write_flush_cb(void *udata) {
FILE: react_juce/duktape/examples/dummy-date-provider/dummy_date_provider.c
function duk_double_t (line 24) | duk_double_t dummy_get_now(void) {
FILE: react_juce/duktape/examples/eval/eval.c
function duk_ret_t (line 9) | static duk_ret_t native_print(duk_context *ctx) {
function usage_exit (line 17) | static void usage_exit(void) {
function main (line 23) | int main(int argc, char *argv[]) {
FILE: react_juce/duktape/examples/eventloop/c_eventloop.c
type ev_timer (line 32) | typedef struct {
type pollfd (line 57) | struct pollfd
function get_now (line 64) | static double get_now(void) {
function ev_timer (line 76) | static ev_timer *find_nearest_timer(void) {
function bubble_last_timer (line 87) | static void bubble_last_timer(void) {
function expire_timers (line 110) | static void expire_timers(duk_context *ctx) {
function compact_poll_list (line 223) | static void compact_poll_list(void) {
function duk_ret_t (line 263) | duk_ret_t eventloop_run(duk_context *ctx, void *udata) {
function create_timer (line 405) | static int create_timer(duk_context *ctx) {
function delete_timer (line 465) | static int delete_timer(duk_context *ctx) {
function listen_fd (line 546) | static int listen_fd(duk_context *ctx) {
function request_exit (line 595) | static int request_exit(duk_context *ctx) {
function eventloop_register (line 609) | void eventloop_register(duk_context *ctx) {
FILE: react_juce/duktape/examples/eventloop/c_eventloop.js
function setTimeout (line 14) | function setTimeout(func, delay) {
function clearTimeout (line 49) | function clearTimeout(timer_id) {
function setInterval (line 56) | function setInterval(func, delay) {
function clearInterval (line 89) | function clearInterval(timer_id) {
function requestEventLoopExit (line 96) | function requestEventLoopExit() {
FILE: react_juce/duktape/examples/eventloop/ecma_eventloop.js
function setTimeout (line 369) | function setTimeout(func, delay) {
function clearTimeout (line 414) | function clearTimeout(timer_id) {
function setInterval (line 423) | function setInterval(func, delay) {
function clearInterval (line 466) | function clearInterval(timer_id) {
function requestEventLoopExit (line 476) | function requestEventLoopExit() {
FILE: react_juce/duktape/examples/eventloop/fileio.c
function fileio_push_file_buffer (line 12) | void fileio_push_file_buffer(duk_context *ctx, const char *filename) {
function fileio_push_file_string (line 56) | void fileio_push_file_string(duk_context *ctx, const char *filename) {
function fileio_readfile (line 63) | static int fileio_readfile(duk_context *ctx) {
function fileio_register (line 77) | void fileio_register(duk_context *ctx) {
FILE: react_juce/duktape/examples/eventloop/main.c
function my_sighandler (line 28) | static void my_sighandler(int x) {
function set_sigint_handler (line 32) | static void set_sigint_handler(void) {
function print_error (line 38) | static void print_error(duk_context *ctx, FILE *f) {
function duk_ret_t (line 58) | static duk_ret_t native_print(duk_context *ctx) {
function print_register (line 66) | static void print_register(duk_context *ctx) {
function duk_ret_t (line 71) | static duk_ret_t wrapped_compile_execute(duk_context *ctx, void *udata) {
function handle_fh (line 117) | static int handle_fh(duk_context *ctx, FILE *f, const char *filename) {
function handle_file (line 161) | static int handle_file(duk_context *ctx, const char *filename) {
function handle_stdin (line 181) | static int handle_stdin(duk_context *ctx) {
function duk_ret_t (line 189) | static duk_ret_t init_duktape_context(duk_context *ctx, void *udata) {
function main (line 215) | int main(int argc, char *argv[]) {
FILE: react_juce/duktape/examples/eventloop/poll.c
function poll_poll (line 22) | static int poll_poll(duk_context *ctx) {
function poll_register (line 111) | void poll_register(duk_context *ctx) {
FILE: react_juce/duktape/examples/eventloop/socket.c
function set_nonblocking (line 23) | static void set_nonblocking(duk_context *ctx, int fd) {
function set_reuseaddr (line 41) | static void set_reuseaddr(duk_context *ctx, int fd) {
function set_nosigpipe (line 53) | static void set_nosigpipe(duk_context *ctx, int fd) {
function socket_create_server_socket (line 65) | static int socket_create_server_socket(duk_context *ctx) {
function socket_close (line 122) | static int socket_close(duk_context *ctx) {
function socket_accept (line 133) | static int socket_accept(duk_context *ctx) {
function socket_connect (line 174) | static int socket_connect(duk_context *ctx) {
function socket_read (line 231) | static int socket_read(duk_context *ctx) {
function socket_write (line 247) | static int socket_write(duk_context *ctx) {
function socket_register (line 279) | void socket_register(duk_context *ctx) {
FILE: react_juce/duktape/examples/eventloop/timer-test.js
function main (line 5) | function main() {
FILE: react_juce/duktape/examples/guide/fib.js
function fib (line 2) | function fib(n) {
function test (line 8) | function test() {
FILE: react_juce/duktape/examples/guide/prime.js
function primeCheckECMAScript (line 4) | function primeCheckECMAScript(val, limit) {
function primeCheck (line 15) | function primeCheck(val) {
function primeTest (line 23) | function primeTest() {
FILE: react_juce/duktape/examples/guide/primecheck.c
function push_file_as_string (line 8) | static void push_file_as_string(duk_context *ctx, const char *filename) {
function duk_ret_t (line 23) | static duk_ret_t native_print(duk_context *ctx) {
function duk_ret_t (line 31) | static duk_ret_t native_prime_check(duk_context *ctx) {
function main (line 47) | int main(int argc, const char *argv[]) {
FILE: react_juce/duktape/examples/guide/process.js
function processLine (line 2) | function processLine(line) {
FILE: react_juce/duktape/examples/guide/processlines.c
function push_file_as_string (line 8) | static void push_file_as_string(duk_context *ctx, const char *filename) {
function main (line 23) | int main(int argc, const char *argv[]) {
FILE: react_juce/duktape/examples/guide/uppercase.c
function dummy_upper_case (line 6) | static int dummy_upper_case(duk_context *ctx) {
function main (line 26) | int main(int argc, char *argv[]) {
FILE: react_juce/duktape/examples/hello/hello.c
function duk_ret_t (line 7) | static duk_ret_t native_print(duk_context *ctx) {
function duk_ret_t (line 15) | static duk_ret_t native_adder(duk_context *ctx) {
function main (line 28) | int main(int argc, char *argv[]) {
FILE: react_juce/duktape/examples/jxpretty/jxpretty.c
function duk_ret_t (line 9) | static duk_ret_t duk__print(duk_context *ctx) {
function duk_ret_t (line 17) | static duk_ret_t do_jxpretty(duk_context *ctx, void *udata) {
function main (line 54) | int main(int argc, char *argv[]) {
FILE: react_juce/duktape/examples/sandbox/sandbox.c
type alloc_hdr (line 19) | typedef struct {
function sandbox_dump_memstate (line 33) | static void sandbox_dump_memstate(void) {
function sandbox_free (line 129) | static void sandbox_free(void *udata, void *ptr) {
function duk_ret_t (line 147) | static duk_ret_t duk__print(duk_context *ctx) {
function duk_ret_t (line 155) | static duk_ret_t do_sandbox_test(duk_context *ctx, void *udata) {
function sandbox_fatal (line 229) | static void sandbox_fatal(void *udata, const char *msg) {
function main (line 236) | int main(int argc, char *argv[]) {
FILE: react_juce/duktape/extras/alloc-pool/duk_alloc_pool.c
function duk__alloc_pool_dprintf (line 38) | static void duk__alloc_pool_dprintf(const char *fmt, ...) {
function duk__alloc_pool_set_waste_marker (line 225) | static void duk__alloc_pool_set_waste_marker(void *ptr, size_t used, siz...
function duk__alloc_pool_set_waste_marker (line 243) | static void duk__alloc_pool_set_waste_marker(void *ptr, size_t used, siz...
function duk__alloc_pool_get_waste_estimate (line 249) | static size_t duk__alloc_pool_get_waste_estimate(void *ptr, size_t size) {
function duk__alloc_pool_get_waste_estimate (line 273) | static size_t duk__alloc_pool_get_waste_estimate(void *ptr, size_t size) {
function duk__alloc_pool_ptr_in_freelist (line 279) | static int duk__alloc_pool_ptr_in_freelist(duk_pool_state *s, void *ptr) {
function duk_alloc_pool_get_pool_stats (line 290) | void duk_alloc_pool_get_pool_stats(duk_pool_state *s, duk_pool_stats *re...
function duk_alloc_pool_get_global_stats (line 321) | void duk_alloc_pool_get_global_stats(duk_pool_global *g, duk_pool_global...
function duk__alloc_pool_update_highwater (line 351) | static void duk__alloc_pool_update_highwater(duk_pool_global *g) {
function duk__alloc_pool_update_highwater (line 398) | static void duk__alloc_pool_update_highwater(duk_pool_global *g) {
function duk_free_pool (line 532) | void duk_free_pool(void *udata, void *ptr) {
function duk__alloc_pool_romptr_init (line 570) | static void duk__alloc_pool_romptr_init(void) {
function duk_uint16_t (line 591) | duk_uint16_t duk_alloc_pool_enc16_rom(void *ptr) {
FILE: react_juce/duktape/extras/alloc-pool/duk_alloc_pool.h
type duk_pool_config (line 35) | typedef struct {
type duk_pool_free (line 42) | struct duk_pool_free
type duk_pool_free (line 43) | typedef struct duk_pool_free duk_pool_free;
type duk_pool_free (line 44) | struct duk_pool_free {
type duk_pool_state (line 49) | typedef struct {
type duk_pool_stats (line 60) | typedef struct {
type duk_pool_global (line 72) | typedef struct {
type duk_pool_global_stats (line 82) | typedef struct {
function DUK__ALLOC_POOL_ALWAYS_INLINE (line 159) | static DUK__ALLOC_POOL_ALWAYS_INLINE duk_uint16_t duk_alloc_pool_enc16(v...
function DUK__ALLOC_POOL_ALWAYS_INLINE (line 194) | static DUK__ALLOC_POOL_ALWAYS_INLINE void *duk_alloc_pool_dec16(duk_uint...
FILE: react_juce/duktape/extras/alloc-pool/test.c
function my_fatal (line 6) | void my_fatal(const char *msg) {
function duk_ret_t (line 12) | static duk_ret_t my_print(duk_context *ctx) {
function dump_pool_state (line 20) | static void dump_pool_state(duk_pool_global *g) {
function main (line 45) | int main(int argc, char *argv[]) {
FILE: react_juce/duktape/extras/cbor/cbordecode.py
function main (line 3) | def main():
FILE: react_juce/duktape/extras/cbor/duk_cbor.c
type duk_cbor_encode_context (line 56) | typedef struct {
type duk_cbor_decode_context (line 65) | typedef struct {
type duk_cbor_dblunion (line 72) | typedef union {
type duk_cbor_fltunion (line 82) | typedef union {
function duk__cbor_signbit (line 100) | static int duk__cbor_signbit(double d) {
function duk__cbor_fpclassify (line 104) | static int duk__cbor_fpclassify(double d) {
function duk__cbor_isnan (line 108) | static int duk__cbor_isnan(double d) {
function duk__cbor_isinf (line 112) | static int duk__cbor_isinf(double d) {
function duk_uint32_t (line 116) | static duk_uint32_t duk__cbor_double_to_uint32(double d) {
function duk__cbor_check_endian (line 129) | static int duk__cbor_check_endian(void) {
function DUK_CBOR_INLINE (line 149) | static DUK_CBOR_INLINE duk_uint16_t duk__cbor_bswap16(duk_uint16_t x) {
function DUK_CBOR_INLINE (line 158) | static DUK_CBOR_INLINE duk_uint32_t duk__cbor_bswap32(duk_uint32_t x) {
function duk_uint64_t (line 168) | static duk_uint64_t duk__cbor_bswap64(duk_uint64_t x) {
function DUK_CBOR_INLINE (line 173) | static DUK_CBOR_INLINE void duk__cbor_write_uint16_big(duk_uint8_t *p, d...
function DUK_CBOR_INLINE (line 195) | static DUK_CBOR_INLINE duk_uint16_t duk__cbor_read_uint16_big(const duk_...
function DUK_CBOR_INLINE (line 219) | static DUK_CBOR_INLINE void duk__cbor_write_uint32_big(duk_uint8_t *p, d...
function DUK_CBOR_INLINE (line 243) | static DUK_CBOR_INLINE duk_uint32_t duk__cbor_read_uint32_big(const duk_...
function DUK_CBOR_INLINE (line 269) | static DUK_CBOR_INLINE void duk__cbor_write_double_big(duk_uint8_t *p, d...
function DUK_CBOR_INLINE (line 302) | static DUK_CBOR_INLINE void duk__cbor_write_float_big(duk_uint8_t *p, fl...
function DUK_CBOR_INLINE (line 322) | static DUK_CBOR_INLINE void duk__cbor_dblunion_host_to_little(duk_cbor_d...
function DUK_CBOR_INLINE (line 349) | static DUK_CBOR_INLINE void duk__cbor_dblunion_little_to_host(duk_cbor_d...
function DUK_CBOR_INLINE (line 353) | static DUK_CBOR_INLINE void duk__cbor_dblunion_host_to_big(duk_cbor_dblu...
function DUK_CBOR_INLINE (line 381) | static DUK_CBOR_INLINE void duk__cbor_dblunion_big_to_host(duk_cbor_dblu...
function DUK_CBOR_INLINE (line 385) | static DUK_CBOR_INLINE void duk__cbor_fltunion_host_to_big(duk_cbor_fltu...
function DUK_CBOR_INLINE (line 398) | static DUK_CBOR_INLINE void duk__cbor_fltunion_big_to_host(duk_cbor_fltu...
function duk__cbor_encode_error (line 406) | static void duk__cbor_encode_error(duk_cbor_encode_context *enc_ctx) {
function duk__cbor_is_utf8_compatible (line 411) | static int duk__cbor_is_utf8_compatible(const duk_uint8_t *buf, duk_size...
function duk__cbor_encode_sizet_uint32_check (line 495) | static void duk__cbor_encode_sizet_uint32_check(duk_cbor_encode_context ...
function DUK_CBOR_NOINLINE (line 501) | static DUK_CBOR_NOINLINE void duk__cbor_encode_ensure_slowpath(duk_cbor_...
function DUK_CBOR_INLINE (line 549) | static DUK_CBOR_INLINE void duk__cbor_encode_ensure(duk_cbor_encode_cont...
function duk_size_t (line 556) | static duk_size_t duk__cbor_get_reserve(duk_cbor_encode_context *enc_ctx) {
function duk__cbor_encode_uint32 (line 562) | static void duk__cbor_encode_uint32(duk_cbor_encode_context *enc_ctx, du...
function duk__cbor_encode_double (line 587) | static void duk__cbor_encode_double(duk_cbor_encode_context *enc_ctx, do...
function duk__cbor_encode_double_fp (line 600) | static void duk__cbor_encode_double_fp(duk_cbor_encode_context *enc_ctx,...
function duk__cbor_encode_double (line 723) | static void duk__cbor_encode_double(duk_cbor_encode_context *enc_ctx, do...
function duk__cbor_encode_string_top (line 833) | static void duk__cbor_encode_string_top(duk_cbor_encode_context *enc_ctx) {
function duk__cbor_encode_object (line 892) | static void duk__cbor_encode_object(duk_cbor_encode_context *enc_ctx) {
function duk__cbor_encode_buffer (line 968) | static void duk__cbor_encode_buffer(duk_cbor_encode_context *enc_ctx) {
function duk__cbor_encode_pointer (line 987) | static void duk__cbor_encode_pointer(duk_cbor_encode_context *enc_ctx) {
function duk__cbor_encode_lightfunc (line 1010) | static void duk__cbor_encode_lightfunc(duk_cbor_encode_context *enc_ctx) {
function duk__cbor_encode_value (line 1022) | static void duk__cbor_encode_value(duk_cbor_encode_context *enc_ctx) {
function duk__cbor_req_stack (line 1101) | static void duk__cbor_req_stack(duk_cbor_decode_context *dec_ctx) {
function duk__cbor_decode_error (line 1105) | static void duk__cbor_decode_error(duk_cbor_decode_context *dec_ctx) {
function duk_uint8_t (line 1109) | static duk_uint8_t duk__cbor_decode_readbyte(duk_cbor_decode_context *de...
function duk_uint16_t (line 1117) | static duk_uint16_t duk__cbor_decode_read_u16(duk_cbor_decode_context *d...
function duk_uint32_t (line 1128) | static duk_uint32_t duk__cbor_decode_read_u32(duk_cbor_decode_context *d...
function duk_uint8_t (line 1139) | static duk_uint8_t duk__cbor_decode_peekbyte(duk_cbor_decode_context *de...
function duk__cbor_decode_rewind (line 1146) | static void duk__cbor_decode_rewind(duk_cbor_decode_context *dec_ctx, du...
function duk__cbor_decode_ensure (line 1152) | static void duk__cbor_decode_ensure(duk_cbor_decode_context *dec_ctx, du...
function duk_uint8_t (line 1159) | static const duk_uint8_t *duk__cbor_decode_consume(duk_cbor_decode_conte...
function duk__cbor_decode_checkbreak (line 1171) | static int duk__cbor_decode_checkbreak(duk_cbor_decode_context *dec_ctx) {
function duk__cbor_decode_push_aival_int (line 1183) | static void duk__cbor_decode_push_aival_int(duk_cbor_decode_context *dec...
function duk__cbor_decode_skip_aival_int (line 1296) | static void duk__cbor_decode_skip_aival_int(duk_cbor_decode_context *dec...
function duk_uint32_t (line 1313) | static duk_uint32_t duk__cbor_decode_aival_uint32(duk_cbor_decode_contex...
function duk__cbor_decode_buffer (line 1345) | static void duk__cbor_decode_buffer(duk_cbor_decode_context *dec_ctx, du...
function duk__cbor_decode_join_buffers (line 1363) | static void duk__cbor_decode_join_buffers(duk_cbor_decode_context *dec_c...
function duk__cbor_decode_and_join_strbuf (line 1407) | static void duk__cbor_decode_and_join_strbuf(duk_cbor_decode_context *de...
function duk_double_t (line 1427) | static duk_double_t duk__cbor_decode_half_float(duk_cbor_decode_context ...
function duk__cbor_decode_string (line 1503) | static void duk__cbor_decode_string(duk_cbor_decode_context *dec_ctx, du...
function duk_bool_t (line 1547) | static duk_bool_t duk__cbor_decode_array(duk_cbor_decode_context *dec_ct...
function duk_bool_t (line 1587) | static duk_bool_t duk__cbor_decode_map(duk_cbor_decode_context *dec_ctx,...
function duk_double_t (line 1631) | static duk_double_t duk__cbor_decode_float(duk_cbor_decode_context *dec_...
function duk_double_t (line 1640) | static duk_double_t duk__cbor_decode_double(duk_cbor_decode_context *dec...
function duk__cbor_decode_value (line 1652) | static void duk__cbor_decode_value(duk_cbor_decode_context *dec_ctx) {
function duk__cbor_decode_value (line 1859) | static void duk__cbor_decode_value(duk_cbor_decode_context *dec_ctx) {
function duk_ret_t (line 1996) | static duk_ret_t duk__cbor_encode_binding(duk_context *ctx) {
function duk_ret_t (line 2005) | static duk_ret_t duk__cbor_decode_binding(duk_context *ctx) {
function duk_cbor_init (line 2011) | void duk_cbor_init(duk_context *ctx, duk_uint_t flags) {
function duk_cbor_encode (line 2026) | void duk_cbor_encode(duk_context *ctx, duk_idx_t idx, duk_uint_t encode_...
function duk_cbor_decode (line 2049) | void duk_cbor_decode(duk_context *ctx, duk_idx_t idx, duk_uint_t decode_...
FILE: react_juce/duktape/extras/cbor/jsoncbor.c
function push_stdin (line 14) | static void push_stdin(duk_context *ctx, int to_string) {
function usage_and_exit (line 47) | static void usage_and_exit(void) {
function duk_ret_t (line 58) | static duk_ret_t transcode_helper(duk_context *ctx, void *udata) {
function parse_format (line 135) | static int parse_format(const char *s) {
function main (line 149) | int main(int argc, char *argv[]) {
FILE: react_juce/duktape/extras/console/duk_console.c
function duk_ret_t (line 23) | static duk_ret_t duk__console_log_helper(duk_context *ctx, const char *e...
function duk_ret_t (line 63) | static duk_ret_t duk__console_assert(duk_context *ctx) {
function duk_ret_t (line 72) | static duk_ret_t duk__console_log(duk_context *ctx) {
function duk_ret_t (line 76) | static duk_ret_t duk__console_trace(duk_context *ctx) {
function duk_ret_t (line 80) | static duk_ret_t duk__console_info(duk_context *ctx) {
function duk_ret_t (line 84) | static duk_ret_t duk__console_warn(duk_context *ctx) {
function duk_ret_t (line 88) | static duk_ret_t duk__console_error(duk_context *ctx) {
function duk_ret_t (line 92) | static duk_ret_t duk__console_dir(duk_context *ctx) {
function duk__console_reg_vararg_func (line 97) | static void duk__console_reg_vararg_func(duk_context *ctx, duk_c_functio...
function duk_console_init (line 106) | void duk_console_init(duk_context *ctx, duk_uint_t flags) {
FILE: react_juce/duktape/extras/console/test.c
function main (line 5) | int main(int argc, char *argv[]) {
FILE: react_juce/duktape/extras/duk-v1-compat/duk_v1_compat.c
function duk_dump_context_stdout (line 9) | void duk_dump_context_stdout(duk_context *ctx) {
function duk_dump_context_stderr (line 15) | void duk_dump_context_stderr(duk_context *ctx) {
function duk_eval_file (line 72) | void duk_eval_file(duk_context *ctx, const char *path) {
function duk_eval_file_noresult (line 80) | void duk_eval_file_noresult(duk_context *ctx, const char *path) {
function duk_int_t (line 85) | duk_int_t duk_peval_file(duk_context *ctx, const char *path) {
function duk_int_t (line 99) | duk_int_t duk_peval_file_noresult(duk_context *ctx, const char *path) {
function duk_compile_file (line 107) | void duk_compile_file(duk_context *ctx, duk_uint_t flags, const char *pa...
function duk_int_t (line 113) | duk_int_t duk_pcompile_file(duk_context *ctx, duk_uint_t flags, const ch...
function duk_to_defaultvalue (line 126) | void duk_to_defaultvalue(duk_context *ctx, duk_idx_t idx, duk_int_t hint) {
FILE: react_juce/duktape/extras/duk-v1-compat/test.c
function duk_ret_t (line 5) | static duk_ret_t my_print(duk_context *ctx) {
function main (line 14) | int main(int argc, char *argv[]) {
FILE: react_juce/duktape/extras/logging/duk_logging.c
function duk_ret_t (line 27) | static duk_ret_t duk__logger_constructor(duk_context *ctx) {
function duk_ret_t (line 85) | static duk_ret_t duk__logger_prototype_fmt(duk_context *ctx) {
function duk_ret_t (line 108) | static duk_ret_t duk__logger_prototype_raw(duk_context *ctx) {
function duk_ret_t (line 126) | static duk_ret_t duk__logger_prototype_log_shared(duk_context *ctx) {
function duk_log_va (line 289) | void duk_log_va(duk_context *ctx, duk_int_t level, const char *fmt, va_l...
function duk_log (line 312) | void duk_log(duk_context *ctx, duk_int_t level, const char *fmt, ...) {
function duk_logging_init (line 320) | void duk_logging_init(duk_context *ctx, duk_uint_t flags) {
FILE: react_juce/duktape/extras/logging/test.c
function duk_ret_t (line 5) | static duk_ret_t init_logging(duk_context *ctx, void *udata) {
function main (line 24) | int main(int argc, char *argv[]) {
FILE: react_juce/duktape/extras/minimal-printf/duk_minimal_printf.c
function duk__format_long (line 29) | static size_t duk__format_long(char *str,
function duk__parse_pointer (line 90) | static int duk__parse_pointer(const char *str, void **out) {
function duk_minimal_vsnprintf (line 131) | int duk_minimal_vsnprintf(char *str, size_t size, const char *format, va...
function duk_minimal_snprintf (line 269) | int duk_minimal_snprintf(char *str, size_t size, const char *format, ...) {
function duk_minimal_sprintf (line 281) | int duk_minimal_sprintf(char *str, const char *format, ...) {
function duk_minimal_sscanf (line 293) | int duk_minimal_sscanf(const char *str, const char *format, ...) {
FILE: react_juce/duktape/extras/minimal-printf/test.c
function init_buffer (line 7) | static void init_buffer(void) {
function dump_buffer (line 15) | static void dump_buffer(void) {
function main (line 44) | int main(int argc, char *argv[]) {
FILE: react_juce/duktape/extras/module-duktape/duk_module_duktape.c
function duk__resolve_module_id (line 31) | static void duk__resolve_module_id(duk_context *ctx, const char *req_id,...
function duk_ret_t (line 199) | static duk_ret_t duk__require(duk_context *ctx) {
function duk_module_duktape_init (line 439) | void duk_module_duktape_init(duk_context *ctx) {
FILE: react_juce/duktape/extras/module-duktape/test.c
function duk_ret_t (line 6) | static duk_ret_t handle_print(duk_context *ctx) {
function duk_ret_t (line 11) | static duk_ret_t handle_assert(duk_context *ctx) {
function main (line 20) | int main(int argc, char *argv[]) {
FILE: react_juce/duktape/extras/module-node/duk_module_node.c
function duk_bool_t (line 17) | static duk_bool_t duk__get_cached_module(duk_context *ctx, const char *i...
function duk__put_cached_module (line 34) | static void duk__put_cached_module(duk_context *ctx) {
function duk__del_cached_module (line 50) | static void duk__del_cached_module(duk_context *ctx, const char *id) {
function duk_ret_t (line 57) | static duk_ret_t duk__handle_require(duk_context *ctx) {
function duk__push_require_function (line 148) | static void duk__push_require_function(duk_context *ctx, const char *id) {
function duk__push_module_object (line 169) | static void duk__push_module_object(duk_context *ctx, const char *id, du...
function duk_int_t (line 205) | static duk_int_t duk__eval_module_source(duk_context *ctx) {
function duk_ret_t (line 265) | duk_ret_t duk_module_node_peval_main(duk_context *ctx, const char *path) {
function duk_module_node_init (line 283) | void duk_module_node_init(duk_context *ctx) {
FILE: react_juce/duktape/extras/module-node/test.c
function duk_ret_t (line 6) | static duk_ret_t cb_resolve_module(duk_context *ctx) {
function duk_ret_t (line 20) | static duk_ret_t cb_load_module(duk_context *ctx) {
function duk_ret_t (line 50) | static duk_ret_t handle_print(duk_context *ctx) {
function duk_ret_t (line 55) | static duk_ret_t handle_assert(duk_context *ctx) {
function main (line 63) | int main(int argc, char *argv[]) {
FILE: react_juce/duktape/extras/print-alert/duk_print_alert.c
function duk_ret_t (line 14) | static duk_ret_t duk__print_alert_helper(duk_context *ctx, FILE *fh) {
function duk_ret_t (line 44) | static duk_ret_t duk__print_alert_helper(duk_context *ctx, FILE *fh) {
function duk_ret_t (line 107) | static duk_ret_t duk__print(duk_context *ctx) {
function duk_ret_t (line 111) | static duk_ret_t duk__alert(duk_context *ctx) {
function duk_print_alert_init (line 115) | void duk_print_alert_init(duk_context *ctx, duk_uint_t flags) {
FILE: react_juce/duktape/extras/print-alert/test.c
function main (line 5) | int main(int argc, char *argv[]) {
FILE: react_juce/duktape/mandel.js
function mandel (line 8) | function mandel() {
FILE: react_juce/duktape/polyfills/duktape-buffer.js
function isBufferOrView (line 10) | function isBufferOrView(v) {
FILE: react_juce/duktape/polyfills/promise.js
function enqueueJob (line 49) | function enqueueJob(job) {
function dequeueJob (line 63) | function dequeueJob() {
function queueEmpty (line 73) | function queueEmpty() {
function def (line 78) | function def(obj, key, val, attrs) {
function isPromise (line 100) | function isPromise(p) {
function requirePromise (line 103) | function requirePromise(p) {
function safeCallUnhandledRejection (line 111) | function safeCallUnhandledRejection(event) {
function rejectionTracker (line 118) | function rejectionTracker(p, operation) {
function doFulfill (line 154) | function doFulfill(p, val) {
function doReject (line 167) | function doReject(p, val) {
function createResolutionFunctions (line 198) | function createResolutionFunctions(p) {
function runQueueEntry (line 254) | function runQueueEntry() {
function resolve (line 341) | function resolve(val) {
function reject (line 348) | function reject(val) {
function all (line 353) | function all(list) {
function race (line 388) | function race(list) {
function then (line 417) | function then(onFulfilled, onRejected) {
function optimizedThen (line 490) | function optimizedThen(source, target) {
function checkUnhandledRejections (line 536) | function checkUnhandledRejections() {
FILE: react_juce/duktape/src-input/duk_alloc_default.c
function DUK_INTERNAL (line 11) | DUK_INTERNAL void *duk_default_alloc_function(void *udata, duk_size_t si...
function DUK_INTERNAL (line 20) | DUK_INTERNAL void *duk_default_realloc_function(void *udata, void *ptr, ...
function DUK_INTERNAL (line 29) | DUK_INTERNAL void duk_default_free_function(void *udata, void *ptr) {
FILE: react_juce/duktape/src-input/duk_api_buffer.c
function DUK_EXTERNAL (line 7) | DUK_EXTERNAL void *duk_resize_buffer(duk_hthread *thr, duk_idx_t idx, du...
function DUK_EXTERNAL (line 26) | DUK_EXTERNAL void *duk_steal_buffer(duk_hthread *thr, duk_idx_t idx, duk...
function DUK_EXTERNAL (line 57) | DUK_EXTERNAL void duk_config_buffer(duk_hthread *thr, duk_idx_t idx, voi...
FILE: react_juce/duktape/src-input/duk_api_bytecode.c
function DUK_LOCAL (line 27) | DUK_LOCAL duk_uint8_t *duk__load_string_raw(duk_hthread *thr, duk_uint8_...
function DUK_LOCAL (line 36) | DUK_LOCAL duk_uint8_t *duk__load_buffer_raw(duk_hthread *thr, duk_uint8_...
function DUK_LOCAL (line 48) | DUK_LOCAL duk_uint8_t *duk__dump_hstring_raw(duk_uint8_t *p, duk_hstring...
function DUK_LOCAL (line 65) | DUK_LOCAL duk_uint8_t *duk__dump_hbuffer_raw(duk_hthread *thr, duk_uint8...
function DUK_LOCAL (line 85) | DUK_LOCAL duk_uint8_t *duk__dump_string_prop(duk_hthread *thr, duk_uint8...
function DUK_LOCAL (line 103) | DUK_LOCAL duk_uint8_t *duk__dump_buffer_prop(duk_hthread *thr, duk_uint8...
function DUK_LOCAL (line 121) | DUK_LOCAL duk_uint8_t *duk__dump_uint32_prop(duk_hthread *thr, duk_uint8...
function DUK_LOCAL (line 136) | DUK_LOCAL duk_uint8_t *duk__dump_varmap(duk_hthread *thr, duk_uint8_t *p...
function DUK_LOCAL (line 178) | DUK_LOCAL duk_uint8_t *duk__dump_formals(duk_hthread *thr, duk_uint8_t *...
function duk_uint8_t (line 219) | static duk_uint8_t *duk__dump_func(duk_hthread *thr, duk_hcompfunc *func...
function duk_uint8_t (line 374) | static duk_uint8_t *duk__load_func(duk_hthread *thr, duk_uint8_t *p, duk...
function DUK_EXTERNAL (line 677) | DUK_EXTERNAL void duk_dump_function(duk_hthread *thr) {
function DUK_EXTERNAL (line 708) | DUK_EXTERNAL void duk_load_function(duk_hthread *thr) {
function DUK_EXTERNAL (line 748) | DUK_EXTERNAL void duk_dump_function(duk_hthread *thr) {
function DUK_EXTERNAL (line 754) | DUK_EXTERNAL void duk_load_function(duk_hthread *thr) {
FILE: react_juce/duktape/src-input/duk_api_call.c
type duk__pcall_prop_args (line 23) | struct duk__pcall_prop_args {
type duk__pcall_prop_args (line 28) | typedef struct duk__pcall_prop_args duk__pcall_prop_args;
type duk__pcall_method_args (line 30) | struct duk__pcall_method_args {
type duk__pcall_method_args (line 34) | typedef struct duk__pcall_method_args duk__pcall_method_args;
type duk__pcall_args (line 36) | struct duk__pcall_args {
type duk__pcall_args (line 40) | typedef struct duk__pcall_args duk__pcall_args;
function DUK_LOCAL (line 46) | DUK_LOCAL duk_idx_t duk__call_get_idx_func(duk_hthread *thr, duk_idx_t n...
function DUK_LOCAL (line 66) | DUK_LOCAL duk_idx_t duk__call_get_idx_func_unvalidated(duk_hthread *thr,...
function DUK_LOCAL (line 83) | DUK_LOCAL void duk__call_prop_prep_stack(duk_hthread *thr, duk_idx_t nor...
function DUK_EXTERNAL (line 125) | DUK_EXTERNAL void duk_call(duk_hthread *thr, duk_idx_t nargs) {
function DUK_EXTERNAL (line 140) | DUK_EXTERNAL void duk_call_method(duk_hthread *thr, duk_idx_t nargs) {
function DUK_EXTERNAL (line 153) | DUK_EXTERNAL void duk_call_prop(duk_hthread *thr, duk_idx_t obj_idx, duk...
function DUK_LOCAL (line 174) | DUK_LOCAL duk_ret_t duk__pcall_raw(duk_hthread *thr, void *udata) {
function DUK_EXTERNAL (line 195) | DUK_EXTERNAL duk_int_t duk_pcall(duk_hthread *thr, duk_idx_t nargs) {
function DUK_LOCAL (line 210) | DUK_LOCAL duk_ret_t duk__pcall_method_raw(duk_hthread *thr, void *udata) {
function DUK_INTERNAL (line 230) | DUK_INTERNAL duk_int_t duk_pcall_method_flags(duk_hthread *thr, duk_idx_...
function DUK_EXTERNAL (line 245) | DUK_EXTERNAL duk_int_t duk_pcall_method(duk_hthread *thr, duk_idx_t narg...
function DUK_LOCAL (line 251) | DUK_LOCAL duk_ret_t duk__pcall_prop_raw(duk_hthread *thr, void *udata) {
function DUK_EXTERNAL (line 270) | DUK_EXTERNAL duk_int_t duk_pcall_prop(duk_hthread *thr, duk_idx_t obj_id...
function DUK_EXTERNAL (line 286) | DUK_EXTERNAL duk_int_t duk_safe_call(duk_hthread *thr, duk_safe_call_fun...
function DUK_EXTERNAL (line 327) | DUK_EXTERNAL void duk_new(duk_hthread *thr, duk_idx_t nargs) {
function DUK_LOCAL (line 341) | DUK_LOCAL duk_ret_t duk__pnew_helper(duk_hthread *thr, void *udata) {
function DUK_EXTERNAL (line 351) | DUK_EXTERNAL duk_int_t duk_pnew(duk_hthread *thr, duk_idx_t nargs) {
function DUK_EXTERNAL (line 370) | DUK_EXTERNAL duk_bool_t duk_is_constructor_call(duk_hthread *thr) {
function DUK_EXTERNAL (line 382) | DUK_EXTERNAL void duk_require_constructor_call(duk_hthread *thr) {
function DUK_EXTERNAL (line 391) | DUK_EXTERNAL duk_bool_t duk_is_strict_call(duk_hthread *thr) {
function DUK_EXTERNAL (line 418) | DUK_EXTERNAL duk_int_t duk_get_current_magic(duk_hthread *thr) {
function DUK_EXTERNAL (line 443) | DUK_EXTERNAL duk_int_t duk_get_magic(duk_hthread *thr, duk_idx_t idx) {
function DUK_EXTERNAL (line 468) | DUK_EXTERNAL void duk_set_magic(duk_hthread *thr, duk_idx_t idx, duk_int...
function DUK_INTERNAL (line 485) | DUK_INTERNAL void duk_resolve_nonbound_function(duk_hthread *thr) {
FILE: react_juce/duktape/src-input/duk_api_codec.c
function DUK_LOCAL (line 20) | DUK_LOCAL const duk_uint8_t *duk__prep_codec_arg(duk_hthread *thr, duk_i...
function duk__base64_encode_fast_3 (line 98) | void duk__base64_encode_fast_3(const duk_uint8_t *src, duk_uint8_t *dst) {
function duk__base64_encode_fast_2 (line 122) | void duk__base64_encode_fast_2(const duk_uint8_t *src, duk_uint8_t *dst) {
function duk__base64_encode_fast_1 (line 133) | void duk__base64_encode_fast_1(const duk_uint8_t *src, duk_uint8_t *dst) {
function DUK_LOCAL (line 143) | DUK_LOCAL void duk__base64_encode_helper(const duk_uint8_t *src, duk_siz...
function DUK_LOCAL (line 204) | DUK_LOCAL void duk__base64_encode_helper(const duk_uint8_t *src, duk_siz...
function DUK_LOCAL (line 278) | DUK_LOCAL duk_bool_t duk__base64_decode_helper(const duk_uint8_t *src, d...
function DUK_LOCAL (line 474) | DUK_LOCAL duk_bool_t duk__base64_decode_helper(const duk_uint8_t *src, d...
function DUK_EXTERNAL (line 614) | DUK_EXTERNAL const char *duk_base64_encode(duk_hthread *thr, duk_idx_t i...
function DUK_EXTERNAL (line 650) | DUK_EXTERNAL void duk_base64_decode(duk_hthread *thr, duk_idx_t idx) {
function DUK_EXTERNAL (line 688) | DUK_EXTERNAL const char *duk_base64_encode(duk_hthread *thr, duk_idx_t i...
function DUK_EXTERNAL (line 694) | DUK_EXTERNAL void duk_base64_decode(duk_hthread *thr, duk_idx_t idx) {
function DUK_EXTERNAL (line 706) | DUK_EXTERNAL const char *duk_hex_encode(duk_hthread *thr, duk_idx_t idx) {
function DUK_EXTERNAL (line 762) | DUK_EXTERNAL void duk_hex_decode(duk_hthread *thr, duk_idx_t idx) {
function DUK_EXTERNAL (line 850) | DUK_EXTERNAL const char *duk_hex_encode(duk_hthread *thr, duk_idx_t idx) {
function DUK_EXTERNAL (line 855) | DUK_EXTERNAL void duk_hex_decode(duk_hthread *thr, duk_idx_t idx) {
function DUK_EXTERNAL (line 867) | DUK_EXTERNAL const char *duk_json_encode(duk_hthread *thr, duk_idx_t idx) {
function DUK_EXTERNAL (line 893) | DUK_EXTERNAL void duk_json_decode(duk_hthread *thr, duk_idx_t idx) {
function DUK_EXTERNAL (line 913) | DUK_EXTERNAL const char *duk_json_encode(duk_hthread *thr, duk_idx_t idx) {
function DUK_EXTERNAL (line 920) | DUK_EXTERNAL void duk_json_decode(duk_hthread *thr, duk_idx_t idx) {
FILE: react_juce/duktape/src-input/duk_api_compile.c
type duk__compile_raw_args (line 7) | typedef struct duk__compile_raw_args duk__compile_raw_args;
type duk__compile_raw_args (line 8) | struct duk__compile_raw_args {
function DUK_EXTERNAL (line 15) | DUK_EXTERNAL duk_int_t duk_eval_raw(duk_hthread *thr, const char *src_bu...
function DUK_LOCAL (line 58) | DUK_LOCAL duk_ret_t duk__do_compile(duk_hthread *thr, void *udata) {
function DUK_EXTERNAL (line 131) | DUK_EXTERNAL duk_int_t duk_compile_raw(duk_hthread *thr, const char *src...
FILE: react_juce/duktape/src-input/duk_api_debug.c
function DUK_EXTERNAL (line 8) | DUK_EXTERNAL void duk_push_context_dump(duk_hthread *thr) {
function DUK_EXTERNAL (line 42) | DUK_EXTERNAL void duk_push_context_dump(duk_hthread *thr) {
function DUK_EXTERNAL (line 51) | DUK_EXTERNAL void duk_debugger_attach(duk_hthread *thr,
function DUK_EXTERNAL (line 113) | DUK_EXTERNAL void duk_debugger_detach(duk_hthread *thr) {
function DUK_EXTERNAL (line 123) | DUK_EXTERNAL void duk_debugger_cooperate(duk_hthread *thr) {
function DUK_EXTERNAL (line 144) | DUK_EXTERNAL duk_bool_t duk_debugger_notify(duk_hthread *thr, duk_idx_t ...
function DUK_EXTERNAL (line 180) | DUK_EXTERNAL void duk_debugger_pause(duk_hthread *thr) {
function DUK_EXTERNAL (line 205) | DUK_EXTERNAL void duk_debugger_attach(duk_hthread *thr,
function DUK_EXTERNAL (line 227) | DUK_EXTERNAL void duk_debugger_detach(duk_hthread *thr) {
function DUK_EXTERNAL (line 233) | DUK_EXTERNAL void duk_debugger_cooperate(duk_hthread *thr) {
function DUK_EXTERNAL (line 239) | DUK_EXTERNAL duk_bool_t duk_debugger_notify(duk_hthread *thr, duk_idx_t ...
function DUK_EXTERNAL (line 255) | DUK_EXTERNAL void duk_debugger_pause(duk_hthread *thr) {
FILE: react_juce/duktape/src-input/duk_api_heap.c
type duk_internal_thread_state (line 7) | typedef struct duk_internal_thread_state duk_internal_thread_state;
type duk_internal_thread_state (line 9) | struct duk_internal_thread_state {
function DUK_EXTERNAL (line 16) | DUK_EXTERNAL duk_hthread *duk_create_heap(duk_alloc_function alloc_func,
function DUK_EXTERNAL (line 67) | DUK_EXTERNAL void duk_destroy_heap(duk_hthread *thr) {
function DUK_EXTERNAL (line 80) | DUK_EXTERNAL void duk_suspend(duk_hthread *thr, duk_thread_state *state) {
function DUK_EXTERNAL (line 122) | DUK_EXTERNAL void duk_resume(duk_hthread *thr, const duk_thread_state *s...
function DUK_EXTERNAL (line 147) | DUK_EXTERNAL void duk_set_global_object(duk_hthread *thr) {
FILE: react_juce/duktape/src-input/duk_api_inspect.c
function DUK_LOCAL (line 10) | DUK_LOCAL void duk__inspect_multiple_uint(duk_hthread *thr, const char *...
function DUK_EXTERNAL (line 57) | DUK_EXTERNAL void duk_inspect_value(duk_hthread *thr, duk_idx_t idx) {
function DUK_EXTERNAL (line 186) | DUK_EXTERNAL void duk_inspect_callstack_entry(duk_hthread *thr, duk_int_...
FILE: react_juce/duktape/src-input/duk_api_memory.c
function DUK_EXTERNAL (line 7) | DUK_EXTERNAL void *duk_alloc_raw(duk_hthread *thr, duk_size_t size) {
function DUK_EXTERNAL (line 13) | DUK_EXTERNAL void duk_free_raw(duk_hthread *thr, void *ptr) {
function DUK_EXTERNAL (line 19) | DUK_EXTERNAL void *duk_realloc_raw(duk_hthread *thr, void *ptr, duk_size...
function DUK_EXTERNAL (line 25) | DUK_EXTERNAL void *duk_alloc(duk_hthread *thr, duk_size_t size) {
function DUK_EXTERNAL (line 31) | DUK_EXTERNAL void duk_free(duk_hthread *thr, void *ptr) {
function DUK_EXTERNAL (line 37) | DUK_EXTERNAL void *duk_realloc(duk_hthread *thr, void *ptr, duk_size_t s...
function DUK_EXTERNAL (line 53) | DUK_EXTERNAL void duk_get_memory_functions(duk_hthread *thr, duk_memory_...
function DUK_EXTERNAL (line 68) | DUK_EXTERNAL void duk_gc(duk_hthread *thr, duk_uint_t flags) {
FILE: react_juce/duktape/src-input/duk_api_object.c
function DUK_EXTERNAL (line 15) | DUK_EXTERNAL duk_bool_t duk_get_prop(duk_hthread *thr, duk_idx_t obj_idx) {
function DUK_EXTERNAL (line 38) | DUK_EXTERNAL duk_bool_t duk_get_prop_string(duk_hthread *thr, duk_idx_t ...
function DUK_EXTERNAL (line 47) | DUK_EXTERNAL duk_bool_t duk_get_prop_lstring(duk_hthread *thr, duk_idx_t...
function DUK_EXTERNAL (line 57) | DUK_EXTERNAL duk_bool_t duk_get_prop_literal_raw(duk_hthread *thr, duk_i...
function DUK_EXTERNAL (line 68) | DUK_EXTERNAL duk_bool_t duk_get_prop_index(duk_hthread *thr, duk_idx_t o...
function DUK_EXTERNAL (line 76) | DUK_EXTERNAL duk_bool_t duk_get_prop_heapptr(duk_hthread *thr, duk_idx_t...
function DUK_INTERNAL (line 84) | DUK_INTERNAL duk_bool_t duk_get_prop_stridx(duk_hthread *thr, duk_idx_t ...
function DUK_INTERNAL (line 93) | DUK_INTERNAL duk_bool_t duk_get_prop_stridx_short_raw(duk_hthread *thr, ...
function DUK_INTERNAL (line 98) | DUK_INTERNAL duk_bool_t duk_get_prop_stridx_boolean(duk_hthread *thr, du...
function DUK_INTERNAL (line 120) | DUK_INTERNAL duk_bool_t duk_xget_owndataprop(duk_hthread *thr, duk_idx_t...
function DUK_INTERNAL (line 148) | DUK_INTERNAL duk_bool_t duk_xget_owndataprop_stridx(duk_hthread *thr, du...
function DUK_INTERNAL (line 157) | DUK_INTERNAL duk_bool_t duk_xget_owndataprop_stridx_short_raw(duk_hthrea...
function DUK_LOCAL (line 162) | DUK_LOCAL duk_bool_t duk__put_prop_shared(duk_hthread *thr, duk_idx_t ob...
function DUK_EXTERNAL (line 192) | DUK_EXTERNAL duk_bool_t duk_put_prop(duk_hthread *thr, duk_idx_t obj_idx) {
function DUK_EXTERNAL (line 197) | DUK_EXTERNAL duk_bool_t duk_put_prop_string(duk_hthread *thr, duk_idx_t ...
function DUK_EXTERNAL (line 210) | DUK_EXTERNAL duk_bool_t duk_put_prop_lstring(duk_hthread *thr, duk_idx_t...
function DUK_EXTERNAL (line 220) | DUK_EXTERNAL duk_bool_t duk_put_prop_literal_raw(duk_hthread *thr, duk_i...
function DUK_EXTERNAL (line 231) | DUK_EXTERNAL duk_bool_t duk_put_prop_index(duk_hthread *thr, duk_idx_t o...
function DUK_EXTERNAL (line 239) | DUK_EXTERNAL duk_bool_t duk_put_prop_heapptr(duk_hthread *thr, duk_idx_t...
function DUK_INTERNAL (line 248) | DUK_INTERNAL duk_bool_t duk_put_prop_stridx(duk_hthread *thr, duk_idx_t ...
function DUK_INTERNAL (line 257) | DUK_INTERNAL duk_bool_t duk_put_prop_stridx_short_raw(duk_hthread *thr, ...
function DUK_EXTERNAL (line 262) | DUK_EXTERNAL duk_bool_t duk_del_prop(duk_hthread *thr, duk_idx_t obj_idx) {
function DUK_EXTERNAL (line 285) | DUK_EXTERNAL duk_bool_t duk_del_prop_string(duk_hthread *thr, duk_idx_t ...
function DUK_EXTERNAL (line 294) | DUK_EXTERNAL duk_bool_t duk_del_prop_lstring(duk_hthread *thr, duk_idx_t...
function DUK_EXTERNAL (line 304) | DUK_EXTERNAL duk_bool_t duk_del_prop_literal_raw(duk_hthread *thr, duk_i...
function DUK_EXTERNAL (line 315) | DUK_EXTERNAL duk_bool_t duk_del_prop_index(duk_hthread *thr, duk_idx_t o...
function DUK_EXTERNAL (line 323) | DUK_EXTERNAL duk_bool_t duk_del_prop_heapptr(duk_hthread *thr, duk_idx_t...
function DUK_INTERNAL (line 331) | DUK_INTERNAL duk_bool_t duk_del_prop_stridx(duk_hthread *thr, duk_idx_t ...
function DUK_INTERNAL (line 341) | DUK_INTERNAL duk_bool_t duk_del_prop_stridx_short_raw(duk_hthread *thr, ...
function DUK_EXTERNAL (line 347) | DUK_EXTERNAL duk_bool_t duk_has_prop(duk_hthread *thr, duk_idx_t obj_idx) {
function DUK_EXTERNAL (line 368) | DUK_EXTERNAL duk_bool_t duk_has_prop_string(duk_hthread *thr, duk_idx_t ...
function DUK_EXTERNAL (line 377) | DUK_EXTERNAL duk_bool_t duk_has_prop_lstring(duk_hthread *thr, duk_idx_t...
function DUK_EXTERNAL (line 387) | DUK_EXTERNAL duk_bool_t duk_has_prop_literal_raw(duk_hthread *thr, duk_i...
function DUK_EXTERNAL (line 398) | DUK_EXTERNAL duk_bool_t duk_has_prop_index(duk_hthread *thr, duk_idx_t o...
function DUK_EXTERNAL (line 406) | DUK_EXTERNAL duk_bool_t duk_has_prop_heapptr(duk_hthread *thr, duk_idx_t...
function DUK_INTERNAL (line 414) | DUK_INTERNAL duk_bool_t duk_has_prop_stridx(duk_hthread *thr, duk_idx_t ...
function DUK_INTERNAL (line 424) | DUK_INTERNAL duk_bool_t duk_has_prop_stridx_short_raw(duk_hthread *thr, ...
function DUK_INTERNAL (line 435) | DUK_INTERNAL void duk_xdef_prop(duk_hthread *thr, duk_idx_t obj_idx, duk...
function DUK_INTERNAL (line 452) | DUK_INTERNAL void duk_xdef_prop_index(duk_hthread *thr, duk_idx_t obj_id...
function DUK_INTERNAL (line 464) | DUK_INTERNAL void duk_xdef_prop_stridx(duk_hthread *thr, duk_idx_t obj_i...
function DUK_INTERNAL (line 481) | DUK_INTERNAL void duk_xdef_prop_stridx_short_raw(duk_hthread *thr, duk_u...
function DUK_INTERNAL (line 488) | DUK_INTERNAL void duk_xdef_prop_stridx_builtin(duk_hthread *thr, duk_idx...
function DUK_INTERNAL (line 512) | DUK_INTERNAL void duk_xdef_prop_stridx_thrower(duk_hthread *thr, duk_idx...
function DUK_EXTERNAL (line 523) | DUK_EXTERNAL void duk_get_prop_desc(duk_hthread *thr, duk_idx_t obj_idx,...
function DUK_EXTERNAL (line 531) | DUK_EXTERNAL void duk_def_prop(duk_hthread *thr, duk_idx_t obj_idx, duk_...
function DUK_EXTERNAL (line 621) | DUK_EXTERNAL void duk_compact(duk_hthread *thr, duk_idx_t obj_idx) {
function DUK_INTERNAL (line 633) | DUK_INTERNAL void duk_compact_m1(duk_hthread *thr) {
function DUK_EXTERNAL (line 641) | DUK_EXTERNAL void duk_enum(duk_hthread *thr, duk_idx_t obj_idx, duk_uint...
function DUK_EXTERNAL (line 649) | DUK_EXTERNAL duk_bool_t duk_next(duk_hthread *thr, duk_idx_t enum_index,...
function DUK_INTERNAL (line 657) | DUK_INTERNAL void duk_seal_freeze_raw(duk_hthread *thr, duk_idx_t obj_id...
function DUK_EXTERNAL (line 712) | DUK_EXTERNAL void duk_seal(duk_hthread *thr, duk_idx_t obj_idx) {
function DUK_EXTERNAL (line 718) | DUK_EXTERNAL void duk_freeze(duk_hthread *thr, duk_idx_t obj_idx) {
function DUK_EXTERNAL (line 728) | DUK_EXTERNAL void duk_put_function_list(duk_hthread *thr, duk_idx_t obj_...
function DUK_EXTERNAL (line 743) | DUK_EXTERNAL void duk_put_number_list(duk_hthread *thr, duk_idx_t obj_id...
function DUK_EXTERNAL (line 765) | DUK_EXTERNAL duk_bool_t duk_get_global_string(duk_hthread *thr, const ch...
function DUK_EXTERNAL (line 779) | DUK_EXTERNAL duk_bool_t duk_get_global_lstring(duk_hthread *thr, const c...
function DUK_EXTERNAL (line 794) | DUK_EXTERNAL duk_bool_t duk_get_global_literal_raw(duk_hthread *thr, con...
function DUK_EXTERNAL (line 810) | DUK_EXTERNAL duk_bool_t duk_get_global_heapptr(duk_hthread *thr, void *p...
function DUK_EXTERNAL (line 825) | DUK_EXTERNAL duk_bool_t duk_put_global_string(duk_hthread *thr, const ch...
function DUK_EXTERNAL (line 840) | DUK_EXTERNAL duk_bool_t duk_put_global_lstring(duk_hthread *thr, const c...
function DUK_EXTERNAL (line 856) | DUK_EXTERNAL duk_bool_t duk_put_global_literal_raw(duk_hthread *thr, con...
function DUK_EXTERNAL (line 873) | DUK_EXTERNAL duk_bool_t duk_put_global_heapptr(duk_hthread *thr, void *p...
function DUK_INTERNAL (line 892) | DUK_INTERNAL duk_bool_t duk_get_method_stridx(duk_hthread *thr, duk_idx_...
function DUK_EXTERNAL (line 909) | DUK_EXTERNAL void duk_get_prototype(duk_hthread *thr, duk_idx_t idx) {
function DUK_EXTERNAL (line 927) | DUK_EXTERNAL void duk_set_prototype(duk_hthread *thr, duk_idx_t idx) {
function DUK_INTERNAL (line 952) | DUK_INTERNAL void duk_clear_prototype(duk_hthread *thr, duk_idx_t idx) {
function DUK_INTERNAL (line 970) | DUK_INTERNAL duk_bool_t duk_is_bare_object(duk_hthread *thr, duk_idx_t i...
function DUK_EXTERNAL (line 993) | DUK_EXTERNAL void duk_get_finalizer(duk_hthread *thr, duk_idx_t idx) {
function DUK_EXTERNAL (line 1003) | DUK_EXTERNAL void duk_set_finalizer(duk_hthread *thr, duk_idx_t idx) {
function DUK_EXTERNAL (line 1037) | DUK_EXTERNAL void duk_get_finalizer(duk_hthread *thr, duk_idx_t idx) {
function DUK_EXTERNAL (line 1044) | DUK_EXTERNAL void duk_set_finalizer(duk_hthread *thr, duk_idx_t idx) {
FILE: react_juce/duktape/src-input/duk_api_random.c
function DUK_EXTERNAL (line 7) | DUK_EXTERNAL duk_double_t duk_random(duk_hthread *thr) {
FILE: react_juce/duktape/src-input/duk_api_stack.c
function DUK_LOCAL (line 84) | DUK_LOCAL duk_small_uint_t duk__get_symbol_type(duk_hstring *h) {
function DUK_LOCAL (line 111) | DUK_LOCAL const char *duk__get_symbol_type_string(duk_hstring *h) {
function DUK_LOCAL (line 120) | DUK_LOCAL duk_int_t duk__api_coerce_d2i(duk_hthread *thr, duk_idx_t idx,...
function DUK_LOCAL (line 181) | DUK_LOCAL duk_uint_t duk__api_coerce_d2ui(duk_hthread *thr, duk_idx_t id...
function DUK_EXTERNAL (line 241) | DUK_EXTERNAL duk_idx_t duk_normalize_index(duk_hthread *thr, duk_idx_t i...
function DUK_EXTERNAL (line 276) | DUK_EXTERNAL duk_idx_t duk_require_normalize_index(duk_hthread *thr, duk...
function DUK_INTERNAL (line 304) | DUK_INTERNAL duk_tval *duk_get_tval(duk_hthread *thr, duk_idx_t idx) {
function DUK_INTERNAL (line 339) | DUK_INTERNAL duk_tval *duk_get_tval_or_unused(duk_hthread *thr, duk_idx_...
function DUK_INTERNAL (line 351) | DUK_INTERNAL duk_tval *duk_require_tval(duk_hthread *thr, duk_idx_t idx) {
function DUK_EXTERNAL (line 381) | DUK_EXTERNAL duk_bool_t duk_is_valid_index(duk_hthread *thr, duk_idx_t i...
function DUK_EXTERNAL (line 389) | DUK_EXTERNAL void duk_require_valid_index(duk_hthread *thr, duk_idx_t id...
function DUK_EXTERNAL (line 403) | DUK_EXTERNAL duk_idx_t duk_get_top(duk_hthread *thr) {
function DUK_INTERNAL (line 412) | DUK_INTERNAL duk_idx_t duk_get_top_require_min(duk_hthread *thr, duk_idx...
function DUK_EXTERNAL (line 429) | DUK_EXTERNAL void duk_set_top(duk_hthread *thr, duk_idx_t idx) {
function DUK_INTERNAL (line 526) | DUK_INTERNAL void duk_set_top_unsafe(duk_hthread *thr, duk_idx_t idx) {
function DUK_INTERNAL (line 532) | DUK_INTERNAL void duk_set_top_unsafe(duk_hthread *thr, duk_idx_t idx) {
function DUK_INTERNAL (line 600) | DUK_INTERNAL void duk_set_top_and_wipe(duk_hthread *thr, duk_idx_t top, ...
function DUK_EXTERNAL (line 612) | DUK_EXTERNAL duk_idx_t duk_get_top_index(duk_hthread *thr) {
function DUK_INTERNAL (line 631) | DUK_INTERNAL duk_idx_t duk_get_top_index_unsafe(duk_hthread *thr) {
function DUK_EXTERNAL (line 640) | DUK_EXTERNAL duk_idx_t duk_require_top_index(duk_hthread *thr) {
function DUK_NOINLINE (line 677) | DUK_NOINLINE duk_bool_t duk__resize_valstack(duk_hthread *thr, duk_size_...
function DUK_NOINLINE (line 824) | DUK_NOINLINE duk_bool_t duk__valstack_grow(duk_hthread *thr, duk_size_t ...
function duk_valstack_grow_check_throw (line 871) | void duk_valstack_grow_check_throw(duk_hthread *thr, duk_size_t min_byte...
function duk_bool_t (line 889) | duk_bool_t duk_valstack_grow_check_nothrow(duk_hthread *thr, duk_size_t ...
function DUK_INTERNAL (line 904) | DUK_INTERNAL void duk_valstack_shrink_check_nothrow(duk_hthread *thr, du...
function DUK_EXTERNAL (line 971) | DUK_EXTERNAL duk_bool_t duk_check_stack(duk_hthread *thr, duk_idx_t extr...
function DUK_EXTERNAL (line 994) | DUK_EXTERNAL void duk_require_stack(duk_hthread *thr, duk_idx_t extra) {
function DUK_EXTERNAL (line 1017) | DUK_EXTERNAL duk_bool_t duk_check_stack_top(duk_hthread *thr, duk_idx_t ...
function DUK_EXTERNAL (line 1040) | DUK_EXTERNAL void duk_require_stack_top(duk_hthread *thr, duk_idx_t top) {
function DUK_EXTERNAL (line 1067) | DUK_EXTERNAL void duk_swap(duk_hthread *thr, duk_idx_t idx1, duk_idx_t i...
function DUK_EXTERNAL (line 1085) | DUK_EXTERNAL void duk_swap_top(duk_hthread *thr, duk_idx_t idx) {
function DUK_EXTERNAL (line 1091) | DUK_EXTERNAL void duk_dup(duk_hthread *thr, duk_idx_t from_idx) {
function DUK_EXTERNAL (line 1106) | DUK_EXTERNAL void duk_dup_top(duk_hthread *thr) {
function DUK_INTERNAL (line 1129) | DUK_INTERNAL void duk_dup_0(duk_hthread *thr) {
function DUK_INTERNAL (line 1133) | DUK_INTERNAL void duk_dup_1(duk_hthread *thr) {
function DUK_INTERNAL (line 1137) | DUK_INTERNAL void duk_dup_2(duk_hthread *thr) {
function DUK_INTERNAL (line 1141) | DUK_INTERNAL void duk_dup_m2(duk_hthread *thr) {
function DUK_INTERNAL (line 1145) | DUK_INTERNAL void duk_dup_m3(duk_hthread *thr) {
function DUK_INTERNAL (line 1149) | DUK_INTERNAL void duk_dup_m4(duk_hthread *thr) {
function DUK_EXTERNAL (line 1154) | DUK_EXTERNAL void duk_insert(duk_hthread *thr, duk_idx_t to_idx) {
function DUK_INTERNAL (line 1188) | DUK_INTERNAL void duk_insert_undefined(duk_hthread *thr, duk_idx_t idx) {
function DUK_INTERNAL (line 1196) | DUK_INTERNAL void duk_insert_undefined_n(duk_hthread *thr, duk_idx_t idx...
function DUK_EXTERNAL (line 1211) | DUK_EXTERNAL void duk_replace(duk_hthread *thr, duk_idx_t to_idx) {
function DUK_EXTERNAL (line 1233) | DUK_EXTERNAL void duk_copy(duk_hthread *thr, duk_idx_t from_idx, duk_idx...
function DUK_EXTERNAL (line 1248) | DUK_EXTERNAL void duk_remove(duk_hthread *thr, duk_idx_t idx) {
function DUK_INTERNAL (line 1287) | DUK_INTERNAL void duk_remove_unsafe(duk_hthread *thr, duk_idx_t idx) {
function DUK_INTERNAL (line 1293) | DUK_INTERNAL void duk_remove_m2(duk_hthread *thr) {
function DUK_INTERNAL (line 1299) | DUK_INTERNAL void duk_remove_n(duk_hthread *thr, duk_idx_t idx, duk_idx_...
function DUK_INTERNAL (line 1344) | DUK_INTERNAL void duk_remove_n_unsafe(duk_hthread *thr, duk_idx_t idx, d...
function DUK_EXTERNAL (line 1354) | DUK_EXTERNAL void duk_xcopymove_raw(duk_hthread *to_thr, duk_hthread *fr...
function DUK_INTERNAL (line 1430) | DUK_INTERNAL duk_tval *duk_reserve_gap(duk_hthread *thr, duk_idx_t idx_b...
function DUK_EXTERNAL (line 1460) | DUK_EXTERNAL void duk_require_undefined(duk_hthread *thr, duk_idx_t idx) {
function DUK_EXTERNAL (line 1473) | DUK_EXTERNAL void duk_require_null(duk_hthread *thr, duk_idx_t idx) {
function duk_bool_t (line 1486) | duk_bool_t duk__get_boolean_raw(duk_hthread *thr, duk_idx_t idx, duk_boo...
function DUK_EXTERNAL (line 1505) | DUK_EXTERNAL duk_bool_t duk_get_boolean(duk_hthread *thr, duk_idx_t idx) {
function DUK_EXTERNAL (line 1511) | DUK_EXTERNAL duk_bool_t duk_get_boolean_default(duk_hthread *thr, duk_id...
function DUK_EXTERNAL (line 1517) | DUK_EXTERNAL duk_bool_t duk_require_boolean(duk_hthread *thr, duk_idx_t ...
function DUK_EXTERNAL (line 1535) | DUK_EXTERNAL duk_bool_t duk_opt_boolean(duk_hthread *thr, duk_idx_t idx,...
function duk_double_t (line 1544) | duk_double_t duk__get_number_raw(duk_hthread *thr, duk_idx_t idx, duk_do...
function DUK_EXTERNAL (line 1573) | DUK_EXTERNAL duk_double_t duk_get_number(duk_hthread *thr, duk_idx_t idx) {
function DUK_EXTERNAL (line 1578) | DUK_EXTERNAL duk_double_t duk_get_number_default(duk_hthread *thr, duk_i...
function DUK_EXTERNAL (line 1583) | DUK_EXTERNAL duk_double_t duk_require_number(duk_hthread *thr, duk_idx_t...
function DUK_EXTERNAL (line 1606) | DUK_EXTERNAL duk_double_t duk_opt_number(duk_hthread *thr, duk_idx_t idx...
function DUK_EXTERNAL (line 1616) | DUK_EXTERNAL duk_int_t duk_get_int(duk_hthread *thr, duk_idx_t idx) {
function DUK_EXTERNAL (line 1622) | DUK_EXTERNAL duk_uint_t duk_get_uint(duk_hthread *thr, duk_idx_t idx) {
function DUK_EXTERNAL (line 1628) | DUK_EXTERNAL duk_int_t duk_get_int_default(duk_hthread *thr, duk_idx_t i...
function DUK_EXTERNAL (line 1634) | DUK_EXTERNAL duk_uint_t duk_get_uint_default(duk_hthread *thr, duk_idx_t...
function DUK_EXTERNAL (line 1640) | DUK_EXTERNAL duk_int_t duk_require_int(duk_hthread *thr, duk_idx_t idx) {
function DUK_EXTERNAL (line 1646) | DUK_EXTERNAL duk_uint_t duk_require_uint(duk_hthread *thr, duk_idx_t idx) {
function DUK_EXTERNAL (line 1652) | DUK_EXTERNAL duk_int_t duk_opt_int(duk_hthread *thr, duk_idx_t idx, duk_...
function DUK_EXTERNAL (line 1661) | DUK_EXTERNAL duk_uint_t duk_opt_uint(duk_hthread *thr, duk_idx_t idx, du...
function DUK_EXTERNAL (line 1670) | DUK_EXTERNAL const char *duk_get_lstring(duk_hthread *thr, duk_idx_t idx...
function DUK_EXTERNAL (line 1692) | DUK_EXTERNAL const char *duk_require_lstring(duk_hthread *thr, duk_idx_t...
function DUK_INTERNAL (line 1705) | DUK_INTERNAL const char *duk_require_lstring_notsymbol(duk_hthread *thr,...
function DUK_EXTERNAL (line 1718) | DUK_EXTERNAL const char *duk_get_string(duk_hthread *thr, duk_idx_t idx) {
function DUK_EXTERNAL (line 1731) | DUK_EXTERNAL const char *duk_opt_lstring(duk_hthread *thr, duk_idx_t idx...
function DUK_EXTERNAL (line 1743) | DUK_EXTERNAL const char *duk_opt_string(duk_hthread *thr, duk_idx_t idx,...
function DUK_EXTERNAL (line 1752) | DUK_EXTERNAL const char *duk_get_lstring_default(duk_hthread *thr, duk_i...
function DUK_EXTERNAL (line 1774) | DUK_EXTERNAL const char *duk_get_string_default(duk_hthread *thr, duk_id...
function DUK_INTERNAL (line 1787) | DUK_INTERNAL const char *duk_get_string_notsymbol(duk_hthread *thr, duk_...
function DUK_EXTERNAL (line 1800) | DUK_EXTERNAL const char *duk_require_string(duk_hthread *thr, duk_idx_t ...
function DUK_INTERNAL (line 1806) | DUK_INTERNAL const char *duk_require_string_notsymbol(duk_hthread *thr, ...
function DUK_EXTERNAL (line 1816) | DUK_EXTERNAL void duk_require_object(duk_hthread *thr, duk_idx_t idx) {
function DUK_LOCAL (line 1829) | DUK_LOCAL void *duk__get_pointer_raw(duk_hthread *thr, duk_idx_t idx, vo...
function DUK_EXTERNAL (line 1845) | DUK_EXTERNAL void *duk_get_pointer(duk_hthread *thr, duk_idx_t idx) {
function DUK_EXTERNAL (line 1850) | DUK_EXTERNAL void *duk_opt_pointer(duk_hthread *thr, duk_idx_t idx, void...
function DUK_EXTERNAL (line 1859) | DUK_EXTERNAL void *duk_get_pointer_default(duk_hthread *thr, duk_idx_t i...
function DUK_EXTERNAL (line 1864) | DUK_EXTERNAL void *duk_require_pointer(duk_hthread *thr, duk_idx_t idx) {
function DUK_INTERNAL (line 1884) | DUK_INTERNAL void *duk_get_voidptr(duk_hthread *thr, duk_idx_t idx) {
function DUK_LOCAL (line 1902) | DUK_LOCAL void *duk__get_buffer_helper(duk_hthread *thr, duk_idx_t idx, ...
function DUK_EXTERNAL (line 1937) | DUK_EXTERNAL void *duk_get_buffer(duk_hthread *thr, duk_idx_t idx, duk_s...
function DUK_EXTERNAL (line 1943) | DUK_EXTERNAL void *duk_opt_buffer(duk_hthread *thr, duk_idx_t idx, duk_s...
function DUK_EXTERNAL (line 1955) | DUK_EXTERNAL void *duk_get_buffer_default(duk_hthread *thr, duk_idx_t id...
function DUK_EXTERNAL (line 1961) | DUK_EXTERNAL void *duk_require_buffer(duk_hthread *thr, duk_idx_t idx, d...
function DUK_INTERNAL (line 1972) | DUK_INTERNAL void *duk_get_buffer_data_raw(duk_hthread *thr, duk_idx_t i...
function DUK_EXTERNAL (line 2034) | DUK_EXTERNAL void *duk_get_buffer_data(duk_hthread *thr, duk_idx_t idx, ...
function DUK_EXTERNAL (line 2039) | DUK_EXTERNAL void *duk_get_buffer_data_default(duk_hthread *thr, duk_idx...
function DUK_EXTERNAL (line 2044) | DUK_EXTERNAL void *duk_opt_buffer_data(duk_hthread *thr, duk_idx_t idx, ...
function DUK_EXTERNAL (line 2056) | DUK_EXTERNAL void *duk_require_buffer_data(duk_hthread *thr, duk_idx_t i...
function DUK_LOCAL (line 2066) | DUK_LOCAL duk_heaphdr *duk__get_tagged_heaphdr_raw(duk_hthread *thr, duk...
function DUK_INTERNAL (line 2084) | DUK_INTERNAL duk_hstring *duk_get_hstring(duk_hthread *thr, duk_idx_t id...
function DUK_INTERNAL (line 2089) | DUK_INTERNAL duk_hstring *duk_get_hstring_notsymbol(duk_hthread *thr, du...
function DUK_INTERNAL (line 2101) | DUK_INTERNAL duk_hstring *duk_require_hstring(duk_hthread *thr, duk_idx_...
function DUK_INTERNAL (line 2114) | DUK_INTERNAL duk_hstring *duk_require_hstring_notsymbol(duk_hthread *thr...
function DUK_INTERNAL (line 2127) | DUK_INTERNAL duk_hobject *duk_get_hobject(duk_hthread *thr, duk_idx_t id...
function DUK_INTERNAL (line 2132) | DUK_INTERNAL duk_hobject *duk_require_hobject(duk_hthread *thr, duk_idx_...
function DUK_INTERNAL (line 2145) | DUK_INTERNAL duk_hbuffer *duk_get_hbuffer(duk_hthread *thr, duk_idx_t id...
function DUK_INTERNAL (line 2150) | DUK_INTERNAL duk_hbuffer *duk_require_hbuffer(duk_hthread *thr, duk_idx_...
function DUK_INTERNAL (line 2163) | DUK_INTERNAL duk_hthread *duk_get_hthread(duk_hthread *thr, duk_idx_t id...
function DUK_INTERNAL (line 2175) | DUK_INTERNAL duk_hthread *duk_require_hthread(duk_hthread *thr, duk_idx_...
function DUK_INTERNAL (line 2188) | DUK_INTERNAL duk_hcompfunc *duk_get_hcompfunc(duk_hthread *thr, duk_idx_...
function DUK_INTERNAL (line 2200) | DUK_INTERNAL duk_hcompfunc *duk_require_hcompfunc(duk_hthread *thr, duk_...
function DUK_INTERNAL (line 2213) | DUK_INTERNAL duk_hnatfunc *duk_get_hnatfunc(duk_hthread *thr, duk_idx_t ...
function DUK_INTERNAL (line 2225) | DUK_INTERNAL duk_hnatfunc *duk_require_hnatfunc(duk_hthread *thr, duk_id...
function DUK_EXTERNAL (line 2238) | DUK_EXTERNAL duk_c_function duk_get_c_function(duk_hthread *thr, duk_idx...
function DUK_EXTERNAL (line 2262) | DUK_EXTERNAL duk_c_function duk_opt_c_function(duk_hthread *thr, duk_idx...
function DUK_EXTERNAL (line 2271) | DUK_EXTERNAL duk_c_function duk_get_c_function_default(duk_hthread *thr,...
function DUK_EXTERNAL (line 2284) | DUK_EXTERNAL duk_c_function duk_require_c_function(duk_hthread *thr, duk...
function DUK_EXTERNAL (line 2297) | DUK_EXTERNAL void duk_require_function(duk_hthread *thr, duk_idx_t idx) {
function DUK_EXTERNAL (line 2305) | DUK_EXTERNAL void duk_require_constructable(duk_hthread *thr, duk_idx_t ...
function DUK_EXTERNAL (line 2318) | DUK_EXTERNAL duk_hthread *duk_get_context(duk_hthread *thr, duk_idx_t id...
function DUK_EXTERNAL (line 2324) | DUK_EXTERNAL duk_hthread *duk_require_context(duk_hthread *thr, duk_idx_...
function DUK_EXTERNAL (line 2330) | DUK_EXTERNAL duk_hthread *duk_opt_context(duk_hthread *thr, duk_idx_t id...
function DUK_EXTERNAL (line 2339) | DUK_EXTERNAL duk_hthread *duk_get_context_default(duk_hthread *thr, duk_...
function DUK_EXTERNAL (line 2352) | DUK_EXTERNAL void *duk_get_heapptr(duk_hthread *thr, duk_idx_t idx) {
function DUK_EXTERNAL (line 2369) | DUK_EXTERNAL void *duk_opt_heapptr(duk_hthread *thr, duk_idx_t idx, void...
function DUK_EXTERNAL (line 2378) | DUK_EXTERNAL void *duk_get_heapptr_default(duk_hthread *thr, duk_idx_t i...
function DUK_EXTERNAL (line 2391) | DUK_EXTERNAL void *duk_require_heapptr(duk_hthread *thr, duk_idx_t idx) {
function DUK_LOCAL (line 2410) | DUK_LOCAL duk_hobject *duk__get_hobject_promote_mask_raw(duk_hthread *th...
function DUK_INTERNAL (line 2447) | DUK_INTERNAL duk_hobject *duk_get_hobject_promote_mask(duk_hthread *thr,...
function DUK_INTERNAL (line 2455) | DUK_INTERNAL duk_hobject *duk_require_hobject_promote_mask(duk_hthread *...
function DUK_INTERNAL (line 2463) | DUK_INTERNAL duk_hobject *duk_require_hobject_accept_mask(duk_hthread *t...
function DUK_INTERNAL (line 2468) | DUK_INTERNAL duk_hobject *duk_get_hobject_with_class(duk_hthread *thr, d...
function DUK_INTERNAL (line 2482) | DUK_INTERNAL duk_hobject *duk_require_hobject_with_class(duk_hthread *th...
function DUK_EXTERNAL (line 2501) | DUK_EXTERNAL duk_size_t duk_get_length(duk_hthread *thr, duk_idx_t idx) {
function DUK_LOCAL (line 2586) | DUK_LOCAL duk_heaphdr *duk__known_heaphdr(duk_hthread *thr, duk_idx_t id...
function DUK_INTERNAL (line 2603) | DUK_INTERNAL duk_hstring *duk_known_hstring(duk_hthread *thr, duk_idx_t ...
function DUK_INTERNAL (line 2609) | DUK_INTERNAL duk_hobject *duk_known_hobject(duk_hthread *thr, duk_idx_t ...
function DUK_INTERNAL (line 2615) | DUK_INTERNAL duk_hbuffer *duk_known_hbuffer(duk_hthread *thr, duk_idx_t ...
function DUK_INTERNAL (line 2621) | DUK_INTERNAL duk_hcompfunc *duk_known_hcompfunc(duk_hthread *thr, duk_id...
function DUK_INTERNAL (line 2627) | DUK_INTERNAL duk_hnatfunc *duk_known_hnatfunc(duk_hthread *thr, duk_idx_...
function DUK_EXTERNAL (line 2633) | DUK_EXTERNAL void duk_set_length(duk_hthread *thr, duk_idx_t idx, duk_si...
function DUK_LOCAL (line 2651) | DUK_LOCAL duk_bool_t duk__defaultvalue_coerce_attempt(duk_hthread *thr, ...
function DUK_EXTERNAL (line 2668) | DUK_EXTERNAL void duk_to_undefined(duk_hthread *thr, duk_idx_t idx) {
function DUK_EXTERNAL (line 2678) | DUK_EXTERNAL void duk_to_null(duk_hthread *thr, duk_idx_t idx) {
function DUK_LOCAL (line 2692) | DUK_LOCAL void duk__to_primitive_helper(duk_hthread *thr, duk_idx_t idx,...
function DUK_EXTERNAL (line 2776) | DUK_EXTERNAL void duk_to_primitive(duk_hthread *thr, duk_idx_t idx, duk_...
function DUK_INTERNAL (line 2781) | DUK_INTERNAL void duk_to_primitive_ordinary(duk_hthread *thr, duk_idx_t ...
function DUK_EXTERNAL (line 2787) | DUK_EXTERNAL duk_bool_t duk_to_boolean(duk_hthread *thr, duk_idx_t idx) {
function DUK_INTERNAL (line 2806) | DUK_INTERNAL duk_bool_t duk_to_boolean_top_pop(duk_hthread *thr) {
function DUK_EXTERNAL (line 2822) | DUK_EXTERNAL duk_double_t duk_to_number(duk_hthread *thr, duk_idx_t idx) {
function DUK_INTERNAL (line 2842) | DUK_INTERNAL duk_double_t duk_to_number_m1(duk_hthread *thr) {
function DUK_INTERNAL (line 2846) | DUK_INTERNAL duk_double_t duk_to_number_m2(duk_hthread *thr) {
function DUK_INTERNAL (line 2851) | DUK_INTERNAL duk_double_t duk_to_number_tval(duk_hthread *thr, duk_tval ...
type duk_double_t (line 2886) | typedef duk_double_t (*duk__toint_coercer)(duk_hthread *thr, duk_tval *tv);
function DUK_LOCAL (line 2888) | DUK_LOCAL duk_double_t duk__to_int_uint_helper(duk_hthread *thr, duk_idx...
function DUK_EXTERNAL (line 2916) | DUK_EXTERNAL duk_int_t duk_to_int(duk_hthread *thr, duk_idx_t idx) {
function DUK_EXTERNAL (line 2925) | DUK_EXTERNAL duk_uint_t duk_to_uint(duk_hthread *thr, duk_idx_t idx) {
function DUK_EXTERNAL (line 2934) | DUK_EXTERNAL duk_int32_t duk_to_int32(duk_hthread *thr, duk_idx_t idx) {
function DUK_EXTERNAL (line 2950) | DUK_EXTERNAL duk_uint32_t duk_to_uint32(duk_hthread *thr, duk_idx_t idx) {
function DUK_EXTERNAL (line 2966) | DUK_EXTERNAL duk_uint16_t duk_to_uint16(duk_hthread *thr, duk_idx_t idx) {
function DUK_INTERNAL (line 2984) | DUK_INTERNAL duk_uint8_t duk_to_uint8clamped(duk_hthread *thr, duk_idx_t...
function DUK_EXTERNAL (line 3021) | DUK_EXTERNAL const char *duk_to_lstring(duk_hthread *thr, duk_idx_t idx,...
function DUK_LOCAL (line 3029) | DUK_LOCAL duk_ret_t duk__safe_to_string_raw(duk_hthread *thr, void *udat...
function DUK_EXTERNAL (line 3037) | DUK_EXTERNAL const char *duk_safe_to_lstring(duk_hthread *thr, duk_idx_t...
function DUK_EXTERNAL (line 3070) | DUK_EXTERNAL const char *duk_to_stacktrace(duk_hthread *thr, duk_idx_t i...
function DUK_LOCAL (line 3091) | DUK_LOCAL duk_ret_t duk__safe_to_stacktrace_raw(duk_hthread *thr, void *...
function DUK_EXTERNAL (line 3100) | DUK_EXTERNAL const char *duk_safe_to_stacktrace(duk_hthread *thr, duk_id...
function DUK_INTERNAL (line 3124) | DUK_INTERNAL duk_hstring *duk_to_property_key_hstring(duk_hthread *thr, ...
function DUK_INTERNAL (line 3144) | DUK_INTERNAL duk_hstring *duk_safe_to_hstring(duk_hthread *thr, duk_idx_...
function DUK_INTERNAL (line 3156) | DUK_INTERNAL void duk_push_class_string_tval(duk_hthread *thr, duk_tval ...
function DUK_INTERNAL (line 3283) | DUK_INTERNAL void duk_push_class_string_tval(duk_hthread *thr, duk_tval ...
function DUK_INTERNAL (line 3362) | DUK_INTERNAL duk_int_t duk_to_int_clamped_raw(duk_hthread *thr, duk_idx_...
function DUK_INTERNAL (line 3425) | DUK_INTERNAL duk_int_t duk_to_int_clamped(duk_hthread *thr, duk_idx_t id...
function DUK_INTERNAL (line 3433) | DUK_INTERNAL duk_int_t duk_to_int_check_range(duk_hthread *thr, duk_idx_...
function DUK_EXTERNAL (line 3438) | DUK_EXTERNAL const char *duk_to_string(duk_hthread *thr, duk_idx_t idx) {
function DUK_INTERNAL (line 3539) | DUK_INTERNAL duk_hstring *duk_to_hstring(duk_hthread *thr, duk_idx_t idx) {
function DUK_INTERNAL (line 3550) | DUK_INTERNAL duk_hstring *duk_to_hstring_m1(duk_hthread *thr) {
function DUK_INTERNAL (line 3555) | DUK_INTERNAL duk_hstring *duk_to_hstring_acceptsymbol(duk_hthread *thr, ...
function DUK_EXTERNAL (line 3574) | DUK_EXTERNAL const char *duk_buffer_to_string(duk_hthread *thr, duk_idx_...
function DUK_EXTERNAL (line 3591) | DUK_EXTERNAL void *duk_to_buffer_raw(duk_hthread *thr, duk_idx_t idx, du...
function DUK_EXTERNAL (line 3646) | DUK_EXTERNAL void *duk_to_pointer(duk_hthread *thr, duk_idx_t idx) {
function DUK_LOCAL (line 3696) | DUK_LOCAL void duk__push_func_from_lightfunc(duk_hthread *thr, duk_c_fun...
function DUK_EXTERNAL (line 3734) | DUK_EXTERNAL void duk_to_object(duk_hthread *thr, duk_idx_t idx) {
function DUK_INTERNAL (line 3859) | DUK_INTERNAL duk_hobject *duk_to_hobject(duk_hthread *thr, duk_idx_t idx) {
function DUK_LOCAL (line 3873) | DUK_LOCAL duk_bool_t duk__tag_check(duk_hthread *thr, duk_idx_t idx, duk...
function DUK_LOCAL (line 3881) | DUK_LOCAL duk_bool_t duk__obj_flag_any_default_false(duk_hthread *thr, d...
function DUK_INTERNAL (line 3893) | DUK_INTERNAL duk_int_t duk_get_type_tval(duk_tval *tv) {
function DUK_EXTERNAL (line 3932) | DUK_EXTERNAL duk_int_t duk_get_type(duk_hthread *thr, duk_idx_t idx) {
function DUK_INTERNAL (line 3957) | DUK_INTERNAL const char *duk_get_type_name(duk_hthread *thr, duk_idx_t i...
function DUK_INTERNAL (line 3970) | DUK_INTERNAL duk_small_uint_t duk_get_class_number(duk_hthread *thr, duk...
function DUK_EXTERNAL (line 3996) | DUK_EXTERNAL duk_bool_t duk_check_type(duk_hthread *thr, duk_idx_t idx, ...
function DUK_INTERNAL (line 4002) | DUK_INTERNAL duk_uint_t duk_get_type_mask_tval(duk_tval *tv) {
function DUK_EXTERNAL (line 4041) | DUK_EXTERNAL duk_uint_t duk_get_type_mask(duk_hthread *thr, duk_idx_t id...
function DUK_EXTERNAL (line 4052) | DUK_EXTERNAL duk_bool_t duk_check_type_mask(duk_hthread *thr, duk_idx_t ...
function DUK_EXTERNAL (line 4065) | DUK_EXTERNAL duk_bool_t duk_is_undefined(duk_hthread *thr, duk_idx_t idx) {
function DUK_EXTERNAL (line 4070) | DUK_EXTERNAL duk_bool_t duk_is_null(duk_hthread *thr, duk_idx_t idx) {
function DUK_EXTERNAL (line 4075) | DUK_EXTERNAL duk_bool_t duk_is_boolean(duk_hthread *thr, duk_idx_t idx) {
function DUK_EXTERNAL (line 4080) | DUK_EXTERNAL duk_bool_t duk_is_number(duk_hthread *thr, duk_idx_t idx) {
function DUK_EXTERNAL (line 4097) | DUK_EXTERNAL duk_bool_t duk_is_nan(duk_hthread *thr, duk_idx_t idx) {
function DUK_EXTERNAL (line 4118) | DUK_EXTERNAL duk_bool_t duk_is_string(duk_hthread *thr, duk_idx_t idx) {
function DUK_INTERNAL (line 4123) | DUK_INTERNAL duk_bool_t duk_is_string_notsymbol(duk_hthread *thr, duk_id...
function DUK_EXTERNAL (line 4128) | DUK_EXTERNAL duk_bool_t duk_is_object(duk_hthread *thr, duk_idx_t idx) {
function DUK_EXTERNAL (line 4133) | DUK_EXTERNAL duk_bool_t duk_is_buffer(duk_hthread *thr, duk_idx_t idx) {
function DUK_EXTERNAL (line 4139) | DUK_EXTERNAL duk_bool_t duk_is_buffer_data(duk_hthread *thr, duk_idx_t i...
function DUK_EXTERNAL (line 4158) | DUK_EXTERNAL duk_bool_t duk_is_buffer_data(duk_hthread *thr, duk_idx_t i...
function DUK_EXTERNAL (line 4166) | DUK_EXTERNAL duk_bool_t duk_is_pointer(duk_hthread *thr, duk_idx_t idx) {
function DUK_EXTERNAL (line 4171) | DUK_EXTERNAL duk_bool_t duk_is_lightfunc(duk_hthread *thr, duk_idx_t idx) {
function DUK_EXTERNAL (line 4176) | DUK_EXTERNAL duk_bool_t duk_is_symbol(duk_hthread *thr, duk_idx_t idx) {
function DUK_EXTERNAL (line 4190) | DUK_EXTERNAL duk_bool_t duk_is_array(duk_hthread *thr, duk_idx_t idx) {
function DUK_EXTERNAL (line 4202) | DUK_EXTERNAL duk_bool_t duk_is_function(duk_hthread *thr, duk_idx_t idx) {
function DUK_INTERNAL (line 4220) | DUK_INTERNAL duk_bool_t duk_is_callable_tval(duk_hthread *thr, duk_tval ...
function DUK_EXTERNAL (line 4237) | DUK_EXTERNAL duk_bool_t duk_is_constructable(duk_hthread *thr, duk_idx_t...
function DUK_EXTERNAL (line 4255) | DUK_EXTERNAL duk_bool_t duk_is_c_function(duk_hthread *thr, duk_idx_t id...
function DUK_EXTERNAL (line 4262) | DUK_EXTERNAL duk_bool_t duk_is_ecmascript_function(duk_hthread *thr, duk...
function DUK_EXTERNAL (line 4269) | DUK_EXTERNAL duk_bool_t duk_is_bound_function(duk_hthread *thr, duk_idx_...
function DUK_EXTERNAL (line 4276) | DUK_EXTERNAL duk_bool_t duk_is_thread(duk_hthread *thr, duk_idx_t idx) {
function DUK_EXTERNAL (line 4288) | DUK_EXTERNAL duk_bool_t duk_is_fixed_buffer(duk_hthread *thr, duk_idx_t ...
function DUK_EXTERNAL (line 4303) | DUK_EXTERNAL duk_bool_t duk_is_dynamic_buffer(duk_hthread *thr, duk_idx_...
function DUK_EXTERNAL (line 4318) | DUK_EXTERNAL duk_bool_t duk_is_external_buffer(duk_hthread *thr, duk_idx...
function DUK_EXTERNAL (line 4333) | DUK_EXTERNAL duk_errcode_t duk_get_error_code(duk_hthread *thr, duk_idx_...
function DUK_INTERNAL (line 4381) | DUK_INTERNAL void duk_push_tval(duk_hthread *thr, duk_tval *tv) {
function DUK_EXTERNAL (line 4393) | DUK_EXTERNAL void duk_push_undefined(duk_hthread *thr) {
function DUK_EXTERNAL (line 4405) | DUK_EXTERNAL void duk_push_null(duk_hthread *thr) {
function DUK_EXTERNAL (line 4414) | DUK_EXTERNAL void duk_push_boolean(duk_hthread *thr, duk_bool_t val) {
function DUK_EXTERNAL (line 4425) | DUK_EXTERNAL void duk_push_true(duk_hthread *thr) {
function DUK_EXTERNAL (line 4434) | DUK_EXTERNAL void duk_push_false(duk_hthread *thr) {
function DUK_EXTERNAL (line 4444) | DUK_EXTERNAL void duk_push_number(duk_hthread *thr, duk_double_t val) {
function DUK_EXTERNAL (line 4456) | DUK_EXTERNAL void duk_push_int(duk_hthread *thr, duk_int_t val) {
function DUK_EXTERNAL (line 4485) | DUK_EXTERNAL void duk_push_uint(duk_hthread *thr, duk_uint_t val) {
function DUK_EXTERNAL (line 4515) | DUK_EXTERNAL void duk_push_nan(duk_hthread *thr) {
function DUK_EXTERNAL (line 4527) | DUK_EXTERNAL const char *duk_push_lstring(duk_hthread *thr, const char *...
function DUK_EXTERNAL (line 4561) | DUK_EXTERNAL const char *duk_push_string(duk_hthread *thr, const char *s...
function DUK_EXTERNAL (line 4574) | DUK_EXTERNAL const char *duk_push_literal_raw(duk_hthread *thr, const ch...
function DUK_EXTERNAL (line 4598) | DUK_EXTERNAL const char *duk_push_literal_raw(duk_hthread *thr, const ch...
function DUK_EXTERNAL (line 4608) | DUK_EXTERNAL void duk_push_pointer(duk_hthread *thr, void *val) {
function DUK_INTERNAL (line 4617) | DUK_INTERNAL duk_hstring *duk_push_uint_to_hstring(duk_hthread *thr, duk...
function DUK_LOCAL (line 4629) | DUK_LOCAL void duk__push_this_helper(duk_hthread *thr, duk_small_uint_t ...
function DUK_EXTERNAL (line 4664) | DUK_EXTERNAL void duk_push_this(duk_hthread *thr) {
function DUK_INTERNAL (line 4670) | DUK_INTERNAL void duk_push_this_check_object_coercible(duk_hthread *thr) {
function DUK_INTERNAL (line 4676) | DUK_INTERNAL duk_hobject *duk_push_this_coercible_to_object(duk_hthread ...
function DUK_INTERNAL (line 4687) | DUK_INTERNAL duk_hstring *duk_push_this_coercible_to_string(duk_hthread ...
function DUK_INTERNAL (line 4694) | DUK_INTERNAL duk_tval *duk_get_borrowed_this_tval(duk_hthread *thr) {
function DUK_EXTERNAL (line 4705) | DUK_EXTERNAL void duk_push_new_target(duk_hthread *thr) {
function DUK_EXTERNAL (line 4745) | DUK_EXTERNAL void duk_push_current_function(duk_hthread *thr) {
function DUK_EXTERNAL (line 4758) | DUK_EXTERNAL void duk_push_current_thread(duk_hthread *thr) {
function DUK_EXTERNAL (line 4768) | DUK_EXTERNAL void duk_push_global_object(duk_hthread *thr) {
function DUK_LOCAL (line 4775) | DUK_LOCAL void duk__push_stash(duk_hthread *thr) {
function DUK_EXTERNAL (line 4786) | DUK_EXTERNAL void duk_push_heap_stash(duk_hthread *thr) {
function DUK_EXTERNAL (line 4795) | DUK_EXTERNAL void duk_push_global_stash(duk_hthread *thr) {
function DUK_EXTERNAL (line 4801) | DUK_EXTERNAL void duk_push_thread_stash(duk_hthread *thr, duk_hthread *t...
function DUK_LOCAL (line 4812) | DUK_LOCAL duk_int_t duk__try_push_vsprintf(duk_hthread *thr, void *buf, ...
function DUK_EXTERNAL (line 4829) | DUK_EXTERNAL const char *duk_push_vsprintf(duk_hthread *thr, const char ...
function DUK_EXTERNAL (line 4895) | DUK_EXTERNAL const char *duk_push_sprintf(duk_hthread *thr, const char *...
function DUK_INTERNAL (line 4909) | DUK_INTERNAL duk_hobject *duk_push_object_helper(duk_hthread *thr, duk_u...
function DUK_INTERNAL (line 4941) | DUK_INTERNAL duk_hobject *duk_push_object_helper_proto(duk_hthread *thr,...
function DUK_EXTERNAL (line 4952) | DUK_EXTERNAL duk_idx_t duk_push_object(duk_hthread *thr) {
function DUK_EXTERNAL (line 4963) | DUK_EXTERNAL duk_idx_t duk_push_array(duk_hthread *thr) {
function DUK_EXTERNAL (line 4992) | DUK_EXTERNAL duk_idx_t duk_push_bare_array(duk_hthread *thr) {
function DUK_INTERNAL (line 5019) | DUK_INTERNAL duk_harray *duk_push_harray(duk_hthread *thr) {
function DUK_INTERNAL (line 5035) | DUK_INTERNAL duk_harray *duk_push_harray_with_size(duk_hthread *thr, duk...
function DUK_INTERNAL (line 5052) | DUK_INTERNAL duk_tval *duk_push_harray_with_size_outptr(duk_hthread *thr...
function DUK_EXTERNAL (line 5062) | DUK_EXTERNAL duk_idx_t duk_push_thread_raw(duk_hthread *thr, duk_uint_t ...
function DUK_INTERNAL (line 5119) | DUK_INTERNAL duk_hcompfunc *duk_push_hcompfunc(duk_hthread *thr) {
function DUK_INTERNAL (line 5156) | DUK_INTERNAL duk_hboundfunc *duk_push_hboundfunc(duk_hthread *thr) {
function DUK_LOCAL (line 5186) | DUK_LOCAL duk_idx_t duk__push_c_function_raw(duk_hthread *thr, duk_c_fun...
function DUK_EXTERNAL (line 5231) | DUK_EXTERNAL duk_idx_t duk_push_c_function(duk_hthread *thr, duk_c_funct...
function DUK_INTERNAL (line 5252) | DUK_INTERNAL void duk_push_c_function_builtin(duk_hthread *thr, duk_c_fu...
function DUK_INTERNAL (line 5271) | DUK_INTERNAL void duk_push_c_function_builtin_noconstruct(duk_hthread *t...
function DUK_EXTERNAL (line 5289) | DUK_EXTERNAL duk_idx_t duk_push_c_lightfunc(duk_hthread *thr, duk_c_func...
function DUK_INTERNAL (line 5324) | DUK_INTERNAL duk_hbufobj *duk_push_bufobj_raw(duk_hthread *thr, duk_uint...
function DUK_EXTERNAL (line 5373) | DUK_EXTERNAL void duk_push_buffer_object(duk_hthread *thr, duk_idx_t idx...
function DUK_EXTERNAL (line 5479) | DUK_EXTERNAL void duk_push_buffer_object(duk_hthread *thr, duk_idx_t idx...
function DUK_EXTERNAL (line 5490) | DUK_EXTERNAL duk_idx_t duk_push_error_object_va_raw(duk_hthread *thr, du...
function DUK_EXTERNAL (line 5544) | DUK_EXTERNAL duk_idx_t duk_push_error_object_raw(duk_hthread *thr, duk_e...
function DUK_EXTERNAL (line 5557) | DUK_EXTERNAL duk_idx_t duk_push_error_object_stash(duk_hthread *thr, duk...
function DUK_EXTERNAL (line 5574) | DUK_EXTERNAL void *duk_push_buffer_raw(duk_hthread *thr, duk_size_t size...
function DUK_INTERNAL (line 5603) | DUK_INTERNAL void *duk_push_fixed_buffer_nozero(duk_hthread *thr, duk_si...
function DUK_INTERNAL (line 5608) | DUK_INTERNAL void *duk_push_fixed_buffer_zero(duk_hthread *thr, duk_size...
function DUK_EXTERNAL (line 5625) | DUK_EXTERNAL duk_idx_t duk_push_proxy(duk_hthread *thr, duk_uint_t proxy...
function DUK_EXTERNAL (line 5719) | DUK_EXTERNAL duk_idx_t duk_push_proxy(duk_hthread *thr, duk_uint_t proxy...
function DUK_LOCAL (line 5728) | DUK_LOCAL void duk__validate_push_heapptr(duk_hthread *thr, void *ptr) {
function DUK_EXTERNAL (line 5825) | DUK_EXTERNAL duk_idx_t duk_push_heapptr(duk_hthread *thr, void *ptr) {
function DUK_EXTERNAL (line 5917) | DUK_EXTERNAL duk_idx_t duk_push_bare_object(duk_hthread *thr) {
function DUK_INTERNAL (line 5928) | DUK_INTERNAL void duk_push_hstring(duk_hthread *thr, duk_hstring *h) {
function DUK_INTERNAL (line 5938) | DUK_INTERNAL void duk_push_hstring_stridx(duk_hthread *thr, duk_small_ui...
function DUK_INTERNAL (line 5944) | DUK_INTERNAL void duk_push_hstring_empty(duk_hthread *thr) {
function DUK_INTERNAL (line 5949) | DUK_INTERNAL void duk_push_hobject(duk_hthread *thr, duk_hobject *h) {
function DUK_INTERNAL (line 5959) | DUK_INTERNAL void duk_push_hbuffer(duk_hthread *thr, duk_hbuffer *h) {
function DUK_INTERNAL (line 5969) | DUK_INTERNAL void duk_push_hobject_bidx(duk_hthread *thr, duk_small_int_...
function duk__pop_n_unsafe_raw (line 5981) | void duk__pop_n_unsafe_raw(duk_hthread *thr, duk_idx_t count) {
function DUK_EXTERNAL (line 6015) | DUK_EXTERNAL void duk_pop_n(duk_hthread *thr, duk_idx_t count) {
function DUK_INTERNAL (line 6029) | DUK_INTERNAL void duk_pop_n_unsafe(duk_hthread *thr, duk_idx_t count) {
function DUK_INTERNAL (line 6034) | DUK_INTERNAL void duk_pop_n_unsafe(duk_hthread *thr, duk_idx_t count) {
function DUK_INTERNAL (line 6042) | DUK_INTERNAL void duk_pop_n_nodecref_unsafe(duk_hthread *thr, duk_idx_t ...
function DUK_INTERNAL (line 6062) | DUK_INTERNAL void duk_pop_n_nodecref_unsafe(duk_hthread *thr, duk_idx_t ...
function DUK_EXTERNAL (line 6072) | DUK_EXTERNAL void duk_pop(duk_hthread *thr) {
function DUK_INTERNAL (line 6076) | DUK_INTERNAL void duk_pop_unsafe(duk_hthread *thr) {
function DUK_INTERNAL (line 6080) | DUK_INTERNAL void duk_pop_nodecref_unsafe(duk_hthread *thr) {
function duk__pop_unsafe_raw (line 6085) | void duk__pop_unsafe_raw(duk_hthread *thr) {
function DUK_EXTERNAL (line 6103) | DUK_EXTERNAL void duk_pop(duk_hthread *thr) {
function DUK_INTERNAL (line 6114) | DUK_INTERNAL void duk_pop_unsafe(duk_hthread *thr) {
function DUK_INTERNAL (line 6118) | DUK_INTERNAL void duk_pop_nodecref_unsafe(duk_hthread *thr) {
function DUK_INTERNAL (line 6135) | DUK_INTERNAL void duk_pop_undefined(duk_hthread *thr) {
function DUK_INTERNAL (line 6140) | DUK_INTERNAL void duk_pop_undefined(duk_hthread *thr) {
function DUK_EXTERNAL (line 6154) | DUK_EXTERNAL void duk_pop_2(duk_hthread *thr) {
function DUK_INTERNAL (line 6158) | DUK_INTERNAL void duk_pop_2_unsafe(duk_hthread *thr) {
function DUK_INTERNAL (line 6162) | DUK_INTERNAL void duk_pop_2_nodecref_unsafe(duk_hthread *thr) {
function duk__pop_2_unsafe_raw (line 6167) | void duk__pop_2_unsafe_raw(duk_hthread *thr) {
function DUK_EXTERNAL (line 6192) | DUK_EXTERNAL void duk_pop_2(duk_hthread *thr) {
function DUK_INTERNAL (line 6203) | DUK_INTERNAL void duk_pop_2_unsafe(duk_hthread *thr) {
function DUK_INTERNAL (line 6207) | DUK_INTERNAL void duk_pop_2_nodecref_unsafe(duk_hthread *thr) {
function DUK_EXTERNAL (line 6221) | DUK_EXTERNAL void duk_pop_3(duk_hthread *thr) {
function DUK_INTERNAL (line 6226) | DUK_INTERNAL void duk_pop_3_unsafe(duk_hthread *thr) {
function DUK_INTERNAL (line 6231) | DUK_INTERNAL void duk_pop_3_nodecref_unsafe(duk_hthread *thr) {
function DUK_INTERNAL (line 6242) | DUK_INTERNAL void duk_pack(duk_hthread *thr, duk_idx_t count) {
function DUK_INTERNAL (line 6297) | DUK_INTERNAL duk_idx_t duk_unpack_array_like(duk_hthread *thr, duk_idx_t...
function DUK_EXTERNAL (line 6405) | DUK_EXTERNAL void duk_throw_raw(duk_hthread *thr) {
function DUK_EXTERNAL (line 6450) | DUK_EXTERNAL void duk_fatal_raw(duk_hthread *thr, const char *err_msg) {
function DUK_EXTERNAL (line 6474) | DUK_EXTERNAL void duk_error_va_raw(duk_hthread *thr, duk_errcode_t err_c...
function DUK_EXTERNAL (line 6482) | DUK_EXTERNAL void duk_error_raw(duk_hthread *thr, duk_errcode_t err_code...
function DUK_LOCAL (line 6497) | DUK_LOCAL void duk__throw_error_from_stash(duk_hthread *thr, duk_errcode...
function DUK_EXTERNAL (line 6521) | DUK_EXTERNAL duk_ret_t duk_error_stash(duk_hthread *thr, duk_errcode_t e...
function DUK_EXTERNAL (line 6525) | DUK_EXTERNAL duk_ret_t duk_generic_error_stash(duk_hthread *thr, const c...
function DUK_EXTERNAL (line 6529) | DUK_EXTERNAL duk_ret_t duk_eval_error_stash(duk_hthread *thr, const char...
function DUK_EXTERNAL (line 6533) | DUK_EXTERNAL duk_ret_t duk_range_error_stash(duk_hthread *thr, const cha...
function DUK_EXTERNAL (line 6537) | DUK_EXTERNAL duk_ret_t duk_reference_error_stash(duk_hthread *thr, const...
function DUK_EXTERNAL (line 6541) | DUK_EXTERNAL duk_ret_t duk_syntax_error_stash(duk_hthread *thr, const ch...
function DUK_EXTERNAL (line 6545) | DUK_EXTERNAL duk_ret_t duk_type_error_stash(duk_hthread *thr, const char...
function DUK_EXTERNAL (line 6549) | DUK_EXTERNAL duk_ret_t duk_uri_error_stash(duk_hthread *thr, const char ...
function DUK_EXTERNAL (line 6559) | DUK_EXTERNAL duk_bool_t duk_equals(duk_hthread *thr, duk_idx_t idx1, duk...
function DUK_EXTERNAL (line 6576) | DUK_EXTERNAL duk_bool_t duk_strict_equals(duk_hthread *thr, duk_idx_t id...
function DUK_EXTERNAL (line 6591) | DUK_EXTERNAL duk_bool_t duk_samevalue(duk_hthread *thr, duk_idx_t idx1, ...
function DUK_EXTERNAL (line 6610) | DUK_EXTERNAL duk_bool_t duk_instanceof(duk_hthread *thr, duk_idx_t idx1,...
function DUK_INTERNAL (line 6633) | DUK_INTERNAL void duk_push_lightfunc_name_raw(duk_hthread *thr, duk_c_fu...
function DUK_INTERNAL (line 6654) | DUK_INTERNAL void duk_push_lightfunc_name(duk_hthread *thr, duk_tval *tv) {
function DUK_INTERNAL (line 6665) | DUK_INTERNAL void duk_push_lightfunc_tostring(duk_hthread *thr, duk_tval...
function DUK_INTERNAL (line 6686) | DUK_INTERNAL void duk_push_string_funcptr(duk_hthread *thr, duk_uint8_t ...
function DUK_LOCAL (line 6731) | DUK_LOCAL void duk__push_hstring_readable_unicode(duk_hthread *thr, duk_...
function DUK_LOCAL (line 6782) | DUK_LOCAL const char *duk__push_string_tval_readable(duk_hthread *thr, d...
function DUK_INTERNAL (line 6862) | DUK_INTERNAL const char *duk_push_string_tval_readable(duk_hthread *thr,...
function DUK_INTERNAL (line 6867) | DUK_INTERNAL const char *duk_push_string_readable(duk_hthread *thr, duk_...
function DUK_INTERNAL (line 6872) | DUK_INTERNAL const char *duk_push_string_tval_readable_error(duk_hthread...
function DUK_INTERNAL (line 6877) | DUK_INTERNAL void duk_push_symbol_descriptive_string(duk_hthread *thr, d...
function DUK_INTERNAL (line 6910) | DUK_INTERNAL void duk_push_hnatfunc_name(duk_hthread *thr, duk_hnatfunc ...
function DUK_INTERNAL (line 6931) | DUK_INTERNAL void duk_copy_tvals_incref(duk_hthread *thr, duk_tval *tv_d...
FILE: react_juce/duktape/src-input/duk_api_string.c
function DUK_LOCAL (line 7) | DUK_LOCAL void duk__concat_and_join_helper(duk_hthread *thr, duk_idx_t c...
function DUK_EXTERNAL (line 110) | DUK_EXTERNAL void duk_concat(duk_hthread *thr, duk_idx_t count) {
function DUK_INTERNAL (line 117) | DUK_INTERNAL void duk_concat_2(duk_hthread *thr) {
function DUK_INTERNAL (line 122) | DUK_INTERNAL void duk_concat_2(duk_hthread *thr) {
function DUK_EXTERNAL (line 161) | DUK_EXTERNAL void duk_join(duk_hthread *thr, duk_idx_t count) {
function DUK_EXTERNAL (line 171) | DUK_EXTERNAL void duk_decode_string(duk_hthread *thr, duk_idx_t idx, duk...
function DUK_EXTERNAL (line 194) | DUK_EXTERNAL void duk_map_string(duk_hthread *thr, duk_idx_t idx, duk_ma...
function DUK_EXTERNAL (line 234) | DUK_EXTERNAL void duk_substring(duk_hthread *thr, duk_idx_t idx, duk_siz...
function DUK_EXTERNAL (line 282) | DUK_EXTERNAL void duk_trim(duk_hthread *thr, duk_idx_t idx) {
function DUK_EXTERNAL (line 357) | DUK_EXTERNAL duk_codepoint_t duk_char_code_at(duk_hthread *thr, duk_idx_...
FILE: react_juce/duktape/src-input/duk_api_time.c
function DUK_INTERNAL (line 7) | DUK_INTERNAL duk_double_t duk_time_get_ecmascript_time(duk_hthread *thr) {
function DUK_INTERNAL (line 15) | DUK_INTERNAL duk_double_t duk_time_get_ecmascript_time_nofrac(duk_hthrea...
function DUK_INTERNAL (line 23) | DUK_INTERNAL duk_double_t duk_time_get_monotonic_time(duk_hthread *thr) {
function DUK_EXTERNAL (line 32) | DUK_EXTERNAL duk_double_t duk_get_now(duk_hthread *thr) {
function DUK_EXTERNAL (line 41) | DUK_EXTERNAL duk_double_t duk_get_monotonic_time(duk_hthread *thr) {
function DUK_EXTERNAL (line 49) | DUK_EXTERNAL void duk_time_to_components(duk_hthread *thr, duk_double_t ...
function DUK_EXTERNAL (line 78) | DUK_EXTERNAL duk_double_t duk_components_to_time(duk_hthread *thr, duk_t...
FILE: react_juce/duktape/src-input/duk_bi_array.c
function DUK_LOCAL (line 59) | DUK_LOCAL duk_uint32_t duk__push_this_obj_len_u32(duk_hthread *thr) {
function DUK_LOCAL (line 72) | DUK_LOCAL duk_uint32_t duk__push_this_obj_len_u32_limited(duk_hthread *t...
function DUK_LOCAL (line 92) | DUK_LOCAL duk_harray *duk__arraypart_fastpath_this(duk_hthread *thr) {
function DUK_INTERNAL (line 145) | DUK_INTERNAL duk_ret_t duk_bi_array_constructor(duk_hthread *thr) {
function DUK_INTERNAL (line 181) | DUK_INTERNAL duk_ret_t duk_bi_array_constructor_is_array(duk_hthread *th...
function DUK_INTERNAL (line 193) | DUK_INTERNAL duk_ret_t duk_bi_array_prototype_to_string(duk_hthread *thr) {
function DUK_INTERNAL (line 232) | DUK_INTERNAL duk_ret_t duk_bi_array_prototype_concat(duk_hthread *thr) {
function DUK_INTERNAL (line 368) | DUK_INTERNAL duk_ret_t duk_bi_array_prototype_join_shared(duk_hthread *t...
function DUK_LOCAL (line 451) | DUK_LOCAL duk_ret_t duk__array_pop_fastpath(duk_hthread *thr, duk_harray...
function DUK_INTERNAL (line 491) | DUK_INTERNAL duk_ret_t duk_bi_array_prototype_pop(duk_hthread *thr) {
function DUK_LOCAL (line 525) | DUK_LOCAL duk_ret_t duk__array_push_fastpath(duk_hthread *thr, duk_harra...
function DUK_INTERNAL (line 572) | DUK_INTERNAL duk_ret_t duk_bi_array_prototype_push(duk_hthread *thr) {
function DUK_LOCAL (line 641) | DUK_LOCAL duk_small_int_t duk__array_sort_compare(duk_hthread *thr, duk_...
function DUK_LOCAL (line 760) | DUK_LOCAL void duk__array_sort_swap(duk_hthread *thr, duk_int_t l, duk_i...
function DUK_LOCAL (line 790) | DUK_LOCAL void duk__debuglog_qsort_state(duk_hthread *thr, duk_int_t lo,...
function DUK_LOCAL (line 820) | DUK_LOCAL void duk__array_qsort(duk_hthread *thr, duk_int_t lo, duk_int_...
function DUK_INTERNAL (line 916) | DUK_INTERNAL duk_ret_t duk_bi_array_prototype_sort(duk_hthread *thr) {
function DUK_INTERNAL (line 952) | DUK_INTERNAL duk_ret_t duk_bi_array_prototype_splice(duk_hthread *thr) {
function DUK_INTERNAL (line 1119) | DUK_INTERNAL duk_ret_t duk_bi_array_prototype_reverse(duk_hthread *thr) {
function DUK_INTERNAL (line 1170) | DUK_INTERNAL duk_ret_t duk_bi_array_prototype_slice(duk_hthread *thr) {
function DUK_INTERNAL (line 1236) | DUK_INTERNAL duk_ret_t duk_bi_array_prototype_shift(duk_hthread *thr) {
function DUK_INTERNAL (line 1278) | DUK_INTERNAL duk_ret_t duk_bi_array_prototype_unshift(duk_hthread *thr) {
function DUK_INTERNAL (line 1340) | DUK_INTERNAL duk_ret_t duk_bi_array_prototype_indexof_shared(duk_hthread...
function DUK_INTERNAL (line 1441) | DUK_INTERNAL duk_ret_t duk_bi_array_prototype_iter_shared(duk_hthread *t...
function DUK_INTERNAL (line 1566) | DUK_INTERNAL duk_ret_t duk_bi_array_prototype_reduce_shared(duk_hthread ...
FILE: react_juce/duktape/src-input/duk_bi_boolean.c
function DUK_INTERNAL (line 12) | DUK_INTERNAL duk_ret_t duk_bi_boolean_prototype_tostring_shared(duk_hthr...
function DUK_INTERNAL (line 49) | DUK_INTERNAL duk_ret_t duk_bi_boolean_constructor(duk_hthread *thr) {
FILE: react_juce/duktape/src-input/duk_bi_buffer.c
function DUK_LOCAL (line 117) | DUK_LOCAL duk_hbufobj *duk__hbufobj_promote_this(duk_hthread *thr) {
function DUK_LOCAL (line 141) | DUK_LOCAL duk_heaphdr *duk__getrequire_bufobj_this(duk_hthread *thr, duk...
function DUK_LOCAL (line 184) | DUK_LOCAL duk_hbufobj *duk__get_bufobj_this(duk_hthread *thr) {
function DUK_LOCAL (line 191) | DUK_LOCAL duk_hbufobj *duk__require_bufobj_this(duk_hthread *thr) {
function DUK_LOCAL (line 196) | DUK_LOCAL duk_hbufobj *duk__require_bufobj_value(duk_hthread *thr, duk_i...
function DUK_LOCAL (line 223) | DUK_LOCAL void duk__set_bufobj_buffer(duk_hthread *thr, duk_hbufobj *h_b...
function DUK_LOCAL (line 242) | DUK_LOCAL void duk__resolve_offset_opt_length(duk_hthread *thr,
function DUK_LOCAL (line 301) | DUK_LOCAL void duk__clamp_startend_nonegidx_noshift(duk_hthread *thr,
function DUK_LOCAL (line 338) | DUK_LOCAL void duk__clamp_startend_negidx_shifted(duk_hthread *thr,
function DUK_INTERNAL (line 396) | DUK_INTERNAL void duk_hbufobj_promote_plain(duk_hthread *thr, duk_idx_t ...
function DUK_INTERNAL (line 402) | DUK_INTERNAL void duk_hbufobj_push_uint8array_from_plain(duk_hthread *th...
function DUK_INTERNAL (line 443) | DUK_INTERNAL void duk_hbufobj_push_validated_read(duk_hthread *thr, duk_...
function DUK_INTERNAL (line 481) | DUK_INTERNAL void duk_hbufobj_validated_write(duk_hthread *thr, duk_hbuf...
function DUK_LOCAL (line 535) | DUK_LOCAL duk_hbuffer *duk__hbufobj_fixed_from_argvalue(duk_hthread *thr) {
function DUK_INTERNAL (line 621) | DUK_INTERNAL duk_ret_t duk_bi_nodejs_buffer_constructor(duk_hthread *thr) {
function DUK_INTERNAL (line 646) | DUK_INTERNAL duk_ret_t duk_bi_arraybuffer_constructor(duk_hthread *thr) {
function DUK_INTERNAL (line 688) | DUK_INTERNAL duk_ret_t duk_bi_typedarray_constructor(duk_hthread *thr) {
function DUK_INTERNAL (line 1041) | DUK_INTERNAL duk_ret_t duk_bi_typedarray_constructor(duk_hthread *thr) {
function DUK_INTERNAL (line 1067) | DUK_INTERNAL duk_ret_t duk_bi_dataview_constructor(duk_hthread *thr) {
function DUK_INTERNAL (line 1119) | DUK_INTERNAL duk_ret_t duk_bi_arraybuffer_isview(duk_hthread *thr) {
function DUK_INTERNAL (line 1145) | DUK_INTERNAL duk_ret_t duk_bi_uint8array_allocplain(duk_hthread *thr) {
function DUK_INTERNAL (line 1156) | DUK_INTERNAL duk_ret_t duk_bi_uint8array_plainof(duk_hthread *thr) {
function DUK_INTERNAL (line 1185) | DUK_INTERNAL duk_ret_t duk_bi_nodejs_buffer_tostring(duk_hthread *thr) {
function DUK_INTERNAL (line 1244) | DUK_INTERNAL duk_ret_t duk_bi_nodejs_buffer_tojson(duk_hthread *thr) {
function DUK_INTERNAL (line 1288) | DUK_INTERNAL duk_ret_t duk_bi_buffer_compare_shared(duk_hthread *thr) {
function DUK_INTERNAL (line 1341) | DUK_INTERNAL duk_ret_t duk_bi_nodejs_buffer_fill(duk_hthread *thr) {
function DUK_INTERNAL (line 1415) | DUK_INTERNAL duk_ret_t duk_bi_nodejs_buffer_write(duk_hthread *thr) {
function DUK_INTERNAL (line 1458) | DUK_INTERNAL duk_ret_t duk_bi_nodejs_buffer_copy(duk_hthread *thr) {
function DUK_INTERNAL (line 1596) | DUK_INTERNAL duk_ret_t duk_bi_typedarray_set(duk_hthread *thr) {
function DUK_LOCAL (line 1875) | DUK_LOCAL void duk__arraybuffer_plain_slice(duk_hthread *thr, duk_hbuffe...
function DUK_INTERNAL (line 1907) | DUK_INTERNAL duk_ret_t duk_bi_buffer_slice_shared(duk_hthread *thr) {
function DUK_INTERNAL (line 2060) | DUK_INTERNAL duk_ret_t duk_bi_nodejs_buffer_is_encoding(duk_hthread *thr) {
function DUK_INTERNAL (line 2077) | DUK_INTERNAL duk_ret_t duk_bi_nodejs_buffer_is_buffer(duk_hthread *thr) {
function DUK_INTERNAL (line 2104) | DUK_INTERNAL duk_ret_t duk_bi_nodejs_buffer_byte_length(duk_hthread *thr) {
function DUK_INTERNAL (line 2135) | DUK_INTERNAL duk_ret_t duk_bi_nodejs_buffer_concat(duk_hthread *thr) {
function DUK_INTERNAL (line 2265) | DUK_INTERNAL duk_ret_t duk_bi_buffer_readfield(duk_hthread *thr) {
function DUK_INTERNAL (line 2524) | DUK_INTERNAL duk_ret_t duk_bi_buffer_writefield(duk_hthread *thr) {
function DUK_LOCAL (line 2801) | DUK_LOCAL duk_hbufobj *duk__autospawn_arraybuffer(duk_hthread *thr, duk_...
function DUK_INTERNAL (line 2818) | DUK_INTERNAL duk_ret_t duk_bi_typedarray_buffer_getter(duk_hthread *thr) {
function DUK_INTERNAL (line 2866) | DUK_INTERNAL duk_ret_t duk_bi_typedarray_byteoffset_getter(duk_hthread *...
function DUK_INTERNAL (line 2882) | DUK_INTERNAL duk_ret_t duk_bi_typedarray_bytelength_getter(duk_hthread *...
function DUK_INTERNAL (line 2904) | DUK_INTERNAL duk_ret_t duk_bi_typedarray_buffer_getter(duk_hthread *thr) {
function DUK_INTERNAL (line 2909) | DUK_INTERNAL duk_ret_t duk_bi_typedarray_byteoffset_getter(duk_hthread *...
function DUK_INTERNAL (line 2914) | DUK_INTERNAL duk_ret_t duk_bi_typedarray_bytelength_getter(duk_hthread *...
FILE: react_juce/duktape/src-input/duk_bi_date.c
function DUK_LOCAL (line 189) | DUK_LOCAL duk_bool_t duk__parse_string_iso8601_subset(duk_hthread *thr, ...
function DUK_LOCAL (line 384) | DUK_LOCAL duk_ret_t duk__parse_string(duk_hthread *thr, const char *str) {
function DUK_INTERNAL (line 442) | DUK_INTERNAL duk_bool_t duk_bi_date_is_leap_year(duk_int_t year) {
function DUK_INTERNAL (line 455) | DUK_INTERNAL duk_bool_t duk_bi_date_timeval_in_valid_range(duk_double_t ...
function DUK_INTERNAL (line 459) | DUK_INTERNAL duk_bool_t duk_bi_date_timeval_in_leeway_range(duk_double_t...
function DUK_INTERNAL (line 463) | DUK_INTERNAL duk_bool_t duk_bi_date_year_in_valid_range(duk_double_t x) {
function DUK_LOCAL (line 467) | DUK_LOCAL duk_double_t duk__timeclip(duk_double_t x) {
function DUK_LOCAL (line 483) | DUK_LOCAL duk_int_t duk__div_floor(duk_int_t a, duk_int_t b) {
function DUK_LOCAL (line 497) | DUK_LOCAL duk_int_t duk__day_from_year(duk_int_t year) {
function DUK_LOCAL (line 508) | DUK_LOCAL duk_int_t duk__year_from_day(duk_int_t day, duk_small_int_t *o...
function DUK_LOCAL (line 545) | DUK_LOCAL duk_double_t duk__make_day(duk_double_t year, duk_double_t mon...
function DUK_INTERNAL (line 607) | DUK_INTERNAL void duk_bi_date_timeval_to_parts(duk_double_t d, duk_int_t...
function DUK_INTERNAL (line 753) | DUK_INTERNAL duk_double_t duk_bi_date_get_timeval_from_dparts(duk_double...
function DUK_LOCAL (line 891) | DUK_LOCAL duk_double_t duk__push_this_get_timeval_tzoffset(duk_hthread *...
function DUK_LOCAL (line 934) | DUK_LOCAL duk_double_t duk__push_this_get_timeval(duk_hthread *thr, duk_...
function DUK_LOCAL (line 942) | DUK_LOCAL duk_ret_t duk__set_this_timeval_from_dparts(duk_hthread *thr, ...
function DUK_LOCAL (line 961) | DUK_LOCAL void duk__format_parts_iso8601(duk_int_t *parts, duk_int_t tzo...
function DUK_LOCAL (line 1031) | DUK_LOCAL duk_ret_t duk__to_string_helper(duk_hthread *thr, duk_small_ui...
function DUK_LOCAL (line 1087) | DUK_LOCAL duk_ret_t duk__get_part_helper(duk_hthread *thr, duk_small_uin...
function DUK_LOCAL (line 1119) | DUK_LOCAL duk_ret_t duk__set_part_helper(duk_hthread *thr, duk_small_uin...
function DUK_LOCAL (line 1218) | DUK_LOCAL void duk__twodigit_year_fixup(duk_hthread *thr, duk_idx_t idx_...
function DUK_LOCAL (line 1244) | DUK_LOCAL void duk__set_parts_from_args(duk_hthread *thr, duk_double_t *...
function DUK_LOCAL (line 1419) | DUK_LOCAL duk_small_uint_t duk__date_get_indirect_magic(duk_hthread *thr) {
function DUK_INTERNAL (line 1430) | DUK_INTERNAL duk_ret_t duk_bi_date_constructor(duk_hthread *thr) {
function DUK_INTERNAL (line 1480) | DUK_INTERNAL duk_ret_t duk_bi_date_constructor_parse(duk_hthread *thr) {
function DUK_INTERNAL (line 1484) | DUK_INTERNAL duk_ret_t duk_bi_date_constructor_utc(duk_hthread *thr) {
function DUK_INTERNAL (line 1503) | DUK_INTERNAL duk_ret_t duk_bi_date_constructor_now(duk_hthread *thr) {
function DUK_INTERNAL (line 1546) | DUK_INTERNAL duk_ret_t duk_bi_date_prototype_tostring_shared(duk_hthread...
function DUK_INTERNAL (line 1551) | DUK_INTERNAL duk_ret_t duk_bi_date_prototype_value_of(duk_hthread *thr) {
function DUK_INTERNAL (line 1562) | DUK_INTERNAL duk_ret_t duk_bi_date_prototype_to_json(duk_hthread *thr) {
function DUK_INTERNAL (line 1628) | DUK_INTERNAL duk_ret_t duk_bi_date_prototype_get_shared(duk_hthread *thr) {
function DUK_INTERNAL (line 1633) | DUK_INTERNAL duk_ret_t duk_bi_date_prototype_get_timezone_offset(duk_hth...
function DUK_INTERNAL (line 1713) | DUK_INTERNAL duk_ret_t duk_bi_date_prototype_set_shared(duk_hthread *thr) {
function DUK_INTERNAL (line 1718) | DUK_INTERNAL duk_ret_t duk_bi_date_prototype_set_time(duk_hthread *thr) {
function DUK_INTERNAL (line 1739) | DUK_INTERNAL duk_ret_t duk_bi_date_prototype_toprimitive(duk_hthread *th...
FILE: react_juce/duktape/src-input/duk_bi_date_unix.c
function duk_bi_date_get_now_gettimeofday (line 19) | duk_bi_date_get_now_gettimeofday(void) {
function duk_bi_date_get_now_time (line 38) | duk_bi_date_get_now_time(void) {
function DUK_INTERNAL (line 52) | DUK_INTERNAL duk_int_t duk_bi_date_get_local_tzoffset_gmtime(duk_double_...
function DUK_INTERNAL (line 201) | DUK_INTERNAL duk_bool_t duk_bi_date_parse_string_strptime(duk_hthread *t...
function DUK_INTERNAL (line 236) | DUK_INTERNAL duk_bool_t duk_bi_date_parse_string_getdate(duk_hthread *th...
function DUK_INTERNAL (line 263) | DUK_INTERNAL duk_bool_t duk_bi_date_format_parts_strftime(duk_hthread *t...
function duk_bi_date_get_monotonic_time_clock_gettime (line 315) | duk_bi_date_get_monotonic_time_clock_gettime(void) {
FILE: react_juce/duktape/src-input/duk_bi_date_windows.c
function DUK_LOCAL (line 15) | DUK_LOCAL void duk__convert_systime_to_ularge(const SYSTEMTIME *st, ULAR...
function DUK_LOCAL (line 27) | DUK_LOCAL void duk__convert_filetime_to_ularge(const FILETIME *ft, ULARG...
function DUK_LOCAL (line 33) | DUK_LOCAL void duk__set_systime_jan1970(SYSTEMTIME *st) {
function duk_bi_date_get_now_windows (line 47) | duk_bi_date_get_now_windows(void) {
function duk_bi_date_get_now_windows_subms (line 69) | duk_bi_date_get_now_windows_subms(void) {
function DUK_INTERNAL (line 91) | DUK_INTERNAL duk_int_t duk_bi_date_get_local_tzoffset_windows(duk_double...
function DUK_INTERNAL (line 134) | DUK_INTERNAL duk_int_t duk_bi_date_get_local_tzoffset_windows_no_dst(duk...
function duk_bi_date_get_monotonic_time_windows_qpc (line 171) | duk_bi_date_get_monotonic_time_windows_qpc(void) {
FILE: react_juce/duktape/src-input/duk_bi_duktape.c
function DUK_INTERNAL (line 16) | DUK_INTERNAL duk_ret_t duk_bi_duktape_object_info(duk_hthread *thr) {
function DUK_INTERNAL (line 21) | DUK_INTERNAL duk_ret_t duk_bi_duktape_object_act(duk_hthread *thr) {
function DUK_INTERNAL (line 29) | DUK_INTERNAL duk_ret_t duk_bi_duktape_object_gc(duk_hthread *thr) {
function DUK_INTERNAL (line 43) | DUK_INTERNAL duk_ret_t duk_bi_duktape_object_fin(duk_hthread *thr) {
function DUK_INTERNAL (line 65) | DUK_INTERNAL duk_ret_t duk_bi_duktape_object_enc(duk_hthread *thr) {
function DUK_INTERNAL (line 109) | DUK_INTERNAL duk_ret_t duk_bi_duktape_object_dec(duk_hthread *thr) {
function DUK_INTERNAL (line 152) | DUK_INTERNAL duk_ret_t duk_bi_duktape_object_compact(duk_hthread *thr) {
FILE: react_juce/duktape/src-input/duk_bi_encoding.c
type duk__encode_context (line 14) | typedef struct {
type duk__decode_context (line 19) | typedef struct {
function DUK_LOCAL (line 44) | DUK_LOCAL duk_uint8_t *duk__utf8_emit_repl(duk_uint8_t *ptr) {
function DUK_LOCAL (line 51) | DUK_LOCAL void duk__utf8_decode_init(duk__decode_context *dec_ctx) {
function DUK_LOCAL (line 62) | DUK_LOCAL duk_codepoint_t duk__utf8_decode_next(duk__decode_context *dec...
function DUK_LOCAL (line 147) | DUK_LOCAL void duk__utf8_encode_char(void *udata, duk_codepoint_t codepo...
function DUK_LOCAL (line 206) | DUK_LOCAL duk_ret_t duk__decode_helper(duk_hthread *thr, duk__decode_con...
function DUK_INTERNAL (line 343) | DUK_INTERNAL duk_ret_t duk_bi_textencoder_constructor(duk_hthread *thr) {
function DUK_INTERNAL (line 352) | DUK_INTERNAL duk_ret_t duk_bi_textencoder_prototype_encoding_getter(duk_...
function DUK_INTERNAL (line 357) | DUK_INTERNAL duk_ret_t duk_bi_textencoder_prototype_encode(duk_hthread *...
function DUK_INTERNAL (line 440) | DUK_INTERNAL duk_ret_t duk_bi_textdecoder_constructor(duk_hthread *thr) {
function DUK_LOCAL (line 475) | DUK_LOCAL duk__decode_context *duk__get_textdecoder_context(duk_hthread ...
function DUK_INTERNAL (line 484) | DUK_INTERNAL duk_ret_t duk_bi_textdecoder_prototype_shared_getter(duk_ht...
function DUK_INTERNAL (line 508) | DUK_INTERNAL duk_ret_t duk_bi_textdecoder_prototype_decode(duk_hthread *...
function DUK_INTERNAL (line 525) | DUK_INTERNAL duk_ret_t duk_textdecoder_decode_utf8_nodejs(duk_hthread *t...
FILE: react_juce/duktape/src-input/duk_bi_error.c
function DUK_INTERNAL (line 7) | DUK_INTERNAL duk_ret_t duk_bi_error_constructor_shared(duk_hthread *thr) {
function DUK_INTERNAL (line 46) | DUK_INTERNAL duk_ret_t duk_bi_error_prototype_to_string(duk_hthread *thr) {
function DUK_LOCAL (line 115) | DUK_LOCAL duk_ret_t duk__error_getter_helper(duk_hthread *thr, duk_small...
function DUK_INTERNAL (line 306) | DUK_INTERNAL duk_ret_t duk_bi_error_prototype_stack_getter(duk_hthread *...
function DUK_INTERNAL (line 310) | DUK_INTERNAL duk_ret_t duk_bi_error_prototype_filename_getter(duk_hthrea...
function DUK_INTERNAL (line 314) | DUK_INTERNAL duk_ret_t duk_bi_error_prototype_linenumber_getter(duk_hthr...
function DUK_INTERNAL (line 332) | DUK_INTERNAL duk_ret_t duk_bi_error_prototype_stack_getter(duk_hthread *...
function DUK_INTERNAL (line 339) | DUK_INTERNAL duk_ret_t duk_bi_error_prototype_filename_getter(duk_hthrea...
function DUK_INTERNAL (line 344) | DUK_INTERNAL duk_ret_t duk_bi_error_prototype_linenumber_getter(duk_hthr...
function DUK_LOCAL (line 351) | DUK_LOCAL duk_ret_t duk__error_setter_helper(duk_hthread *thr, duk_small...
function DUK_INTERNAL (line 377) | DUK_INTERNAL duk_ret_t duk_bi_error_prototype_stack_setter(duk_hthread *...
function DUK_INTERNAL (line 381) | DUK_INTERNAL duk_ret_t duk_bi_error_prototype_filename_setter(duk_hthrea...
function DUK_INTERNAL (line 385) | DUK_INTERNAL duk_ret_t duk_bi_error_prototype_linenumber_setter(duk_hthr...
FILE: react_juce/duktape/src-input/duk_bi_function.c
function DUK_INTERNAL (line 8) | DUK_INTERNAL duk_ret_t duk_bi_function_prototype(duk_hthread *thr) {
function DUK_INTERNAL (line 15) | DUK_INTERNAL duk_ret_t duk_bi_function_constructor(duk_hthread *thr) {
function DUK_INTERNAL (line 98) | DUK_INTERNAL duk_ret_t duk_bi_function_prototype_to_string(duk_hthread *...
function DUK_INTERNAL (line 169) | DUK_INTERNAL duk_ret_t duk_bi_function_prototype_call(duk_hthread *thr) {
function DUK_INTERNAL (line 177) | DUK_INTERNAL duk_ret_t duk_bi_function_prototype_apply(duk_hthread *thr) {
function DUK_INTERNAL (line 183) | DUK_INTERNAL duk_ret_t duk_bi_reflect_apply(duk_hthread *thr) {
function DUK_INTERNAL (line 189) | DUK_INTERNAL duk_ret_t duk_bi_reflect_construct(duk_hthread *thr) {
function DUK_INTERNAL (line 201) | DUK_INTERNAL duk_ret_t duk_bi_function_prototype_bind(duk_hthread *thr) {
function DUK_INTERNAL (line 383) | DUK_INTERNAL duk_ret_t duk_bi_native_function_length(duk_hthread *thr) {
function DUK_INTERNAL (line 416) | DUK_INTERNAL duk_ret_t duk_bi_native_function_name(duk_hthread *thr) {
function DUK_INTERNAL (line 445) | DUK_INTERNAL duk_ret_t duk_bi_function_prototype_hasinstance(duk_hthread...
FILE: react_juce/duktape/src-input/duk_bi_global.c
type duk__transform_context (line 87) | typedef struct {
function DUK_LOCAL (line 99) | DUK_LOCAL duk_small_int_t duk__decode_hex_escape(const duk_uint8_t *p, d...
function DUK_LOCAL (line 116) | DUK_LOCAL int duk__transform_helper(duk_hthread *thr, duk__transform_cal...
function DUK_LOCAL (line 143) | DUK_LOCAL void duk__transform_callback_encode_uri(duk__transform_context...
function DUK_LOCAL (line 206) | DUK_LOCAL void duk__transform_callback_decode_uri(duk__transform_context...
function DUK_LOCAL (line 346) | DUK_LOCAL void duk__transform_callback_escape(duk__transform_context *tf...
function DUK_LOCAL (line 386) | DUK_LOCAL void duk__transform_callback_unescape(duk__transform_context *...
function DUK_INTERNAL (line 421) | DUK_INTERNAL duk_ret_t duk_bi_global_object_eval(duk_hthread *thr) {
function DUK_INTERNAL (line 606) | DUK_INTERNAL duk_ret_t duk_bi_global_object_parse_int(duk_hthread *thr) {
function DUK_INTERNAL (line 654) | DUK_INTERNAL duk_ret_t duk_bi_global_object_parse_float(duk_hthread *thr) {
function DUK_INTERNAL (line 682) | DUK_INTERNAL duk_ret_t duk_bi_global_object_is_nan(duk_hthread *thr) {
function DUK_INTERNAL (line 690) | DUK_INTERNAL duk_ret_t duk_bi_global_object_is_finite(duk_hthread *thr) {
function DUK_INTERNAL (line 702) | DUK_INTERNAL duk_ret_t duk_bi_global_object_decode_uri(duk_hthread *thr) {
function DUK_INTERNAL (line 706) | DUK_INTERNAL duk_ret_t duk_bi_global_object_decode_uri_component(duk_hth...
function DUK_INTERNAL (line 710) | DUK_INTERNAL duk_ret_t duk_bi_global_object_encode_uri(duk_hthread *thr) {
function DUK_INTERNAL (line 714) | DUK_INTERNAL duk_ret_t duk_bi_global_object_encode_uri_component(duk_hth...
function DUK_INTERNAL (line 719) | DUK_INTERNAL duk_ret_t duk_bi_global_object_escape(duk_hthread *thr) {
function DUK_INTERNAL (line 723) | DUK_INTERNAL duk_ret_t duk_bi_global_object_unescape(duk_hthread *thr) {
FILE: react_juce/duktape/src-input/duk_bi_json.c
function DUK_LOCAL (line 210) | DUK_LOCAL void duk__dec_syntax_error(duk_json_dec_ctx *js_ctx) {
function DUK_LOCAL (line 220) | DUK_LOCAL void duk__dec_eat_white(duk_json_dec_ctx *js_ctx) {
function DUK_LOCAL (line 251) | DUK_LOCAL duk_uint8_t duk__dec_peek(duk_json_dec_ctx *js_ctx) {
function DUK_LOCAL (line 257) | DUK_LOCAL duk_uint8_t duk__dec_get(duk_json_dec_ctx *js_ctx) {
function DUK_LOCAL (line 262) | DUK_LOCAL duk_uint8_t duk__dec_get_nonwhite(duk_json_dec_ctx *js_ctx) {
function DUK_LOCAL (line 268) | DUK_LOCAL duk_uint_fast32_t duk__dec_decode_hex_escape(duk_json_dec_ctx ...
function DUK_LOCAL (line 301) | DUK_LOCAL void duk__dec_req_stridx(duk_json_dec_ctx *js_ctx, duk_small_u...
function DUK_LOCAL (line 338) | DUK_LOCAL duk_small_int_t duk__dec_string_escape(duk_json_dec_ctx *js_ct...
function DUK_LOCAL (line 387) | DUK_LOCAL void duk__dec_string(duk_json_dec_ctx *js_ctx) {
function DUK_LOCAL (line 496) | DUK_LOCAL void duk__dec_plain_string(duk_json_dec_ctx *js_ctx) {
function DUK_LOCAL (line 538) | DUK_LOCAL void duk__dec_pointer(duk_json_dec_ctx *js_ctx) {
function DUK_LOCAL (line 591) | DUK_LOCAL void duk__dec_buffer(duk_json_dec_ctx *js_ctx) {
function DUK_LOCAL (line 649) | DUK_LOCAL void duk__dec_number(duk_json_dec_ctx *js_ctx) {
function DUK_LOCAL (line 714) | DUK_LOCAL void duk__dec_objarr_entry(duk_json_dec_ctx *js_ctx) {
function DUK_LOCAL (line 729) | DUK_LOCAL void duk__dec_objarr_exit(duk_json_dec_ctx *js_ctx) {
function DUK_LOCAL (line 737) | DUK_LOCAL void duk__dec_object(duk_json_dec_ctx *js_ctx) {
function DUK_LOCAL (line 820) | DUK_LOCAL void duk__dec_array(duk_json_dec_ctx *js_ctx) {
function else (line 913) | else if (x == DUK_ASC_LC_T) {
function else (line 916) | else if (x == DUK_ASC_LC_F) {
function else (line 919) | else if (x == DUK_ASC_LC_N) {
function else (line 923) | else if (js_ctx->flag_ext_custom && x == DUK_ASC_LC_U) {
function else (line 926) | else if (js_ctx->flag_ext_custom && x == DUK_ASC_UC_N) {
function else (line 929) | else if (js_ctx->flag_ext_custom && x == DUK_ASC_UC_I) {
function else (line 932) | else if (js_ctx->flag_ext_custom && x == DUK_ASC_LPAREN) {
function else (line 934) | else if (js_ctx->flag_ext_custom && x == DUK_ASC_PIPE) {
function else (line 937) | else if (x == DUK_ASC_LCURLY) {
function else (line 939) | else if (x == DUK_ASC_LBRACKET) {
function DUK_LOCAL (line 960) | DUK_LOCAL void duk__dec_reviver_walk(duk_json_dec_ctx *js_ctx) {
function DUK_LOCAL (line 1060) | DUK_LOCAL void duk__emit_1(duk_json_enc_ctx *js_ctx, duk_uint_fast8_t ch) {
function DUK_LOCAL (line 1064) | DUK_LOCAL void duk__emit_2(duk_json_enc_ctx *js_ctx, duk_uint_fast8_t ch...
function DUK_LOCAL (line 1068) | DUK_LOCAL void duk__emit_hstring(duk_json_enc_ctx *js_ctx, duk_hstring *...
function DUK_LOCAL (line 1073) | DUK_LOCAL void duk__emit_cstring(duk_json_enc_ctx *js_ctx, const char *s...
function DUK_LOCAL (line 1078) | DUK_LOCAL void duk__emit_stridx(duk_json_enc_ctx *js_ctx, duk_small_uint...
function DUK_LOCAL (line 1088) | DUK_LOCAL void duk__unemit_1(duk_json_enc_ctx *js_ctx) {
function DUK_LOCAL (line 1098) | DUK_LOCAL duk_uint8_t *duk__emit_esc_auto_fast(duk_json_enc_ctx *js_ctx,...
function DUK_LOCAL (line 1152) | DUK_LOCAL void duk__enc_key_autoquote(duk_json_enc_ctx *js_ctx, duk_hstr...
function DUK_LOCAL (line 1340) | DUK_LOCAL void duk__enc_double(duk_json_enc_ctx *js_ctx) {
function DUK_LOCAL (line 1404) | DUK_LOCAL void duk__enc_fastint_tval(duk_json_enc_ctx *js_ctx, duk_tval ...
function DUK_LOCAL (line 1429) | DUK_LOCAL duk_uint8_t *duk__enc_buffer_data_hex(const duk_uint8_t *src, ...
function DUK_LOCAL (line 1487) | DUK_LOCAL duk_uint8_t *duk__enc_buffer_data_hex(const duk_uint8_t *src, ...
function DUK_LOCAL (line 1506) | DUK_LOCAL void duk__enc_buffer_data(duk_json_enc_ctx *js_ctx, duk_uint8_...
function DUK_LOCAL (line 1560) | DUK_LOCAL void duk__enc_buffer_jx_jc(duk_json_enc_ctx *js_ctx, duk_hbuff...
function DUK_LOCAL (line 1568) | DUK_LOCAL void duk__enc_buffer_json_fastpath(duk_json_enc_ctx *js_ctx, d...
function DUK_LOCAL (line 1615) | DUK_LOCAL void duk__enc_pointer(duk_json_enc_ctx *js_ctx, void *ptr) {
function DUK_LOCAL (line 1653) | DUK_LOCAL void duk__enc_bufobj(duk_json_enc_ctx *js_ctx, duk_hbufobj *h_...
function DUK_LOCAL (line 1672) | DUK_LOCAL void duk__enc_newline_indent(duk_json_enc_ctx *js_ctx, duk_uin...
function DUK_LOCAL (line 1682) | DUK_LOCAL void duk__enc_newline_indent(duk_json_enc_ctx *js_ctx, duk_uin...
function DUK_LOCAL (line 1735) | DUK_LOCAL void duk__enc_objarr_entry(duk_json_enc_ctx *js_ctx, duk_idx_t...
function DUK_LOCAL (line 1789) | DUK_LOCAL void duk__enc_objarr_exit(duk_json_enc_ctx *js_ctx, duk_idx_t ...
function DUK_LOCAL (line 1821) | DUK_LOCAL void duk__enc_object(duk_json_enc_ctx *js_ctx) {
function DUK_LOCAL (line 1917) | DUK_LOCAL void duk__enc_array(duk_json_enc_ctx *js_ctx) {
function DUK_LOCAL (line 1983) | DUK_LOCAL duk_bool_t duk__enc_value(duk_json_enc_ctx *js_ctx, duk_idx_t ...
function DUK_LOCAL (line 2249) | DUK_LOCAL duk_bool_t duk__enc_allow_into_proplist(duk_tval *tv) {
function DUK_LOCAL (line 2769) | DUK_LOCAL duk_ret_t duk__json_stringify_fast(duk_hthread *thr, void *uda...
function DUK_INTERNAL (line 2793) | DUK_INTERNAL
function DUK_INTERNAL (line 3236) | DUK_INTERNAL duk_ret_t duk_bi_json_object_parse(duk_hthread *thr) {
function DUK_INTERNAL (line 3244) | DUK_INTERNAL duk_ret_t duk_bi_json_object_stringify(duk_hthread *thr) {
FILE: react_juce/duktape/src-input/duk_bi_math.c
function DUK_LOCAL (line 21) | DUK_LOCAL duk_ret_t duk__math_minmax(duk_hthread *thr, duk_double_t init...
function DUK_LOCAL (line 52) | DUK_LOCAL double duk__fmin_fixed(double x, double y) {
function DUK_LOCAL (line 79) | DUK_LOCAL double duk__fmax_fixed(double x, double y) {
function DUK_LOCAL (line 94) | DUK_LOCAL double duk__cbrt(double x) {
function DUK_LOCAL (line 118) | DUK_LOCAL double duk__log2(double x) {
function DUK_LOCAL (line 126) | DUK_LOCAL double duk__log10(double x) {
function DUK_LOCAL (line 134) | DUK_LOCAL double duk__trunc(double x) {
function DUK_LOCAL (line 146) | DUK_LOCAL double duk__round_fixed(double x) {
function DUK_LOCAL (line 192) | DUK_LOCAL double duk__fabs(double x) {
function DUK_LOCAL (line 195) | DUK_LOCAL double duk__acos(double x) {
function DUK_LOCAL (line 198) | DUK_LOCAL double duk__asin(double x) {
function DUK_LOCAL (line 201) | DUK_LOCAL double duk__atan(double x) {
function DUK_LOCAL (line 204) | DUK_LOCAL double duk__ceil(double x) {
function DUK_LOCAL (line 207) | DUK_LOCAL double duk__cos(double x) {
function DUK_LOCAL (line 210) | DUK_LOCAL double duk__exp(double x) {
function DUK_LOCAL (line 213) | DUK_LOCAL double duk__floor(double x) {
function DUK_LOCAL (line 216) | DUK_LOCAL double duk__log(double x) {
function DUK_LOCAL (line 219) | DUK_LOCAL double duk__sin(double x) {
function DUK_LOCAL (line 222) | DUK_LOCAL double duk__sqrt(double x) {
function DUK_LOCAL (line 225) | DUK_LOCAL double duk__tan(double x) {
function DUK_LOCAL (line 228) | DUK_LOCAL double duk__atan2_fixed(double x, double y) {
function DUK_INTERNAL (line 316) | DUK_INTERNAL duk_ret_t duk_bi_math_object_onearg_shared(duk_hthread *thr) {
function DUK_INTERNAL (line 329) | DUK_INTERNAL duk_ret_t duk_bi_math_object_twoarg_shared(duk_hthread *thr) {
function DUK_INTERNAL (line 344) | DUK_INTERNAL duk_ret_t duk_bi_math_object_max(duk_hthread *thr) {
function DUK_INTERNAL (line 348) | DUK_INTERNAL duk_ret_t duk_bi_math_object_min(duk_hthread *thr) {
function DUK_INTERNAL (line 352) | DUK_INTERNAL duk_ret_t duk_bi_math_object_random(duk_hthread *thr) {
function DUK_INTERNAL (line 358) | DUK_INTERNAL duk_ret_t duk_bi_math_object_hypot(duk_hthread *thr) {
function DUK_INTERNAL (line 426) | DUK_INTERNAL duk_ret_t duk_bi_math_object_sign(duk_hthread *thr) {
function DUK_INTERNAL (line 444) | DUK_INTERNAL duk_ret_t duk_bi_math_object_clz32(duk_hthread *thr) {
function DUK_INTERNAL (line 502) | DUK_INTERNAL duk_ret_t duk_bi_math_object_imul(duk_hthread *thr) {
FILE: react_juce/duktape/src-input/duk_bi_number.c
function DUK_LOCAL (line 9) | DUK_LOCAL duk_double_t duk__push_this_number_plain(duk_hthread *thr) {
function DUK_INTERNAL (line 38) | DUK_INTERNAL duk_ret_t duk_bi_number_constructor(duk_hthread *thr) {
function DUK_INTERNAL (line 88) | DUK_INTERNAL duk_ret_t duk_bi_number_prototype_value_of(duk_hthread *thr) {
function DUK_INTERNAL (line 93) | DUK_INTERNAL duk_ret_t duk_bi_number_prototype_to_string(duk_hthread *th...
function DUK_INTERNAL (line 114) | DUK_INTERNAL duk_ret_t duk_bi_number_prototype_to_locale_string(duk_hthr...
function DUK_INTERNAL (line 127) | DUK_INTERNAL duk_ret_t duk_bi_number_prototype_to_fixed(duk_hthread *thr) {
function DUK_INTERNAL (line 163) | DUK_INTERNAL duk_ret_t duk_bi_number_prototype_to_exponential(duk_hthrea...
function DUK_INTERNAL (line 197) | DUK_INTERNAL duk_ret_t duk_bi_number_prototype_to_precision(duk_hthread ...
function DUK_INTERNAL (line 249) | DUK_INTERNAL duk_ret_t duk_bi_number_check_shared(duk_hthread *thr) {
FILE: react_juce/duktape/src-input/duk_bi_object.c
function DUK_INTERNAL (line 8) | DUK_INTERNAL duk_ret_t duk_bi_object_prototype_to_string(duk_hthread *th...
function DUK_INTERNAL (line 17) | DUK_INTERNAL duk_ret_t duk_bi_object_constructor(duk_hthread *thr) {
function DUK_INTERNAL (line 58) | DUK_INTERNAL duk_ret_t duk_bi_object_constructor_assign(duk_hthread *thr) {
function DUK_INTERNAL (line 92) | DUK_INTERNAL duk_ret_t duk_bi_object_constructor_is(duk_hthread *thr) {
function DUK_INTERNAL (line 100) | DUK_INTERNAL duk_ret_t duk_bi_object_constructor_create(duk_hthread *thr) {
function DUK_INTERNAL (line 138) | DUK_INTERNAL duk_ret_t duk_bi_object_constructor_define_properties(duk_h...
function DUK_INTERNAL (line 225) | DUK_INTERNAL duk_ret_t duk_bi_object_constructor_seal_freeze_shared(duk_...
function DUK_INTERNAL (line 234) | DUK_INTERNAL duk_ret_t duk_bi_object_constructor_is_sealed_frozen_shared...
function DUK_INTERNAL (line 259) | DUK_INTERNAL duk_ret_t duk_bi_object_prototype_to_locale_string(duk_hthr...
function DUK_INTERNAL (line 273) | DUK_INTERNAL duk_ret_t duk_bi_object_prototype_value_of(duk_hthread *thr) {
function DUK_INTERNAL (line 281) | DUK_INTERNAL duk_ret_t duk_bi_object_prototype_is_prototype_of(duk_hthre...
function DUK_INTERNAL (line 305) | DUK_INTERNAL duk_ret_t duk_bi_object_prototype_has_own_property(duk_hthr...
function DUK_INTERNAL (line 311) | DUK_INTERNAL duk_ret_t duk_bi_object_prototype_property_is_enumerable(du...
function DUK_INTERNAL (line 322) | DUK_INTERNAL duk_ret_t duk_bi_object_getprototype_shared(duk_hthread *th...
function DUK_INTERNAL (line 380) | DUK_INTERNAL duk_ret_t duk_bi_object_setprototype_shared(duk_hthread *th...
function DUK_INTERNAL (line 475) | DUK_INTERNAL duk_ret_t duk_bi_object_constructor_define_property(duk_hth...
function DUK_INTERNAL (line 562) | DUK_INTERNAL duk_ret_t duk_bi_object_constructor_get_own_property_descri...
function DUK_INTERNAL (line 578) | DUK_INTERNAL duk_ret_t duk_bi_object_constructor_is_extensible(duk_hthre...
function DUK_INTERNAL (line 631) | DUK_INTERNAL duk_ret_t duk_bi_object_constructor_keys_shared(duk_hthread...
function DUK_INTERNAL (line 705) | DUK_INTERNAL duk_ret_t duk_bi_object_constructor_prevent_extensions(duk_...
function DUK_INTERNAL (line 757) | DUK_INTERNAL duk_ret_t duk_bi_object_prototype_defineaccessor(duk_hthrea...
function DUK_INTERNAL (line 771) | DUK_INTERNAL duk_ret_t duk_bi_object_prototype_lookupaccessor(duk_hthrea...
FILE: react_juce/duktape/src-input/duk_bi_performance.c
function DUK_INTERNAL (line 10) | DUK_INTERNAL duk_ret_t duk_bi_performance_now(duk_hthread *thr) {
function DUK_INTERNAL (line 22) | DUK_INTERNAL duk_ret_t duk_bi_performance_timeorigin_getter(duk_hthread ...
FILE: react_juce/duktape/src-input/duk_bi_pointer.c
function DUK_INTERNAL (line 11) | DUK_INTERNAL duk_ret_t duk_bi_pointer_constructor(duk_hthread *thr) {
function DUK_INTERNAL (line 44) | DUK_INTERNAL duk_ret_t duk_bi_pointer_prototype_tostring_shared(duk_hthr...
FILE: react_juce/duktape/src-input/duk_bi_promise.c
function DUK_INTERNAL (line 9) | DUK_INTERNAL duk_ret_t duk_bi_promise_constructor(duk_hthread *thr) {
function DUK_INTERNAL (line 14) | DUK_INTERNAL duk_ret_t duk_bi_promise_all(duk_hthread *thr) {
function DUK_INTERNAL (line 19) | DUK_INTERNAL duk_ret_t duk_bi_promise_race(duk_hthread *thr) {
function DUK_INTERNAL (line 24) | DUK_INTERNAL duk_ret_t duk_bi_promise_reject(duk_hthread *thr) {
function DUK_INTERNAL (line 29) | DUK_INTERNAL duk_ret_t duk_bi_promise_resolve(duk_hthread *thr) {
function DUK_INTERNAL (line 34) | DUK_INTERNAL duk_ret_t duk_bi_promise_catch(duk_hthread *thr) {
function DUK_INTERNAL (line 39) | DUK_INTERNAL duk_ret_t duk_bi_promise_then(duk_hthread *thr) {
FILE: react_juce/duktape/src-input/duk_bi_proxy.c
function DUK_INTERNAL (line 12) | DUK_INTERNAL void duk_proxy_ownkeys_postprocess(duk_hthread *thr, duk_ho...
function DUK_INTERNAL (line 89) | DUK_INTERNAL duk_ret_t duk_bi_proxy_constructor(duk_hthread *thr) {
FILE: react_juce/duktape/src-input/duk_bi_reflect.c
function DUK_INTERNAL (line 12) | DUK_INTERNAL duk_ret_t duk_bi_reflect_object_delete_property(duk_hthread...
function DUK_INTERNAL (line 31) | DUK_INTERNAL duk_ret_t duk_bi_reflect_object_get(duk_hthread *thr) {
function DUK_INTERNAL (line 54) | DUK_INTERNAL duk_ret_t duk_bi_reflect_object_has(duk_hthread *thr) {
function DUK_INTERNAL (line 73) | DUK_INTERNAL duk_ret_t duk_bi_reflect_object_set(duk_hthread *thr) {
FILE: react_juce/duktape/src-input/duk_bi_regexp.c
function DUK_LOCAL (line 9) | DUK_LOCAL void duk__get_this_regexp(duk_hthread *thr) {
function DUK_INTERNAL (line 20) | DUK_INTERNAL duk_ret_t duk_bi_regexp_constructor(duk_hthread *thr) {
function DUK_INTERNAL (line 91) | DUK_INTERNAL duk_ret_t duk_bi_regexp_prototype_exec(duk_hthread *thr) {
function DUK_INTERNAL (line 103) | DUK_INTERNAL duk_ret_t duk_bi_regexp_prototype_test(duk_hthread *thr) {
function DUK_INTERNAL (line 118) | DUK_INTERNAL duk_ret_t duk_bi_regexp_prototype_tostring(duk_hthread *thr) {
function DUK_INTERNAL (line 130) | DUK_INTERNAL duk_ret_t duk_bi_regexp_prototype_flags(duk_hthread *thr) {
function DUK_INTERNAL (line 159) | DUK_INTERNAL duk_ret_t duk_bi_regexp_prototype_shared_getter(duk_hthread...
FILE: react_juce/duktape/src-input/duk_bi_string.c
function DUK_LOCAL (line 26) | DUK_LOCAL duk_hstring *duk__str_tostring_notregexp(duk_hthread *thr, duk...
function DUK_LOCAL (line 39) | DUK_LOCAL duk_int_t duk__str_search_shared(duk_hthread *thr, duk_hstring...
function DUK_INTERNAL (line 117) | DUK_INTERNAL duk_ret_t duk_bi_string_constructor(duk_hthread *thr) {
function DUK_LOCAL (line 159) | DUK_LOCAL duk_ret_t duk__construct_from_codepoints(duk_hthread *thr, duk...
function DUK_INTERNAL (line 217) | DUK_INTERNAL duk_ret_t duk_bi_string_constructor_from_char_code(duk_hthr...
function DUK_INTERNAL (line 222) | DUK_INTERNAL duk_ret_t duk_bi_string_constructor_from_code_point(duk_hth...
function DUK_INTERNAL (line 231) | DUK_INTERNAL duk_ret_t duk_bi_string_prototype_to_string(duk_hthread *th...
function DUK_INTERNAL (line 266) | DUK_INTERNAL duk_ret_t duk_bi_string_prototype_char_at(duk_hthread *thr) {
function DUK_INTERNAL (line 302) | DUK_INTERNAL duk_ret_t duk_bi_string_prototype_char_code_at(duk_hthread ...
function DUK_INTERNAL (line 351) | DUK_INTERNAL duk_ret_t duk_bi_string_prototype_substring(duk_hthread *th...
function DUK_INTERNAL (line 384) | DUK_INTERNAL duk_ret_t duk_bi_string_prototype_substr(duk_hthread *thr) {
function DUK_INTERNAL (line 428) | DUK_INTERNAL duk_ret_t duk_bi_string_prototype_slice(duk_hthread *thr) {
function DUK_INTERNAL (line 468) | DUK_INTERNAL duk_ret_t duk_bi_string_prototype_caseconv_shared(duk_hthre...
function DUK_INTERNAL (line 480) | DUK_INTERNAL duk_ret_t duk_bi_string_prototype_indexof_shared(duk_hthrea...
function DUK_LOCAL (line 1183) | DUK_LOCAL void duk__to_regexp_helper(duk_hthread *thr, duk_idx_t idx, du...
function DUK_INTERNAL (line 1209) | DUK_INTERNAL duk_ret_t duk_bi_string_prototype_search(duk_hthread *thr) {
function DUK_INTERNAL (line 1248) | DUK_INTERNAL duk_ret_t duk_bi_string_prototype_match(duk_hthread *thr) {
function DUK_INTERNAL (line 1320) | DUK_INTERNAL duk_ret_t duk_bi_string_prototype_concat(duk_hthread *thr) {
function DUK_INTERNAL (line 1328) | DUK_INTERNAL duk_ret_t duk_bi_string_prototype_trim(duk_hthread *thr) {
function DUK_INTERNAL (line 1337) | DUK_INTERNAL duk_ret_t duk_bi_string_prototype_repeat(duk_hthread *thr) {
function DUK_INTERNAL (line 1436) | DUK_INTERNAL duk_ret_t duk_bi_string_prototype_locale_compare(duk_hthrea...
function DUK_INTERNAL (line 1494) | DUK_INTERNAL duk_ret_t duk_bi_string_prototype_startswith_endswith(duk_h...
function DUK_INTERNAL (line 1559) | DUK_INTERNAL duk_ret_t duk_bi_string_prototype_includes(duk_hthread *thr) {
FILE: react_juce/duktape/src-input/duk_bi_symbol.c
function DUK_INTERNAL (line 13) | DUK_INTERNAL duk_ret_t duk_bi_symbol_constructor_shared(duk_hthread *thr) {
function DUK_LOCAL (line 74) | DUK_LOCAL duk_hstring *duk__auto_unbox_symbol(duk_hthread *thr, duk_tval...
function DUK_INTERNAL (line 112) | DUK_INTERNAL duk_ret_t duk_bi_symbol_tostring_shared(duk_hthread *thr) {
function DUK_INTERNAL (line 130) | DUK_INTERNAL duk_ret_t duk_bi_symbol_key_for(duk_hthread *thr) {
function DUK_INTERNAL (line 159) | DUK_INTERNAL duk_ret_t duk_bi_symbol_toprimitive(duk_hthread *thr) {
FILE: react_juce/duktape/src-input/duk_bi_thread.c
function DUK_INTERNAL (line 12) | DUK_INTERNAL duk_ret_t duk_bi_thread_constructor(duk_hthread *thr) {
function DUK_INTERNAL (line 54) | DUK_INTERNAL duk_ret_t duk_bi_thread_resume(duk_hthread *ctx) {
function DUK_INTERNAL (line 220) | DUK_INTERNAL duk_ret_t duk_bi_thread_yield(duk_hthread *thr) {
function DUK_INTERNAL (line 322) | DUK_INTERNAL duk_ret_t duk_bi_thread_current(duk_hthread *thr) {
FILE: react_juce/duktape/src-input/duk_bi_thrower.c
function DUK_INTERNAL (line 7) | DUK_INTERNAL duk_ret_t duk_bi_type_error_thrower(duk_hthread *thr) {
FILE: react_juce/duktape/src-input/duk_dblunion.h
type duk_double_union (line 72) | typedef union duk_double_union duk_double_union;
FILE: react_juce/duktape/src-input/duk_debug.h
type duk_fixedbuffer (line 142) | struct duk_fixedbuffer {
FILE: react_juce/duktape/src-input/duk_debug_fixedbuffer.c
function DUK_INTERNAL (line 10) | DUK_INTERNAL void duk_fb_put_bytes(duk_fixedbuffer *fb, const duk_uint8_...
function DUK_INTERNAL (line 25) | DUK_INTERNAL void duk_fb_put_byte(duk_fixedbuffer *fb, duk_uint8_t x) {
function DUK_INTERNAL (line 29) | DUK_INTERNAL void duk_fb_put_cstring(duk_fixedbuffer *fb, const char *x) {
function DUK_INTERNAL (line 33) | DUK_INTERNAL void duk_fb_sprintf(duk_fixedbuffer *fb, const char *fmt, ....
function DUK_INTERNAL (line 58) | DUK_INTERNAL void duk_fb_put_funcptr(duk_fixedbuffer *fb, duk_uint8_t *f...
function DUK_INTERNAL (line 65) | DUK_INTERNAL duk_bool_t duk_fb_is_full(duk_fixedbuffer *fb) {
FILE: react_juce/duktape/src-input/duk_debug_macros.c
function DUK_INTERNAL (line 25) | DUK_INTERNAL void duk_debug_log(duk_int_t level, const char *file, duk_i...
function DUK_INTERNAL (line 56) | DUK_INTERNAL void duk_debug_log(const char *fmt, ...) {
FILE: react_juce/duktape/src-input/duk_debug_vsnprintf.c
type duk__dprint_state (line 120) | typedef struct duk__dprint_state duk__dprint_state;
type duk__dprint_state (line 121) | struct duk__dprint_state {
function DUK_LOCAL (line 152) | DUK_LOCAL void duk__print_shared_heaphdr(duk__dprint_state *st, duk_heap...
function DUK_LOCAL (line 200) | DUK_LOCAL void duk__print_shared_heaphdr_string(duk__dprint_state *st, d...
function DUK_LOCAL (line 244) | DUK_LOCAL void duk__print_hstring(duk__dprint_state *st, duk_hstring *h,...
function DUK_LOCAL (line 312) | DUK_LOCAL void duk__print_hobject(duk__dprint_state *st, duk_hobject *h) {
function DUK_LOCAL (line 616) | DUK_LOCAL void duk__print_hbuffer(duk__dprint_state *st, duk_hbuffer *h) {
function DUK_LOCAL (line 663) | DUK_LOCAL void duk__print_heaphdr(duk__dprint_state *st, duk_heaphdr *h) {
function DUK_LOCAL (line 691) | DUK_LOCAL void duk__print_tval(duk__dprint_state *st, duk_tval *tv) {
function DUK_LOCAL (line 785) | DUK_LOCAL void duk__print_instr(duk__dprint_state *st, duk_instr_t ins) {
function DUK_LOCAL (line 810) | DUK_LOCAL void duk__print_opcode(duk__dprint_state *st, duk_small_int_t ...
function DUK_LOCAL (line 820) | DUK_LOCAL void duk__print_catcher(duk__dprint_state *st, duk_catcher *ca...
function DUK_LOCAL (line 839) | DUK_LOCAL void duk__print_activation(duk__dprint_state *st, duk_activati...
function DUK_INTERNAL (line 861) | DUK_INTERNAL duk_int_t duk_debug_vsnprintf(char *str, duk_size_t size, c...
function DUK_INTERNAL (line 1053) | DUK_INTERNAL duk_int_t duk_debug_snprintf(char *str, duk_size_t size, co...
function DUK_INTERNAL (line 1068) | DUK_INTERNAL void duk_debug_format_funcptr(char *buf, duk_size_t buf_siz...
FILE: react_juce/duktape/src-input/duk_debugger.c
type duk__ptr_union (line 31) | typedef union {
function duk__debug_do_detach1 (line 49) | void duk__debug_do_detach1(duk_heap *heap, duk_int_t reason) {
function DUK_LOCAL (line 106) | DUK_LOCAL void duk__debug_do_detach2(duk_heap *heap) {
function DUK_INTERNAL (line 136) | DUK_INTERNAL void duk_debug_do_detach(duk_heap *heap) {
function DUK_LOCAL (line 146) | DUK_LOCAL void duk__debug_null_most_callbacks(duk_hthread *thr) {
function DUK_LOCAL (line 166) | DUK_LOCAL void duk__debug_set_pause_state(duk_hthread *thr, duk_heap *he...
function DUK_INTERNAL (line 194) | DUK_INTERNAL duk_bool_t duk_debug_read_peek(duk_hthread *thr) {
function DUK_INTERNAL (line 217) | DUK_INTERNAL void duk_debug_read_flush(duk_hthread *thr) {
function DUK_INTERNAL (line 238) | DUK_INTERNAL void duk_debug_write_flush(duk_hthread *thr) {
function DUK_INTERNAL (line 264) | DUK_INTERNAL void duk_debug_skip_bytes(duk_hthread *thr, duk_size_t leng...
function DUK_INTERNAL (line 277) | DUK_INTERNAL void duk_debug_skip_byte(duk_hthread *thr) {
function DUK_INTERNAL (line 288) | DUK_INTERNAL uint8_t duk_debug_peek_byte(duk_hthread *thr) {
function DUK_INTERNAL (line 303) | DUK_INTERNAL void duk_debug_read_bytes(duk_hthread *thr, duk_uint8_t *da...
function DUK_INTERNAL (line 353) | DUK_INTERNAL duk_uint8_t duk_debug_read_byte(duk_hthread *thr) {
function DUK_LOCAL (line 361) | DUK_LOCAL duk_uint32_t duk__debug_read_uint32_raw(duk_hthread *thr) {
function DUK_LOCAL (line 373) | DUK_LOCAL duk_int32_t duk__debug_read_int32_raw(duk_hthread *thr) {
function DUK_LOCAL (line 377) | DUK_LOCAL duk_uint16_t duk__debug_read_uint16_raw(duk_hthread *thr) {
function DUK_INTERNAL (line 387) | DUK_INTERNAL duk_int32_t duk_debug_read_int(duk_hthread *thr) {
function DUK_LOCAL (line 408) | DUK_LOCAL duk_hstring *duk__debug_read_hstring_raw(duk_hthread *thr, duk...
function DUK_INTERNAL (line 425) | DUK_INTERNAL duk_hstring *duk_debug_read_hstring(duk_hthread *thr) {
function DUK_LOCAL (line 452) | DUK_LOCAL duk_hbuffer *duk__debug_read_hbuffer_raw(duk_hthread *thr, duk...
function DUK_LOCAL (line 462) | DUK_LOCAL void *duk__debug_read_pointer_raw(duk_hthread *thr) {
function DUK_LOCAL (line 484) | DUK_LOCAL duk_double_t duk__debug_read_double_raw(duk_hthread *thr) {
function DUK_INTERNAL (line 494) | DUK_INTERNAL duk_heaphdr *duk_debug_read_heapptr(duk_hthread *thr) {
function DUK_INTERNAL (line 513) | DUK_INTERNAL duk_heaphdr *duk_debug_read_any_ptr(duk_hthread *thr) {
function DUK_INTERNAL (line 542) | DUK_INTERNAL duk_tval *duk_debug_read_tval(duk_hthread *thr) {
function DUK_INTERNAL (line 661) | DUK_INTERNAL void duk_debug_write_bytes(duk_hthread *thr, const duk_uint...
function DUK_INTERNAL (line 709) | DUK_INTERNAL void duk_debug_write_byte(duk_hthread *thr, duk_uint8_t x) {
function DUK_INTERNAL (line 713) | DUK_INTERNAL void duk_debug_write_unused(duk_hthread *thr) {
function DUK_INTERNAL (line 717) | DUK_INTERNAL void duk_debug_write_undefined(duk_hthread *thr) {
function DUK_INTERNAL (line 722) | DUK_INTERNAL void duk_debug_write_null(duk_hthread *thr) {
function DUK_INTERNAL (line 727) | DUK_INTERNAL void duk_debug_write_boolean(duk_hthread *thr, duk_uint_t v...
function DUK_INTERNAL (line 732) | DUK_INTERNAL void duk_debug_write_int(duk_hthread *thr, duk_int32_t x) {
function DUK_INTERNAL (line 758) | DUK_INTERNAL void duk_debug_write_uint(duk_hthread *thr, duk_uint32_t x) {
function DUK_INTERNAL (line 773) | DUK_INTERNAL void duk_debug_write_strbuf(duk_hthread *thr, const char *d...
function DUK_INTERNAL (line 802) | DUK_INTERNAL void duk_debug_write_string(duk_hthread *thr, const char *d...
function DUK_INTERNAL (line 806) | DUK_INTERNAL void duk_debug_write_cstring(duk_hthread *thr, const char *...
function DUK_INTERNAL (line 814) | DUK_INTERNAL void duk_debug_write_hstring(duk_hthread *thr, duk_hstring ...
function DUK_LOCAL (line 823) | DUK_LOCAL void duk__debug_write_hstring_safe_top(duk_hthread *thr) {
function DUK_INTERNAL (line 827) | DUK_INTERNAL void duk_debug_write_buffer(duk_hthread *thr, const char *d...
function DUK_INTERNAL (line 831) | DUK_INTERNAL void duk_debug_write_hbuffer(duk_hthread *thr, duk_hbuffer ...
function DUK_LOCAL (line 839) | DUK_LOCAL void duk__debug_write_pointer_raw(duk_hthread *thr, void *ptr,...
function DUK_INTERNAL (line 857) | DUK_INTERNAL void duk_debug_write_pointer(duk_hthread *thr, void *ptr) {
function DUK_INTERNAL (line 862) | DUK_INTERNAL void duk_debug_write_heapptr(duk_hthread *thr, duk_heaphdr ...
function DUK_INTERNAL (line 867) | DUK_INTERNAL void duk_debug_write_hobject(duk_hthread *thr, duk_hobject ...
function DUK_INTERNAL (line 886) | DUK_INTERNAL void duk_debug_write_tval(duk_hthread *thr, duk_tval *tv) {
function DUK_LOCAL (line 977) | DUK_LOCAL void duk__debug_write_tval_heapptr(duk_hthread *thr, duk_tval ...
function DUK_INTERNAL (line 992) | DUK_INTERNAL void duk_debug_write_request(duk_hthread *thr, duk_small_ui...
function DUK_INTERNAL (line 998) | DUK_INTERNAL void duk_debug_write_reply(duk_hthread *thr) {
function DUK_INTERNAL (line 1002) | DUK_INTERNAL void duk_debug_write_error_eom(duk_hthread *thr, duk_small_...
function DUK_INTERNAL (line 1010) | DUK_INTERNAL void duk_debug_write_notify(duk_hthread *thr, duk_small_uin...
function DUK_INTERNAL (line 1015) | DUK_INTERNAL void duk_debug_write_eom(duk_hthread *thr) {
function DUK_INTERNAL (line 1030) | DUK_INTERNAL duk_uint_fast32_t duk_debug_curr_line(duk_hthread *thr) {
function DUK_INTERNAL (line 1058) | DUK_INTERNAL void duk_debug_send_status(duk_hthread *thr) {
function DUK_INTERNAL (line 1086) | DUK_INTERNAL void duk_debug_send_throw(duk_hthread *thr, duk_bool_t fata...
function DUK_LOCAL (line 1142) | DUK_LOCAL duk_bool_t duk__debug_skip_dvalue(duk_hthread *thr) {
function DUK_LOCAL (line 1216) | DUK_LOCAL void duk__debug_skip_to_eom(duk_hthread *thr) {
function DUK_LOCAL (line 1227) | DUK_LOCAL duk_int32_t duk__debug_read_validate_csindex(duk_hthread *thr) {
function DUK_LOCAL (line 1240) | DUK_LOCAL duk_activation *duk__debug_read_level_get_activation(duk_hthre...
function DUK_LOCAL (line 1256) | DUK_LOCAL void duk__debug_handle_basic_info(duk_hthread *thr, duk_heap *...
function DUK_LOCAL (line 1277) | DUK_LOCAL void duk__debug_handle_trigger_status(duk_hthread *thr, duk_he...
function DUK_LOCAL (line 1286) | DUK_LOCAL void duk__debug_handle_pause(duk_hthread *thr, duk_heap *heap) {
function DUK_LOCAL (line 1293) | DUK_LOCAL void duk__debug_handle_resume(duk_hthread *thr, duk_heap *heap) {
function DUK_LOCAL (line 1316) | DUK_LOCAL void duk__debug_handle_step(duk_hthread *thr, duk_heap *heap, ...
function DUK_LOCAL (line 1347) | DUK_LOCAL void duk__debug_handle_list_break(duk_hthread *thr, duk_heap *...
function DUK_LOCAL (line 1359) | DUK_LOCAL void duk__debug_handle_add_break(duk_hthread *thr, duk_heap *h...
function DUK_LOCAL (line 1379) | DUK_LOCAL void duk__debug_handle_del_break(duk_hthread *thr, duk_heap *h...
function DUK_LOCAL (line 1394) | DUK_LOCAL void duk__debug_handle_get_var(duk_hthread *thr, duk_heap *hea...
function DUK_LOCAL (line 1423) | DUK_LOCAL void duk__debug_handle_put_var(duk_hthread *thr, duk_heap *hea...
function DUK_LOCAL (line 1452) | DUK_LOCAL void duk__debug_handle_get_call_stack(duk_hthread *thr, duk_he...
function DUK_LOCAL (line 1499) | DUK_LOCAL void duk__debug_handle_get_locals(duk_hthread *thr, duk_heap *...
function DUK_LOCAL (line 1545) | DUK_LOCAL void duk__debug_handle_eval(duk_hthread *thr, duk_heap *heap) {
function DUK_LOCAL (line 1635) | DUK_LOCAL void duk__debug_handle_detach(duk_hthread *thr, duk_heap *heap) {
function DUK_LOCAL (line 1646) | DUK_LOCAL void duk__debug_handle_apprequest(duk_hthread *thr, duk_heap *...
function DUK_LOCAL (line 1729) | DUK_LOCAL void duk__debug_dump_heaphdr(duk_hthread *thr, duk_heap *heap,...
function DUK_LOCAL (line 1804) | DUK_LOCAL void duk__debug_dump_heap_allocated(duk_hthread *thr, duk_heap...
function DUK_LOCAL (line 1814) | DUK_LOCAL void duk__debug_dump_strtab(duk_hthread *thr, duk_heap *heap) {
function DUK_LOCAL (line 1831) | DUK_LOCAL void duk__debug_handle_dump_heap(duk_hthread *thr, duk_heap *h...
function DUK_LOCAL (line 1841) | DUK_LOCAL void duk__debug_handle_get_bytecode(duk_hthread *thr, duk_heap...
function DUK_LOCAL (line 2023) | DUK_LOCAL void duk__debug_getinfo_flags_key(duk_hthread *thr, const char...
function DUK_LOCAL (line 2028) | DUK_LOCAL void duk__debug_getinfo_prop_uint(duk_hthread *thr, const char...
function DUK_LOCAL (line 2034) | DUK_LOCAL void duk__debug_getinfo_prop_int(duk_hthread *thr, const char ...
function DUK_LOCAL (line 2040) | DUK_LOCAL void duk__debug_getinfo_prop_bool(duk_hthread *thr, const char...
function DUK_LOCAL (line 2046) | DUK_LOCAL void duk__debug_getinfo_bitmask(duk_hthread *thr, const char *...
function DUK_LOCAL (line 2068) | DUK_LOCAL duk_bool_t duk__debug_getprop_index(duk_hthread *thr, duk_heap...
function DUK_LOCAL (line 2128) | DUK_LOCAL void duk__debug_handle_get_heap_obj_info(duk_hthread *thr, duk...
function DUK_LOCAL (line 2351) | DUK_LOCAL void duk__debug_handle_get_obj_prop_desc(duk_hthread *thr, duk...
function DUK_LOCAL (line 2394) | DUK_LOCAL void duk__debug_handle_get_obj_prop_desc_range(duk_hthread *th...
function DUK_LOCAL (line 2444) | DUK_LOCAL void duk__debug_process_message(duk_hthread *thr) {
function DUK_LOCAL (line 2588) | DUK_LOCAL void duk__check_resend_status(duk_hthread *thr) {
function DUK_INTERNAL (line 2595) | DUK_INTERNAL duk_bool_t duk_debug_process_messages(duk_hthread *thr, duk...
function DUK_INTERNAL (line 2720) | DUK_INTERNAL void duk_debug_halt_execution(duk_hthread *thr, duk_bool_t ...
function DUK_INTERNAL (line 2787) | DUK_INTERNAL duk_small_int_t duk_debug_add_breakpoint(duk_hthread *thr, ...
function DUK_INTERNAL (line 2815) | DUK_INTERNAL duk_bool_t duk_debug_remove_breakpoint(duk_hthread *thr, du...
function DUK_INTERNAL (line 2861) | DUK_INTERNAL duk_bool_t duk_debug_is_attached(duk_heap *heap) {
function DUK_INTERNAL (line 2865) | DUK_INTERNAL duk_bool_t duk_debug_is_paused(duk_heap *heap) {
function DUK_INTERNAL (line 2869) | DUK_INTERNAL void duk_debug_set_paused(duk_heap *heap) {
function DUK_INTERNAL (line 2884) | DUK_INTERNAL void duk_debug_clear_paused(duk_heap *heap) {
function DUK_INTERNAL (line 2899) | DUK_INTERNAL void duk_debug_clear_pause_state(duk_heap *heap) {
FILE: react_juce/duktape/src-input/duk_error_augment.c
function DUK_LOCAL (line 62) | DUK_LOCAL void duk__err_augment_user(duk_hthread *thr, duk_small_uint_t ...
function DUK_LOCAL (line 143) | DUK_LOCAL void duk__add_traceback(duk_hthread *thr, duk_hthread *thr_cal...
function DUK_LOCAL (line 301) | DUK_LOCAL void duk__add_fileline(duk_hthread *thr, duk_hthread *thr_call...
function DUK_LOCAL (line 416) | DUK_LOCAL void duk__add_compiler_error_line(duk_hthread *thr) {
function DUK_LOCAL (line 454) | DUK_LOCAL void duk__err_augment_builtin_create(duk_hthread *thr, duk_hth...
function DUK_INTERNAL (line 507) | DUK_INTERNAL void duk_err_augment_error_create(duk_hthread *thr, duk_hth...
function DUK_INTERNAL (line 562) | DUK_INTERNAL void duk_err_augment_error_throw(duk_hthread *thr) {
FILE: react_juce/duktape/src-input/duk_error_longjmp.c
function DUK_LOCAL (line 10) | DUK_LOCAL void duk__uncaught_minimal(duk_hthread *thr) {
function DUK_LOCAL (line 18) | DUK_LOCAL void duk__uncaught_readable(duk_hthread *thr) {
function DUK_LOCAL (line 32) | DUK_LOCAL void duk__uncaught_error_aware(duk_hthread *thr) {
function DUK_INTERNAL (line 45) | DUK_INTERNAL void duk_err_longjmp(duk_hthread *thr) {
FILE: react_juce/duktape/src-input/duk_error_macros.c
function duk_err_handle_error_fmt (line 11) | void duk_err_handle_error_fmt(duk_hthread *thr, const char *filename, du...
function duk_err_handle_error (line 21) | void duk_err_handle_error(duk_hthread *thr, const char *filename, duk_ui...
function duk_err_handle_error (line 27) | void duk_err_handle_error(duk_hthread *thr, duk_errcode_t code) {
function duk_err_require_type_index (line 39) | void duk_err_require_type_index(duk_hthread *thr, const char *filename, ...
function duk_err_require_type_index (line 44) | void duk_err_require_type_index(duk_hthread *thr, const char *filename, ...
function duk_err_error_internal (line 49) | void duk_err_error_internal(duk_hthread *thr, const char *filename, duk_...
function duk_err_error_alloc_failed (line 52) | void duk_err_error_alloc_failed(duk_hthread *thr, const char *filename, ...
function duk_err_error (line 55) | void duk_err_error(duk_hthread *thr, const char *filename, duk_int_t lin...
function duk_err_range (line 58) | void duk_err_range(duk_hthread *thr, const char *filename, duk_int_t lin...
function duk_err_range_index (line 61) | void duk_err_range_index(duk_hthread *thr, const char *filename, duk_int...
function duk_err_range_push_beyond (line 64) | void duk_err_range_push_beyond(duk_hthread *thr, const char *filename, d...
function duk_err_type_invalid_args (line 67) | void duk_err_type_invalid_args(duk_hthread *thr, const char *filename, d...
function duk_err_type_invalid_state (line 70) | void duk_err_type_invalid_state(duk_hthread *thr, const char *filename, ...
function duk_err_type_invalid_trap_result (line 73) | void duk_err_type_invalid_trap_result(duk_hthread *thr, const char *file...
function DUK_LOCAL (line 82) | DUK_LOCAL void duk__err_shared(duk_hthread *thr, duk_errcode_t code) {
function duk_err_error (line 85) | void duk_err_error(duk_hthread *thr) {
function duk_err_range (line 88) | void duk_err_range(duk_hthread *thr) {
function duk_err_eval (line 91) | void duk_err_eval(duk_hthread *thr) {
function duk_err_reference (line 94) | void duk_err_reference(duk_hthread *thr) {
function duk_err_syntax (line 97) | void duk_err_syntax(duk_hthread *thr) {
function duk_err_type (line 100) | void duk_err_type(duk_hthread *thr) {
function duk_err_uri (line 103) | void duk_err_uri(duk_hthread *thr) {
function duk_default_fatal_handler (line 112) | void duk_default_fatal_handler(void *udata, const char *msg) {
FILE: react_juce/duktape/src-input/duk_error_misc.c
function DUK_LOCAL (line 13) | DUK_LOCAL duk_bool_t duk__have_active_catcher(duk_hthread *thr) {
function DUK_INTERNAL (line 42) | DUK_INTERNAL duk_hobject *duk_error_prototype_from_code(duk_hthread *thr...
function DUK_INTERNAL (line 67) | DUK_INTERNAL void duk_err_check_debugger_integration(duk_hthread *thr) {
function DUK_INTERNAL (line 159) | DUK_INTERNAL void duk_err_setup_ljstate1(duk_hthread *thr, duk_small_uin...
FILE: react_juce/duktape/src-input/duk_error_throw.c
function DUK_INTERNAL (line 26) | DUK_INTERNAL void duk_err_create_and_throw(duk_hthread *thr, duk_errcode...
function DUK_INTERNAL (line 146) | DUK_INTERNAL void duk_error_throw_from_negative_rc(duk_hthread *thr, duk...
FILE: react_juce/duktape/src-input/duk_exception.h
function class (line 15) | class duk_internal_exception {
function class (line 24) | class duk_fatal_exception : public virtual std::runtime_error {
FILE: react_juce/duktape/src-input/duk_forwdecl.h
type duk_jmpbuf (line 15) | struct duk_jmpbuf
type duk_heaphdr (line 19) | struct duk_heaphdr
type duk_heaphdr_string (line 20) | struct duk_heaphdr_string
type duk_harray (line 21) | struct duk_harray
type duk_hstring (line 22) | struct duk_hstring
type duk_hstring_external (line 23) | struct duk_hstring_external
type duk_hobject (line 24) | struct duk_hobject
type duk_hcompfunc (line 25) | struct duk_hcompfunc
type duk_hnatfunc (line 26) | struct duk_hnatfunc
type duk_hboundfunc (line 27) | struct duk_hboundfunc
type duk_hthread (line 28) | struct duk_hthread
type duk_hbufobj (line 29) | struct duk_hbufobj
type duk_hdecenv (line 30) | struct duk_hdecenv
type duk_hobjenv (line 31) | struct duk_hobjenv
type duk_hproxy (line 32) | struct duk_hproxy
type duk_hbuffer (line 33) | struct duk_hbuffer
type duk_hbuffer_fixed (line 34) | struct duk_hbuffer_fixed
type duk_hbuffer_dynamic (line 35) | struct duk_hbuffer_dynamic
type duk_hbuffer_external (line 36) | struct duk_hbuffer_external
type duk_propaccessor (line 38) | struct duk_propaccessor
type duk_propdesc (line 40) | struct duk_propdesc
type duk_heap (line 42) | struct duk_heap
type duk_breakpoint (line 43) | struct duk_breakpoint
type duk_activation (line 45) | struct duk_activation
type duk_catcher (line 46) | struct duk_catcher
type duk_ljstate (line 47) | struct duk_ljstate
type duk_strcache_entry (line 48) | struct duk_strcache_entry
type duk_litcache_entry (line 49) | struct duk_litcache_entry
type duk_strtab_entry (line 50) | struct duk_strtab_entry
type duk_fixedbuffer (line 53) | struct duk_fixedbuffer
type duk_bitdecoder_ctx (line 56) | struct duk_bitdecoder_ctx
type duk_bitencoder_ctx (line 57) | struct duk_bitencoder_ctx
type duk_bufwriter_ctx (line 58) | struct duk_bufwriter_ctx
type duk_token (line 60) | struct duk_token
type duk_re_token (line 61) | struct duk_re_token
type duk_lexer_point (line 62) | struct duk_lexer_point
type duk_lexer_ctx (line 63) | struct duk_lexer_ctx
type duk_lexer_codepoint (line 64) | struct duk_lexer_codepoint
type duk_compiler_instr (line 66) | struct duk_compiler_instr
type duk_compiler_func (line 67) | struct duk_compiler_func
type duk_compiler_ctx (line 68) | struct duk_compiler_ctx
type duk_re_matcher_ctx (line 70) | struct duk_re_matcher_ctx
type duk_re_compiler_ctx (line 71) | struct duk_re_compiler_ctx
type duk_jmpbuf (line 76) | typedef struct duk_jmpbuf duk_jmpbuf;
type duk_heaphdr (line 80) | typedef struct duk_heaphdr duk_heaphdr;
type duk_heaphdr_string (line 81) | typedef struct duk_heaphdr_string duk_heaphdr_string;
type duk_harray (line 82) | typedef struct duk_harray duk_harray;
type duk_hstring (line 83) | typedef struct duk_hstring duk_hstring;
type duk_hstring_external (line 84) | typedef struct duk_hstring_external duk_hstring_external;
type duk_hobject (line 85) | typedef struct duk_hobject duk_hobject;
type duk_hcompfunc (line 86) | typedef struct duk_hcompfunc duk_hcompfunc;
type duk_hnatfunc (line 87) | typedef struct duk_hnatfunc duk_hnatfunc;
type duk_hboundfunc (line 88) | typedef struct duk_hboundfunc duk_hboundfunc;
type duk_hthread (line 89) | typedef struct duk_hthread duk_hthread;
type duk_hbufobj (line 90) | typedef struct duk_hbufobj duk_hbufobj;
type duk_hdecenv (line 91) | typedef struct duk_hdecenv duk_hdecenv;
type duk_hobjenv (line 92) | typedef struct duk_hobjenv duk_hobjenv;
type duk_hproxy (line 93) | typedef struct duk_hproxy duk_hproxy;
type duk_hbuffer (line 94) | typedef struct duk_hbuffer duk_hbuffer;
type duk_hbuffer_fixed (line 95) | typedef struct duk_hbuffer_fixed duk_hbuffer_fixed;
type duk_hbuffer_dynamic (line 96) | typedef struct duk_hbuffer_dynamic duk_hbuffer_dynamic;
type duk_hbuffer_external (line 97) | typedef struct duk_hbuffer_external duk_hbuffer_external;
type duk_propaccessor (line 99) | typedef struct duk_propaccessor duk_propaccessor;
type duk_propvalue (line 100) | typedef union duk_propvalue duk_propvalue;
type duk_propdesc (line 101) | typedef struct duk_propdesc duk_propdesc;
type duk_heap (line 103) | typedef struct duk_heap duk_heap;
type duk_breakpoint (line 104) | typedef struct duk_breakpoint duk_breakpoint;
type duk_activation (line 106) | typedef struct duk_activation duk_activation;
type duk_catcher (line 107) | typedef struct duk_catcher duk_catcher;
type duk_ljstate (line 108) | typedef struct duk_ljstate duk_ljstate;
type duk_strcache_entry (line 109) | typedef struct duk_strcache_entry duk_strcache_entry;
type duk_litcache_entry (line 110) | typedef struct duk_litcache_entry duk_litcache_entry;
type duk_strtab_entry (line 111) | typedef struct duk_strtab_entry duk_strtab_entry;
type duk_fixedbuffer (line 114) | typedef struct duk_fixedbuffer duk_fixedbuffer;
type duk_bitdecoder_ctx (line 117) | typedef struct duk_bitdecoder_ctx duk_bitdecoder_ctx;
type duk_bitencoder_ctx (line 118) | typedef struct duk_bitencoder_ctx duk_bitencoder_ctx;
type duk_bufwriter_ctx (line 119) | typedef struct duk_bufwriter_ctx duk_bufwriter_ctx;
type duk_token (line 121) | typedef struct duk_token duk_token;
type duk_re_token (line 122) | typedef struct duk_re_token duk_re_token;
type duk_lexer_point (line 123) | typedef struct duk_lexer_point duk_lexer_point;
type duk_lexer_ctx (line 124) | typedef struct duk_lexer_ctx duk_lexer_ctx;
type duk_lexer_codepoint (line 125) | typedef struct duk_lexer_codepoint duk_lexer_codepoint;
type duk_compiler_instr (line 127) | typedef struct duk_compiler_instr duk_compiler_instr;
type duk_compiler_func (line 128) | typedef struct duk_compiler_func duk_compiler_func;
type duk_compiler_ctx (line 129) | typedef struct duk_compiler_ctx duk_compiler_ctx;
type duk_re_matcher_ctx (line 131) | typedef struct duk_re_matcher_ctx duk_re_matcher_ctx;
type duk_re_compiler_ctx (line 132) | typedef struct duk_re_compiler_ctx duk_re_compiler_ctx;
FILE: react_juce/duktape/src-input/duk_harray.h
type duk_harray (line 24) | struct duk_harray {
FILE: react_juce/duktape/src-input/duk_hboundfunc.h
type duk_hboundfunc (line 20) | struct duk_hboundfunc {
FILE: react_juce/duktape/src-input/duk_hbuffer.h
type duk_hbuffer (line 178) | struct duk_hbuffer {
type duk_hbuffer_fixed (line 224) | struct duk_hbuffer_fixed {
type duk_hbuffer_dynamic (line 281) | struct duk_hbuffer_dynamic {
type duk_hbuffer_external (line 310) | struct duk_hbuffer_external {
FILE: react_juce/duktape/src-input/duk_hbuffer_alloc.c
function DUK_INTERNAL (line 11) | DUK_INTERNAL duk_hbuffer *duk_hbuffer_alloc(duk_heap *heap, duk_size_t s...
function DUK_INTERNAL (line 128) | DUK_INTERNAL void *duk_hbuffer_get_dynalloc_ptr(duk_heap *heap, void *ud) {
FILE: react_juce/duktape/src-input/duk_hbuffer_assert.c
function DUK_INTERNAL (line 9) | DUK_INTERNAL void duk_hbuffer_assert_valid(duk_hbuffer *h) {
FILE: react_juce/duktape/src-input/duk_hbuffer_ops.c
function DUK_INTERNAL (line 12) | DUK_INTERNAL void duk_hbuffer_resize(duk_hthread *thr, duk_hbuffer_dynam...
function DUK_INTERNAL (line 71) | DUK_INTERNAL void duk_hbuffer_reset(duk_hthread *thr, duk_hbuffer_dynami...
FILE: react_juce/duktape/src-input/duk_hbufobj.h
type duk_hbufobj (line 81) | struct duk_hbufobj {
FILE: react_juce/duktape/src-input/duk_hbufobj_misc.c
function DUK_INTERNAL (line 4) | DUK_INTERNAL duk_uint_t duk_hbufobj_clamp_bytelength(duk_hbufobj *h_bufo...
FILE: react_juce/duktape/src-input/duk_hcompfunc.h
type duk_hcompfunc (line 145) | struct duk_hcompfunc {
FILE: react_juce/duktape/src-input/duk_heap.h
type duk_breakpoint (line 283) | struct duk_breakpoint {
type duk_strcache_entry (line 297) | struct duk_strcache_entry {
type duk_ljstate (line 308) | struct duk_ljstate {
type duk_litcache_entry (line 332) | struct duk_litcache_entry {
type duk_heap (line 348) | struct duk_heap {
FILE: react_juce/duktape/src-input/duk_heap_alloc.c
function DUK_INTERNAL (line 21) | DUK_INTERNAL void duk_free_hobject(duk_heap *heap, duk_hobject *h) {
function DUK_INTERNAL (line 77) | DUK_INTERNAL void duk_free_hbuffer(duk_heap *heap, duk_hbuf
Copy disabled (too large)
Download .json
Condensed preview — 1112 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (19,477K chars).
[
{
"path": ".gitbook.yaml",
"chars": 14,
"preview": "root: ./docs/\n"
},
{
"path": ".github/FUNDING.yml",
"chars": 647,
"preview": "# These are supported funding model platforms\n\ngithub: nick-thompson\npatreon: # Replace with a single Patreon username\no"
},
{
"path": ".github/workflows/cmake.yml",
"chars": 1694,
"preview": "name: CMake\n\non: [push, pull_request]\n\nenv:\n # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc"
},
{
"path": ".github/workflows/lint.yml",
"chars": 237,
"preview": "name: Lint\n\non: [push, pull_request]\n\njobs:\n run-linters:\n name: Run linters\n runs-on: ubuntu-latest\n\n steps:\n"
},
{
"path": ".github/workflows/node.yml",
"chars": 567,
"preview": "name: Node.js\n\non: [push, pull_request]\n\njobs:\n build:\n runs-on: ubuntu-latest\n\n steps:\n - uses: actions/che"
},
{
"path": ".github/workflows/publish.yml",
"chars": 756,
"preview": "name: Publish Packages\n\non:\n release:\n types: [created]\n\njobs:\n build:\n runs-on: ubuntu-latest\n steps:\n "
},
{
"path": ".gitignore",
"chars": 1642,
"preview": "# Compiled object files\n*.slo\n*.lo\n*.o\n*.obj\n*.tlog\n*.log\n\n.vscode/\n.cache/\n\nbuild\nexamples/TestRunner/Builds\nexamples/*"
},
{
"path": ".gitmodules",
"chars": 238,
"preview": "[submodule \"juce\"]\n\tpath = ext/juce\n\turl = ../../juce-framework/JUCE.git\n[submodule \"yoga\"]\n\tpath = react_juce/yoga\n\turl"
},
{
"path": ".prettierignore",
"chars": 31,
"preview": "react_juce\nbuild\ndist\next\njuce\n"
},
{
"path": "CMakeLists.txt",
"chars": 1629,
"preview": "cmake_minimum_required(VERSION 3.15)\nproject(reactjuce VERSION 0.1.0)\n\n# Change this option to ON if you want to build t"
},
{
"path": "CONTRIBUTING.md",
"chars": 1319,
"preview": "# Contributing\n\nWe'd love to see you get involved with React-JUCE! Here are our current working guidelines, and we'll be"
},
{
"path": "LICENSE.md",
"chars": 1078,
"preview": "MIT License\n\nCopyright (c) [2019] [Nicholas Thompson]\n\nPermission is hereby granted, free of charge, to any person obtai"
},
{
"path": "README.md",
"chars": 2495,
"preview": "# React-JUCE\n\n> Write cross-platform native apps with React.js and JUCE\n\nReact-JUCE (formerly named Blueprint) is a hybr"
},
{
"path": "docs/.nojekyll",
"chars": 0,
"preview": ""
},
{
"path": "docs/README.md",
"chars": 1858,
"preview": "# Introduction\n\nReact-JUCE is a hybrid JavaScript/C++ framework that enables a [React.js](https://reactjs.org/) frontend"
},
{
"path": "docs/Resources.md",
"chars": 567,
"preview": "# Resources\n\n- [Introductory Blog Post](https://nickwritesablog.com/blueprint-a-juce-rendering-backend-for-react-js/)\n- "
},
{
"path": "docs/SUMMARY.md",
"chars": 1020,
"preview": "# Summary\n\n## Guides\n\n- [Getting Started](guides/Getting_Started.md)\n- [Running the Examples](guides/Running_the_Example"
},
{
"path": "docs/components/Button.md",
"chars": 1507,
"preview": "# Button\n\nA basic React component for rendering a button with web-like behavior and\nevent interactions.\n\n## Example\n\n```"
},
{
"path": "docs/components/Canvas.md",
"chars": 7,
"preview": "# TODO\n"
},
{
"path": "docs/components/Events.md",
"chars": 41,
"preview": "# TODO: Describe synthetic event support\n"
},
{
"path": "docs/components/Image.md",
"chars": 1759,
"preview": "# Image\n\nA React component for displaying different types of images, including network images,\nlocal image files, and im"
},
{
"path": "docs/components/ListView.md",
"chars": 7,
"preview": "# TODO\n"
},
{
"path": "docs/components/ScrollView.md",
"chars": 7,
"preview": "# TODO\n"
},
{
"path": "docs/components/Slider.md",
"chars": 4246,
"preview": "# Slider\n\nA basic React component for rendering a linear slider or rotary knob, common in\nmany audio applications.\n\n`Sli"
},
{
"path": "docs/components/Styles.md",
"chars": 9994,
"preview": "# Style Properties\n\nStyle properties in React-JUCE generally aim to match the behavior and experience\nof writing CSS or "
},
{
"path": "docs/components/Text.md",
"chars": 4418,
"preview": "# Text\n\nA React component for displaying text.\n\nUnlike React Native and React-DOM, `Text` does not yet support nesting ("
},
{
"path": "docs/components/TextInput.md",
"chars": 1567,
"preview": "TextInput component imitates web's `<input type=\"text\">`.\nhttps://developer.mozilla.org/en-US/docs/Web/HTML/Element/inpu"
},
{
"path": "docs/components/View.md",
"chars": 4085,
"preview": "# View\n\nThe most fundamental of the core React-JUCE components, `View` is a container that supports layout with flexbox,"
},
{
"path": "docs/guides/Debugging_With_Duktape.md",
"chars": 5814,
"preview": "# Debugger Support\n\n(Because console.log() isn't always enough)\n\nNote, there are known issues debugging on Windows. See "
},
{
"path": "docs/guides/Getting_Started.md",
"chars": 1416,
"preview": "# Getting Started\n\nThis guide assumes you have some familiarity with [React.js](https://reactjs.org/) and with [JUCE](ht"
},
{
"path": "docs/guides/Integrating_Your_Project.md",
"chars": 6257,
"preview": "# Starting a New Project\n\nThis step assumes you've already reviewed the [Getting Started](Getting_Started.md) guide. If "
},
{
"path": "docs/guides/Running_the_Examples.md",
"chars": 2994,
"preview": "# Running the GainPlugin Example project\n\nThis step assumes you've already reviewed the [Getting Started](Getting_Starte"
},
{
"path": "docs/guides/Why_Not_React_Native.md",
"chars": 9035,
"preview": "# Why Not React Native?\n\nThe React community first formed in 2013 when React was introduced as a framework for writing w"
},
{
"path": "docs/native/Custom_Native_Components.md",
"chars": 7,
"preview": "# TODO\n"
},
{
"path": "docs/native/Interop.md",
"chars": 4071,
"preview": "# JavaScript/Native Interop\n\nThere are generally two ways to cross the Native/JavaScript boundary:\n\n1. You can pass C++ "
},
{
"path": "examples/GainPlugin/CMakeLists.txt",
"chars": 4807,
"preview": "cmake_minimum_required(VERSION 3.15)\nproject(GainPlugin VERSION 0.1.0)\n\n# `juce_add_plugin` adds a static library target"
},
{
"path": "examples/GainPlugin/PluginProcessor.cpp",
"chars": 7821,
"preview": "/*\n ==============================================================================\n\n This file was auto-generated!\n\n"
},
{
"path": "examples/GainPlugin/PluginProcessor.h",
"chars": 2746,
"preview": "/*\r\n ==============================================================================\r\n\r\n This file was auto-generated"
},
{
"path": "examples/GainPlugin/jsui/.gitignore",
"chars": 310,
"preview": "# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.\n\n# dependencies\n/node_modules\n/.pn"
},
{
"path": "examples/GainPlugin/jsui/babel.config.js",
"chars": 362,
"preview": "module.exports = {\n presets: [\n [\n \"@babel/preset-env\",\n {\n modules: \"umd\",\n },\n ],\n \"@b"
},
{
"path": "examples/GainPlugin/jsui/package.json",
"chars": 700,
"preview": "{\n \"name\": \"ui\",\n \"version\": \"0.1.0\",\n \"private\": true,\n \"dependencies\": {\n \"@babel/runtime-corejs3\": \"^7.11.2\",\n"
},
{
"path": "examples/GainPlugin/jsui/src/AnimatedFlexBox.js",
"chars": 1762,
"preview": "import React, { Component } from \"react\";\nimport { View, Text } from \"react-juce\";\n\nclass AnimatedFlexBoxExample extends"
},
{
"path": "examples/GainPlugin/jsui/src/App.js",
"chars": 3481,
"preview": "// import AnimatedFlexBoxExample from \"./AnimatedFlexBox\";\nimport Meter from \"./Meter\";\nimport Knob from \"./Knob\";\nimpor"
},
{
"path": "examples/GainPlugin/jsui/src/Knob.js",
"chars": 1270,
"preview": "import React from \"react\";\nimport ParameterSlider from \"./ParameterSlider\";\nimport { Slider } from \"react-juce\";\nimport "
},
{
"path": "examples/GainPlugin/jsui/src/Label.js",
"chars": 356,
"preview": "import React, { memo } from \"react\";\nimport { Text, View } from \"react-juce\";\n\nconst Label = ({ value, ...props }) => {\n"
},
{
"path": "examples/GainPlugin/jsui/src/Meter.js",
"chars": 2390,
"preview": "import React, { Component } from \"react\";\nimport { EventBridge, Image, Text, View } from \"react-juce\";\n\nclass Meter exte"
},
{
"path": "examples/GainPlugin/jsui/src/ParameterSlider.js",
"chars": 911,
"preview": "import React, { memo, useCallback } from \"react\";\nimport { Slider } from \"react-juce\";\nimport {\n beginParameterChangeGe"
},
{
"path": "examples/GainPlugin/jsui/src/ParameterToggleButton.js",
"chars": 3284,
"preview": "import ParameterValueStore from \"./ParameterValueStore\";\nimport React, { Component } from \"react\";\nimport { Button } fro"
},
{
"path": "examples/GainPlugin/jsui/src/ParameterValueContext.js",
"chars": 1491,
"preview": "import React, {\n createContext,\n useContext,\n useState,\n useCallback,\n useEffect,\n} from \"react\";\nimport { EventBri"
},
{
"path": "examples/GainPlugin/jsui/src/ParameterValueStore.js",
"chars": 1177,
"preview": "import EventEmitter from \"events\";\nimport { EventBridge } from \"react-juce\";\n\n/** This is more or less a proxy to the Ev"
},
{
"path": "examples/GainPlugin/jsui/src/index.js",
"chars": 275,
"preview": "import React from \"react\";\nimport ReactJUCE from \"react-juce\";\nimport App from \"./App\";\nimport { ParameterValueProvider "
},
{
"path": "examples/GainPlugin/jsui/src/nativeMethods.js",
"chars": 327,
"preview": "export const beginParameterChangeGesture = (paramId) =>\n global.beginParameterChangeGesture(paramId);\n\nexport const end"
},
{
"path": "examples/GainPlugin/jsui/webpack.config.js",
"chars": 1069,
"preview": "const webpack = require(\"webpack\");\n\nmodule.exports = {\n entry: \"./src/index.js\",\n output: {\n path: __dirname + \"/b"
},
{
"path": "package.json",
"chars": 631,
"preview": "{\n \"name\": \"blueprint\",\n \"version\": \"0.1.0\",\n \"description\": \"Write cross-platform native apps with React and JUCE\",\n"
},
{
"path": "packages/react-juce/.gitignore",
"chars": 5,
"preview": "dist\n"
},
{
"path": "packages/react-juce/babel.config.js",
"chars": 388,
"preview": "module.exports = {\n presets: [\n \"@babel/preset-env\",\n \"@babel/preset-react\",\n \"@babel/preset-typescript\",\n ],"
},
{
"path": "packages/react-juce/package.json",
"chars": 1597,
"preview": "{\n \"name\": \"react-juce\",\n \"version\": \"0.2.16\",\n \"description\": \"Write cross-platform native apps with React.js and JU"
},
{
"path": "packages/react-juce/scripts/init.js",
"chars": 1522,
"preview": "#!/usr/bin/env node\n\nvar assert = require(\"assert\");\nvar chalk = require(\"chalk\");\nvar cp = require(\"child_process\");\nva"
},
{
"path": "packages/react-juce/src/components/Button.tsx",
"chars": 2493,
"preview": "import React, { Component } from \"react\";\n\nimport { View } from \"./View\";\nimport { SyntheticMouseEvent } from \"../lib/Sy"
},
{
"path": "packages/react-juce/src/components/Canvas.ts",
"chars": 6463,
"preview": "import React, { Component } from \"react\";\nimport Colors from \"../lib/MacroProperties/Colors\";\n\n// TODO: Need to explicit"
},
{
"path": "packages/react-juce/src/components/Image.ts",
"chars": 372,
"preview": "import React from \"react\";\n\nexport function Image(props: any) {\n return React.createElement(\"Image\", props, props.child"
},
{
"path": "packages/react-juce/src/components/ListView.tsx",
"chars": 6282,
"preview": "import React, { Component, PropsWithChildren, ReactElement } from \"react\";\n\nimport { ViewInstance } from \"../lib/Backend"
},
{
"path": "packages/react-juce/src/components/ScrollView.ts",
"chars": 3122,
"preview": "import React, { PropsWithChildren } from \"react\";\n\nimport invariant from \"invariant\";\n\nfunction ScrollViewContentView(pr"
},
{
"path": "packages/react-juce/src/components/Slider.tsx",
"chars": 8175,
"preview": "import React, { Component, PropsWithChildren } from \"react\";\nimport invariant from \"invariant\";\n\nimport { Canvas, Canvas"
},
{
"path": "packages/react-juce/src/components/Text.ts",
"chars": 585,
"preview": "import React from \"react\";\n\nexport function Text(props: any) {\n return React.createElement(\"Text\", props, props.childre"
},
{
"path": "packages/react-juce/src/components/TextInput.tsx",
"chars": 826,
"preview": "import React, { PropsWithChildren } from \"react\";\n\nexport interface InputEvent {\n value: string;\n}\n\nexport interface Ch"
},
{
"path": "packages/react-juce/src/components/View.ts",
"chars": 603,
"preview": "import React from \"react\";\n\n// We'll need to wrap the default native components in stuff like this so that\n// you can us"
},
{
"path": "packages/react-juce/src/index.tsx",
"chars": 1677,
"preview": "/** Polyfill ES2015 data structures with core-js. */\nimport \"core-js/es6/set\";\nimport \"core-js/es6/map\";\n\nimport Backend"
},
{
"path": "packages/react-juce/src/lib/Backend.ts",
"chars": 8915,
"preview": "import { all as allCssProps } from \"known-css-properties\";\nimport camelCase from \"camelcase\";\nimport NativeMethods from "
},
{
"path": "packages/react-juce/src/lib/EventBridge.ts",
"chars": 465,
"preview": "import EventEmitter from \"events\";\nimport NativeMethods from \"./NativeMethods\";\n\nconst EventBridge = new EventEmitter.Ev"
},
{
"path": "packages/react-juce/src/lib/MacroProperties/Colors.ts",
"chars": 8518,
"preview": "import ColorString from \"color-string\";\nimport ColorNames from \"color-name\";\n\nconst COLOR_PROPERTIES = [\"border-color\", "
},
{
"path": "packages/react-juce/src/lib/MacroProperties/Transform.ts",
"chars": 5172,
"preview": "import { TPropertyAssignment } from \"./types\";\nimport { getMacroCalls } from \"./util\";\nimport matrix from \"matrix-js\";\n\n"
},
{
"path": "packages/react-juce/src/lib/MacroProperties/index.ts",
"chars": 135,
"preview": "import transformPropertiesGetter from \"./Transform\";\n\nexport const macroPropertyGetters = {\n transform: transformProper"
},
{
"path": "packages/react-juce/src/lib/MacroProperties/types.d.ts",
"chars": 127,
"preview": "export type TMacroCall = {\n macro: string;\n args: string[];\n};\n\nexport type TPropertyAssignment = [string, string | nu"
},
{
"path": "packages/react-juce/src/lib/MacroProperties/util.ts",
"chars": 967,
"preview": "import { TMacroCall } from \"./types\";\n\n// don't try too hard, we don't need to support qouted strings containing commas "
},
{
"path": "packages/react-juce/src/lib/MethodTracer.ts",
"chars": 969,
"preview": "//@ts-nocheck\n\nvar inspect = require(\"object-inspect\");\n\n/** An object to be used as an ES6 Proxy handler to trace metho"
},
{
"path": "packages/react-juce/src/lib/NativeMethods.ts",
"chars": 751,
"preview": "let Native = global[\"__NativeBindings__\"] || {};\nlet DefaultExport = Native;\n\ndeclare var process: {\n env: {\n NODE_E"
},
{
"path": "packages/react-juce/src/lib/Renderer.ts",
"chars": 7060,
"preview": "import MethodTracer from \"./MethodTracer\";\nimport ReactReconciler from \"react-reconciler\";\nimport Backend, { ViewInstanc"
},
{
"path": "packages/react-juce/src/lib/SyntheticEvents.ts",
"chars": 1655,
"preview": "import { Instance } from \"./Backend\";\n\nexport class SyntheticEvent {\n public bubbles: boolean;\n public defaultPrevente"
},
{
"path": "packages/react-juce/template/.gitignore",
"chars": 310,
"preview": "# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.\n\n# dependencies\n/node_modules\n/.pn"
},
{
"path": "packages/react-juce/template/babel.config.js",
"chars": 362,
"preview": "module.exports = {\n presets: [\n [\n \"@babel/preset-env\",\n {\n modules: \"umd\",\n },\n ],\n \"@b"
},
{
"path": "packages/react-juce/template/package.json",
"chars": 641,
"preview": "{\n \"name\": \"ui\",\n \"version\": \"0.1.0\",\n \"private\": true,\n \"dependencies\": {\n \"@babel/runtime-corejs3\": \"^7.10.3\",\n"
},
{
"path": "packages/react-juce/template/src/App.js",
"chars": 632,
"preview": "import React, { Component } from \"react\";\nimport { View, Text } from \"react-juce\";\n\nclass App extends Component {\n rend"
},
{
"path": "packages/react-juce/template/src/index.js",
"chars": 146,
"preview": "import React from \"react\";\nimport ReactJUCE from \"react-juce\";\nimport App from \"./App\";\n\nReactJUCE.render(<App />, React"
},
{
"path": "packages/react-juce/template/webpack.config.js",
"chars": 559,
"preview": "module.exports = {\n entry: \"./src/index.js\",\n output: {\n path: __dirname + \"/build/js\",\n filename: \"main.js\",\n "
},
{
"path": "packages/react-juce/tsconfig.json",
"chars": 387,
"preview": "{\n \"compilerOptions\": {\n \"module\": \"commonjs\",\n \"target\": \"es6\",\n \"lib\": [\"es2015\", \"dom\"],\n \"declaration\":"
},
{
"path": "packages/react-juce/webpack.config.js",
"chars": 1810,
"preview": "const path = require(\"path\");\n\nmodule.exports = (env) => {\n return {\n entry: \"./src/index.tsx\",\n output: {\n "
},
{
"path": "react_juce/core/AppHarness.cpp",
"chars": 3406,
"preview": "/*\n ==============================================================================\n\n AppHarness.cpp\n Created: 21 "
},
{
"path": "react_juce/core/AppHarness.h",
"chars": 8545,
"preview": "/*\n ==============================================================================\n\n AppHarness.h\n Created: 21 No"
},
{
"path": "react_juce/core/CanvasView.cpp",
"chars": 26297,
"preview": "/*\n ==============================================================================\n\n CanvasView.cpp\n Created: 23 "
},
{
"path": "react_juce/core/CanvasView.h",
"chars": 2932,
"preview": "/*\n ==============================================================================\n\n CanvasView.h\n Created: 19 Ma"
},
{
"path": "react_juce/core/EcmascriptEngine.cpp",
"chars": 3067,
"preview": "/*\n ==============================================================================\n\n EcmascriptEngine.cpp\n Create"
},
{
"path": "react_juce/core/EcmascriptEngine.h",
"chars": 7664,
"preview": "/*\n ==============================================================================\n\n EcmascriptEngine.h\n Created:"
},
{
"path": "react_juce/core/EcmascriptEngine_Duktape.cpp",
"chars": 33360,
"preview": "/* We're careful to include the duktape source files before the module header\n * file because `duktape.c` sets certain p"
},
{
"path": "react_juce/core/EcmascriptEngine_Hermes.cpp",
"chars": 19479,
"preview": "#include \"EcmascriptEngine.h\"\n\n#if _MSC_VER\n#pragma warning(push)\n#elif __clang__\n#pragma clang diagnostic push\n #pragma"
},
{
"path": "react_juce/core/FileWatcher.h",
"chars": 3051,
"preview": "/*\n ==============================================================================\n\n FileWatcher.h\n Created: 10 O"
},
{
"path": "react_juce/core/GenericEditor.cpp",
"chars": 6257,
"preview": "/*\n ==============================================================================\n\n GenericEditor.cpp\n Created: "
},
{
"path": "react_juce/core/GenericEditor.h",
"chars": 3776,
"preview": "/*\n ==============================================================================\n\n GenericEditor.h\n Created: 3 "
},
{
"path": "react_juce/core/ImageView.cpp",
"chars": 11072,
"preview": "/*\n ==============================================================================\n\n ImageView.cpp\n Created: 13 J"
},
{
"path": "react_juce/core/ImageView.h",
"chars": 2428,
"preview": "/*\n ==============================================================================\n\n ImageView.h\n Created: 20 Apr"
},
{
"path": "react_juce/core/RawTextView.h",
"chars": 1924,
"preview": "/*\n ==============================================================================\n\n RawTextView.h\n Created: 11 A"
},
{
"path": "react_juce/core/ReactApplicationRoot.cpp",
"chars": 7042,
"preview": "/*\n ==============================================================================\n\n ReactApplicationRoot.cpp\n Cr"
},
{
"path": "react_juce/core/ReactApplicationRoot.h",
"chars": 7797,
"preview": "/*\n ==============================================================================\n\n ReactApplicationRoot.h\n Crea"
},
{
"path": "react_juce/core/ScrollView.cpp",
"chars": 5380,
"preview": "/*\n ==============================================================================\n\n ScrollView.cpp\n Created: 10 "
},
{
"path": "react_juce/core/ScrollView.h",
"chars": 3558,
"preview": "/*\n ==============================================================================\n\n ScrollView.h\n Created: 20 Ap"
},
{
"path": "react_juce/core/ScrollViewContentShadowView.h",
"chars": 2015,
"preview": "/*\n ==============================================================================\n\n ScrollViewContentShadowView.h\n "
},
{
"path": "react_juce/core/ShadowView.cpp",
"chars": 2463,
"preview": "#include \"ShadowView.h\"\n\n//TODO: Eventually we may switch this out based on some preprocessor\n// flag just as we're"
},
{
"path": "react_juce/core/ShadowView.h",
"chars": 5980,
"preview": "#pragma once\n\n#include \"View.h\"\n\n\nnamespace reactjuce\n{\n\n //========================================================="
},
{
"path": "react_juce/core/ShadowView_Yoga.cpp",
"chars": 17597,
"preview": "#include \"ShadowView.h\"\n#include \"YogaImplInclude.cpp\"\n\n\n//============================================================="
},
{
"path": "react_juce/core/TextInputView.cpp",
"chars": 7120,
"preview": "/*\n==============================================================================\n\n TextInputView.cpp\n Created: 20 Jan"
},
{
"path": "react_juce/core/TextInputView.h",
"chars": 5689,
"preview": "/*\n==============================================================================\n\n TextInputView.h\n Created: 20 Jan 2"
},
{
"path": "react_juce/core/TextShadowView.cpp",
"chars": 1573,
"preview": "#include \"TextShadowView.h\"\n\n//TODO: Eventually we may switch this out based on some preprocessor\n// flag just as w"
},
{
"path": "react_juce/core/TextShadowView.h",
"chars": 1548,
"preview": "#pragma once\n\n#include \"ShadowView.h\"\n#include \"View.h\"\n\n\nnamespace reactjuce\n{\n\n /** The TextShadowView extends a Sh"
},
{
"path": "react_juce/core/TextShadowView_Yoga.cpp",
"chars": 2057,
"preview": "#include \"TextShadowView.h\"\n#include \"YogaImplInclude.cpp\"\n\nnamespace reactjuce\n{\n //================================"
},
{
"path": "react_juce/core/TextView.h",
"chars": 4784,
"preview": "/*\n ==============================================================================\n\n TextView.h\n Created: 28 Nov "
},
{
"path": "react_juce/core/Utils.cpp",
"chars": 9864,
"preview": "/*\n ==============================================================================\n\n Utils.cpp\n Created: 20 Jan 2"
},
{
"path": "react_juce/core/Utils.h",
"chars": 680,
"preview": "/*\n ==============================================================================\n\n Utils.h\n Created: 20 Jan 202"
},
{
"path": "react_juce/core/View.cpp",
"chars": 10832,
"preview": "/*\n ==============================================================================\n\n View.cpp\n Created: 26 Nov 20"
},
{
"path": "react_juce/core/View.h",
"chars": 5790,
"preview": "/*\n ==============================================================================\n\n View.h\n Created: 26 Nov 2018"
},
{
"path": "react_juce/core/ViewManager.cpp",
"chars": 9810,
"preview": "/*\n ==============================================================================\n\n ViewManager.cpp\n Created: 21"
},
{
"path": "react_juce/core/ViewManager.h",
"chars": 4388,
"preview": "/*\n ==============================================================================\n\n ViewManager.h\n Created: 21 M"
},
{
"path": "react_juce/core/YogaImplInclude.cpp",
"chars": 3093,
"preview": "#pragma once\n\n// Disable compiler warnings for yoga\n#if _MSC_VER\n#pragma warning(push)\n #pragma warning(disable : 4018)"
},
{
"path": "react_juce/duktape/AUTHORS.rst",
"chars": 3996,
"preview": "===============\nDuktape authors\n===============\n\nCopyright\n=========\n\nDuktape copyrights are held by its authors. Each "
},
{
"path": "react_juce/duktape/LICENSE.txt",
"chars": 1172,
"preview": "===============\nDuktape license\n===============\n\n(http://opensource.org/licenses/MIT)\n\nCopyright (c) 2013-2019 by Duktap"
},
{
"path": "react_juce/duktape/Makefile.cmdline",
"chars": 1727,
"preview": "#\n# Example Makefile for building a program with embedded Duktape.\n# The example program here is the Duktape command l"
},
{
"path": "react_juce/duktape/Makefile.codepage",
"chars": 166,
"preview": "CC = gcc\n\ncodepage:\n\t$(CC) -o $@ -std=c99 -O2 -Wall -Wextra -Isrc/ \\\n\t\tsrc/duktape.c examples/codepage-conv/duk_codepage"
},
{
"path": "react_juce/duktape/Makefile.coffee",
"chars": 130,
"preview": "dummy:\n\tcoffee -c examples/coffee/globals.coffee\n\tcoffee -c examples/coffee/hello.coffee\n\tcoffee -c examples/coffee/mand"
},
{
"path": "react_juce/duktape/Makefile.dukdebug",
"chars": 1509,
"preview": "#\n# Duktape command line tool with debugger support.\n#\n\nDUKTAPE_SOURCES = prep/duktape.c\n\n# Windows (MinGW): use exampl"
},
{
"path": "react_juce/duktape/Makefile.eval",
"chars": 161,
"preview": "#\n# Example Makefile for building the eval example\n#\n\nCC = gcc\n\neval:\n\t$(CC) -o $@ -std=c99 -O2 -Wall -Wextra -Isrc/ \\\n"
},
{
"path": "react_juce/duktape/Makefile.eventloop",
"chars": 620,
"preview": "#\n# Example Makefile for building the eventloop example\n#\n\nCC = gcc\n\nevloop:\n\t@echo \"NOTE: The eventloop is an example "
},
{
"path": "react_juce/duktape/Makefile.hello",
"chars": 1181,
"preview": "#\n# Example Makefile for building a program with embedded Duktape.\n#\n# There are two source sets in the distribution: "
},
{
"path": "react_juce/duktape/Makefile.jsoncbor",
"chars": 211,
"preview": "#\n# Example Makefile for building the jsoncbor example\n#\n\nCC = gcc\n\njsoncbor:\n\t$(CC) -o $@ -std=c99 -Wall -Wextra -O2 -"
},
{
"path": "react_juce/duktape/Makefile.jxpretty",
"chars": 180,
"preview": "#\n# Example Makefile for building the jxpretty example\n#\n\nCC = gcc\n\njxpretty:\n\t$(CC) -o $@ -std=c99 -Wall -Wextra -O2 -"
},
{
"path": "react_juce/duktape/Makefile.sandbox",
"chars": 173,
"preview": "#\n# Example Makefile for building the sandbox example\n#\n\nCC = gcc\n\nsandbox:\n\t$(CC) -o $@ -std=c99 -O2 -Wall -Wextra -Is"
},
{
"path": "react_juce/duktape/Makefile.sharedlibrary",
"chars": 3621,
"preview": "#\n# Example of how to build and install locally as a shared library\n#\n# Usage:\n#\n# $ make -f Makefile.sharedlibrary"
},
{
"path": "react_juce/duktape/README.rst",
"chars": 5145,
"preview": "=======\nDuktape\n=======\n\nDuktape is a small and portable ECMAScript E5/E5.1 implementation. It is\nintended to be easily"
},
{
"path": "react_juce/duktape/config/README.rst",
"chars": 646,
"preview": "=================\nDuktape genconfig\n=================\n\n``genconfig`` is a helper script for coming up with a ``duk_confi"
},
{
"path": "react_juce/duktape/config/architectures/architecture_arm32.h.in",
"chars": 112,
"preview": "#define DUK_USE_ARCH_STRING \"arm32\"\n/* Byte order varies, so rely on autodetect. */\n#define DUK_USE_PACKED_TVAL\n"
},
{
"path": "react_juce/duktape/config/architectures/architecture_arm64.h.in",
"chars": 111,
"preview": "#define DUK_USE_ARCH_STRING \"arm64\"\n/* Byte order varies, so rely on autodetect. */\n#undef DUK_USE_PACKED_TVAL\n"
},
{
"path": "react_juce/duktape/config/architectures/architecture_emscripten.h.in",
"chars": 135,
"preview": "#define DUK_USE_ARCH_STRING \"emscripten\"\n#if !defined(DUK_USE_BYTEORDER)\n#define DUK_USE_BYTEORDER 1\n#endif\n#undef DUK_U"
},
{
"path": "react_juce/duktape/config/architectures/architecture_generic.h.in",
"chars": 150,
"preview": "/* These are necessary wild guesses. */\n#define DUK_USE_ARCH_STRING \"generic\"\n/* Rely on autodetection for byte order, a"
},
{
"path": "react_juce/duktape/config/architectures/architecture_m68k.h.in",
"chars": 130,
"preview": "#define DUK_USE_ARCH_STRING \"m68k\"\n#if !defined(DUK_USE_BYTEORDER)\n#define DUK_USE_BYTEORDER 3\n#endif\n#define DUK_USE_PA"
},
{
"path": "react_juce/duktape/config/architectures/architecture_mips32.h.in",
"chars": 120,
"preview": "#define DUK_USE_ARCH_STRING \"mips32\"\n/* MIPS byte order varies so rely on autodetection. */\n#define DUK_USE_PACKED_TVAL\n"
},
{
"path": "react_juce/duktape/config/architectures/architecture_mips64.h.in",
"chars": 119,
"preview": "#define DUK_USE_ARCH_STRING \"mips64\"\n/* MIPS byte order varies so rely on autodetection. */\n#undef DUK_USE_PACKED_TVAL\n"
},
{
"path": "react_juce/duktape/config/architectures/architecture_powerpc32.h.in",
"chars": 131,
"preview": "#define DUK_USE_ARCH_STRING \"ppc32\"\n#if !defined(DUK_USE_BYTEORDER)\n#define DUK_USE_BYTEORDER 3\n#endif\n#define DUK_USE_P"
},
{
"path": "react_juce/duktape/config/architectures/architecture_powerpc64.h.in",
"chars": 130,
"preview": "#define DUK_USE_ARCH_STRING \"ppc64\"\n#if !defined(DUK_USE_BYTEORDER)\n#define DUK_USE_BYTEORDER 3\n#endif\n#undef DUK_USE_PA"
},
{
"path": "react_juce/duktape/config/architectures/architecture_sparc32.h.in",
"chars": 122,
"preview": "#define DUK_USE_ARCH_STRING \"sparc32\"\n/* SPARC byte order varies so rely on autodetection. */\n#define DUK_USE_PACKED_TVA"
},
{
"path": "react_juce/duktape/config/architectures/architecture_sparc64.h.in",
"chars": 121,
"preview": "#define DUK_USE_ARCH_STRING \"sparc64\"\n/* SPARC byte order varies so rely on autodetection. */\n#undef DUK_USE_PACKED_TVAL"
},
{
"path": "react_juce/duktape/config/architectures/architecture_superh.h.in",
"chars": 109,
"preview": "#define DUK_USE_ARCH_STRING \"sh\"\n/* Byte order varies, rely on autodetection. */\n#define DUK_USE_PACKED_TVAL\n"
},
{
"path": "react_juce/duktape/config/architectures/architecture_x32.h.in",
"chars": 129,
"preview": "#define DUK_USE_ARCH_STRING \"x32\"\n#if !defined(DUK_USE_BYTEORDER)\n#define DUK_USE_BYTEORDER 1\n#endif\n#define DUK_USE_PAC"
},
{
"path": "react_juce/duktape/config/architectures/architecture_x64.h.in",
"chars": 128,
"preview": "#define DUK_USE_ARCH_STRING \"x64\"\n#if !defined(DUK_USE_BYTEORDER)\n#define DUK_USE_BYTEORDER 1\n#endif\n#undef DUK_USE_PACK"
},
{
"path": "react_juce/duktape/config/architectures/architecture_x86.h.in",
"chars": 439,
"preview": "#define DUK_USE_ARCH_STRING \"x86\"\n#if !defined(DUK_USE_BYTEORDER)\n#define DUK_USE_BYTEORDER 1\n#endif\n\n#define DUK_USE_PA"
},
{
"path": "react_juce/duktape/config/architectures.yaml",
"chars": 1314,
"preview": "# Architecture metadata.\n\nautodetect:\n -\n name: x86\n check: DUK_F_X86\n include: architecture_x86.h.in\n -\n "
},
{
"path": "react_juce/duktape/config/compilers/compiler_bcc.h.in",
"chars": 509,
"preview": "#undef DUK_USE_BRANCH_HINTS\n\n#if defined(DUK_F_CPP)\n#define DUK_USE_COMPILER_STRING \"bcc++\"\n#else\n#define DUK_USE_COMPIL"
},
{
"path": "react_juce/duktape/config/compilers/compiler_clang.h.in",
"chars": 2115,
"preview": "#if defined(DUK_F_C99) || defined(DUK_F_CPP11)\n/* C99 / C++11 and above: rely on va_copy() which is required. */\n#define"
},
{
"path": "react_juce/duktape/config/compilers/compiler_emscripten.h.in",
"chars": 1209,
"preview": "#define DUK_NORETURN(decl) decl __attribute__((noreturn))\n\n#if defined(__clang__) && defined(__has_builtin)\n#if __has_b"
},
{
"path": "react_juce/duktape/config/compilers/compiler_gcc.h.in",
"chars": 3153,
"preview": "#if defined(DUK_F_C99) || defined(DUK_F_CPP11)\n/* C99 / C++11 and above: rely on va_copy() which is required. */\n#define"
},
{
"path": "react_juce/duktape/config/compilers/compiler_generic.h.in",
"chars": 594,
"preview": "#undef DUK_USE_BRANCH_HINTS\n\n#if defined(DUK_F_CPP)\n#define DUK_USE_COMPILER_STRING \"generic-c++\"\n#else\n#define DUK_USE_"
},
{
"path": "react_juce/duktape/config/compilers/compiler_msvc.h.in",
"chars": 2650,
"preview": "/* http://msdn.microsoft.com/en-us/library/aa235362(VS.60).aspx */\n#define DUK_NORETURN(decl) __declspec(noreturn) decl"
},
{
"path": "react_juce/duktape/config/compilers/compiler_tinyc.h.in",
"chars": 408,
"preview": "#undef DUK_USE_BRANCH_HINTS\n\n#if defined(DUK_F_CPP)\n#define DUK_USE_COMPILER_STRING \"tinyc++\"\n#else\n#define DUK_USE_COMP"
},
{
"path": "react_juce/duktape/config/compilers/compiler_vbcc.h.in",
"chars": 587,
"preview": "#undef DUK_USE_BRANCH_HINTS\n\n#if defined(DUK_F_CPP)\n#define DUK_USE_COMPILER_STRING \"vbcc-c++\"\n#else\n#define DUK_USE_COM"
},
{
"path": "react_juce/duktape/config/compilers.yaml",
"chars": 651,
"preview": "# Compiler metadata.\n\nautodetect:\n -\n name: Clang\n check: DUK_F_CLANG\n include: compiler_clang.h.in\n -\n na"
},
{
"path": "react_juce/duktape/config/config-options/DUK_USE_32BIT_PTRS.yaml",
"chars": 154,
"preview": "define: DUK_USE_32BIT_PTRS\nintroduced: 1.0.0\nremoved: 1.4.0\ndefault: false\ntags:\n - portability\ndescription: >\n Pointe"
},
{
"path": "react_juce/duktape/config/config-options/DUK_USE_64BIT_OPS.yaml",
"chars": 253,
"preview": "define: DUK_USE_64BIT_OPS\nintroduced: 1.0.0\ndefault: true\ntags:\n - portability\ndescription: >\n Use 64-bit integer oper"
},
{
"path": "react_juce/duktape/config/config-options/DUK_USE_ALIGN_4.yaml",
"chars": 232,
"preview": "define: DUK_USE_ALIGN_4\nintroduced: 1.0.0\nremoved: 1.3.0\nrelated:\n - DUK_USE_ALIGN_BY\ndefault: false\ntags:\n - portabil"
},
{
"path": "react_juce/duktape/config/config-options/DUK_USE_ALIGN_8.yaml",
"chars": 232,
"preview": "define: DUK_USE_ALIGN_8\nintroduced: 1.0.0\nremoved: 1.3.0\nrelated:\n - DUK_USE_ALIGN_BY\ndefault: false\ntags:\n - portabil"
},
{
"path": "react_juce/duktape/config/config-options/DUK_USE_ALIGN_BY.yaml",
"chars": 189,
"preview": "define: DUK_USE_ALIGN_BY\nintroduced: 1.3.0\ndefault: 8\ntags:\n - portability\ndescription: >\n Use N-byte alignment for 64"
},
{
"path": "react_juce/duktape/config/config-options/DUK_USE_ALLOW_UNDEFINED_BEHAVIOR.yaml",
"chars": 379,
"preview": "define: DUK_USE_ALLOW_UNDEFINED_BEHAVIOR\nintroduced: 2.3.0\ndefault: false\ntags:\n - portability\ndescription: >\n Allow t"
},
{
"path": "react_juce/duktape/config/config-options/DUK_USE_ARCH_STRING.yaml",
"chars": 214,
"preview": "define: DUK_USE_ARCH_STRING\nintroduced: 1.0.0\ndefault:\n string: \"unknown\"\ntags:\n - portability\ndescription: >\n Human-"
},
{
"path": "react_juce/duktape/config/config-options/DUK_USE_ARRAY_BUILTIN.yaml",
"chars": 127,
"preview": "define: DUK_USE_ARRAY_BUILTIN\nintroduced: 2.0.0\ndefault: true\ntags:\n - ecmascript\ndescription: >\n Provide an Array bui"
},
{
"path": "react_juce/duktape/config/config-options/DUK_USE_ARRAY_FASTPATH.yaml",
"chars": 582,
"preview": "define: DUK_USE_ARRAY_FASTPATH\nintroduced: 2.0.0\ndefault: true\ntags:\n - performance\n - fastpath\n - lowmemory\n - comp"
},
{
"path": "react_juce/duktape/config/config-options/DUK_USE_ARRAY_PROP_FASTPATH.yaml",
"chars": 513,
"preview": "define: DUK_USE_ARRAY_PROP_FASTPATH\nintroduced: 2.0.0\ndefault: true\ntags:\n - performance\n - fastpath\n - lowmemory\n -"
},
{
"path": "react_juce/duktape/config/config-options/DUK_USE_ASSERTIONS.yaml",
"chars": 210,
"preview": "define: DUK_USE_ASSERTIONS\nintroduced: 1.0.0\ndefault: false\ntags:\n - development\n - debug\ndescription: >\n Enable inte"
},
{
"path": "react_juce/duktape/config/config-options/DUK_USE_ATAN2_WORKAROUNDS.yaml",
"chars": 238,
"preview": "define: DUK_USE_ATAN2_WORKAROUNDS\nintroduced: 2.0.0\ndefault: false\ntags:\n - portability\ndescription: >\n Enable workaro"
},
{
"path": "react_juce/duktape/config/config-options/DUK_USE_AUGMENT_ERROR_CREATE.yaml",
"chars": 230,
"preview": "define: DUK_USE_AUGMENT_ERROR_CREATE\nintroduced: 1.0.0\ndefault: true\ntags:\n - ecmascript\ndescription: >\n Augment an EC"
},
{
"path": "react_juce/duktape/config/config-options/DUK_USE_AUGMENT_ERROR_THROW.yaml",
"chars": 193,
"preview": "define: DUK_USE_AUGMENT_ERROR_THROW\nintroduced: 1.0.0\ndefault: true\ntags:\n - ecmascript\ndescription: >\n Augment an ECM"
},
{
"path": "react_juce/duktape/config/config-options/DUK_USE_AVOID_PLATFORM_FUNCPTRS.yaml",
"chars": 498,
"preview": "define: DUK_USE_AVOID_PLATFORM_FUNCPTRS\nintroduced: 1.0.0\ndefault: true\ntags:\n - portability\ndescription: >\n Don't ass"
},
{
"path": "react_juce/duktape/config/config-options/DUK_USE_BASE64_FASTPATH.yaml",
"chars": 240,
"preview": "define: DUK_USE_BASE64_FASTPATH\nintroduced: 1.4.0\ndefault: true\ntags:\n - performance\n - fastpath\n - lowmemory\ndescrip"
},
{
"path": "react_juce/duktape/config/config-options/DUK_USE_BASE64_SUPPORT.yaml",
"chars": 137,
"preview": "define: DUK_USE_BASE64_SUPPORT\nintroduced: 2.3.0\ndefault: true\ntags:\n - codec\ndescription: >\n Enable base64 encoding/d"
},
{
"path": "react_juce/duktape/config/config-options/DUK_USE_BOOLEAN_BUILTIN.yaml",
"chars": 130,
"preview": "define: DUK_USE_BOOLEAN_BUILTIN\nintroduced: 2.0.0\ndefault: true\ntags:\n - ecmascript\ndescription: >\n Provide a Boolean "
},
{
"path": "react_juce/duktape/config/config-options/DUK_USE_BRANCH_HINTS.yaml",
"chars": 214,
"preview": "define: DUK_USE_BRANCH_HINTS\nintroduced: 1.0.0\ndefault: true\ntags:\n - portability\ndescription: >\n Use branch hints if "
},
{
"path": "react_juce/duktape/config/config-options/DUK_USE_BROWSER_LIKE.yaml",
"chars": 176,
"preview": "define: DUK_USE_BROWSER_LIKE\nintroduced: 1.0.0\nremoved: 2.0.0\ndefault: true\ntags:\n - ecmascript\ndescription: >\n Provid"
},
{
"path": "react_juce/duktape/config/config-options/DUK_USE_BUFFEROBJECT_SUPPORT.yaml",
"chars": 671,
"preview": "define: DUK_USE_BUFFEROBJECT_SUPPORT\nintroduced: 1.3.0\ndefault: true\ntags:\n - ecmascript2015\ndescription: >\n Enable su"
},
{
"path": "react_juce/duktape/config/config-options/DUK_USE_BUFLEN16.yaml",
"chars": 176,
"preview": "define: DUK_USE_BUFLEN16\nintroduced: 1.1.0\ndefault: false\ntags:\n - lowmemory\n - experimental\ndescription: >\n Use a 16"
},
{
"path": "react_juce/duktape/config/config-options/DUK_USE_BUILTIN_INITJS.yaml",
"chars": 394,
"preview": "define: DUK_USE_BUILTIN_INITJS\nintroduced: 1.0.0\nremoved: 2.0.0\ndefault: true\ntags:\n - ecmascript\ndescription: >\n Use "
},
{
"path": "react_juce/duktape/config/config-options/DUK_USE_BYTECODE_DUMP_SUPPORT.yaml",
"chars": 162,
"preview": "define: DUK_USE_BYTECODE_DUMP_SUPPORT\nintroduced: 1.3.0\ndefault: true\ntags:\n - api\ndescription: >\n Enable support for "
},
{
"path": "react_juce/duktape/config/config-options/DUK_USE_BYTEORDER.yaml",
"chars": 574,
"preview": "define: DUK_USE_BYTEORDER\nintroduced: 1.4.0\ndefault: 0 # no reasonable automatic default\ntags:\n - portability\ndescript"
},
{
"path": "react_juce/duktape/config/config-options/DUK_USE_BYTEORDER_FORCED.yaml",
"chars": 255,
"preview": "define: DUK_USE_BYTEORDER_FORCED\nintroduced: 1.0.0\nremoved: 1.4.0\ndefault: false\ntags:\n - portability\ndescription: >\n "
},
{
"path": "react_juce/duktape/config/config-options/DUK_USE_CACHE_ACTIVATION.yaml",
"chars": 280,
"preview": "define: DUK_USE_CACHE_ACTIVATION\nintroduced: 2.2.0\ndefault: true\ntags:\n - performance\ndescription: >\n Cache duk_activa"
},
{
"path": "react_juce/duktape/config/config-options/DUK_USE_CACHE_CATCHER.yaml",
"chars": 271,
"preview": "define: DUK_USE_CACHE_CATCHER\nintroduced: 2.2.0\ndefault: true\ntags:\n - performance\ndescription: >\n Cache duk_catcher r"
},
{
"path": "react_juce/duktape/config/config-options/DUK_USE_CALLSTACK_LIMIT.yaml",
"chars": 362,
"preview": "define: DUK_USE_CALLSTACK_LIMIT\nintroduced: 2.2.0\ndefault: 10000\ntags:\n - misc\ndescription: >\n Maximum call stack size"
},
{
"path": "react_juce/duktape/config/config-options/DUK_USE_COMMONJS_MODULES.yaml",
"chars": 403,
"preview": "define: DUK_USE_COMMONJS_MODULES\nintroduced: 1.0.0\nremoved: 2.0.0\ndefault: true\ntags:\n - ecmascript\ndescription: >\n En"
},
{
"path": "react_juce/duktape/config/config-options/DUK_USE_COMPILER_RECLIMIT.yaml",
"chars": 176,
"preview": "define: DUK_USE_COMPILER_RECLIMIT\nintroduced: 1.3.0\ndefault: 2500\ntags:\n - portability\n - cstackdepth\ndescription: >\n "
},
{
"path": "react_juce/duktape/config/config-options/DUK_USE_COMPILER_STRING.yaml",
"chars": 214,
"preview": "define: DUK_USE_COMPILER_STRING\nintroduced: 1.0.0\ndefault:\n string: \"unknown\"\ntags:\n - portability\ndescription: >\n Hu"
},
{
"path": "react_juce/duktape/config/config-options/DUK_USE_COMPUTED_INFINITY.yaml",
"chars": 522,
"preview": "define: DUK_USE_COMPUTED_INFINITY\nintroduced: 1.0.0\ndefault: false\ntags:\n - portability\ndescription: >\n The DUK_DOUBLE"
},
{
"path": "react_juce/duktape/config/config-options/DUK_USE_COMPUTED_NAN.yaml",
"chars": 480,
"preview": "define: DUK_USE_COMPUTED_NAN\nintroduced: 1.0.0\ndefault: false\ntags:\n - portability\ndescription: >\n The DUK_DOUBLE_NAN "
},
{
"path": "react_juce/duktape/config/config-options/DUK_USE_COROUTINE_SUPPORT.yaml",
"chars": 161,
"preview": "define: DUK_USE_COROUTINE_SUPPORT\nintroduced: 2.0.0\ndefault: true\ntags:\n - execution\ndescription: >\n Enable support fo"
},
{
"path": "react_juce/duktape/config/config-options/DUK_USE_CPP_EXCEPTIONS.yaml",
"chars": 299,
"preview": "define: DUK_USE_CPP_EXCEPTIONS\nintroduced: 1.4.0\ndefault: false\ntags:\n - portability\ndescription: >\n Use C++ exception"
},
{
"path": "react_juce/duktape/config/config-options/DUK_USE_DATAPTR16.yaml",
"chars": 713,
"preview": "define: DUK_USE_DATAPTR16\nintroduced: 1.1.0\nrelated:\n - DUK_USE_DATAPTR_ENC16\n - DUK_USE_DATAPTR_DEC16\ndefault: false\n"
},
{
"path": "react_juce/duktape/config/config-options/DUK_USE_DATAPTR_DEC16.yaml",
"chars": 419,
"preview": "define: DUK_USE_DATAPTR_DEC16\nintroduced: 1.1.0\nrequires:\n - DUK_USE_DATAPTR16\ndefault: false\ntags:\n - lowmemory\n - e"
}
]
// ... and 912 more files (download for full content)
About this extraction
This page contains the full source code of the nick-thompson/react-juce GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1112 files (17.5 MB), approximately 4.7M tokens, and a symbol index with 8859 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.