Research
Security News
Threat Actor Exposes Playbook for Exploiting npm to Build Blockchain-Powered Botnets
A threat actor's playbook for exploiting the npm ecosystem was exposed on the dark web, detailing how to build a blockchain-powered botnet.
ember-data
Advanced tools
The lightweight reactive data library for JavaScript applications
Wrangle your application's data management with scalable patterns for developer productivity.
GraphQL
JSON:API
REST
tRPC
...bespoke or a mixTagged Releases
EmberData is a lightweight reactive data library for JavaScript applications that provides composable primitives for ordering query/mutation/peek flows, managing network and cache, and reducing data for presentation.
EmberData is both resource centric and document centric in it's approach to caching, requesting and presenting data. Your application's configuration and usage drives which is important and when.
The Store
is a coordinator. When using a Store
you configure what cache to use, how cache data should be presented to the UI, and where it should look for requested data when it is not available in the cache.
This coordination is handled opaquely to the nature of the requests issued and the format of the data being handled. This approach gives applications broad flexibility to configure EmberData to best suite their needs. This makes EmberData a powerful solution for applications regardless of their size and complexity.
EmberData is designed to scale, with a religious focus on performance and asset-size to keep its footprint small but speedy while still being able to handle large complex APIs in huge data-driven applications with no additional code and no added application complexity. It's goal is to prevent applications from writing code to manage data that is difficult to maintain or reason about.
EmberData's power comes not from specific features, data formats, or adherence to specific API specs such as JSON:API
trpc
or GraphQL
, but from solid conventions around requesting and mutating data developed over decades of experience scaling developer productivity.
Install using your javascript package manager of choice. For instance with pnpm
pnpm add ember-data
ember-data
is installed by default for new applications generated with ember-cli
. You can check what version is installed by looking in the devDependencies
hash of your project's package.json file.
If you have generated a new Ember
application using ember-cli
but do
not wish to use ember-data
, remove ember-data
from your project's package.json
file and run your package manager's install command to update your lockfile.
EmberData is organized into primitives that compose together via public APIs.
fetch
via its RequestManager and can be used without any other parts of EmberData.createCache
instantiateRecord
and teardownRecord
.ember-inspector
.Some EmberData APIs are older than others, and these still interop via well-defined public API boundaries but are no longer the ideal approach.
store.adapterFor
, and with the request pipeline via the LegacyNetworkHandler
available via @ember-data/legacy-compat
which utilizes the Minimum Adapter Interface.@ember-data/adapter
and the LegacyNetworkHandler
to normalize and serialize data to and from an API format into the JSON:API
format understood by @ember-data/json-api
.And finally:
The packages interop with each other through well defined public API boundaries. The core
of the library is the store provided by @ember-data/store
, while each of the other libraries plugs into the store when installed. Because these packages interop via fully
public APIs, other libraries or applications may provide their own implementations. For instance, ember-m3 is a commonly used presentation and cache implementation suitable for complex resource objects and graphs.
EmberData allows users to opt-in and remove code that exists to support deprecated behaviors.
If your app has resolved all deprecations present in a given version, you may specify that version as your "compatibility" version to remove the code that supported the deprecated behavior from your app.
let app = new EmberApp(defaults, {
emberData: {
compatWith: '4.8',
},
});
EmberData uses UUID V4
by default to generate identifiers for new data created on the client. Identifier generation is configurable, but we also for convenience will polyfill
the necessary feature if your browser support or deployment environment demands it. To
activate this polyfill:
let app = new EmberApp(defaults, {
'@embroider/macros': {
setConfig: {
'@ember-data/store': {
polyfillUUID: true,
},
},
},
});
If you do not want to ship inspector support in your production application, you can specify that all support for it should be stripped from the build.
let app = new EmberApp(defaults, {
emberData: {
includeDataAdapterInProduction: false,
},
});
Many portions of the internals are helpfully instrumented with logging that can be activated
at build time. This instrumentation is always removed from production builds or any builds
that has not explicitly activated it. To activate it set the appropriate flag to true
.
let app = new EmberApp(defaults, {
emberData: {
debug: {
LOG_PAYLOADS: false, // data store received to update cache with
LOG_OPERATIONS: false, // updates to cache remote state
LOG_MUTATIONS: false, // updates to cache local state
LOG_NOTIFICATIONS: false,
LOG_REQUESTS: false, // log Requests issued via the request manager
LOG_REQUEST_STATUS: false,
LOG_IDENTIFIERS: false,
LOG_GRAPH: false, // relationship storage
LOG_INSTANCE_CACHE: false, // instance creation/deletion
},
},
});
This project is licensed under the MIT License.
FAQs
The lightweight reactive data library for JavaScript applications
The npm package ember-data receives a total of 72,787 weekly downloads. As such, ember-data popularity was classified as popular.
We found that ember-data demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
A threat actor's playbook for exploiting the npm ecosystem was exposed on the dark web, detailing how to build a blockchain-powered botnet.
Security News
NVD’s backlog surpasses 20,000 CVEs as analysis slows and NIST announces new system updates to address ongoing delays.
Security News
Research
A malicious npm package disguised as a WhatsApp client is exploiting authentication flows with a remote kill switch to exfiltrate data and destroy files.