- App.tsx: full navigation (Auth stack + Main tabs with 5 screens) - Auth: LoginScreen, RegisterScreen, ForgotPasswordScreen - HomeScreen: dashboard with IoT metrics, weather widget, alerts, quick actions, sensors - MapScreen: interactive map with layer toggles (6 layers) - MarketplaceScreen: categories (6), products (5), search - ChatScreen: AI chat with quick prompts (4), bot responses - ProfileScreen: user info, stats, menu (9 items), logout - AlertsScreen: alert list with severity, acknowledge - SensorsScreen: sensor list with type filters (6 types), search - ZonesScreen: zone cards with stats - SettingsScreen: language picker (FR/EN/ES/DE), privacy, about - Stores: iotStore (sensors, zones, alerts), notificationStore, uiStore + i18n - Hooks: useSensors, useAlerts, useNotifications, useLocation - Components: Card, Button, LoadingSpinner, ErrorBoundary, Header - Services: iotService, notificationService (with axios API client) - Utils: formatters (temp, AQI, noise, dates), validators (email, password, IBAN) - Theme: colors.ts with full design system (Blue Ocean palette) - Ditto: fixed MongoDB connection, new JWT secrets, official gateway image
106 lines
4.2 KiB
Markdown
106 lines
4.2 KiB
Markdown
# clone-deep [](https://www.npmjs.com/package/clone-deep) [](https://npmjs.org/package/clone-deep) [](https://npmjs.org/package/clone-deep) [](https://travis-ci.org/jonschlinkert/clone-deep)
|
|
|
|
> Recursively (deep) clone JavaScript native types, like Object, Array, RegExp, Date as well as primitives.
|
|
|
|
Please consider following this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), and consider starring the project to show your :heart: and support.
|
|
|
|
## Install
|
|
|
|
Install with [npm](https://www.npmjs.com/):
|
|
|
|
```sh
|
|
$ npm install --save clone-deep
|
|
```
|
|
|
|
## Usage
|
|
|
|
```js
|
|
const cloneDeep = require('clone-deep');
|
|
|
|
let obj = { a: 'b' };
|
|
let arr = [obj];
|
|
let copy = cloneDeep(arr);
|
|
obj.c = 'd';
|
|
|
|
console.log(copy);
|
|
//=> [{ a: 'b' }]
|
|
|
|
console.log(arr);
|
|
//=> [{ a: 'b', c: 'd' }]
|
|
```
|
|
|
|
## Heads up!
|
|
|
|
The last argument specifies whether or not to clone instances (objects that are from a custom class or are not created by the `Object` constructor. This value may be `true` or the function use for cloning instances.
|
|
|
|
When an `instanceClone` function is provided, it will be invoked to clone objects that are not "plain" objects (as defined by [isPlainObject](#isPlainObject)`isPlainObject`). If `instanceClone` is not specified, this library will not attempt to clone non-plain objects, and will simply copy the object reference.
|
|
|
|
## Attribution
|
|
|
|
Initially based on [mout's](https://github.com/mout/mout) implementation of deepClone.
|
|
|
|
## About
|
|
|
|
<details>
|
|
<summary><strong>Contributing</strong></summary>
|
|
|
|
Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new).
|
|
|
|
</details>
|
|
|
|
<details>
|
|
<summary><strong>Running Tests</strong></summary>
|
|
|
|
Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command:
|
|
|
|
```sh
|
|
$ npm install && npm test
|
|
```
|
|
|
|
</details>
|
|
|
|
<details>
|
|
<summary><strong>Building docs</strong></summary>
|
|
|
|
_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_
|
|
|
|
To generate the readme, run the following command:
|
|
|
|
```sh
|
|
$ npm install -g verbose/verb#dev verb-generate-readme && verb
|
|
```
|
|
|
|
</details>
|
|
|
|
### Related projects
|
|
|
|
You might also be interested in these projects:
|
|
|
|
* [is-plain-object](https://www.npmjs.com/package/is-plain-object): Returns true if an object was created by the `Object` constructor. | [homepage](https://github.com/jonschlinkert/is-plain-object "Returns true if an object was created by the `Object` constructor.")
|
|
* [isobject](https://www.npmjs.com/package/isobject): Returns true if the value is an object and not an array or null. | [homepage](https://github.com/jonschlinkert/isobject "Returns true if the value is an object and not an array or null.")
|
|
* [kind-of](https://www.npmjs.com/package/kind-of): Get the native type of a value. | [homepage](https://github.com/jonschlinkert/kind-of "Get the native type of a value.")
|
|
* [shallow-clone](https://www.npmjs.com/package/shallow-clone): Creates a shallow clone of any JavaScript value. | [homepage](https://github.com/jonschlinkert/shallow-clone "Creates a shallow clone of any JavaScript value.")
|
|
|
|
### Contributors
|
|
|
|
| **Commits** | **Contributor** |
|
|
| --- | --- |
|
|
| 46 | [jonschlinkert](https://github.com/jonschlinkert) |
|
|
| 2 | [yujunlong2000](https://github.com/yujunlong2000) |
|
|
|
|
### Author
|
|
|
|
**Jon Schlinkert**
|
|
|
|
* [GitHub Profile](https://github.com/jonschlinkert)
|
|
* [Twitter Profile](https://twitter.com/jonschlinkert)
|
|
* [LinkedIn Profile](https://linkedin.com/in/jonschlinkert)
|
|
|
|
### License
|
|
|
|
Copyright © 2018, [Jon Schlinkert](https://github.com/jonschlinkert).
|
|
Released under the [MIT License](LICENSE).
|
|
|
|
***
|
|
|
|
_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.8.0, on November 21, 2018._ |