Skip to content

Commit b9736d8

Browse files
authored
Merge pull request #73 from Coder-Spirit/fix-nominal-inputs-version
feat: port safe-env package
2 parents f0291b6 + 239859e commit b9736d8

File tree

13 files changed

+698
-114
lines changed

13 files changed

+698
-114
lines changed

@coderspirit/nominal-inputs/package.json

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
{
22
"name": "@coderspirit/nominal-inputs",
3-
"version": "1.0",
3+
"version": "1.0.3",
44
"description": "Extension of @coderspirit/nominal with 'input' types",
55
"main": "./dist/main.cjs",
66
"module": "./dist/main.mjs",
77
"types": "./dist/main.d.cts",
8-
"files": ["dist"],
8+
"files": [
9+
"dist"
10+
],
911
"exports": {
1012
"import": {
1113
"types": "./dist/main.d.mts",
@@ -16,7 +18,12 @@
1618
"default": "./dist/main.cjs"
1719
}
1820
},
19-
"keywords": ["typescript", "types", "nominal", "taint"],
21+
"keywords": [
22+
"typescript",
23+
"types",
24+
"nominal",
25+
"taint"
26+
],
2027
"author": "Andres Correa Casablanca <castarco@coderspirit.xyz>",
2128
"private": false,
2229
"license": "MIT",
@@ -30,7 +37,7 @@
3037
"prepublishOnly": "pnpm run build"
3138
},
3239
"dependencies": {
33-
"@coderspirit/nominal": "workspace:*"
40+
"@coderspirit/nominal": "workspace:^"
3441
},
3542
"devDependencies": {
3643
"@coderspirit/eslint-config": "^2.0.0",

@coderspirit/nominal/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@coderspirit/nominal",
3-
"version": "4.0.1",
3+
"version": "4.0.3",
44
"description": "Powerful nominal types for your project",
55
"main": "./dist/nominal.cjs",
66
"module": "./dist/nominal.mjs",
@@ -30,7 +30,7 @@
3030
"prepublishOnly": "pnpm run build"
3131
},
3232
"dependencies": {
33-
"@coderspirit/nominal-symbols": "workspace:*"
33+
"@coderspirit/nominal-symbols": "workspace:^"
3434
},
3535
"devDependencies": {
3636
"@coderspirit/eslint-config": "^2.0.0",

@coderspirit/nominal/src/Inputs.ts

Lines changed: 0 additions & 87 deletions
This file was deleted.

@coderspirit/nominal/src/index.ts

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -13,19 +13,3 @@ export type {
1313
FlavorMarker as FastFlavor,
1414
PropertiesMarker as FastProperty,
1515
} from './internal/Markers'
16-
17-
export type {
18-
IntegerInput,
19-
NegativeInput,
20-
NegativeIntegerInput,
21-
PositiveInput,
22-
PositiveIntegerInput,
23-
TaggedFloat,
24-
TaggedInteger,
25-
TaggedNegative,
26-
TaggedNegativeFloat,
27-
TaggedNegativeInteger,
28-
TaggedPositive,
29-
TaggedPositiveFloat,
30-
TaggedPositiveInteger,
31-
} from './Inputs'

@coderspirit/safe-env/README.md

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
# @coderspirit/safe-env
2+
3+
[![NPM version](https://img.shields.io/npm/v/@coderspirit/safe-env.svg?style=flat)](https://www.npmjs.com/package/@coderspirit/safe-env)
4+
[![TypeScript](https://badgen.net/npm/types/@coderspirit/safe-env)](http://www.typescriptlang.org/)
5+
[![License](https://badgen.net/npm/license/@coderspirit/safe-env)](https://opensource.org/licenses/MIT)
6+
[![npm downloads](https://img.shields.io/npm/dm/@coderspirit/safe-env.svg?style=flat)](https://www.npmjs.com/package/@coderspirit/safe-env)
7+
[![Known Vulnerabilities](https://snyk.io//test/github/Coder-Spirit/safe-env/badge.svg?targetFile=package.json)](https://snyk.io//test/github/Coder-Spirit/safe-env?targetFile=package.json)
8+
[![Security Score](https://snyk-widget.herokuapp.com/badge/npm/@coderspirit%2Fsafe-env/badge.svg)](https://snyk.io/advisor/npm-package/@coderspirit/safe-env)
9+
10+
> Small library to load strongly typed values from environment variables
11+
12+
## Install instructions
13+
14+
### Node
15+
16+
```
17+
# With PNPM
18+
pnpm add @coderspirit/safe-env
19+
20+
# With NPM
21+
npm install @coderspirit/safe-env
22+
23+
# Or with Yarn:
24+
yarn add @coderspirit/safe-env
25+
```
26+
27+
## Example
28+
29+
```ts
30+
import { getSafeEnv } from '@coderspirit/safe-env'
31+
32+
// It validates the specified constraints at construction time
33+
const safeEnv = getSafeEnv(process.env, {
34+
host: { type: 'string', default: 'localhost' },
35+
port: { type: 'uint16', default: 4321 },
36+
37+
githubToken: { type: 'string', optional: true },
38+
secretToken: { type: 'string' },
39+
})
40+
41+
// It leverages the powerful TypeScript's type system to tell you at
42+
// compile time if you made a mistake.
43+
const host = safeEnv.get('hostt') // Type Error
44+
45+
const host = safeEnv.get('host') // All good
46+
47+
// The return type tells you not only that you have a number, but also
48+
// that it is an integer and positive.
49+
const port = safeEnv.get('port')
50+
51+
// It will return undefined if the variable does not exist
52+
const githubToken = safeEnv.get('githubToken')
53+
54+
// It fill fail if the variable does not exist
55+
const secretToken = safeEnv.get('secretToken')
56+
```

@coderspirit/safe-env/package.json

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
{
2+
"name": "@coderspirit/safe-env",
3+
"version": "1.0.0",
4+
"description": "Safe & strongly typed environment variables accessor",
5+
"main": "./dist/main.cjs",
6+
"module": "./dist/main.mjs",
7+
"types": "./dist/main.d.cts",
8+
"files": ["dist"],
9+
"exports": {
10+
"import": {
11+
"types": "./dist/main.d.mts",
12+
"default": "./dist/main.mjs"
13+
},
14+
"require": {
15+
"types": "./dist/main.d.cts",
16+
"default": "./dist/main.cjs"
17+
}
18+
},
19+
"keywords": ["typescript", "nominal", "environment"],
20+
"author": "Andres Correa Casablanca <castarco@coderspirit.xyz>",
21+
"private": false,
22+
"license": "MIT",
23+
"scripts": {
24+
"build": "rm -rf dist && rollup --config rollup.config.prod.mjs",
25+
"lint:_all": "pnpm run lint:tsc && pnpm run lint:biome && pnpm run lint:publint",
26+
"lint:biome": "biome lint .",
27+
"lint:publint": "publint",
28+
"lint:tsc": "tsc",
29+
"test": "vitest run",
30+
"prepublishOnly": "pnpm run build"
31+
},
32+
"dependencies": {
33+
"@coderspirit/nominal": "workspace:^",
34+
"@coderspirit/nominal-inputs": "workspace:^",
35+
"ajv": "^8.12.0"
36+
},
37+
"devDependencies": {
38+
"@coderspirit/eslint-config": "^2.0.0",
39+
"@types/node": "^20.12.5",
40+
"tslib": "^2.6.2",
41+
"typescript": "^5.4.4",
42+
"vitest": "^0.34.6"
43+
},
44+
"engines": {
45+
"node": ">=18.0.0"
46+
},
47+
"repository": {
48+
"type": "git",
49+
"url": "git+https://github.com/Coder-Spirit/nominal.git"
50+
},
51+
"bugs": {
52+
"url": "https://github.com/Coder-Spirit/nominal/issues"
53+
},
54+
"homepage": "https://github.com/Coder-Spirit/nominal#readme"
55+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import pluginTs from '@rollup/plugin-typescript'
2+
import { defineConfig } from 'rollup'
3+
import dts from 'rollup-plugin-dts'
4+
5+
const input = 'src/main.ts'
6+
7+
export default defineConfig([
8+
{
9+
input,
10+
output: [
11+
{ format: 'cjs', file: 'dist/main.cjs' },
12+
{ format: 'esm', file: 'dist/main.mjs' },
13+
],
14+
plugins: [pluginTs()],
15+
},
16+
{
17+
input,
18+
output: [
19+
{ format: 'cjs', file: 'dist/main.d.cts' },
20+
{ format: 'esm', file: 'dist/main.d.mts' },
21+
],
22+
plugins: [dts()],
23+
},
24+
])

0 commit comments

Comments
 (0)