Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

oracledb

Package Overview
Dependencies
Maintainers
1
Versions
59
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

oracledb - npm Package Compare versions

Comparing version 0.2.4 to 0.3.1

127

doc/api.md

@@ -20,2 +20,3 @@ # node-oracledb: API Documentation for the Oracle Database Node.js Driver

- 3.2 [Oracledb Properties](#oracledbproperties)
- [connectionClass](#propdbconclass)
- [isAutoCommit](#propdbisautocommit)

@@ -63,4 +64,5 @@ - [maxRows](#propdbmaxrows)

- [Statement Caching](#stmtcache)
- 5.4 [Miscellaneous Operations](#miscellaneousops)
6. [External Configuration](#oraaccess)
6. [Transaction Management](#transactionmgt)
7. [Database Resident Connection Pooling](#drcp)
8. [External Configuration](#oraaccess)

@@ -233,2 +235,22 @@ ## <a name="intro"></a> 1. Introduction

<a name="propdbconclass"></a>
```
String connectionClass
```
The Connection class value defines a logical name for connections.
When a pooled session has a connection class, Oracle ensures that the
session is not shared outside of that connection class.
The connection class value is similarly used by
[Database Resident Connection Pooling](#drcp) (DRCP) to allow or
disallow sharing of sessions.
For example, where two different kinds of users share one pool, you
might set ```connectionClass``` to 'HR' for connections that access a
Human Resources system, and it might be set to 'OE' for users of an
Order Entry system. Users will only be given sessions of the
appropriate class, allowing maximal reuse of resources in each case,
and preventing any session information leaking between the two systems.
<a name="propdbisautocommit"></a>

@@ -594,4 +616,4 @@ ```

After the application finishes using a connection pool, it should
terminate the connection pool by calling the `terminate()` method on the
Pool object.
release all connections and terminate the connection pool by calling
the `terminate()` method on the Pool object.

@@ -711,7 +733,6 @@ ### <a name="poolproperties"></a> 4.1 Pool Properties

All open connections in a connection pool are closed when a connection
pool terminates.
Any open connections should be released with [`release()`](#release)
before `terminate()` is called, otherwise an error will be returned
and the pool will be unusable.
Any ongoing transaction in a connection will be committed.
##### Prototype

@@ -936,3 +957,3 @@

*String outFormat* | The format of rows fetched for `SELECT` statements. This can be either `ARRAY` or `OBJECT`. If specified as `ARRAY`, then each row is fetched as an array of column values. If specified as `OBJECT`, then each row is fetched as a JavaScript object.
*Boolean isAutoCommit* | If it is true, then each [DML](https://docs.oracle.com/database/121/CNCPT/glossary.htm#CNCPT2042) is automatically committed. Note: Oracle Database will implicitly commit when a [DDL](https://docs.oracle.com/database/121/CNCPT/glossary.htm#CHDJJGGF) statement is executed. Any ongoing transaction will also be committed when [`release()`](#release) or [`terminate()`](#terminate) are called.
*Boolean isAutoCommit* | If it is true, then each [DML](https://docs.oracle.com/database/121/CNCPT/glossary.htm#CNCPT2042) is automatically committed. Note: Oracle Database will implicitly commit when a [DDL](https://docs.oracle.com/database/121/CNCPT/glossary.htm#CHDJJGGF) statement is executed.

@@ -998,5 +1019,14 @@ ```

Note: calling `release()` when connections are no longer required is
strongly encouraged. Releasing helps avoid resource leakage and can
improve system efficiency.
When a connection is released, any ongoing transaction on the
connection is implicitly committed.
connection is rolled back.
After releasing a connection to a pool, there is no
guarantee a subsequent `getConnection()` call gets back the same
database connection. The application must redo any ALTER SESSION
statements on the new connection object, as required.
##### Prototype

@@ -1026,3 +1056,3 @@

This call rolls-back the current transaction in progress on the
This call rolls back the current transaction in progress on the
connection.

@@ -1061,9 +1091,8 @@

By default,
[DML](https://docs.oracle.com/database/121/CNCPT/glossary.htm#CNCPT2042)
statements are not committed unless the `commit()` call is issued.
However, if the `isAutoCommit` property is *true* for the connection,
then all DML operations are committed as they are executed. The
`isAutoCommit` property can be overridden for the duration of an
`execute()` call to automatically commit a DML statement.
statements are not committed unless the `commit()` call is issued or
the `isAutoCommit` property is *true* at the time of execution. Any
ongoing transaction will be rolled back when [`release()`](#release)
is called, or when the application ends.

@@ -1307,7 +1336,6 @@ Using bind variables in SQL statements is recommended in preference to

### <a name="miscellaneousops"></a> 5.4 Miscellaneous Operations
## <a name="transactionmgt"></a> 6. Transaction Management
Transaction management implements [`commit()`](#commit) and
[`rollback()`](#rollback) methods. A long-running database operation
may be interrupted by the [`break()`](#break) call.
Node-oraclebd implements [`commit()`](#commit) and
[`rollback()`](#rollback) methods.

@@ -1317,4 +1345,4 @@ After all database calls on the connection complete, the application

When a connection is released, it implicitly commits any ongoing
transactions. Therefore if a released, pooled connection is used by
When a connection is released, it rolls back any ongoing
transaction. Therefore if a released, pooled connection is used by
a subsequent [`pool.getConnection()`](#getconnection2) call, then any

@@ -1325,13 +1353,50 @@ [DML](https://docs.oracle.com/database/121/CNCPT/glossary.htm#CNCPT2042)

Note that after releasing a connection to the pool, there is no
guarantee a subsequent `getConnection()` call gets back the same
database connection. The application must redo any ALTER SESSION
statements on the new connection object, as required.
When an application ends, any uncommitted transaction on a connection
will be rolled back if there is no explicit commit, or
[`release()`](#release) or [`terminate()`](#terminate) are not called.
will be rolled back if there is no explicit commit.
## <a name="oraaccess"></a> 6. External Configuration
## <a name="drcp"></a> 7. Database Resident Connection Pooling
[Database Resident Connection Pooling](http://docs.oracle.com/database/121/ADFNS/adfns_perf_scale.htm#ADFNS228)
enables database resource sharing for applications that run in
multiple client processes or run on multiple middle-tier application
servers. DRCP reduces the overall number of connections that a
database must handle.
DRCP is distinct from node-oracledb's local
[connection pool](#poolclass). The two pools can be used separately,
or together.
DRCP is useful for applications which share the same credentials, have
similar session settings (for example date format settings and PL/SQL
package state), and where the application gets a database connection,
works on it for a relatively short duration, and then releases it.
To use DRCP in node-oracledb:
1. The DRCP pool must be started in the database: `execute dbms_connection_pool.start_pool();`
2. The `getConnection()` property `connectString` must specify to use a pooled server, either by the Easy Connect syntax like `myhost/sales:POOLED`, or by using a `tnsnames.ora` alias for a connection that contains `(SERVER=POOLED)`.
3. The [`connectionClass`](#propdbconclass) should be set by the node-oracledb application. If it is not set, the pooled server session memory will not be reused optimally.
The DRCP 'Purity' value is NEW for
[`oracledb.getConnection()`](#getconnection1) connections that do not
use a local connection pool. These connections reuse a DRCP pooled
server process (thus avoiding the costs of process creation and
destruction) but do not reuse its session memory. The 'Purity' is
SELF for [`pool.getConnection()`](#getconnection2) connections,
allowing reuse of the pooled server process and session memory, giving
maximum benefit from DRCP. See the Oracle documentation on
[benefiting from scalability](http://docs.oracle.com/database/121/ADFNS/adfns_perf_scale.htm#ADFNS506).
The
[Oracle DRCP documentation](http://docs.oracle.com/database/121/ADFNS/adfns_perf_scale.htm#ADFNS228)
has more details, including when to use, and when not to use DRCP.
There are a number of Oracle Database `V$` views that can be used to
monitor DRCP. These are discussed in the documentation and in the
Oracle white paper
[PHP Scalability and High Availability](http://www.oracle.com/technetwork/topics/php/php-scalability-ha-twp-128842.pdf).
This paper also gives more detail on configuring DRCP.
## <a name="oraaccess"></a> 8. External Configuration
When node-oracledb is linked with Oracle 12c client libraries, the Oracle

@@ -1338,0 +1403,0 @@ client-side configuration file

@@ -32,4 +32,2 @@ /* Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. */

*
* The connection pool should not be terminated as long as the server is up.
*
*****************************************************************************/

@@ -143,16 +141,2 @@

process.on('SIGTERM', function () {
console.log('Received SIGTERM');
pool.terminate(
function(err)
{
if (err) {
console.error('terminate() callback: ' + err.message);
process.exit(0);
}
console.log('Closed Oracle connection pool');
process.exit(0);
});
});
hs.listen(portid, "localhost");

@@ -159,0 +143,0 @@

@@ -21,5 +21,8 @@ # Installing node-oracledb

1. [Overview](#installation)
2. [Installation with Instant Client RPMs](#instrpm)
3. [Installation with Instant Client ZIP files](#instzip)
4. [Installation with a local database](#instoh)
2. [Node-oracledb Installation on Linux with Instant Client RPMs](#instrpm)
3. [Node-oracledb Installation on Linux with Instant Client ZIP files](#instzip)
4. [Node-oracledb Installation on Linux with a Local Database](#instoh)
5. [Node-oracledb Installation on OS X with Instant Client](#instosx)
6. [Node-oracledb Installation on Windows](#instwin)
7. [Advanced installation on Linux](#linuxadv)

@@ -31,3 +34,3 @@ ## <a name="overview"></a> 1. Overview

The node-oracledb 0.2 release has been tested with Node.js 0.10.35 on
The node-oracledb release has been tested with Node.js 0.10.35 on
64-bit Oracle Linux. The driver can also build in some 32-bit Linux,

@@ -58,7 +61,7 @@ Solaris and Mac OS X environments, but these architectures have not

----------|-----------------
Linux. My database is on another machine. | [Installation with Instant Client RPMs](#instrpm)
Solaris. My database is on another machine. | [Installation with Instant Client ZIP files](#instzip)
Linux or Solaris, with a database on the same machine. | [Installation with a local database](#instoh)
Linux or Solaris, with the full Oracle client (installed via runInstaller) on the same machine. | [Installation with a local database](#instoh)
Mac OS X. | [Installation with Instant Client ZIP files](#instzip)
Linux. My database is on another machine. | [Node-oracledb Installation on Linux with Instant Client RPMs](#instrpm)
Solaris. My database is on another machine. | [Node-oracledb Installation on Linux with Instant Client ZIP files](#instzip)
Linux or Solaris, with a database on the same machine. | [Node-oracledb Installation on Linux with a Local Database](#instoh)
Linux or Solaris, with the full Oracle client (installed via runInstaller) on the same machine. | [Node-oracledb Installation on Linux with a Local Database](#instoh)
Mac OS X. | [Node-oracledb Installation on OS X with Instant Client](#instosx)
Another OS with Oracle 11.2 or 12.1 libraries available | Update binding.gyp and make any code changes required, sign the [OCA](https://www.oracle.com/technetwork/community/oca-486395.html), and submit a pull request with your patch (Windows support is already being worked on).

@@ -87,3 +90,3 @@

## <a name="instrpm"></a> 2. Installation with Instant Client RPMs
## <a name="instrpm"></a> 2. Node-oracledb Installation on Linux with Instant Client RPMs

@@ -124,25 +127,13 @@ ### 2.1 Clone [this repository](https://github.com/oracle/node-oracledb)

If you have a [ULN](https://linux.oracle.com) subscription, you can
alternatively use `yum` to install these packages from the appropriate
*Oracle Software for Oracle Linux* channel.
alternatively use `yum` to install these packages from the
*Oracle Software for Oracle Linux* channel for your version of Linux.
To run applications, you will need to set the link path:
```
export LD_LIBRARY_PATH=/usr/lib/oracle/12.1/client64/lib
```
Alternatively, if there is no other Oracle software on the machine
that will be impacted, permanently add Instant Client to the run-time
link path. Do this by creating a file
`/etc/ld.so.conf.d/oracle-instantclient.conf` that contains the library
location `/usr/lib/oracle/12.1/client64/lib`, and then run `ldconfig`
as the root user.
### 2.4 Install the driver
The installer uses the highest version Instant Client RPMs installed.
To use a different version, for example version 11.2, execute `export
OCI_LIB_DIR=/usr/lib/oracle/11.2/client64/lib` and `export
OCI_INC_DIR=/usr/include/oracle/11.2/client64/`.
To use a different version, jump to the instructions to
[install on Linux with Instant Client ZIP files](#instzip) and set
`OCI_LIB_DIR` and `OCI_INC_DIR` to the appropriate directories.
Run the installer:

@@ -180,6 +171,4 @@

Remember to set `LD_LIBRARY_PATH` or equivalent first.
## <a name="instzip"></a> 3. Node-oracledb Installation on Linux with Instant Client ZIP files
## <a name="instzip"></a> 3. Installation with Instant Client ZIP files
### 3.1 Clone [this repository](https://github.com/oracle/node-oracledb)

@@ -219,3 +208,4 @@

unzip instantclient-sdk-linux.x64-12.1.0.2.0.zip
cd instantclient_12_1
mv instantclient_12_1 instantclient
cd instantclient
ln -s libclntsh.so.12.1 libclntsh.so

@@ -230,3 +220,3 @@ ln -s libocci.so.12.1 libocci.so

```
export LD_LIBRARY_PATH=/opt/oracle/instantclient_12_1
export LD_LIBRARY_PATH=/opt/oracle/instantclient
```

@@ -238,3 +228,3 @@

`/etc/ld.so.conf.d/oracle-instantclient.conf` that contains the library
location `/opt/oracle/instantclient_12_1`, and then run `ldconfig` as
location `/opt/oracle/instantclient`, and then run `ldconfig` as
the root user.

@@ -247,4 +237,4 @@

```
export OCI_LIB_DIR=/opt/oracle/instantclient_12_1
export OCI_INC_DIR=/opt/oracle/instantclient_12_1/sdk/include
export OCI_LIB_DIR=/opt/oracle/instantclient
export OCI_INC_DIR=/opt/oracle/instantclient/sdk/include
```

@@ -286,3 +276,3 @@

## <a name="instoh"></a> 4. Installation with a local database
## <a name="instoh"></a> 4. Node-oracledb installation on Linux with a Local Database

@@ -378,2 +368,251 @@ The ORACLE_HOME can be either a database home or a full Oracle client installation.

```
## <a name="instosx"></a> 5. Node-oracledb Installation on OS X with Instant Client
### 5.1 Install Xcode
Building node-oracledb requires Xcode from the Mac App store.
### 5.2 Clone [this repository](https://github.com/oracle/node-oracledb)
```
git clone https://github.com/oracle/node-oracledb.git
```
### 5.3 Install Node.js
Node can be installed from various sources, such as via *brew*.
```
brew install node
```
Set your PATH to include the *node* and *npm* binaries:
```
export PATH=/usr/local/bin:$PATH
```
### 5.4 Install the free Oracle Instant Client ZIPs
Download the free 'Basic' and 'SDK' ZIPs from
[Oracle Technology Network](http://www.oracle.com/technetwork/topics/intel-macsoft-096467.html)
and
[install them](http://www.oracle.com/technetwork/topics/intel-macsoft-096467.html#ic_osx_inst):
```
cd /opt/oracle
unzip instantclient-basic-macos.x64-11.2.0.4.0.zip
unzip instantclient-sdk-macos.x64-11.2.0.4.0.zip
mv instantclient_11_2 instantclient
cd instantclient
ln -s libclntsh.dylib.11.1 libclntsh.dylib
```
To run applications, you will need to set the link path:
```
export DYLD_LIBRARY_PATH=/opt/oracle/instantclient
```
### 5.5 Install the driver
The installer will automatically locate Instant Client in
`/opt/oracle/instantclient`. If it is elsewhere, tell the installer
where to find it:
```
export OCI_LIB_DIR=/whereever/instantclient
export OCI_INC_DIR=/whereever/instantclient/sdk/include
```
Run the installer:
```
cd node-oracledb
npm install -g
```
### 5.6 Run an example program
Set `NODE_PATH` to include the newly installed node-oracledb driver:
```
export NODE_PATH=/usr/local/lib/node_modules
```
Edit `dbconfig.js` in the `examples` directory and set the database
credentials to your environment.
```
module.exports = {
user : "hr",
password : "welcome",
connectString : "localhost/XE"
};
```
Run one of the examples:
```
node examples/select1.js
```
*Note:* Remember to set `DYLD_LIBRARY_PATH` first.
To run a database on OS X, one option is to use VirtualBox,
see
[The Easiest Way to Enable Oracle Database Application Development on Mac OS X](https://blogs.oracle.com/opal/entry/the_easiest_way_to_enable).
## <a name="instwin"></a> 6. Node-oracledb Installation on Windows
### 6.1 Install required tools
Install a C/C++ build environment such as Microsoft Visual
Studio 2013. Compilers supported by Oracle libraries are found in
Oracle documentation for each version, for example
[Oracle Database Client Quick Installation Guide 12c Release 1 (12.1) for Microsoft Windows x64 (64-Bit)](https://docs.oracle.com/database/121/NXCQI/toc.htm#NXCQI108).
Install Git 1.9 from [git-scm.com](http://git-scm.com/download/win).
While installing, select the "*Use Git from the Windows Command
Prompt*" in the "*Adjusting your PATH environment*" dialog. Also
select the option to "*Checkout Windows-style, commit UNIX-style line
endings*" in the "*Configuring the line ending conversions*" dialog.
Install the Python 2.7 MSI from
[www.python.org](https://www.python.org/downloads). Select the option
to add the Python directories to the path.
### 6.2 Clone [this repository](https://github.com/oracle/node-oracledb)
```
git clone https://github.com/oracle/node-oracledb.git
```
### 6.3 Install Node.js
Install the 64 bit Node.js MSI from [nodejs.org](http://nodejs.org/download/)
Add the Node.js directory to the path:
```
set PATH=%PATH%;C:\Program Files\nodejs
```
### 6.4 Install the free Oracle Instant Client ZIPs
Skip this step if you already have Oracle Database on your machine.
Download the free 'Basic' and 'SDK' ZIP files from
[Oracle Technology Network](http://www.oracle.com/technetwork/topics/winx64soft-089540.html).
Extract `instantclient_basic-windows.x64-12.1.0.2.0.zip` and
`instantclient_sdk-windows.x64-12.1.0.2.0.zip` to the same location.
Optionally rename the resulting directory to `C:\oracle\instantclient`
Update the path:
```
set PATH=C:\oracle\instantclient\;%PATH%
```
### 6.5 Install the driver
If you have Instant Client in a location that is *not*
`C:\oracle\instantclient`, then tell the installer where to find the
Oracle libraries and headers:
```
set OCI_LIB_DIR=D:\instantclient_12_1\sdk\lib\msvc
set OCI_INC_DIR=D:\instantclient_12_1\sdk\include
```
If you are installing with a local database, use:
```
set OCI_LIB_DIR=C:\oracle\product\12.1.0\dbhome_1\oci\lib\msvc
set OCI_INC_DIR=C:\oracle\product\12.1.0\dbhome_1\oci\include
```
Run the installer:
```
cd node-oracledb
npm install -g
```
### 6.6 Run an example program
Set `NODE_PATH` to include the newly installed node-oracledb driver:
```
set NODE_PATH=%USERPROFILE%\AppData\Roaming\npm\node_modules
```
Edit `dbconfig.js` in the `examples` directory and set the database
credentials to your environment:
```
module.exports = {
user : "hr",
password : "welcome",
connectString : "localhost/XE"
};
```
Run one of the examples:
```
node examples/select1.js
```
## <a name="linuxadv"></a> 7. Advanced installation on Linux
### Instant Client RPMs and RPATH
On Linux, if Instant Client RPMs are auto-detected and used during
installation, then the Instant Client library directory is added to
the run time library search path via the rpath linker option.
This means that using node-oracledb with Instant Client RPMs does not
require the node-oracledb installation variables `OCI_LIB_DIR` or
`OCI_INC_DIR` to be set, and does not require `LD_LIBRARY_PATH` or
`ldconfig` configuration for run time. Installation is simply:
```
rpm -ivh oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm
rpm -ivh oracle-instantclient12.1-devel-12.1.0.2.0-1.x86_64.rpm
npm install -g
node examples/select1.js
```
### Using Instant Client RPMs without RPATH
If you want to use Instant Client RPMs without using rpath, then set
`OCI_LIB_DIR` and `OCI_INC_DIR` prior to installation, for example:
```
export OCI_LIB_DIR=/usr/lib/oracle/12.1/client64/lib
export OCI_INC_DIR=/usr/include/oracle/12.1/client64
npm install -g
export LD_LIBRARY_PATH=/usr/lib/oracle/12.1/client64/lib
node examples/select1.js
```
This is useful if you will need to upgrade Oracle Instant Client RPMS
to a new major or minor version (for example from 11.2 to 12.1)
without re-installing node-oracledb.
### Forcing RPATH
If you want to force using rpath when installing node-oracledb on
Linux, then set the node-oracledb installation variable `FORCE_RPATH`
to any value. For example:
```
export OCI_LIB_DIR=/opt/oracle/instantclient
export OCI_INC_DIR=/opt/oracle/instantclient/sdk/include
FORCE_RPATH=1 npm install -g
node examples/select1.js
```
{
"name" : "oracledb",
"version" : "0.2.4",
"version" : "0.3.1",
"description" : "Node.js Driver for Oracle Database",

@@ -17,4 +17,5 @@ "license" : "Apache 2.0",

"engines" : {
"node" : ">=0.10"
"node" : "=0.10"
},
"engineStrict": true,
"maintainers" : [

@@ -21,0 +22,0 @@ {

@@ -1,2 +0,2 @@

# node-oracledb version 0.2
# node-oracledb version 0.3

@@ -8,3 +8,3 @@ ## <a name="about"></a> 1. About node-oracledb

Node-oracledb 0.2 supports basic and advanced Oracle features, including:
Node-oracledb 0.3 supports basic and advanced Oracle features, including:

@@ -17,2 +17,3 @@ - SQL and PL/SQL Execution

- Connection Pooling
- [Database Resident Connection Pooling](#http://docs.oracle.com/database/121/ADFNS/adfns_perf_scale.htm#ADFNS228) (DRCP)
- [Statement Caching](http://docs.oracle.com/database/121/LNOCI/oci09adv.htm#i471377)

@@ -26,7 +27,5 @@ - [Client Result Caching](http://docs.oracle.com/database/121/ADFNS/adfns_perf_scale.htm#ADFNS464)

Node-oracledb 0.2 is a preview release. We are actively working on
adding features including Windows platform support, LOB support, batch
fetching / streaming of large query result sets, and
[DRCP](#http://docs.oracle.com/database/121/ADFNS/adfns_perf_scale.htm#ADFNS228)
support.
Node-oracledb 0.3 is a preview release. We are actively working on
adding features including LOB support and batch fetching / streaming
of large query result sets.

@@ -33,0 +32,0 @@ Share your feedback at the Oracle Technology Network

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc