gitextract_2ph5kury/ ├── .bithoundrc ├── .editorconfig ├── .eslintrc ├── .github/ │ └── workflows/ │ ├── ci.yml │ └── docs.yml ├── .gitignore ├── .npmignore ├── .npmrc ├── .travis.yml ├── CHANGELOG.md ├── LICENSE.txt ├── MIGRATIONS.md ├── OSSMETADATA ├── README.md ├── all.js ├── authors.txt ├── bower.json ├── browser.js ├── build/ │ ├── deploy-ghpages.sh │ ├── falcor-jsdoc-template/ │ │ ├── README.md │ │ ├── publish.js │ │ └── tmpl/ │ │ ├── augments.tmpl │ │ ├── container.tmpl │ │ ├── details.tmpl │ │ ├── example.tmpl │ │ ├── examples.tmpl │ │ ├── exceptions.tmpl │ │ ├── layout.tmpl │ │ ├── mainpage.tmpl │ │ ├── members.tmpl │ │ ├── method.tmpl │ │ ├── navigation-subgroup.tmpl │ │ ├── navigation.tmpl │ │ ├── params.tmpl │ │ ├── properties.tmpl │ │ ├── returns.tmpl │ │ ├── source.tmpl │ │ ├── tutorial.tmpl │ │ └── type.tmpl │ ├── gulp-build.js │ ├── gulp-clean.js │ ├── gulp-perf.js │ └── jsdoc.json ├── conf.json ├── deployKey.enc ├── dist/ │ ├── falcor.all.js │ └── falcor.browser.js ├── doc/ │ ├── DataSource.html │ ├── FromEsObserverAdapter.html │ ├── Model.html │ ├── Model.js.html │ ├── ModelResponse.html │ ├── ModelResponseObserver.html │ ├── Observable.html │ ├── Subscription.html │ ├── ToEsSubscriptionAdapter.html │ ├── get_getCache.js.html │ ├── global.html │ ├── index.html │ ├── index.js.html │ ├── internal_index.js.html │ ├── invalidate_invalidatePathMaps.js.html │ ├── invalidate_invalidatePathSets.js.html │ ├── request_GetRequestV2.js.html │ ├── request_RequestQueueV2.js.html │ ├── request_complement.js.html │ ├── response_AssignableDisposable.js.html │ ├── response_ModelResponse.js.html │ ├── response_ModelResponseObserver.js.html │ ├── response_get_GetResponse.js.html │ ├── response_set_SetResponse.js.html │ ├── response_set_setGroupsIntoCache.js.html │ ├── response_set_setRequestCycle.js.html │ ├── set_setJSONGraphs.js.html │ ├── set_setPathMaps.js.html │ ├── set_setPathValues.js.html │ ├── support_reconstructPath.js.html │ ├── toEsObservable.js.html │ ├── typedefs_Atom.js.html │ ├── typedefs_DataSource.js.html │ ├── typedefs_JSONEnvelope.js.html │ ├── typedefs_JSONGraph.js.html │ ├── typedefs_JSONGraphEnvelope.js.html │ ├── typedefs_Key.js.html │ ├── typedefs_KeySet.js.html │ ├── typedefs_Observable.js.html │ ├── typedefs_Path.js.html │ ├── typedefs_PathSet.js.html │ ├── typedefs_PathValue.js.html │ └── typedefs_Range.js.html ├── examples/ │ └── datasource/ │ └── webWorkerSource.js ├── gulpfile.js ├── lib/ │ ├── Model.js │ ├── ModelDataSourceAdapter.js │ ├── ModelRoot.js │ ├── deref/ │ │ ├── hasValidParentReference.js │ │ ├── index.js │ │ └── sync.js │ ├── errors/ │ │ ├── BoundJSONGraphModelError.js │ │ ├── InvalidDerefInputError.js │ │ ├── InvalidModelError.js │ │ ├── InvalidSourceError.js │ │ ├── MaxRetryExceededError.js │ │ ├── NullInPathError.js │ │ └── applyErrorPrototype.js │ ├── get/ │ │ ├── followReference.js │ │ ├── get.js │ │ ├── getBoundValue.js │ │ ├── getCache.js │ │ ├── getCachePosition.js │ │ ├── getValue.js │ │ ├── getValueSync.js │ │ ├── getVersion.js │ │ ├── index.js │ │ ├── onError.js │ │ ├── onMissing.js │ │ ├── onValue.js │ │ ├── onValueType.js │ │ ├── sync.js │ │ ├── util/ │ │ │ ├── clone.js │ │ │ ├── isExpired.js │ │ │ ├── isMaterialzed.js │ │ │ └── isPathValue.js │ │ └── walkPath.js │ ├── index.js │ ├── internal/ │ │ ├── absolutePath.js │ │ ├── context.js │ │ ├── head.js │ │ ├── index.js │ │ ├── invalidated.js │ │ ├── key.js │ │ ├── model-created.js │ │ ├── next.js │ │ ├── parent.js │ │ ├── path.js │ │ ├── prev.js │ │ ├── privatePrefix.js │ │ ├── ref-index.js │ │ ├── ref.js │ │ ├── refs-length.js │ │ ├── reservedPrefix.js │ │ ├── tail.js │ │ └── version.js │ ├── invalidate/ │ │ ├── invalidatePathMaps.js │ │ └── invalidatePathSets.js │ ├── lru/ │ │ ├── collect.js │ │ ├── promote.js │ │ └── splice.js │ ├── request/ │ │ ├── GetRequestV2.js │ │ ├── RequestQueueV2.js │ │ ├── RequestTypes.js │ │ ├── complement.js │ │ ├── flushGetRequest.js │ │ └── sendSetRequest.js │ ├── response/ │ │ ├── AssignableDisposable.js │ │ ├── CallResponse.js │ │ ├── InvalidateResponse.js │ │ ├── ModelResponse.js │ │ ├── ModelResponseObserver.js │ │ ├── get/ │ │ │ ├── GetResponse.js │ │ │ ├── checkCacheAndReport.js │ │ │ ├── getRequestCycle.js │ │ │ ├── getWithPaths.js │ │ │ ├── index.js │ │ │ └── validInput.js │ │ └── set/ │ │ ├── SetResponse.js │ │ ├── index.js │ │ ├── setGroupsIntoCache.js │ │ ├── setRequestCycle.js │ │ └── setValidInput.js │ ├── schedulers/ │ │ ├── ASAPScheduler.js │ │ ├── ImmediateScheduler.js │ │ └── TimeoutScheduler.js │ ├── set/ │ │ ├── index.js │ │ ├── setJSONGraphs.js │ │ ├── setPathMaps.js │ │ ├── setPathValues.js │ │ ├── setValue.js │ │ └── sync.js │ ├── support/ │ │ ├── array-flat-map.js │ │ ├── clone.js │ │ ├── createHardlink.js │ │ ├── currentCacheVersion.js │ │ ├── expireNode.js │ │ ├── getExpires.js │ │ ├── getSize.js │ │ ├── getTimestamp.js │ │ ├── getType.js │ │ ├── hasOwn.js │ │ ├── identity.js │ │ ├── incrementVersion.js │ │ ├── insertNode.js │ │ ├── isAlreadyExpired.js │ │ ├── isExpired.js │ │ ├── isFunction.js │ │ ├── isInternalKey.js │ │ ├── isJSONEnvelope.js │ │ ├── isJSONGraphEnvelope.js │ │ ├── isObject.js │ │ ├── isPathInvalidation.js │ │ ├── isPathValue.js │ │ ├── isPrimitive.js │ │ ├── mergeJSONGraphNode.js │ │ ├── mergeValueOrInsertBranch.js │ │ ├── noop.js │ │ ├── now.js │ │ ├── reconstructPath.js │ │ ├── removeNode.js │ │ ├── removeNodeAndDescendants.js │ │ ├── replaceNode.js │ │ ├── transferBackReferences.js │ │ ├── unlinkBackReferences.js │ │ ├── unlinkForwardReference.js │ │ ├── updateBackReferenceVersions.js │ │ ├── updateNodeAncestors.js │ │ ├── validateInput.js │ │ └── wrapNode.js │ ├── toEsObservable.js │ ├── typedefs/ │ │ ├── Atom.js │ │ ├── DataSource.js │ │ ├── JSONEnvelope.js │ │ ├── JSONGraph.js │ │ ├── JSONGraphEnvelope.js │ │ ├── Key.js │ │ ├── KeySet.js │ │ ├── Observable.js │ │ ├── Path.js │ │ ├── PathSet.js │ │ ├── PathValue.js │ │ └── Range.js │ ├── types/ │ │ ├── atom.js │ │ ├── error.js │ │ └── ref.js │ └── values/ │ ├── expires-never.js │ └── expires-now.js ├── package.json ├── performance/ │ ├── README.md │ ├── TriggerDataSource.js │ ├── browser.js │ ├── device.js │ ├── formatter/ │ │ ├── CSVFormatter.js │ │ └── CSVTransform.js │ ├── karma.conf.js │ ├── models/ │ │ ├── index.js │ │ └── legacy/ │ │ ├── _.js │ │ ├── _Cache.js │ │ ├── index.js │ │ └── macro/ │ │ └── _Falcor.js │ ├── node.js │ ├── reporters/ │ │ ├── browserTestReporter.js │ │ ├── karmaBenchmarkCSVReporter.js │ │ └── nodeTestReporter.js │ ├── scripts/ │ │ └── transformCSV.js │ ├── testRunner.js │ └── tests/ │ ├── clone/ │ │ └── clone.perf.js │ ├── deref/ │ │ └── index.js │ ├── get/ │ │ ├── get.core.perf.js │ │ ├── get.perf.js │ │ ├── onValue.perf.js │ │ └── walk.perf.js │ ├── inMemoryCache.js │ ├── lru/ │ │ └── index.js │ ├── request/ │ │ └── request-queue.js │ ├── set/ │ │ └── set.json-graph.perf.js │ ├── standard.js │ ├── testMerge.js │ └── testSuite.js ├── server.js ├── test/ │ ├── .eslintrc.yaml │ ├── CacheGenerator.js │ ├── Model.spec.js │ ├── cleanData.js │ ├── data/ │ │ ├── Cache.js │ │ ├── ErrorDataSource.js │ │ ├── LocalDataSource.js │ │ ├── ReducedCache.js │ │ ├── asyncifyDataSource.js │ │ └── expected/ │ │ ├── Bound.js │ │ ├── Complex.js │ │ ├── References.js │ │ ├── Values.js │ │ └── index.js │ ├── falcor/ │ │ ├── call/ │ │ │ └── call.spec.js │ │ ├── deref/ │ │ │ ├── deref.errors.spec.js │ │ │ ├── deref.hasValidParentReference.spec.js │ │ │ └── deref.spec.js │ │ ├── error/ │ │ │ └── error.spec.js │ │ ├── get/ │ │ │ ├── get.cache-only.spec.js │ │ │ ├── get.cacheAsDataSource.spec.js │ │ │ ├── get.clone.spec.js │ │ │ ├── get.dataSource-and-bind.spec.js │ │ │ ├── get.dataSource-and-cache.spec.js │ │ │ ├── get.dataSource-only.spec.js │ │ │ ├── get.gen.spec.js │ │ │ ├── get.model.adapter.spec.js │ │ │ └── get.pathSyntax.spec.js │ │ ├── invalidate/ │ │ │ ├── invalidate.cache-only.spec.js │ │ │ └── invalidate.change-handler.spec.js │ │ ├── operations.spec.js │ │ ├── schedulers/ │ │ │ └── schedulers.spec.js │ │ └── set/ │ │ ├── set.cache-only.spec.js │ │ ├── set.cacheAsDataSource-and-cache.spec.js │ │ ├── set.change-handler.spec.js │ │ ├── set.dataSource-and-bind.spec.js │ │ ├── set.dataSource-and-cache.spec.js │ │ ├── set.dataSource-only.spec.js │ │ ├── set.pathSyntax.spec.js │ │ └── set.setCache.spec.js │ ├── get-core/ │ │ ├── deref.spec.js │ │ ├── edges.spec.js │ │ ├── errors.spec.js │ │ ├── get.cache.spec.js │ │ ├── missing.spec.js │ │ ├── null.spec.js │ │ ├── references.spec.js │ │ └── values.spec.js │ ├── getCoreRunner.js │ ├── getTestRunner.js │ ├── hardlink/ │ │ ├── hardlink.add.spec.js │ │ └── hardlink.remove.spec.js │ ├── integration/ │ │ ├── call.spec.js │ │ ├── dedupe.spec.js │ │ ├── express.spec.js │ │ └── get.spec.js │ ├── internal/ │ │ ├── ModelRoot.comparator.spec.js │ │ ├── request/ │ │ │ ├── GetRequest.add.spec.js │ │ │ ├── GetRequest.batch.spec.js │ │ │ ├── GetRequest.spec.js │ │ │ ├── RequestQueue.get.spec.js │ │ │ └── complement.spec.js │ │ └── sync/ │ │ └── _setValueSync.spec.js │ ├── invalidate/ │ │ ├── invalidate.spec.js │ │ ├── pathMaps.spec.js │ │ └── pathSets.spec.js │ ├── isAssertionError.js │ ├── lru/ │ │ ├── lru.promote.get.spec.js │ │ ├── lru.promote.set.spec.js │ │ ├── lru.splice.expired.spec.js │ │ └── lru.splice.overwrite.spec.js │ ├── outputGenerator.js │ ├── response/ │ │ └── ModelResponseObserver.spec.js │ ├── set/ │ │ ├── edge-cases.spec.js │ │ ├── jsonGraphs/ │ │ │ ├── atom.spec.js │ │ │ ├── branch.spec.js │ │ │ ├── expired.spec.js │ │ │ ├── primitive.spec.js │ │ │ └── reference.spec.js │ │ ├── pathMaps/ │ │ │ ├── atom.spec.js │ │ │ ├── branch.spec.js │ │ │ ├── expired.spec.js │ │ │ └── primitive.spec.js │ │ ├── pathValues/ │ │ │ ├── atom.spec.js │ │ │ ├── branch.spec.js │ │ │ ├── expired.spec.js │ │ │ └── primitive.spec.js │ │ └── support/ │ │ ├── getModel.js │ │ ├── jsonGraph.js │ │ ├── jsonGraphEnvelope.js │ │ ├── partial-cache.js │ │ ├── pathMap.js │ │ ├── pathMapEnvelope.js │ │ ├── strip.js │ │ └── whole-cache.js │ ├── testRunner.js │ ├── toObs.js │ └── zipSpy.js └── webpack.config.js