uom-types 1.0.3 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +33 -1
- package/dist/_angle-plane.d.cts +89 -0
- package/dist/_angle-plane.d.mts +89 -0
- package/dist/_identity.d.cts +29 -0
- package/dist/_identity.d.mts +29 -0
- package/dist/_index.d.cts +235 -0
- package/dist/_index.d.mts +235 -0
- package/dist/_time-duration.d.cts +481 -0
- package/dist/_time-duration.d.mts +481 -0
- package/dist/{functions-ho.cjs → functions-higher-order.cjs} +32 -5
- package/dist/functions-higher-order.d.cts +84 -0
- package/dist/functions-higher-order.d.mts +84 -0
- package/dist/{functions-ho.mjs → functions-higher-order.mjs} +32 -5
- package/dist/functions.cjs +167 -12
- package/dist/functions.d.cts +168 -98
- package/dist/functions.d.mts +168 -98
- package/dist/functions.mjs +155 -12
- package/dist/index.d.cts +1 -71
- package/dist/index.d.mts +1 -71
- package/dist/units-converters.cjs +564 -0
- package/dist/units-converters.d.cts +370 -0
- package/dist/units-converters.d.mts +370 -0
- package/dist/units-converters.mjs +483 -0
- package/dist/units.d.cts +3056 -0
- package/dist/units.d.mts +3056 -0
- package/package.json +63 -54
- package/dist/functions-ho.d.cts +0 -124
- package/dist/functions-ho.d.mts +0 -124
- package/dist/si-units-converters.cjs +0 -2
- package/dist/si-units-converters.d.cts +0 -2
- package/dist/si-units-converters.d.mts +0 -2
- package/dist/si-units-converters.mjs +0 -1
- package/dist/si-units.d.cts +0 -38
- package/dist/si-units.d.mts +0 -38
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "uom-types",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.0",
|
|
4
4
|
"description": "Typesafe units with no runtime overhead.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"uom",
|
|
@@ -22,13 +22,6 @@
|
|
|
22
22
|
"email": "rebecca.stevens@outlook.co.nz"
|
|
23
23
|
},
|
|
24
24
|
"type": "module",
|
|
25
|
-
"imports": {
|
|
26
|
-
"#uom-types": "./src/base/index.ts",
|
|
27
|
-
"#uom-types/functions": "./src/functions/index.ts",
|
|
28
|
-
"#uom-types/functions/higher-order": "./src/functions-ho/index.ts",
|
|
29
|
-
"#uom-types/si-units": "./src/si-units/index.ts",
|
|
30
|
-
"#uom-types/si-units/converters": "./src/si-units-converters/index.ts"
|
|
31
|
-
},
|
|
32
25
|
"exports": {
|
|
33
26
|
".": {
|
|
34
27
|
"types": {
|
|
@@ -46,25 +39,23 @@
|
|
|
46
39
|
},
|
|
47
40
|
"./functions/higher-order": {
|
|
48
41
|
"types": {
|
|
49
|
-
"import": "./dist/functions-
|
|
50
|
-
"require": "./dist/functions-
|
|
42
|
+
"import": "./dist/functions-higher-order.d.mts",
|
|
43
|
+
"require": "./dist/functions-higher-order.d.cts"
|
|
51
44
|
},
|
|
52
|
-
"import": "./dist/functions-
|
|
53
|
-
"require": "./dist/functions-
|
|
45
|
+
"import": "./dist/functions-higher-order.mjs",
|
|
46
|
+
"require": "./dist/functions-higher-order.cjs"
|
|
54
47
|
},
|
|
55
|
-
"./
|
|
48
|
+
"./units": {
|
|
56
49
|
"types": {
|
|
57
|
-
"import": "./dist/
|
|
58
|
-
"require": "./dist/
|
|
50
|
+
"import": "./dist/units.d.mts",
|
|
51
|
+
"require": "./dist/units.d.cts"
|
|
59
52
|
}
|
|
60
53
|
},
|
|
61
|
-
"./
|
|
54
|
+
"./units/converters": {
|
|
62
55
|
"types": {
|
|
63
|
-
"import": "./dist/
|
|
64
|
-
"require": "./dist/
|
|
65
|
-
}
|
|
66
|
-
"import": "./dist/si-units-converters.mjs",
|
|
67
|
-
"require": "./dist/si-units-converters.cjs"
|
|
56
|
+
"import": "./dist/units-converters.d.mts",
|
|
57
|
+
"require": "./dist/units-converters.d.cts"
|
|
58
|
+
}
|
|
68
59
|
}
|
|
69
60
|
},
|
|
70
61
|
"files": [
|
|
@@ -74,9 +65,13 @@
|
|
|
74
65
|
"README.md"
|
|
75
66
|
],
|
|
76
67
|
"scripts": {
|
|
77
|
-
"build": "pnpm run build:node",
|
|
68
|
+
"build": "pnpm run build-pre && pnpm run build:node",
|
|
69
|
+
"build-pre": "pnpm run generate-files",
|
|
78
70
|
"build:node": "rimraf dist && rollup -c rollup.config.ts --configPlugin @rollup/plugin-typescript",
|
|
79
71
|
"cz": "git-cz",
|
|
72
|
+
"docs": "typedoc",
|
|
73
|
+
"docs:serve": "http-serve docs/generated",
|
|
74
|
+
"generate-files": "node --no-warnings=ExperimentalWarning --loader=ts-paths-esm-loader/transpile-only --experimental-specifier-resolution=node ./scripts/generate-files.ts",
|
|
80
75
|
"lint": "pnpm run lint:js && pnpm run lint:md && pnpm run lint:prettier && pnpm run lint:knip && pnpm run lint:spelling",
|
|
81
76
|
"lint:js": "eslint .",
|
|
82
77
|
"lint:js-fix": "eslint . --fix",
|
|
@@ -87,66 +82,80 @@
|
|
|
87
82
|
"lint:prettier": "prettier \"**/*\" --ignore-unknown --list-different",
|
|
88
83
|
"lint:prettier-fix": "prettier \"**/*\" --ignore-unknown --write",
|
|
89
84
|
"lint:spelling": "cspell \"**\" \".github/**/*\"",
|
|
90
|
-
"prepare": "husky install",
|
|
91
|
-
"
|
|
92
|
-
"
|
|
93
|
-
"test": "
|
|
94
|
-
"test:js": "
|
|
85
|
+
"prepare": "husky install && pnpm run generate-files",
|
|
86
|
+
"test": "pnpm run test-pre && pnpm run test:js && pnpm run test:types && pnpm run test:types-coverage",
|
|
87
|
+
"test-pre": "pnpm run build",
|
|
88
|
+
"test:js": "vitest --coverage --run",
|
|
89
|
+
"test:js:watch": "vitest",
|
|
90
|
+
"test:types": "tsd -t './dist/index.d.mts' -f 'tests/**/*.test-d.ts'",
|
|
91
|
+
"test:types-coverage": "type-coverage --project tsconfig.build.json --at-least",
|
|
92
|
+
"test:types-coverage:report": "typescript-coverage-report --project tsconfig.build.json",
|
|
95
93
|
"type-check": "tsc --noEmit"
|
|
96
94
|
},
|
|
97
95
|
"devDependencies": {
|
|
98
|
-
"@commitlint/cli": "17.6.
|
|
99
|
-
"@commitlint/config-conventional": "17.6.
|
|
96
|
+
"@commitlint/cli": "17.6.7",
|
|
97
|
+
"@commitlint/config-conventional": "17.6.7",
|
|
100
98
|
"@cspell/dict-cryptocurrencies": "3.0.1",
|
|
101
|
-
"@rebeccastevens/eslint-config": "
|
|
99
|
+
"@rebeccastevens/eslint-config": "2.0.3",
|
|
100
|
+
"@rollup/plugin-replace": "5.0.2",
|
|
102
101
|
"@rollup/plugin-typescript": "11.1.2",
|
|
103
102
|
"@semantic-release/changelog": "6.0.3",
|
|
104
103
|
"@semantic-release/commit-analyzer": "10.0.1",
|
|
105
104
|
"@semantic-release/git": "10.0.1",
|
|
106
|
-
"@semantic-release/github": "9.0.
|
|
105
|
+
"@semantic-release/github": "9.0.4",
|
|
107
106
|
"@semantic-release/npm": "10.0.4",
|
|
108
107
|
"@semantic-release/release-notes-generator": "11.0.4",
|
|
109
|
-
"@types/node": "18.
|
|
108
|
+
"@types/node": "18.17.3",
|
|
110
109
|
"@types/rollup-plugin-auto-external": "2.0.2",
|
|
111
|
-
"@typescript-eslint/eslint-plugin": "
|
|
112
|
-
"@typescript-eslint/parser": "
|
|
113
|
-
"
|
|
114
|
-
"c8": "8.0.0",
|
|
110
|
+
"@typescript-eslint/eslint-plugin": "6.2.1",
|
|
111
|
+
"@typescript-eslint/parser": "6.2.1",
|
|
112
|
+
"@vitest/coverage-v8": "0.34.1",
|
|
115
113
|
"commitizen": "4.3.0",
|
|
116
|
-
"cspell": "6.31.
|
|
114
|
+
"cspell": "6.31.2",
|
|
117
115
|
"cz-conventional-changelog": "3.3.0",
|
|
118
|
-
"eslint": "8.
|
|
119
|
-
"eslint-config-prettier": "
|
|
116
|
+
"eslint": "8.46.0",
|
|
117
|
+
"eslint-config-prettier": "9.0.0",
|
|
120
118
|
"eslint-import-resolver-typescript": "3.5.5",
|
|
121
|
-
"eslint-plugin-ava": "14.0.0",
|
|
122
119
|
"eslint-plugin-eslint-comments": "3.2.0",
|
|
123
|
-
"eslint-plugin-functional": "
|
|
124
|
-
"eslint-plugin-import": "2.
|
|
125
|
-
"eslint-plugin-jsdoc": "46.4.
|
|
126
|
-
"eslint-plugin-markdown": "3.0.
|
|
120
|
+
"eslint-plugin-functional": "6.0.0",
|
|
121
|
+
"eslint-plugin-import": "2.28.0",
|
|
122
|
+
"eslint-plugin-jsdoc": "46.4.6",
|
|
123
|
+
"eslint-plugin-markdown": "3.0.1",
|
|
127
124
|
"eslint-plugin-n": "16.0.1",
|
|
128
125
|
"eslint-plugin-optimize-regex": "1.2.1",
|
|
129
|
-
"eslint-plugin-prettier": "5.0.0
|
|
126
|
+
"eslint-plugin-prettier": "5.0.0",
|
|
130
127
|
"eslint-plugin-promise": "6.1.1",
|
|
131
|
-
"eslint-plugin-sonarjs": "0.
|
|
132
|
-
"eslint-plugin-unicorn": "
|
|
128
|
+
"eslint-plugin-sonarjs": "0.20.0",
|
|
129
|
+
"eslint-plugin-unicorn": "48.0.1",
|
|
130
|
+
"eslint-plugin-vitest": "0.2.8",
|
|
131
|
+
"http-serve": "1.0.1",
|
|
133
132
|
"husky": "8.0.3",
|
|
134
|
-
"knip": "2.
|
|
133
|
+
"knip": "2.19.0",
|
|
135
134
|
"lint-staged": "13.2.3",
|
|
136
135
|
"markdownlint-cli": "0.35.0",
|
|
137
|
-
"prettier": "3.0.
|
|
138
|
-
"prettier-plugin-packagejson": "2.4.
|
|
136
|
+
"prettier": "3.0.1",
|
|
137
|
+
"prettier-plugin-packagejson": "2.4.5",
|
|
139
138
|
"rimraf": "5.0.1",
|
|
140
|
-
"rollup": "3.
|
|
139
|
+
"rollup": "3.27.2",
|
|
141
140
|
"rollup-plugin-auto-external": "2.0.0",
|
|
142
|
-
"rollup-plugin-dts": "5.3.
|
|
141
|
+
"rollup-plugin-dts": "5.3.1",
|
|
143
142
|
"semantic-release": "21.0.7",
|
|
144
143
|
"ts-node": "10.9.1",
|
|
145
144
|
"ts-paths-esm-loader": "1.4.3",
|
|
145
|
+
"ts-plugin-type-coverage": "2.26.0",
|
|
146
|
+
"tsafe": "1.6.4",
|
|
146
147
|
"tsconfig-paths": "4.2.0",
|
|
147
|
-
"
|
|
148
|
+
"tsd": "0.28.1",
|
|
149
|
+
"type-coverage": "2.26.0",
|
|
150
|
+
"typedoc": "0.24.8",
|
|
151
|
+
"typedoc-plugin-coverage": "2.1.0",
|
|
152
|
+
"typedoc-plugin-versions": "0.2.3",
|
|
153
|
+
"typescript": "5.1.6",
|
|
154
|
+
"typescript-coverage-report": "0.8.0",
|
|
155
|
+
"vite-tsconfig-paths": "4.2.0",
|
|
156
|
+
"vitest": "0.34.1"
|
|
148
157
|
},
|
|
149
|
-
"packageManager": "pnpm@8.6.
|
|
158
|
+
"packageManager": "pnpm@8.6.12",
|
|
150
159
|
"engines": {
|
|
151
160
|
"node": ">=16.0.0"
|
|
152
161
|
}
|
package/dist/functions-ho.d.cts
DELETED
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
type BrandUnit<T extends Record<string, UnitValue>> = {
|
|
2
|
-
__exactKeys: keyof ExcludeZeroExponentsKeys<T>;
|
|
3
|
-
__uom_types: RemoveNever<{
|
|
4
|
-
[U in keyof T]: U extends keyof ExcludeZeroExponentsKeys<T> ? BrandUnitConfigValue<T[U]> : never;
|
|
5
|
-
}>;
|
|
6
|
-
};
|
|
7
|
-
type RemoveNever<T> = {
|
|
8
|
-
[K in keyof T as [T[K]] extends [never] ? never : K]: T[K];
|
|
9
|
-
};
|
|
10
|
-
type BrandUnitConfigValue<T extends UnitValue> = ExcludeZeroExponents<T> & {
|
|
11
|
-
__exactKeys: keyof ExcludeZeroExponents<T>;
|
|
12
|
-
};
|
|
13
|
-
type GetUnitConfig<T> = T extends UnitFull<infer C> ? C : never;
|
|
14
|
-
type ExcludeZeroExponentsKeys<T extends Record<string, UnitValue>> = {
|
|
15
|
-
[K in keyof T as T[K] extends {
|
|
16
|
-
exponent: 0;
|
|
17
|
-
} ? never : K]: T[K];
|
|
18
|
-
};
|
|
19
|
-
type ExcludeZeroExponents<T extends UnitValue> = {
|
|
20
|
-
[K in keyof T as T[K] extends 0 ? never : K]: T[K];
|
|
21
|
-
};
|
|
22
|
-
type GetUnitValues<T extends Record<string, UnitValue>, U> = U extends keyof T ? T[U] : {
|
|
23
|
-
exponent: 0;
|
|
24
|
-
};
|
|
25
|
-
type KeysOfTwoObjects<A, B> = keyof A | keyof B;
|
|
26
|
-
type KeysOfKeyOfTwoObjects<A, B, K> = K extends keyof A ? K extends keyof B ? keyof A[K] | keyof B[K] : keyof A[K] : K extends keyof B ? keyof B[K] : never;
|
|
27
|
-
type Inverse<T extends number> = T extends UnknownUnit ? InverseUnit<T> : number;
|
|
28
|
-
type NegativeExponent<T extends Exponent> = T extends -6 ? 6 : T extends -5 ? 5 : T extends -4 ? 4 : T extends -3 ? 3 : T extends -2 ? 2 : T extends -1 ? 0 : T extends 0 ? 1 : T extends 1 ? -1 : T extends 2 ? -2 : T extends 3 ? -3 : T extends 4 ? -4 : T extends 5 ? -5 : T extends 6 ? -6 : never;
|
|
29
|
-
type InverseUnit<T extends UnknownUnit> = InverseUnitCore<T> extends Record<string, UnitValue> ? Unit<InverseUnitCore<T>> : never;
|
|
30
|
-
type InverseUnitCore<T extends UnknownUnit> = {
|
|
31
|
-
[U in keyof GetUnitConfig<T>]: {
|
|
32
|
-
[E in keyof GetUnitConfig<T>[U]]: NegativeExponent<GetUnitConfig<T>[U][E]>;
|
|
33
|
-
};
|
|
34
|
-
};
|
|
35
|
-
type Multiply<A extends number, B extends number> = A extends UnknownUnit ? B extends UnknownUnit ? MultiplyUnits<A, B> : A : B extends UnknownUnit ? B : number;
|
|
36
|
-
type MultiplyUnits<A extends UnknownUnit, B extends UnknownUnit> = MultiplyUnitsCore<A, B> extends Record<string, UnitValue> ? Unit<FlatternAlias<MultiplyUnitsCore<A, B>>> : never;
|
|
37
|
-
type MultiplyUnitsCore<A extends UnknownUnit, B extends UnknownUnit> = {
|
|
38
|
-
[U in KeysOfTwoObjects<GetUnitConfig<A>, GetUnitConfig<B>>]: {
|
|
39
|
-
[E in KeysOfKeyOfTwoObjects<GetUnitConfig<A>, GetUnitConfig<B>, U>]: SumExponents<E extends keyof GetUnitValues<GetUnitConfig<A>, U> ? GetUnitValues<GetUnitConfig<A>, U>[E] extends Exponent ? GetUnitValues<GetUnitConfig<A>, U>[E] : 0 : 0, E extends keyof GetUnitValues<GetUnitConfig<B>, U> ? GetUnitValues<GetUnitConfig<B>, U>[E] extends Exponent ? GetUnitValues<GetUnitConfig<B>, U>[E] : 0 : 0>;
|
|
40
|
-
};
|
|
41
|
-
};
|
|
42
|
-
type Divide<A extends number, B extends number> = A extends UnknownUnit ? B extends UnknownUnit ? DivideUnits<A, B> : A : B extends UnknownUnit ? Inverse<B> : number;
|
|
43
|
-
type DivideUnits<A extends UnknownUnit, B extends UnknownUnit> = MultiplyUnits<A, InverseUnit<B> extends UnknownUnit ? InverseUnit<B> : never>;
|
|
44
|
-
type SumExponents<A extends Exponent, B extends Exponent> = A extends -6 ? B extends 0 ? A : B extends 1 ? -5 : B extends 2 ? -4 : B extends 3 ? -3 : B extends 4 ? -2 : B extends 5 ? -1 : B extends 6 ? 0 : never : A extends -5 ? B extends -1 ? -6 : B extends 0 ? A : B extends 1 ? -4 : B extends 2 ? -3 : B extends 3 ? -2 : B extends 4 ? -1 : B extends 5 ? 0 : B extends 6 ? 1 : never : A extends -4 ? B extends -2 ? -6 : B extends -1 ? -5 : B extends 0 ? A : B extends 1 ? -3 : B extends 2 ? -2 : B extends 3 ? -1 : B extends 4 ? 0 : B extends 5 ? 1 : B extends 6 ? 2 : never : A extends -3 ? B extends -3 ? -6 : B extends -2 ? -5 : B extends -1 ? -4 : B extends 0 ? A : B extends 1 ? -2 : B extends 2 ? -1 : B extends 3 ? 0 : B extends 4 ? 1 : B extends 5 ? 2 : B extends 6 ? 3 : never : A extends -2 ? B extends -4 ? -6 : B extends -3 ? -5 : B extends -2 ? -4 : B extends -1 ? -3 : B extends 0 ? A : B extends 1 ? -1 : B extends 2 ? 0 : B extends 3 ? 1 : B extends 4 ? 2 : B extends 5 ? 3 : B extends 6 ? 4 : never : A extends -1 ? B extends -5 ? -6 : B extends -4 ? -5 : B extends -3 ? -4 : B extends -2 ? -3 : B extends -1 ? -2 : B extends 0 ? A : B extends 1 ? 0 : B extends 2 ? 1 : B extends 3 ? 2 : B extends 4 ? 3 : B extends 5 ? 4 : B extends 6 ? 5 : never : A extends 0 ? B : A extends 1 ? B extends -6 ? -5 : B extends -5 ? -4 : B extends -4 ? -3 : B extends -3 ? -2 : B extends -2 ? -1 : B extends -1 ? 0 : B extends 0 ? A : B extends 1 ? 2 : B extends 2 ? 3 : B extends 3 ? 4 : B extends 4 ? 5 : B extends 5 ? 6 : never : A extends 2 ? B extends -6 ? -4 : B extends -5 ? -3 : B extends -4 ? -2 : B extends -3 ? -1 : B extends -2 ? 0 : B extends -1 ? 1 : B extends 0 ? A : B extends 1 ? 3 : B extends 2 ? 4 : B extends 3 ? 5 : B extends 4 ? 6 : never : A extends 3 ? B extends -6 ? -3 : B extends -5 ? -2 : B extends -4 ? -1 : B extends -3 ? 0 : B extends -2 ? 1 : B extends -1 ? 2 : B extends 0 ? A : B extends 1 ? 4 : B extends 2 ? 5 : B extends 3 ? 6 : never : A extends 4 ? B extends -6 ? -2 : B extends -5 ? -1 : B extends -4 ? 0 : B extends -3 ? 1 : B extends -2 ? 2 : B extends -1 ? 3 : B extends 0 ? A : B extends 1 ? 5 : B extends 2 ? 6 : never : A extends 5 ? B extends -6 ? -1 : B extends -5 ? 0 : B extends -4 ? 1 : B extends -3 ? 2 : B extends -2 ? 3 : B extends -1 ? 4 : B extends 0 ? A : B extends 1 ? 6 : never : A extends 6 ? B extends -6 ? 0 : B extends -5 ? 1 : B extends -4 ? 2 : B extends -3 ? 3 : B extends -2 ? 4 : B extends -1 ? 5 : B extends 0 ? A : never : never;
|
|
45
|
-
/**
|
|
46
|
-
* Flatten a complex type such as a union or intersection of objects into a
|
|
47
|
-
* single object.
|
|
48
|
-
*/
|
|
49
|
-
type FlatternAlias<T> = {
|
|
50
|
-
[P in keyof T]: T[P];
|
|
51
|
-
} & {};
|
|
52
|
-
|
|
53
|
-
type Exponent = -6 | -5 | -4 | -3 | -2 | -1 | 0 | 1 | 2 | 3 | 4 | 5 | 6;
|
|
54
|
-
type UnitFull<T extends Record<string, UnitValue>> = number & Readonly<BrandUnit<T>>;
|
|
55
|
-
type UnitValue = {
|
|
56
|
-
exponent: Exponent;
|
|
57
|
-
} & Record<string, Exponent>;
|
|
58
|
-
/**
|
|
59
|
-
* A unit of measurement.
|
|
60
|
-
*/
|
|
61
|
-
type Unit<T extends Record<string, Exponent | UnitValue>> = UnitFull<{
|
|
62
|
-
[K in keyof T]: T[K] extends Exponent ? {
|
|
63
|
-
exponent: T[K];
|
|
64
|
-
} : T[K] extends UnitValue ? T[K] : never;
|
|
65
|
-
}>;
|
|
66
|
-
type UnknownUnit = number & Readonly<{
|
|
67
|
-
__exactKeys: string;
|
|
68
|
-
__uom_types: Record<string, {}>;
|
|
69
|
-
}>;
|
|
70
|
-
|
|
71
|
-
type Decimal = Unit<{}>;
|
|
72
|
-
|
|
73
|
-
type OperationIO<T extends number> = T extends UnknownUnit ? T : number;
|
|
74
|
-
/**
|
|
75
|
-
* Add a value by the given value.
|
|
76
|
-
*/
|
|
77
|
-
declare function add<T extends number>(a: OperationIO<T>): (b: OperationIO<T>) => OperationIO<T>;
|
|
78
|
-
/**
|
|
79
|
-
* Subtract one value from the given value.
|
|
80
|
-
*/
|
|
81
|
-
declare function sub<T extends number>(a: OperationIO<T>): (b: OperationIO<T>) => OperationIO<T>;
|
|
82
|
-
/**
|
|
83
|
-
* Multiple a value by the given value.
|
|
84
|
-
*/
|
|
85
|
-
declare function mul<A extends number>(a: OperationIO<A>): <B extends number>(b: OperationIO<B>) => OperationIO<Multiply<B, A>>;
|
|
86
|
-
/**
|
|
87
|
-
* Divide one value by the given value.
|
|
88
|
-
*/
|
|
89
|
-
declare function div<A extends number>(a: OperationIO<A>): <B extends number>(b: OperationIO<B>) => OperationIO<Divide<B, A>>;
|
|
90
|
-
/**
|
|
91
|
-
* Modulo operator.
|
|
92
|
-
*/
|
|
93
|
-
declare function mod<T extends number>(a: OperationIO<T>): (b: OperationIO<T>) => OperationIO<T>;
|
|
94
|
-
/**
|
|
95
|
-
* Perform mathematic modular arithmetic.
|
|
96
|
-
*/
|
|
97
|
-
declare function modSafe<T extends number>(a: OperationIO<T>): (b: OperationIO<T>) => OperationIO<T>;
|
|
98
|
-
type PowFunction<E extends number, B extends number> = E extends -1 ? (b: OperationIO<B>) => OperationIO<Inverse<B>> : E extends 0 ? (b: OperationIO<B>) => Decimal | 1 : E extends 0.5 ? (b: OperationIO<B>) => OperationIO<Divide<B, 2>> : E extends 1 ? (b: OperationIO<B>) => OperationIO<B> : E extends 2 ? (b: OperationIO<B>) => OperationIO<Multiply<B, B>> : E extends 3 ? (b: OperationIO<B>) => OperationIO<Multiply<B, Multiply<B, B>>> : E extends 4 ? (b: OperationIO<B>) => OperationIO<Multiply<B, Multiply<B, Multiply<B, B>>>> : (b: OperationIO<B>) => OperationIO<number>;
|
|
99
|
-
/**
|
|
100
|
-
* Put a number to the power of the given value.
|
|
101
|
-
*/
|
|
102
|
-
declare function pow<E extends number, B extends number>(exponent: E extends UnknownUnit ? never : E): PowFunction<E, B>;
|
|
103
|
-
/**
|
|
104
|
-
* Equal: Compare if a value is equal to the given value.
|
|
105
|
-
*/
|
|
106
|
-
declare function eq<T extends number>(a: OperationIO<T>): (b: OperationIO<T>) => boolean;
|
|
107
|
-
/**
|
|
108
|
-
* Greater Than: Compare if a value is greater than the given value.
|
|
109
|
-
*/
|
|
110
|
-
declare function gt<T extends number>(a: OperationIO<T>): (b: OperationIO<T>) => boolean;
|
|
111
|
-
/**
|
|
112
|
-
* Greater Than or Equal: Compare if a value is greater than or equal to the given value.
|
|
113
|
-
*/
|
|
114
|
-
declare function gte<T extends number>(a: OperationIO<T>): (b: OperationIO<T>) => boolean;
|
|
115
|
-
/**
|
|
116
|
-
* Less Than: Compare if a value is less than the given value.
|
|
117
|
-
*/
|
|
118
|
-
declare function lt<T extends number>(a: OperationIO<T>): (b: OperationIO<T>) => boolean;
|
|
119
|
-
/**
|
|
120
|
-
* Less Than or Equal: Compare if a value is less than or equal to the given value.
|
|
121
|
-
*/
|
|
122
|
-
declare function lte<T extends number>(a: OperationIO<T>): (b: OperationIO<T>) => boolean;
|
|
123
|
-
|
|
124
|
-
export { add, div, eq, gt, gte, lt, lte, mod, modSafe, mul, pow, sub };
|
package/dist/functions-ho.d.mts
DELETED
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
type BrandUnit<T extends Record<string, UnitValue>> = {
|
|
2
|
-
__exactKeys: keyof ExcludeZeroExponentsKeys<T>;
|
|
3
|
-
__uom_types: RemoveNever<{
|
|
4
|
-
[U in keyof T]: U extends keyof ExcludeZeroExponentsKeys<T> ? BrandUnitConfigValue<T[U]> : never;
|
|
5
|
-
}>;
|
|
6
|
-
};
|
|
7
|
-
type RemoveNever<T> = {
|
|
8
|
-
[K in keyof T as [T[K]] extends [never] ? never : K]: T[K];
|
|
9
|
-
};
|
|
10
|
-
type BrandUnitConfigValue<T extends UnitValue> = ExcludeZeroExponents<T> & {
|
|
11
|
-
__exactKeys: keyof ExcludeZeroExponents<T>;
|
|
12
|
-
};
|
|
13
|
-
type GetUnitConfig<T> = T extends UnitFull<infer C> ? C : never;
|
|
14
|
-
type ExcludeZeroExponentsKeys<T extends Record<string, UnitValue>> = {
|
|
15
|
-
[K in keyof T as T[K] extends {
|
|
16
|
-
exponent: 0;
|
|
17
|
-
} ? never : K]: T[K];
|
|
18
|
-
};
|
|
19
|
-
type ExcludeZeroExponents<T extends UnitValue> = {
|
|
20
|
-
[K in keyof T as T[K] extends 0 ? never : K]: T[K];
|
|
21
|
-
};
|
|
22
|
-
type GetUnitValues<T extends Record<string, UnitValue>, U> = U extends keyof T ? T[U] : {
|
|
23
|
-
exponent: 0;
|
|
24
|
-
};
|
|
25
|
-
type KeysOfTwoObjects<A, B> = keyof A | keyof B;
|
|
26
|
-
type KeysOfKeyOfTwoObjects<A, B, K> = K extends keyof A ? K extends keyof B ? keyof A[K] | keyof B[K] : keyof A[K] : K extends keyof B ? keyof B[K] : never;
|
|
27
|
-
type Inverse<T extends number> = T extends UnknownUnit ? InverseUnit<T> : number;
|
|
28
|
-
type NegativeExponent<T extends Exponent> = T extends -6 ? 6 : T extends -5 ? 5 : T extends -4 ? 4 : T extends -3 ? 3 : T extends -2 ? 2 : T extends -1 ? 0 : T extends 0 ? 1 : T extends 1 ? -1 : T extends 2 ? -2 : T extends 3 ? -3 : T extends 4 ? -4 : T extends 5 ? -5 : T extends 6 ? -6 : never;
|
|
29
|
-
type InverseUnit<T extends UnknownUnit> = InverseUnitCore<T> extends Record<string, UnitValue> ? Unit<InverseUnitCore<T>> : never;
|
|
30
|
-
type InverseUnitCore<T extends UnknownUnit> = {
|
|
31
|
-
[U in keyof GetUnitConfig<T>]: {
|
|
32
|
-
[E in keyof GetUnitConfig<T>[U]]: NegativeExponent<GetUnitConfig<T>[U][E]>;
|
|
33
|
-
};
|
|
34
|
-
};
|
|
35
|
-
type Multiply<A extends number, B extends number> = A extends UnknownUnit ? B extends UnknownUnit ? MultiplyUnits<A, B> : A : B extends UnknownUnit ? B : number;
|
|
36
|
-
type MultiplyUnits<A extends UnknownUnit, B extends UnknownUnit> = MultiplyUnitsCore<A, B> extends Record<string, UnitValue> ? Unit<FlatternAlias<MultiplyUnitsCore<A, B>>> : never;
|
|
37
|
-
type MultiplyUnitsCore<A extends UnknownUnit, B extends UnknownUnit> = {
|
|
38
|
-
[U in KeysOfTwoObjects<GetUnitConfig<A>, GetUnitConfig<B>>]: {
|
|
39
|
-
[E in KeysOfKeyOfTwoObjects<GetUnitConfig<A>, GetUnitConfig<B>, U>]: SumExponents<E extends keyof GetUnitValues<GetUnitConfig<A>, U> ? GetUnitValues<GetUnitConfig<A>, U>[E] extends Exponent ? GetUnitValues<GetUnitConfig<A>, U>[E] : 0 : 0, E extends keyof GetUnitValues<GetUnitConfig<B>, U> ? GetUnitValues<GetUnitConfig<B>, U>[E] extends Exponent ? GetUnitValues<GetUnitConfig<B>, U>[E] : 0 : 0>;
|
|
40
|
-
};
|
|
41
|
-
};
|
|
42
|
-
type Divide<A extends number, B extends number> = A extends UnknownUnit ? B extends UnknownUnit ? DivideUnits<A, B> : A : B extends UnknownUnit ? Inverse<B> : number;
|
|
43
|
-
type DivideUnits<A extends UnknownUnit, B extends UnknownUnit> = MultiplyUnits<A, InverseUnit<B> extends UnknownUnit ? InverseUnit<B> : never>;
|
|
44
|
-
type SumExponents<A extends Exponent, B extends Exponent> = A extends -6 ? B extends 0 ? A : B extends 1 ? -5 : B extends 2 ? -4 : B extends 3 ? -3 : B extends 4 ? -2 : B extends 5 ? -1 : B extends 6 ? 0 : never : A extends -5 ? B extends -1 ? -6 : B extends 0 ? A : B extends 1 ? -4 : B extends 2 ? -3 : B extends 3 ? -2 : B extends 4 ? -1 : B extends 5 ? 0 : B extends 6 ? 1 : never : A extends -4 ? B extends -2 ? -6 : B extends -1 ? -5 : B extends 0 ? A : B extends 1 ? -3 : B extends 2 ? -2 : B extends 3 ? -1 : B extends 4 ? 0 : B extends 5 ? 1 : B extends 6 ? 2 : never : A extends -3 ? B extends -3 ? -6 : B extends -2 ? -5 : B extends -1 ? -4 : B extends 0 ? A : B extends 1 ? -2 : B extends 2 ? -1 : B extends 3 ? 0 : B extends 4 ? 1 : B extends 5 ? 2 : B extends 6 ? 3 : never : A extends -2 ? B extends -4 ? -6 : B extends -3 ? -5 : B extends -2 ? -4 : B extends -1 ? -3 : B extends 0 ? A : B extends 1 ? -1 : B extends 2 ? 0 : B extends 3 ? 1 : B extends 4 ? 2 : B extends 5 ? 3 : B extends 6 ? 4 : never : A extends -1 ? B extends -5 ? -6 : B extends -4 ? -5 : B extends -3 ? -4 : B extends -2 ? -3 : B extends -1 ? -2 : B extends 0 ? A : B extends 1 ? 0 : B extends 2 ? 1 : B extends 3 ? 2 : B extends 4 ? 3 : B extends 5 ? 4 : B extends 6 ? 5 : never : A extends 0 ? B : A extends 1 ? B extends -6 ? -5 : B extends -5 ? -4 : B extends -4 ? -3 : B extends -3 ? -2 : B extends -2 ? -1 : B extends -1 ? 0 : B extends 0 ? A : B extends 1 ? 2 : B extends 2 ? 3 : B extends 3 ? 4 : B extends 4 ? 5 : B extends 5 ? 6 : never : A extends 2 ? B extends -6 ? -4 : B extends -5 ? -3 : B extends -4 ? -2 : B extends -3 ? -1 : B extends -2 ? 0 : B extends -1 ? 1 : B extends 0 ? A : B extends 1 ? 3 : B extends 2 ? 4 : B extends 3 ? 5 : B extends 4 ? 6 : never : A extends 3 ? B extends -6 ? -3 : B extends -5 ? -2 : B extends -4 ? -1 : B extends -3 ? 0 : B extends -2 ? 1 : B extends -1 ? 2 : B extends 0 ? A : B extends 1 ? 4 : B extends 2 ? 5 : B extends 3 ? 6 : never : A extends 4 ? B extends -6 ? -2 : B extends -5 ? -1 : B extends -4 ? 0 : B extends -3 ? 1 : B extends -2 ? 2 : B extends -1 ? 3 : B extends 0 ? A : B extends 1 ? 5 : B extends 2 ? 6 : never : A extends 5 ? B extends -6 ? -1 : B extends -5 ? 0 : B extends -4 ? 1 : B extends -3 ? 2 : B extends -2 ? 3 : B extends -1 ? 4 : B extends 0 ? A : B extends 1 ? 6 : never : A extends 6 ? B extends -6 ? 0 : B extends -5 ? 1 : B extends -4 ? 2 : B extends -3 ? 3 : B extends -2 ? 4 : B extends -1 ? 5 : B extends 0 ? A : never : never;
|
|
45
|
-
/**
|
|
46
|
-
* Flatten a complex type such as a union or intersection of objects into a
|
|
47
|
-
* single object.
|
|
48
|
-
*/
|
|
49
|
-
type FlatternAlias<T> = {
|
|
50
|
-
[P in keyof T]: T[P];
|
|
51
|
-
} & {};
|
|
52
|
-
|
|
53
|
-
type Exponent = -6 | -5 | -4 | -3 | -2 | -1 | 0 | 1 | 2 | 3 | 4 | 5 | 6;
|
|
54
|
-
type UnitFull<T extends Record<string, UnitValue>> = number & Readonly<BrandUnit<T>>;
|
|
55
|
-
type UnitValue = {
|
|
56
|
-
exponent: Exponent;
|
|
57
|
-
} & Record<string, Exponent>;
|
|
58
|
-
/**
|
|
59
|
-
* A unit of measurement.
|
|
60
|
-
*/
|
|
61
|
-
type Unit<T extends Record<string, Exponent | UnitValue>> = UnitFull<{
|
|
62
|
-
[K in keyof T]: T[K] extends Exponent ? {
|
|
63
|
-
exponent: T[K];
|
|
64
|
-
} : T[K] extends UnitValue ? T[K] : never;
|
|
65
|
-
}>;
|
|
66
|
-
type UnknownUnit = number & Readonly<{
|
|
67
|
-
__exactKeys: string;
|
|
68
|
-
__uom_types: Record<string, {}>;
|
|
69
|
-
}>;
|
|
70
|
-
|
|
71
|
-
type Decimal = Unit<{}>;
|
|
72
|
-
|
|
73
|
-
type OperationIO<T extends number> = T extends UnknownUnit ? T : number;
|
|
74
|
-
/**
|
|
75
|
-
* Add a value by the given value.
|
|
76
|
-
*/
|
|
77
|
-
declare function add<T extends number>(a: OperationIO<T>): (b: OperationIO<T>) => OperationIO<T>;
|
|
78
|
-
/**
|
|
79
|
-
* Subtract one value from the given value.
|
|
80
|
-
*/
|
|
81
|
-
declare function sub<T extends number>(a: OperationIO<T>): (b: OperationIO<T>) => OperationIO<T>;
|
|
82
|
-
/**
|
|
83
|
-
* Multiple a value by the given value.
|
|
84
|
-
*/
|
|
85
|
-
declare function mul<A extends number>(a: OperationIO<A>): <B extends number>(b: OperationIO<B>) => OperationIO<Multiply<B, A>>;
|
|
86
|
-
/**
|
|
87
|
-
* Divide one value by the given value.
|
|
88
|
-
*/
|
|
89
|
-
declare function div<A extends number>(a: OperationIO<A>): <B extends number>(b: OperationIO<B>) => OperationIO<Divide<B, A>>;
|
|
90
|
-
/**
|
|
91
|
-
* Modulo operator.
|
|
92
|
-
*/
|
|
93
|
-
declare function mod<T extends number>(a: OperationIO<T>): (b: OperationIO<T>) => OperationIO<T>;
|
|
94
|
-
/**
|
|
95
|
-
* Perform mathematic modular arithmetic.
|
|
96
|
-
*/
|
|
97
|
-
declare function modSafe<T extends number>(a: OperationIO<T>): (b: OperationIO<T>) => OperationIO<T>;
|
|
98
|
-
type PowFunction<E extends number, B extends number> = E extends -1 ? (b: OperationIO<B>) => OperationIO<Inverse<B>> : E extends 0 ? (b: OperationIO<B>) => Decimal | 1 : E extends 0.5 ? (b: OperationIO<B>) => OperationIO<Divide<B, 2>> : E extends 1 ? (b: OperationIO<B>) => OperationIO<B> : E extends 2 ? (b: OperationIO<B>) => OperationIO<Multiply<B, B>> : E extends 3 ? (b: OperationIO<B>) => OperationIO<Multiply<B, Multiply<B, B>>> : E extends 4 ? (b: OperationIO<B>) => OperationIO<Multiply<B, Multiply<B, Multiply<B, B>>>> : (b: OperationIO<B>) => OperationIO<number>;
|
|
99
|
-
/**
|
|
100
|
-
* Put a number to the power of the given value.
|
|
101
|
-
*/
|
|
102
|
-
declare function pow<E extends number, B extends number>(exponent: E extends UnknownUnit ? never : E): PowFunction<E, B>;
|
|
103
|
-
/**
|
|
104
|
-
* Equal: Compare if a value is equal to the given value.
|
|
105
|
-
*/
|
|
106
|
-
declare function eq<T extends number>(a: OperationIO<T>): (b: OperationIO<T>) => boolean;
|
|
107
|
-
/**
|
|
108
|
-
* Greater Than: Compare if a value is greater than the given value.
|
|
109
|
-
*/
|
|
110
|
-
declare function gt<T extends number>(a: OperationIO<T>): (b: OperationIO<T>) => boolean;
|
|
111
|
-
/**
|
|
112
|
-
* Greater Than or Equal: Compare if a value is greater than or equal to the given value.
|
|
113
|
-
*/
|
|
114
|
-
declare function gte<T extends number>(a: OperationIO<T>): (b: OperationIO<T>) => boolean;
|
|
115
|
-
/**
|
|
116
|
-
* Less Than: Compare if a value is less than the given value.
|
|
117
|
-
*/
|
|
118
|
-
declare function lt<T extends number>(a: OperationIO<T>): (b: OperationIO<T>) => boolean;
|
|
119
|
-
/**
|
|
120
|
-
* Less Than or Equal: Compare if a value is less than or equal to the given value.
|
|
121
|
-
*/
|
|
122
|
-
declare function lte<T extends number>(a: OperationIO<T>): (b: OperationIO<T>) => boolean;
|
|
123
|
-
|
|
124
|
-
export { add, div, eq, gt, gte, lt, lte, mod, modSafe, mul, pow, sub };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
|
package/dist/si-units.d.cts
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
type BrandUnit<T extends Record<string, UnitValue>> = {
|
|
2
|
-
__exactKeys: keyof ExcludeZeroExponentsKeys<T>;
|
|
3
|
-
__uom_types: RemoveNever<{
|
|
4
|
-
[U in keyof T]: U extends keyof ExcludeZeroExponentsKeys<T> ? BrandUnitConfigValue<T[U]> : never;
|
|
5
|
-
}>;
|
|
6
|
-
};
|
|
7
|
-
type RemoveNever<T> = {
|
|
8
|
-
[K in keyof T as [T[K]] extends [never] ? never : K]: T[K];
|
|
9
|
-
};
|
|
10
|
-
type BrandUnitConfigValue<T extends UnitValue> = ExcludeZeroExponents<T> & {
|
|
11
|
-
__exactKeys: keyof ExcludeZeroExponents<T>;
|
|
12
|
-
};
|
|
13
|
-
type ExcludeZeroExponentsKeys<T extends Record<string, UnitValue>> = {
|
|
14
|
-
[K in keyof T as T[K] extends {
|
|
15
|
-
exponent: 0;
|
|
16
|
-
} ? never : K]: T[K];
|
|
17
|
-
};
|
|
18
|
-
type ExcludeZeroExponents<T extends UnitValue> = {
|
|
19
|
-
[K in keyof T as T[K] extends 0 ? never : K]: T[K];
|
|
20
|
-
};
|
|
21
|
-
|
|
22
|
-
type Exponent = -6 | -5 | -4 | -3 | -2 | -1 | 0 | 1 | 2 | 3 | 4 | 5 | 6;
|
|
23
|
-
type UnitFull<T extends Record<string, UnitValue>> = number & Readonly<BrandUnit<T>>;
|
|
24
|
-
type UnitValue = {
|
|
25
|
-
exponent: Exponent;
|
|
26
|
-
} & Record<string, Exponent>;
|
|
27
|
-
/**
|
|
28
|
-
* A unit of measurement.
|
|
29
|
-
*/
|
|
30
|
-
type Unit<T extends Record<string, Exponent | UnitValue>> = UnitFull<{
|
|
31
|
-
[K in keyof T]: T[K] extends Exponent ? {
|
|
32
|
-
exponent: T[K];
|
|
33
|
-
} : T[K] extends UnitValue ? T[K] : never;
|
|
34
|
-
}>;
|
|
35
|
-
|
|
36
|
-
type Decimal = Unit<{}>;
|
|
37
|
-
|
|
38
|
-
export { Decimal };
|
package/dist/si-units.d.mts
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
type BrandUnit<T extends Record<string, UnitValue>> = {
|
|
2
|
-
__exactKeys: keyof ExcludeZeroExponentsKeys<T>;
|
|
3
|
-
__uom_types: RemoveNever<{
|
|
4
|
-
[U in keyof T]: U extends keyof ExcludeZeroExponentsKeys<T> ? BrandUnitConfigValue<T[U]> : never;
|
|
5
|
-
}>;
|
|
6
|
-
};
|
|
7
|
-
type RemoveNever<T> = {
|
|
8
|
-
[K in keyof T as [T[K]] extends [never] ? never : K]: T[K];
|
|
9
|
-
};
|
|
10
|
-
type BrandUnitConfigValue<T extends UnitValue> = ExcludeZeroExponents<T> & {
|
|
11
|
-
__exactKeys: keyof ExcludeZeroExponents<T>;
|
|
12
|
-
};
|
|
13
|
-
type ExcludeZeroExponentsKeys<T extends Record<string, UnitValue>> = {
|
|
14
|
-
[K in keyof T as T[K] extends {
|
|
15
|
-
exponent: 0;
|
|
16
|
-
} ? never : K]: T[K];
|
|
17
|
-
};
|
|
18
|
-
type ExcludeZeroExponents<T extends UnitValue> = {
|
|
19
|
-
[K in keyof T as T[K] extends 0 ? never : K]: T[K];
|
|
20
|
-
};
|
|
21
|
-
|
|
22
|
-
type Exponent = -6 | -5 | -4 | -3 | -2 | -1 | 0 | 1 | 2 | 3 | 4 | 5 | 6;
|
|
23
|
-
type UnitFull<T extends Record<string, UnitValue>> = number & Readonly<BrandUnit<T>>;
|
|
24
|
-
type UnitValue = {
|
|
25
|
-
exponent: Exponent;
|
|
26
|
-
} & Record<string, Exponent>;
|
|
27
|
-
/**
|
|
28
|
-
* A unit of measurement.
|
|
29
|
-
*/
|
|
30
|
-
type Unit<T extends Record<string, Exponent | UnitValue>> = UnitFull<{
|
|
31
|
-
[K in keyof T]: T[K] extends Exponent ? {
|
|
32
|
-
exponent: T[K];
|
|
33
|
-
} : T[K] extends UnitValue ? T[K] : never;
|
|
34
|
-
}>;
|
|
35
|
-
|
|
36
|
-
type Decimal = Unit<{}>;
|
|
37
|
-
|
|
38
|
-
export { Decimal };
|