v16.0.0 (2021-10-28)
Breaking Change 💥
- #2896 Remove deprecated rule aliases (@IvanGoncharov)
- #2897 Remove 'findDeprecatedUsages' that was previously deprecated (@IvanGoncharov)
- #2898 Remove 'GraphQLSchema::isPossibleType' that was previously deprecated (@IvanGoncharov)
- #2900 Drop support for long deprecated comments as descriptions (@IvanGoncharov)
- #2902 Remove deprecated {GraphQLEnumValue, GraphQLField}::isDeprecated (@IvanGoncharov)
- #2903 Removed parser support for legacy syntax (@IvanGoncharov)
- #2904 Remove support for positional args in graphql/execute/subscribe func (@IvanGoncharov)
- #2905 resolveType: remove support for returning GraphQLObjectType (@IvanGoncharov)
- #2906 Convert GraphQLList and GraphQLNonNull into proper classes (@IvanGoncharov)
- #2907 Remove 'find' polyfill (@IvanGoncharov)
- #2911 Remove 'isFinite' & 'isInteger' polyfills (@IvanGoncharov)
- #2912 Drop 'Array.from' polyfill (@IvanGoncharov)
- #2913 Remove polyfills for Symbol (@IvanGoncharov)
- #2914 Remove Node's custom inspect function (@IvanGoncharov)
- #2915 Drop support for TS before 3.7 (@IvanGoncharov)
- #2916 refactor: replace default exports with named exports (@IvanGoncharov)
- #2917 Drop support for non-iteratable ArrayLike objects (@IvanGoncharov)
- #2918 Drop support for older browsers (@IvanGoncharov)
- #2919 Remove polyfills for 'Object.values' & 'Object.entries' (@IvanGoncharov)
- #2920 Deprecate fragments with variables and reflect that in naming (@IvanGoncharov)
- #2921 Deprecate 'getFieldDefFn' arg of 'TypeInfo' and move it last (@IvanGoncharov)
- #2923 Drop support for Node10 (@IvanGoncharov)
- #2930 visitor: remove
visitorKeys
argument (@IvanGoncharov) - #2931 visit: remove template arguments for possible nodes (@IvanGoncharov)
- #2951 Forbid null & undefined as return value of 'interfaces' thunk (@IvanGoncharov)
- #2952 Restrict Thunks to support only ObjMap and Array (@IvanGoncharov)
- #2955 feat: convert Thunk to ThunkArray and ThunkObjMap (@saihaj)
- #2957 visitor: remove 4th form of visitor (@IvanGoncharov)
- #2997 print/printSchema: remove trailing new line (@IvanGoncharov)
- #3003 TS: use
unknown
(TS) formixed
(flow) (@saihaj) - #3006 ts: Switch extension values to unknown to match Flow types (@IvanGoncharov)
- #3027 subscribe: drop mapping of AsyncIterable errors (@IvanGoncharov)
- #3031 Drop experimental online parser (@IvanGoncharov)
- #3032 Use specifiedBy instead of specifiedByUrl (@Code-Hex)
- #3055 Drop Node v15 (@IvanGoncharov)
- #3110 Switch entire codebase to TypeScript (@IvanGoncharov)
- #3114 Drop support for TS 3.7 (@IvanGoncharov)
- #3131 TS: Drop template argument from GraphQLFormattedError (@IvanGoncharov)
- #3132 Synchronise
*.d.ts
with sources converted to TS (@IvanGoncharov) - #3182 Switch schema types to use ReadonlyArrays (@IvanGoncharov)
- #3228 Add type params to GraphQLScalar (@IvanGoncharov)
- #3231 execute: Forbid to return
null
fromserialize
function (@IvanGoncharov) - #3239 execute: Forbid to return
null
fromserialize
function (@IvanGoncharov) - #3250 Bring
visitorKeys
back (@ardatan) - #3261 Error.toStringTag change return string from 'Object' to 'GraphQLError' (@IvanGoncharov)
- #3270 visitor: speed up visitInParallel by dropping support for unknown nodes (@IvanGoncharov)
- #3271 isNode: check exact value of node's
kind
(@IvanGoncharov) - #3283 validation: restrict maximum number of errors to 100 by default (@IvanGoncharov)
- #3288 Move validation of names into
GraphQL*
constructors (@IvanGoncharov) - #3311 GraphQLError: use enumerable properties (@IvanGoncharov)
- #3317 Convert const "enum-like" maps to TS enums (@IvanGoncharov)
- #3319 Add message that we only support TS >= 4.1.0 (@IvanGoncharov)
- #3326 GraphQLError: enumerate only spec prescribed properties (@IvanGoncharov)
- #3328 GraphQLField: relax default value of TArgs to
any
(@IvanGoncharov)
Deprecation ⚠
- #3252 Deprecate 'printError' function (@IvanGoncharov)
- #3292 Deprecate 'graphql/subscriptions' and move code to 'execution' (@yaacovCR)
- #3318 Deprecate 'ASTKindToNode' (@IvanGoncharov)
New Feature 🚀
- #2932 print: remove indentation inside of block strings (@IvanGoncharov)
- #2996 extensionASTNodes: always populate with empty array (@IvanGoncharov)
- #3059 Refine parse and AST to represent ConstValue (@leebyron)
- #3063 Refine getNamedType() for Input and Output types (@leebyron)
- #3117 RFC: Support full Unicode in lexer (@leebyron)
- #3170 Add 'Symbol.toStringTag' into every publicly exported class (@IvanGoncharov)
- #3208 Add 'UniqueArgumentDefinitionNamesRule' validation rule (@IvanGoncharov)
- #3242 parser: add specialized error for extension with descriptions (@IvanGoncharov)
- #3255 Add TResult to GraphQLFieldResolver signature (@tgriesser)
- #3259 Deprecate 'formatError' and added 'GraphQLError.toJSON' instead (@IvanGoncharov)
- #3272 collectFields/collectSubfields cleanup prototype (@IvanGoncharov)
- #3279 Make 'extensions' non-optional in schema types (@IvanGoncharov)
- #3305 Added 'GraphQLSchema.getRootType' and deprecate
getOperationRootType
(@IvanGoncharov) - #3306 Deprecate SubscriptionArgs and broaden ExecutionArgs (@yaacovCR)
- #3312 language: change OperationTypeNode to enum (@lekoaf)
- #3313 GraphQLError: keep extensions always present (@IvanGoncharov)
- #3315 Change type of error extensions from anonymous Record to named interfaces (@IvanGoncharov)
Bug Fix 🐞
- #2852 introspectionFromSchema: enable 'specifiedByUrl' by default (@IvanGoncharov)
- #2855 introspection: Add missing support for deprecated input values (@IvanGoncharov)
- #2859 separateOperations: distinguish query and fragment names (@IvanGoncharov)
- #2861 RFC: Assert subscription field is not introspection. (@benjie)
- #2876 Replace 'localeCompare' with function independent from locale (@IvanGoncharov)
- #2959 ASTVisitor: use type intersection instead of type union (@IvanGoncharov)
- #2987 Synchronise TS typings for graphql.js/execute.js/subscribe.js (@IvanGoncharov)
- #2991 fix: update introspection types (@saihaj)
- #3001 fix: discrepancies between Flow and TS types (@saihaj)
- #3009 TS: use proper type for async generator (@saihaj)
- #3129 definition.d.ts: correct types (@IvanGoncharov)
- #3172 Avoid relying on constructor.name for instanceOf error check. (@IvanGoncharov)
- #3178 Export TypeKind as value (@janicduplessis)
- #3223 Disallow "true", "false", and "null" as enum values (@Yogu)
- #3248 Parser: allow classes that extend Parser to access the instance attributes (@n1ru4l)
- #3257 fix: Preserve
deprecationReason
onGraphQLInputField
s (@trevor-scheer) - #3273 type/introspection: add missing
__Directive.args(includeDeprecated:)
(@IvanGoncharov) - #3278 lexer: fix expression to decode surrogate pairs (@Cito)
- #3308 execute: Correctly report missing root type error (@IvanGoncharov)
- #3316 Export OperationTypeNode as value (@yaacovCR)
- #3325 GraphQLError: fix empty
locations
if error got nodes without locations (@IvanGoncharov) - #3339 Fix TS error caused by importing internal files directly (@IvanGoncharov)
- #3344 version: force proper typing on version literals (@IvanGoncharov)
Docs 📝
5 PRs were merged
- #2849 README: add instructions on using experimental features (@robrichard)
- #3121
*.d.ts
: Switch comments to comment to TSDoc (@IvanGoncharov) - #3146 build: add eslint-plugin-tsdoc (@saihaj)
- #3240 docs(buildASTSchema): add Subscription to list of root types (@IvanGoncharov)
- #3285 Improve documentation of validation rules (@IvanGoncharov)
Polish 💅
119 PRs were merged
- #2847 Add tests for supporting Iterable collections across the lib (@IvanGoncharov)
- #2851 tests: update 'getIntrospectionQuery' tests to use custom matchers (@IvanGoncharov)
- #2858 separateOperations-test: refactor tests to look like snapshots (@IvanGoncharov)
- #2868 Extract types for normalized configs into named types (@IvanGoncharov)
- #2878 fix: type annotation cannot appear on a constructor declaration (@saihaj)
- #2879 fix: no need to mark param optional if default value is given (@saihaj)
- #2889 Simplify isAsyncIterable (@IvanGoncharov)
- #2928 refactor: use regexp-exec (@saihaj)
- #2933 printer: remove 'addDescription' wrapper (@IvanGoncharov)
- #2934 printer: use
wrap
util function in more places (@IvanGoncharov) - #2935 VariablesAreInputTypesRule: remove incorrect return type (@IvanGoncharov)
- #2936 schema-test: use chai's
keys
instead of undocumentedkey
(@IvanGoncharov) - #2937 validateSchema: inline 'getAllNodes' function (@IvanGoncharov)
- #2938 inspect: improve typings for
toJSON
call (@IvanGoncharov) - #2947 valueFromAST-test: correct typings (@IvanGoncharov)
- #2948 scalars-test: improve typings of function calls (@IvanGoncharov)
- #2953 type-validate: inline getAllNodes function (@IvanGoncharov)
- #2956 buildClientSchema-test: correctly wrap test case (@IvanGoncharov)
- #2963 printer: simplify printing of query short form (@IvanGoncharov)
- #2964 Simplified memoize3 and improve type checking (@IvanGoncharov)
- #2965 parser: improve type checking of 'parseTypeReference' function (@IvanGoncharov)
- #2966 blockString-fuzz: improve
lexValue
typing (@IvanGoncharov) - #2967 flow: improve typings of exported definitions (@IvanGoncharov)
- #2977 dedent-test: change test data to pass spell check (@IvanGoncharov)
- #2981 printSourceLocation: simplifying by using
padStart
(@IvanGoncharov) - #2984 refactor(language/ast.d.ts): use Kind enum type (@jjangga0214)
- #2988 Replace 'Array.reduce' with 'for of' (@IvanGoncharov)
- #2989 Switch
indexOf
toincludes
whenever possible (@IvanGoncharov) - #2990 Switch instanceOf to be named export (@IvanGoncharov)
- #2992 flow: Improve typings for exported definitions (@IvanGoncharov)
- #2995 introspection-test: fix test to correctly check for exceptions (@IvanGoncharov)
- #2998 Simplify testing AST nodes in buildSchema/extendedSchema tests (@IvanGoncharov)
- #2999 tests: replace 'invariant' with 'expect' assertion whenever possible (@IvanGoncharov)
- #3002 feat: add types for internal Parser class (@saihaj)
- #3004 GraphQLGrammarType: no need to code in
d.ts
can just export type (@saihaj) - #3005 ts: switch to use ObjMap utility type (@saihaj)
- #3008 ESLint: enable 'func-names' (@IvanGoncharov)
- #3010 testUtils: refactor out dedentString from dedent (@saihaj)
- #3011 mapAsyncIterator: add default value for 'rejectCallback' (@IvanGoncharov)
- #3012 mapAsyncIterator: allow 'rejectCallback' to only be synchronous (@IvanGoncharov)
- #3013 mapAsyncIterator: simplify mapResult (@IvanGoncharov)
- #3014 mapAsyncIterator: simplify abruptClose (@IvanGoncharov)
- #3015 printer-test: switch to dedentString (@IvanGoncharov)
- #3016 printer-test: do more check on kitchen sink tests (@IvanGoncharov)
- #3022 memoize3: remove unnecessary
mixed
type (@IvanGoncharov) - #3023 predicate-test: improve typecheck (@IvanGoncharov)
- #3024 subscribe: simplify by rewriting as async functions (@IvanGoncharov)
- #3025 subscribe: simplify root field extraction (@IvanGoncharov)
- #3026 Switch some of 'Object.keys' to more modern ES6 constructs (@IvanGoncharov)
- #3028 mapAsyncIterator: move promise resolution into
mapResult
(@IvanGoncharov) - #3034 visitor-test: cleanup test for nodes with unknown kinds (@IvanGoncharov)
- #3035 printSchema: replace array concat with spead + update comment (@IvanGoncharov)
- #3038 TS: improve types mapAsyncIterator-test (@saihaj)
- #3039 simplify predicate-test type (@saihaj)
- #3041 Use correct terminology around iterators and iterable (@IvanGoncharov)
- #3042 Remove superficial usages of 'Array.from' (@IvanGoncharov)
- #3043 Fix Flow issues with Symbol.asyncIterator (@IvanGoncharov)
- #3050 Generalize defineArguments() (@leebyron)
- #3053 Forbid non-ASCII characters in JS files (@IvanGoncharov)
- #3058 subscribe-test: general cleanup and simplify test setups (@IvanGoncharov)
- #3061 Improve parser location API (@leebyron)
- #3062 mapAsyncIterator: refactor async iterator (@IvanGoncharov)
- #3064 mapAsyncIterator: refactor async iterator (@IvanGoncharov)
- #3066 mapAsyncIterator-test: check that return value is passed on early return (@IvanGoncharov)
- #3068 Improve grammar in execution error messages (@Cito)
- #3069 subscription-test: use separate dummy query type (@IvanGoncharov)
- #3070 subscription-test: standardize generator names (@IvanGoncharov)
- #3072 Flow: add missing names to arguments of function types (@IvanGoncharov)
- #3073 Improve naming 'err => error' and 'arr => array' (@IvanGoncharov)
- #3075 Simplify printSchema directive printing (@leebyron)
- #3079 dedent: simplify implementation (@IvanGoncharov)
- #3081 Flow: Replace force type conversion with explicit $FlowFixMe comments (@IvanGoncharov)
- #3082 collectFields: use ES6 collections instead of Object.create(null) (@IvanGoncharov)
- #3083 execute: inline collectAndExecuteSubfields function (@IvanGoncharov)
- #3084 getFieldDef: accept FieldNode instead of field name (@IvanGoncharov)
- #3085 Flow: switched to exact object by default (@IvanGoncharov)
- #3096 Flow: Remove inferrable types (@IvanGoncharov)
- #3097 Flow: use only type imports for importing types (@IvanGoncharov)
- #3098 mapAsyncIterator: simplify test case (@IvanGoncharov)
- #3099 OverlappingFieldsCanBeMergedRule: refactor 'PairSet' (@IvanGoncharov)
- #3100 Flow: add missing arg name in function type (@IvanGoncharov)
- #3101 Flow: remove unnecessary '%checks' (@IvanGoncharov)
- #3105 getLocation: use more explicit
matchAll
instead ofRegExp.exec
(@IvanGoncharov) - #3108 OverlappingFieldsCanBeMergedRule: futher simplify 'PairSet' (@IvanGoncharov)
- #3115 Refactor Lexer (@leebyron)
- #3118 TS: switch all imports to type imports (@IvanGoncharov)
- #3120 subscription-test: add missing await (@IvanGoncharov)
- #3122 valueFromAST: drop unnecessary 'void' since
mixed
already includes it (@IvanGoncharov) - #3123 visitor: convert arguments descriptions to JSDoc comments (@IvanGoncharov)
- #3124 src/type: correct order of import/exports (@IvanGoncharov)
- #3125 TypeInfo: use explicit type for
getFieldDef
arg (@IvanGoncharov) - #3128 definition: Remove deprecation comment (@IvanGoncharov)
- #3130 coerceInputValue: add missing argument in function call (@IvanGoncharov)
- #3159 execute: Rename resolveField function and update comments (@yaacovCR)
- #3160 versions-test: add support for experimental pre-releases (@IvanGoncharov)
- #3166 SingleFieldSubscriptionsRule-test: extract test schema from harness (@IvanGoncharov)
- #3167 SingleFieldSubscriptionsRule: fix order of imports (@IvanGoncharov)
- #3175 TypeInfo-test: remove dependency on harness schema for validation tests (@IvanGoncharov)
- #3176 KnownDirectivesRule-test: remove dependency on harness schema (@IvanGoncharov)
- #3177 kitchenSinkQuery: add '@onVariableDefinition' directive (@IvanGoncharov)
- #3179 KnownDirectivesRule-test: add tests for missing directive locations (@IvanGoncharov)
- #3180 simplify validation harness by extracting union types into approriate… (@IvanGoncharov)
- #3181 Switch tests & internal funcs to accept ReadonlyArrays (@IvanGoncharov)
- #3187 refactor: collectFields to separate utility (@yaacovCR)
- #3189 instanceOf: add additional tests (@IvanGoncharov)
- #3194 Replace 'Idx' with 'Index' in variable names (@IvanGoncharov)
- #3264 lexer: Remove superfluous statement in
readDigits
(@Cito) - #3277 ESLint: enable some of the rules previously blocked by TS conversion (@IvanGoncharov)
- #3284 VariablesAreInputTypesRule: add test for ignoring unknown types (@IvanGoncharov)
- #3287 assertValidName: share character classes with lexer (@IvanGoncharov)
- #3290 Remove unnecessary Promise.resolve and Promise.reject (@IvanGoncharov)
- #3293 Align calls of buildExecutionContext (@yaacovCR)
- #3307 Reuse
groupBy
in validation rules (@IvanGoncharov) - #3309 Move deprecated
SubscriptionArgs
to 'src/subscription' (@IvanGoncharov) - #3310 expectJSON: return custom object instead of
expect
(@IvanGoncharov) - #3322 Lexer: use standard JS functions to handle Unicode (@IvanGoncharov)
- #3324 GraphQLError-test: merge check of source with rest of the properties (@IvanGoncharov)
- #3336 GraphQLError: Add test to check order of fields in JSON.stringify (@IvanGoncharov)
- #3345 version-test: fix validation of
versionInfo.preReleaseTag
(@IvanGoncharov)
Internal 🏠
59 PRs were merged
- #2478 jsutils: add test for Path functions (@Cito)
- #2831 build: add support for experimental releases (@IvanGoncharov)
- #2836 CI: test on node 15 (@IvanGoncharov)
- #2837 Flow: remove support for measuring Flow coverage (@IvanGoncharov)
- #2838 TS: exclude integration tests from root tsconfig.json (@IvanGoncharov)
- #2840 resources: use named groups in RegExp (@IvanGoncharov)
- #2881 ci: migrate master to main (@saihaj)
- #2886 Use correct flags for rmdir/mkdir functions (@IvanGoncharov)
- #2891 benchmark: fix temp dir creation (@IvanGoncharov)
- #2908 Add EasyCLA instructions, replace FB CLA (@brianwarner)
- #2924 cspell: disable progress and convert config to YAML (@IvanGoncharov)
- #2925 TS: Enable integrations tests for extending
GraphQL*Extensions
types (@IvanGoncharov) - #2929 integrationTests: always build npm packages before tests (@IvanGoncharov)
- #2954 build: use node12 tsconfig (@saihaj)
- #2962 flow-typed: fix unresolved types (@IvanGoncharov)
- #2968 ESLint: Allow 'async' functions (@IvanGoncharov)
- #2969 ESLint: cleanup rule overrides (@IvanGoncharov)
- #2970 Remove override of
node/global-require
rule forresources
dir (@IvanGoncharov) - #2971 benchmark: refactor args parsing code (@IvanGoncharov)
- #2972 Remove deprecated
rmdirSync
usage from internal scripts (@IvanGoncharov) - #2978 internal: simplify 'exec' function (@IvanGoncharov)
- #2982 benchmark: use more readable spelling of V8 flag (@IvanGoncharov)
- #3000 feat: add
.d.ts
for jsutils (@saihaj) - #3007 TS integration test: add check for possibility to refine extension types (@IvanGoncharov)
- #3018 build: run prettier on generated files (@IvanGoncharov)
- #3019 inline-invariant: switch to use
false
instead of0
(@IvanGoncharov) - #3021 gen-version: prettify source code (@IvanGoncharov)
- #3036 integrationTests: test package with TS 4.2 (@IvanGoncharov)
- #3054 Test with Node v16 (@IvanGoncharov)
- #3078 babel: Stop transpiling optional chaining operator (@IvanGoncharov)
- #3080 Workaround for Flow issue with 'String.raw' (@IvanGoncharov)
- #3102 eslintrc: fix spelling mistake in comment (@IvanGoncharov)
- #3103 ESLint: fix config for '@typescript-eslint/no-throw-literal' (@IvanGoncharov)
- #3112 gen-version: fix notice comment was polluting 'version.d.ts' (@IvanGoncharov)
- #3119 Remove empty lines from '*.d.ts' files (@IvanGoncharov)
- #3126 Restrict TS to files inside
src
(@IvanGoncharov) - #3127 Disable '@typescript-eslint/prefer-readonly' (@IvanGoncharov)
- #3143 TS: Enable strict mode (@leebyron)
- #3144 ESLint: fail
npm run lint
if any warnings are reported (@IvanGoncharov) - #3151 CI: Add new job to check health of package-lock.json (@IvanGoncharov)
- #3153 Fix typescript-4.3 version in the integration tests (@kyarik)
- #3154 tsconfig.json: enable 'isolatedModules' (@IvanGoncharov)
- #3157 package.json: fix generating release commit (@IvanGoncharov)
- #3158 allows passing --watch to npm run testonly (@yaacovCR)
- #3161 build-npm: correctly set NPM tag on experimental pre-releases (@IvanGoncharov)
- #3173 fix: broken link to prettier rules (@saihaj)
- #3174 ci: use update 'actions/setup-node' to v2 (@IvanGoncharov)
- #3188 integrationTests: Add test for webpack (@IvanGoncharov)
- #3190 build-npm: fix assert message about not supported tag (@IvanGoncharov)
- #3207 ci: generate diff for NPM package (@IvanGoncharov)
- #3209 Fix failing CI on main (@IvanGoncharov)
- #3262 integrationTests: small refactoring (@IvanGoncharov)
- #3263 integrationTests: increase timeout to 60s (@IvanGoncharov)
- #3280 integrationTests/ts: split tests into separate files (@IvanGoncharov)
- #3289 integrationTests/ts: Simplify extensions tests (@IvanGoncharov)
- #3304 README: remove credits for
*.d.ts
files (@IvanGoncharov) - #3329 Fix release instructions (@yaacovCR)
- #3330 use GITHUB_TOKEN for publishing branches (@yaacovCR)
- #3331 gitpublish.sh: Check if GITHUB_ACTOR is set + refactoring (@yaacovCR)
Dependency 📦
20 PRs were merged
- #2835 Update deps (@IvanGoncharov)
- #2844 Update deps (@IvanGoncharov)
- #2850 Update deps (@IvanGoncharov)
- #2884 Update deps (@IvanGoncharov)
- #2890 Update deps (@IvanGoncharov)
- #2922 Update deps (@IvanGoncharov)
- #2927 build: commit package-lock for drop support node10 (@saihaj)
- #2960 Update deps (@IvanGoncharov)
- #2961 flow-typed: update Mocha typings (@IvanGoncharov)
- #2993 Update deps (@IvanGoncharov)
- #3017 Update deps (@IvanGoncharov)
- #3020 Update deps (@IvanGoncharov)
- #3037 Update deps (@IvanGoncharov)
- #3057 Update deps (@IvanGoncharov)
- #3094 Update prettier to 2.3 (@IvanGoncharov)
- #3149 Update deps (@IvanGoncharov)
- #3206 Update deps (@IvanGoncharov)
- #3244 Update deps (@IvanGoncharov)
- #3276 Update deps (@IvanGoncharov)
- #3320 Update deps (@IvanGoncharov)
Committers: 18
- Arda TANRIKULU(@ardatan)
- Benjie Gillam(@benjie)
- Brian Warner(@brianwarner)
- Christoph Zwerschke(@Cito)
- Ivan Goncharov(@IvanGoncharov)
- Jan Melcher(@Yogu)
- Janic Duplessis(@janicduplessis)
- null(@jjangga0214)
- Kei Kamikawa(@Code-Hex)
- Laurin Quast(@n1ru4l)
- Lee Byron(@leebyron)
- Martin Trobäck(@lekoaf)
- Rob Richard(@robrichard)
- Saihajpreet Singh(@saihaj)
- Tim Griesser(@tgriesser)
- Trevor Scheer(@trevor-scheer)
- Yaacov Rydzinski (@yaacovCR)
- Yaroslav Kukytsyak(@kyarik)