![require(esm) Backported to Node.js 20, Paving the Way for ESM-Only Packages](https://cdn.sanity.io/images/cgdhsj6q/production/be8ab80c8efa5907bc341c6fefe9aa20d239d890-1600x1097.png?w=400&fit=max&auto=format)
Security News
require(esm) Backported to Node.js 20, Paving the Way for ESM-Only Packages
require(esm) backported to Node.js 20, easing the transition to ESM-only packages and reducing complexity for developers as Node 18 nears end-of-life.
npgsqlrest
Advanced tools
The npgsqlrest
is an NPM distribution of the self-contained ahead-of-time (AOT) compiled to native code executables of the NpgsqlRest Client Web App.
NpgsqlRest is an Automatic REST API for PostgreSQL Database as the .NET8 Middleware. See the GitHub Readme for more info.
NpgsqlRest Client Web App is a command line utility that runs as a configurable Kestrel web server that can:
See the default configuration file with descriptions for more information.
This package will download an executable file for the target OS on installation (see the postinstall.js script) from the GitHub release page.
Currently, only the Windows-64 and Linux-64 builds are supported.
The Mac OS builds are missing because I don't have a Mac machine. If someone could help me out with this I'd be grateful.
If you try to install this package on MacOS, or any other unsupported OS, installation will report: Unsupported OS detected: [OS Type]
.
To see how you can create your own custom build follow these instructions:
Steps:
NpgsqlRestClient
project directory.dotnet publish -r win-x64 -c Release --output [target dir]
Notes: win-x64
is the designated target OS for the build. Adjust this parameter appropriately for the target OS. See https://learn.microsoft.com/en-us/dotnet/core/rid-catalog#known-rids. The project is already configured for the AOT builds, but you will need to run the publish command from the same flavor OS as the build target OS (Windows for Windows builds, Linux for Linux builds, etc).
Install npgsqlrest
using npm:
npm install npgsqlrest --save-dev
$ npx npgsqlrest --help
Usage:
npgsqlrest Run with the optional default configuration files: appsettings.json and
appsettings.Development.json. If these file are not found, default
configuration setting is used (see
https://vb-consulting.github.io/npgsqlrest/config/).
npgsqlrest [files...] Run with the custom configuration files. All configuration files are required.
Any configuration values will override default values in order of appearance.
npgsqlrest [file1 -o file2...] Use the -o switch to mark the next configuration file as optional. The first
file after the -o switch is optional.
npgsqlrest [file1 --optional file2...] Use --optional switch to mark the next configuration file as optional. The
first file after the --optional switch is optional.
Note: Values in the later file will override the values in the previous one.
npgsqlrest [--key=value] Override the configuration with this key with a new value (case insensitive,
use : to separate sections).
npgsqlrest -v, --version Show version information.
npgsqlrest -h, --help Show command line help.
Examples:
Example: use two config files npgsqlrest appsettings.json appsettings.Development.json
Example: second config file optional npgsqlrest appsettings.json -o appsettings.Development.json
Example: override ApplicationName config npgsqlrest --applicationname=Test
Example: override Auth:CookieName config npgsqlrest --auth:cookiename=Test
npgsqlrest-config-copy
command to copy the default config to the current directory (or, optionally, directory from the first argument).$ npx npgsqlrest-config-copy
Copied appsettings.json to /home/vbilopav/npgsqlrest-npm-test/appsettings.json
$ npx npgsqlrest appsettings.json project-config.json
[11:29:06.551 INF] ----> Starting with configuration(s): ["EnvironmentVariablesConfigurationProvider", "JsonConfigurationProvider for 'appsettings.json' (Required)", "JsonConfigurationProvider for 'project-config.json' (Required)"] [Program]
[11:29:06.552 INF] Using connection: Host=127.0.0.1;Port=5432;Database=test;Username=postgres;Application Name=MyProject [Program]
[11:29:06.553 INF] Using Cookie Authentication with scheme Cookies. Cookie expires in 14 days. [Program]
[11:29:06.553 INF] Using Bearer Token Authentication with scheme BearerToken. Token expires in 1 hours and refresh token expires in 14 days. [Program]
[11:29:06.560 INF] Serving static files from /home/vbilopav/npgsqlrest-npm-test/wwwroot [Program]
[11:29:07.083 INF] Created endpoint POST /api/case-return-long-table1 [NpgsqlRest]
[11:29:07.083 INF] Created HTTP file: /home/vbilopav/npgsqlrest-npm-test/test_public.http [NpgsqlRest.HttpFiles]
[11:29:07.100 INF] Started in 00:00:00.5527040 [Program]
[11:29:07.100 INF] Listening on ["http://localhost:5001"] [Program]
See the detailed change log:
Versions:
.NET 9.0.0
Client Build 2.4.0.0
Serilog.AspNetCore 8.0.3.0
Npgsql 9.0.1.0
NpgsqlRest 2.13.1.0
NpgsqlRest.HttpFiles 1.1.0.0
NpgsqlRest.TsClient 1.15.0.0
{
//...
"NpgsqlRest": {
//
// Enable or disable the generation of TypeScript/Javascript client source code files for NpgsqlRest endpoints.
//
"ClientCodeGen": {
//...
//
// Keep TypeScript models unique, meaning, models will same fields and types will be merged into one model with name of the last model. Significantly reduces number of generated models.
//
"UniqueModels": false
}
}
{
//...
//
// Response compression settings
//
"ResponseCompression": {
"Enabled": false,
"EnableForHttps": false,
"UseBrotli": true,
"UseGzipFallback": true,
"CompressionLevel": "Optimal", // Optimal, Fastest, NoCompression, SmallestSize
"IncludeMimeTypes": [
"text/plain",
"text/css",
"application/javascript",
"text/html",
"application/xml",
"text/xml",
"application/json",
"text/json",
"image/svg+xml",
"font/woff",
"font/woff2",
"application/font-woff",
"application/font-woff2"
],
"ExcludeMimeTypes": []
},
//...
Versions:
.NET 9.0.0
Client Build 2.3.0.0
Serilog.AspNetCore 8.0.3.0
Npgsql 8.0.5.0
NpgsqlRest 2.13.0.0
NpgsqlRest.HttpFiles 1.1.0.0
NpgsqlRest.TsClient 1.14.0.0
Versions:
.NET 8.0.10
Client Build 2.2.0.0
Serilog.AspNetCore 8.0.3.0
Npgsql 8.0.5.0
NpgsqlRest 2.12.0.0
NpgsqlRest.HttpFiles 1.0.2.0
NpgsqlRest.TsClient 1.13.0.0
Client changes:
/*
2.2.0.0
*/
{
//
// https://vb-consulting.github.io/npgsqlrest/
//
"NpgsqlRest": {
//
// ...
//
//
// Options for handling PostgreSQL routines (functions and procedures)
//
"RoutineOptions": {
//
// Name separator for parameter names when using custom type parameters.
// Parameter names will be in the format: {ParameterName}{CustomTypeParameterSeparator}{CustomTypeFieldName}. When NULL, default underscore is used.
//
"CustomTypeParameterSeparator": null,
//
// List of PostgreSQL routine language names to include. If NULL, all languages are included. Names are case-insensitive.
//
"IncludeLanguagues": null,
//
// List of PostgreSQL routine language names to exclude. If NULL, "C" and "INTERNAL" are excluded by default. Names are case-insensitive.
//
"ExcludeLanguagues": null
},
}
}
TsClient
configuration section is renamed to ClientCodeGen
.Reason is the new configuration key in this section "SkipTypes": false
that allows for generation of the pure JavaSCript modules by ommiting type declarations. And now this section can generate either TypeScript or JavaScript which is client code.
Versions:
.NET 8.0.8
Client Build 2.1.0.0
Serilog.AspNetCore 8.0.2.0
Npgsql 8.0.3.0
NpgsqlRest 2.11.0.0
NpgsqlRest.HttpFiles 1.0.2.0
NpgsqlRest.TsClient 1.10.0.0
Versions:
.NET 8.0.7
Client Build 2.0.0.0
Serilog.AspNetCore 8.0.2.0
Npgsql 8.0.3.0
NpgsqlRest 2.10.0.0
NpgsqlRest.HttpFiles 1.0.2.0
NpgsqlRest.TsClient 1.9.1.0
Versions:
Client Build 1.5.0.0
Npgsql 8.0.3.0
NpgsqlRest 2.9.0.0
NpgsqlRest.HttpFiles 1.0.2.0
NpgsqlRest.TsClient 1.9.1.0
See the full diff here
ConnectionSettings
and moved UseEnvironmentConnection
, SetApplicationNameInConnection
, and UseJsonApplicationName
from NpgsqlRest
to ConnectionSettings
.HostEnvVar
, PortEnvVar
, DatabaseEnvVar
, UserEnvVar
and PasswordEnvVar
). Some Docker environments have different environment variable names."UseEnvironmentConnectionWhenMissing": false
to be able to override connection string with environment variable names and vice versa.--key=value
. See updated help for more info.ExposeAsEndpoint
is now set to NULL (disabled) as the default configuration. This may be enabled in the development environment.appsettings.json
and optional appsettings.Development.json
are now loaded from the same directory as all others (current directory as opposed to the exe location dir).Versions:
Client Build 1.4.0.0
Npgsql 8.0.3.0
NpgsqlRest 2.8.5.0
NpgsqlRest.HttpFiles 1.0.2.0
NpgsqlRest.TsClient 1.9.0.0
Versions:
Client Build 1.3.0.0
Npgsql 8.0.3.0
NpgsqlRest 2.8.5.0
NpgsqlRest.HttpFiles 1.0.2.0
NpgsqlRest.TsClient 1.9.0.0
NpgsqlRest.UseEnvironmentConnection
:
If the connection string is not found, empty, or missing host, port or database, the connection string is created from the environment variables.
See https://www.postgresql.org/docs/current/libpq-envars.html for the list of the environment variables.
Note: Npgsql will use the environment variables by default but only for the small set of the connection string parameters like username and password (see https://www.npgsql.org/doc/connection-string-parameters.html#environment-variables).
Set this option to true to use environment variables for host, port and database as well.
When this option is enabled and these environment variables are set, connection string doesn't have to be defined at all and it will be created from the environment variables.
NpgsqlRest.TsClient.DefaultJsonType
:
Sets the default TypeScript type for JSON types when generating the TypeScript client.
Versions:
Client Build 1.2.8.0
Npgsql 8.0.3.0
NpgsqlRest 2.8.5.0
NpgsqlRest.HttpFiles 1.0.2.0
NpgsqlRest.TsClient 1.8.1.0
Versions:
Client Build 1.2.7.0
NpgsqlRest 2.8.4.0
NpgsqlRest.HttpFiles 1.0.2.0
NpgsqlRest.TsClient 1.8.1.0
Versions:
Client Build 1.2.5.0
NpgsqlRest 2.8.3.0
NpgsqlRest.HttpFiles 1.0.2.0
NpgsqlRest.TsClient 1.8.1.0
Versions:
Client Build 1.2.4.0
NpgsqlRest 2.8.2.0
NpgsqlRest.HttpFiles 1.0.2.0
NpgsqlRest.TsClient 1.8.0.0
Versions:
Client Build 1.2.3.0
NpgsqlRest 2.8.1.0
NpgsqlRest.HttpFiles 1.0.2.0
NpgsqlRest.TsClient 1.7.0.0
Versions:
Client Build 1.2.2.0
NpgsqlRest 2.8.1.0
NpgsqlRest.HttpFiles 1.0.2.0
NpgsqlRest.TsClient 1.7.0.0
Versions:
Client Build 1.2.1.0
NpgsqlRest 2.8.1.0
NpgsqlRest.HttpFiles 1.0.2.0
NpgsqlRest.TsClient 1.7.0.0
Fix readme
Versions:
Client Build 1.2.0.0
NpgsqlRest 2.8.0.0
NpgsqlRest.HttpFiles 1.0.2.0
NpgsqlRest.TsClient 1.7.0.0
Changed the download target from ./node_modules/npgsqlrest/.bin/
to shared bin: ./node_modules/.bin/
.
The reason is that when using the ./node_modules/npgsqlrest/.bin/
directory, I have to use the node spawn process wrapper which slows down the startup time. When the executable is in the ./node_modules/.bin/
it can be invoked directly which is an extremely fast, almost instant startup (a couple of milliseconds).
But now, I have to use the uninstall script too, to ensure the proper cleanup on the install.
Update readme.
Fixing the issue with the local .bin directory.
/node_modules/.bin/
to package local /node_modules/npgsqlrest/.bin/
npx npgsqlrest-config-copy [optional dir]
New build versions:
Client Build 1.1.0.0
NpgsqlRest 2.7.1.0
NpgsqlRest.HttpFiles 1.0.2.0
NpgsqlRest.TsClient 1.6.0.0
Version 2.4.0 (2024-04-08)
AotTemplate
subproject directory. AOT Template is now NpgsqlRestTestWebApi
with full configuration for the entire application.Schema
to Scheme
everywhere because that appears to be standard with the auth (unlike with databases).IRoutineSource
interface to:
CommentsMode
mode fully exposed with getters and setters.Query
property exposed.SchemaSimilarTo
, SchemaNotSimilarTo
, etc).ConnectionFromServiceProvider
.ObfuscateAuthParameterLogValues
option).SerializeAuthEndpointsResponse
to serialize the auth (log in or log out) when it's possible.ParameterValidationValues
to use NpgsqlRestParameter
instead of NpgsqlParameter
to expose the actual parameter name.IsAuth
read-only property to the endpoint.CommentHeaderIncludeComments
to the TsClient
plugin.FAQs
Automatic REST API for PostgreSQL Databases Client Build
The npm package npgsqlrest receives a total of 21 weekly downloads. As such, npgsqlrest popularity was classified as not popular.
We found that npgsqlrest 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.
Security News
require(esm) backported to Node.js 20, easing the transition to ESM-only packages and reducing complexity for developers as Node 18 nears end-of-life.
Security News
PyPI now supports iOS and Android wheels, making it easier for Python developers to distribute mobile packages.
Security News
Create React App is officially deprecated due to React 19 issues and lack of maintenance—developers should switch to Vite or other modern alternatives.