@shellicar/core-config 0.1.0 → 1.0.1

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.
Files changed (73) hide show
  1. package/README.md +14 -126
  2. package/dist/index.cjs +1 -1
  3. package/dist/index.cjs.map +1 -1
  4. package/dist/index.d.cts +62 -6
  5. package/dist/index.d.ts +62 -6
  6. package/dist/index.js +1 -1
  7. package/dist/index.js.map +1 -1
  8. package/package.json +3 -3
  9. package/CHANGELOG.md +0 -7
  10. package/dist/SecureConnectionString.cjs +0 -1
  11. package/dist/SecureConnectionString.cjs.map +0 -1
  12. package/dist/SecureConnectionString.d.cts +0 -16
  13. package/dist/SecureConnectionString.d.ts +0 -16
  14. package/dist/SecureConnectionString.js +0 -1
  15. package/dist/SecureConnectionString.js.map +0 -1
  16. package/dist/SecureString.cjs +0 -1
  17. package/dist/SecureString.cjs.map +0 -1
  18. package/dist/SecureString.d.cts +0 -15
  19. package/dist/SecureString.d.ts +0 -15
  20. package/dist/SecureString.js +0 -1
  21. package/dist/SecureString.js.map +0 -1
  22. package/dist/SecureURL.cjs +0 -1
  23. package/dist/SecureURL.cjs.map +0 -1
  24. package/dist/SecureURL.d.cts +0 -18
  25. package/dist/SecureURL.d.ts +0 -18
  26. package/dist/SecureURL.js +0 -1
  27. package/dist/SecureURL.js.map +0 -1
  28. package/dist/chunk-3GMWIOOZ.cjs +0 -1
  29. package/dist/chunk-3GMWIOOZ.cjs.map +0 -1
  30. package/dist/chunk-5UKICLVE.cjs +0 -1
  31. package/dist/chunk-5UKICLVE.cjs.map +0 -1
  32. package/dist/chunk-7QVYU63E.js +0 -1
  33. package/dist/chunk-7QVYU63E.js.map +0 -1
  34. package/dist/chunk-EQYTBWBL.js +0 -1
  35. package/dist/chunk-EQYTBWBL.js.map +0 -1
  36. package/dist/chunk-HK6ZXU7J.js +0 -1
  37. package/dist/chunk-HK6ZXU7J.js.map +0 -1
  38. package/dist/chunk-M2AZ3CIA.cjs +0 -1
  39. package/dist/chunk-M2AZ3CIA.cjs.map +0 -1
  40. package/dist/chunk-MA2X5MES.cjs +0 -1
  41. package/dist/chunk-MA2X5MES.cjs.map +0 -1
  42. package/dist/chunk-PK6SKIKE.cjs +0 -1
  43. package/dist/chunk-PK6SKIKE.cjs.map +0 -1
  44. package/dist/chunk-RBCLW5Z3.js +0 -1
  45. package/dist/chunk-RBCLW5Z3.js.map +0 -1
  46. package/dist/chunk-SAA2XVPV.js +0 -1
  47. package/dist/chunk-SAA2XVPV.js.map +0 -1
  48. package/dist/chunk-W5TZC6JS.cjs +0 -1
  49. package/dist/chunk-W5TZC6JS.cjs.map +0 -1
  50. package/dist/chunk-WO3QMJL2.js +0 -1
  51. package/dist/chunk-WO3QMJL2.js.map +0 -1
  52. package/dist/chunk-XHBKWGZG.js +0 -1
  53. package/dist/chunk-XHBKWGZG.js.map +0 -1
  54. package/dist/chunk-Z4KAMDJN.cjs +0 -1
  55. package/dist/chunk-Z4KAMDJN.cjs.map +0 -1
  56. package/dist/defaults.cjs +0 -1
  57. package/dist/defaults.cjs.map +0 -1
  58. package/dist/defaults.d.cts +0 -3
  59. package/dist/defaults.d.ts +0 -3
  60. package/dist/defaults.js +0 -1
  61. package/dist/defaults.js.map +0 -1
  62. package/dist/sha256.cjs +0 -1
  63. package/dist/sha256.cjs.map +0 -1
  64. package/dist/sha256.d.cts +0 -3
  65. package/dist/sha256.d.ts +0 -3
  66. package/dist/sha256.js +0 -1
  67. package/dist/sha256.js.map +0 -1
  68. package/dist/types.cjs +0 -1
  69. package/dist/types.cjs.map +0 -1
  70. package/dist/types.d.cts +0 -10
  71. package/dist/types.d.ts +0 -10
  72. package/dist/types.js +0 -1
  73. package/dist/types.js.map +0 -1
package/README.md CHANGED
@@ -1,140 +1,28 @@
1
1
  # @shellicar/core-config
2
2
 
3
- A library for securely handling sensitive configuration values like connection strings, URLs, and secrets.
3
+ > A library for securely handling sensitive configuration values like connection strings, URLs, and secrets.
4
4
 
5
- <!-- BEGIN_ECOSYSTEM -->
5
+ [![npm package](https://img.shields.io/npm/v/@shellicar/core-config.svg)](https://npmjs.com/package/@shellicar/core-config)
6
+ [![build status](https://github.com/shellicar/core-config/actions/workflows/node.js.yml/badge.svg)](https://github.com/shellicar/core-config/actions/workflows/node.js.yml)
6
7
 
7
- ## @shellicar TypeScript Ecosystem
8
-
9
- ### Core Libraries
10
-
11
- - [`@shellicar/core-config`](https://github.com/shellicar/core-config) - A library for securely handling sensitive configuration values like connection strings, URLs, and secrets.
12
- - [`@shellicar/core-di`](https://github.com/shellicar/core-di) - A basic dependency injection library.
13
- - [`@shellicar/core-foundation`](https://github.com/shellicar/core-foundation) - A comprehensive starter repository.
14
-
15
- ### Build Tools
16
-
17
- - [`@shellicar/build-version`](https://github.com/shellicar/build-version) - Build plugin that calculates and exposes version information through a virtual module import.
18
- - [`@shellicar/build-graphql`](https://github.com/shellicar/build-graphql) - Build plugin that loads GraphQL files and makes them available through a virtual module import.
19
-
20
- ### Framework Adapters
21
-
22
- - [`@shellicar/svelte-adapter-azure-functions`](https://github.com/shellicar/svelte-adapter-azure-functions) - A [SvelteKit adapter](https://kit.svelte.dev/docs/adapters) that builds your app into an Azure Function.
23
-
24
- ### Logging & Monitoring
25
-
26
- - [`@shellicar/winston-azure-application-insights`](https://github.com/shellicar/winston-azure-application-insights) - An [Azure Application Insights](https://azure.microsoft.com/en-us/services/application-insights/) transport for [Winston](https://github.com/winstonjs/winston) logging library.
27
- - [`@shellicar/pino-applicationinsights-transport`](https://github.com/shellicar/pino-applicationinsights-transport) - [Azure Application Insights](https://azure.microsoft.com/en-us/services/application-insights) transport for [pino](https://github.com/pinojs/pino)
28
-
29
- <!-- END_ECOSYSTEM -->
30
-
31
- ## Features
32
-
33
- - 🔐 **SecureString** - Safely handle sensitive string values with automatic hashing for logs and serialization
34
- - 🔗 **SecureConnectionString** - Parse and protect connection strings with configurable secret key detection
35
- - 🌐 **SecureURL** - Handle URLs while protecting sensitive components like passwords
36
-
37
- ## Usage
8
+ ## Installation & Quick Start
38
9
 
39
10
  ```sh
40
- pnpm i --save @shellicar/core-config
41
- ```
42
-
43
- ### SecureString
44
-
45
- Securely handle sensitive string values:
46
-
47
- ```typescript
48
- import { SecureString } from '@shellicar/core-config';
49
-
50
- const secret = SecureString.from('myPassword123');
51
-
52
- console.log(secret.toString());
53
- // sha256:71d4ec024886c1c8e4707fb02b46fd568df44e77dd5055cadc3451747f0f2716
54
-
55
- console.log(JSON.stringify({ secret }));
56
- // {"secret":"sha256:71d4ec024886c1c8e4707fb02b46fd568df44e77dd5055cadc3451747f0f2716"}
11
+ npm i --save @shellicar/core-config
57
12
  ```
58
13
 
59
- ### SecureConnectionString
60
-
61
- Handle connection strings with automatic secret protection:
62
-
63
- ```typescript
64
- import { SecureConnectionString } from '@shellicar/core-config';
65
-
66
- const conn = SecureConnectionString.from('Server=myserver;Password=myPassword123');
67
- console.log(conn.toString());
68
- // Server=myserver;Password=sha256:71d4ec024886c1c8e4707fb02b46fd568df44e77dd5055cadc3451747f0f2716
69
-
70
- // Custom secret keys
71
- console.log(SecureConnectionString.from('Server=myserver;SuperSecretKey=myPassword123', 'SuperSecretKey'));
72
- // {
73
- // Server: 'myserver',
74
- // SuperSecretKey: 'sha256:71d4ec024886c1c8e4707fb02b46fd568df44e77dd5055cadc3451747f0f2716'
75
- // }
14
+ ```sh
15
+ pnpm add @shellicar/core-config
76
16
  ```
77
17
 
78
- ### SecureURL
79
-
80
- Safely handle URLs containing sensitive information:
18
+ ```ts
19
+ import { SecureString, SecureConnectionString, SecureURL } from '@shellicar/core-config';
81
20
 
82
- ```typescript
83
- import { SecureURL } from '@shellicar/core-config';
84
-
85
- const url = new URL('https://user:myPassword123@example.com?key=value');
86
- const secureUrl = SecureURL.from(url);
87
-
88
- console.log(secureUrl.toString());
89
- // https://user:sha256%3A71d4ec024886c1c8e4707fb02b46fd568df44e77dd5055cadc3451747f0f2716@example.com/?key=value
90
-
91
- console.log(secureUrl);
92
- // {
93
- // href: 'https://user@example.com/',
94
- // password: 'sha256:71d4ec024886c1c8e4707fb02b46fd568df44e77dd5055cadc3451747f0f2716',
95
- // searchParams: { key: 'value' }
96
- // }
21
+ console.log(SecureString.from('myPassword123'));
22
+ console.log(SecureConnectionString.from('Server=myserver.uri;Password=myPassword123'));
23
+ console.log(SecureURL.from(new URL('http://myuser:myPassword123@myserver.uri')));
97
24
  ```
98
25
 
99
- ### Default Secure Keys
100
-
101
- For a list of default secure keys for connection strings, see [defaults.ts](./packages/core-config/src/defaults.ts).
102
-
103
- ### Secure Output
104
-
105
- All secure types implement proper toString(), toJSON(), and inspect() methods to ensure sensitive data is never accidentally exposed through logs or serialization.
106
-
107
- ### Real World Example
108
-
109
- Using with Zod for environment variable validation:
110
-
111
- ```typescript
112
- import { z } from 'zod';
113
- import { SecureString, SecureURL, SecureConnectionString } from '@shellicar/core-config';
114
-
115
- const envSchema = z.object({
116
- // MongoDB connection string with username/password
117
- MONGODB_URL: z.string().url().transform(url => SecureURL.from(new URL(url))),
118
-
119
- // API key for external service
120
- API_KEY: z.string().min(1).transform(SecureString.from),
121
-
122
- // SQL Server connection string
123
- SQL_CONNECTION: z.string().transform(SecureConnectionString.from),
124
- });
125
-
126
- // Parse environment variables
127
- const config = envSchema.parse(process.env);
128
-
129
- // Values are now strongly typed and secured
130
- console.log(config.MONGODB_URL.toString());
131
- // https://myuser@mongodb.example.com/
132
-
133
- console.log(config.API_KEY.toString());
134
- // sha256:71d4ec024886c1c8e4707fb02b46fd568df44e77dd5055cadc3451747f0f2716
135
-
136
- console.log(config.SQL_CONNECTION.toString());
137
- // Server=myserver;Database=mydb;User Id=admin;Password=sha256:71d4ec...
138
- ```
26
+ ## Documentation
139
27
 
140
- All sensitive values are automatically hashed in logs and serialization, while still being accessible via the `secretValue` property when needed.
28
+ For full documentation, visit [here](https://github.com/shellicar/core-config).
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";var e=require("./chunk-3GMWIOOZ.cjs"),r=require("./chunk-MA2X5MES.cjs"),n=require("./chunk-M2AZ3CIA.cjs"),u=require("./chunk-5UKICLVE.cjs");require("./chunk-W5TZC6JS.cjs"),require("./chunk-Z4KAMDJN.cjs"),require("./chunk-PK6SKIKE.cjs"),Object.defineProperty(exports,"SecureConnectionString",{enumerable:!0,get:function(){return e.SecureConnectionString}}),Object.defineProperty(exports,"SecureString",{enumerable:!0,get:function(){return r.SecureString}}),Object.defineProperty(exports,"SecureURL",{enumerable:!0,get:function(){return n.SecureURL}}),Object.defineProperty(exports,"defaultSecureKeys",{enumerable:!0,get:function(){return u.defaultSecureKeys}});//# sourceMappingURL=index.cjs.map
1
+ "use strict";var t=require("util"),e=require("crypto");function r(t){return t&&t.__esModule?t:{default:t}}var s=r(t),a=Object.defineProperty,n=(t,e)=>a(t,"name",{value:e,configurable:!0}),o={sha256:n((()=>({hash:n((t=>e.createHash("sha256").update(t).digest("hex")),"hash"),prefix:"sha256"})),"sha256"),hs256:n((t=>({hash:n((r=>e.createHmac("sha256",t).update(r).digest("hex")),"hash"),prefix:"hs256"})),"hs256")},i=n((t=>void 0===t?o.sha256():o.hs256(t)),"getAlgorithm"),c=n(((t,e)=>{const r=i(e),s=r.hash(t);return`${r.prefix}:${s}`}),"hash"),u=class{static{n(this,"BaseObject")}},h=class t extends u{static{n(this,"SecureString")}#t;#e;get secretValue(){return this.#t}constructor(t,e){super(),this.#t=t,this.#e=c(t,e)}static factory(e){return r=>t.from(r,e)}static from(e,r){return null===e?null:void 0!==e?new t(e,r):void 0}toString(){return this.#e}toJSON(){return this.toString()}[s.default.inspect.custom](t,e,r){if(t<0)return"[SecureString]";const s=Object.assign({},e,{depth:null==e.depth?null:e.depth-1});return r(this.toJSON(),s)}},l=["AccessKey","SharedAccessKey","Password","AccountKey","Secret","SecretKey","ApiKey","Token","Key","MasterKey","PrimaryKey","SecondaryKey"],d=class t extends u{static{n(this,"SecureConnectionString")}#t;#r;get secretValue(){return this.#t}constructor(t,e,r){super(),this.#t=t,this.#r=this.parseConnectionString(t,e.map((t=>t.toLocaleLowerCase())),r)}parseConnectionString(t,e,r){return t.split(";").filter(Boolean).map((t=>{const[s,a]=t.split("="),n=a??"",o=e.includes(s.toLocaleLowerCase())?h.from(n,r):n;return[s,o]}))}static factory(e,r){return s=>t.from(s,r,e)}static from(e,r,s){return null===e?null:void 0!==e?new t(e,r??l,s):void 0}toString(){return this.#r.map((([t,e])=>`${t}=${e}`)).join(";")}toJSON(){return Object.fromEntries(this.#r)}[s.default.inspect.custom](t,e,r){if(t<0)return"[SecureConnectionString]";const s=Object.assign({},e,{depth:null==e.depth?null:e.depth-1});return r(this.toJSON(),s)}},p=class t extends u{static{n(this,"SecureURL")}#t;#s;get secretValue(){return this.#t}constructor(t,e){super(),this.#t=t,this.#s=h.from(t.password||null,e)}static factory(e){return r=>t.from(r,e)}static from(e,r){return null===e?null:void 0!==e?new t(e,r):void 0}toString(){const t=new URL(this.#t.href);return null!==this.#s&&(t.password=this.#s.toString()),t.href}toJSON(){const t=new URL(this.#t.href);t.password="";const e=new URLSearchParams(t.searchParams);let r;t.search="",null!==this.#s&&(r=this.#s.toString());const s={href:t.href};return void 0!==r&&(s.password=r),e.size>0&&(s.searchParams=Object.fromEntries(e)),s}[s.default.inspect.custom](t,e,r){if(t<0)return"[SecureURL]";const s=Object.assign({},e,{depth:null==e.depth?null:e.depth-1});return r(this.toJSON(),s)}},f=n((t=>({string:h.factory(t),connectionString:d.factory(t),url:p.factory(t)})),"createFactory");exports.SecureConnectionString=d,exports.SecureString=h,exports.SecureURL=p,exports.createFactory=f,exports.defaultSecureKeys=l;//# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"index.cjs"}
1
+ {"version":3,"sources":["../src/hash.ts","../src/types.ts","../src/SecureString.ts","../src/defaults.ts","../src/SecureConnectionString.ts","../src/SecureURL.ts","../src/createFactory.ts"],"names":["createHash","createHmac","hash","util","value"],"mappings":"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","file":"index.cjs","sourcesContent":["import { createHash, createHmac } from 'node:crypto';\n\ntype HashAlgorithm = {\n hash: (x: string) => string;\n prefix: string;\n};\n\nconst algorithms = {\n sha256: () => ({\n hash: (x: string) => createHash('sha256').update(x).digest('hex'),\n prefix: 'sha256',\n }),\n hs256: (secret: string) => ({\n hash: (x: string) => createHmac('sha256', secret).update(x).digest('hex'),\n prefix: 'hs256',\n }),\n} as const;\n\nconst getAlgorithm = (secret?: string): HashAlgorithm => {\n return secret === undefined ? algorithms.sha256() : algorithms.hs256(secret);\n};\n\nexport const hash = (input: string, secret?: string) => {\n const alg = getAlgorithm(secret);\n const hash = alg.hash(input);\n return `${alg.prefix}:${hash}`;\n};\n","import util, { type InspectOptions } from 'node:util';\nimport type { SecureConnectionString } from './SecureConnectionString';\nimport type { SecureString } from './SecureString';\nimport type { SecureURL } from './SecureURL';\n\nexport type InspectFunction = typeof util.inspect;\n\nexport abstract class BaseObject {\n public abstract toString(): string;\n public abstract toJSON(): string | object;\n public abstract [util.inspect.custom](depth: number, options: InspectOptions, inspect: InspectFunction): string;\n}\n\nexport type SecureFactory = {\n string: (value: string) => SecureString;\n connectionString: (value: string, secretKeys?: readonly string[]) => SecureConnectionString;\n url: (value: URL) => SecureURL;\n};\n\nexport type SecureKeys = readonly string[];\n","import util, { type InspectOptions } from 'node:util';\nimport { hash } from './hash';\nimport { BaseObject, type InspectFunction } from './types';\n\nexport class SecureString extends BaseObject {\n readonly #value: string;\n readonly #hash: string;\n\n public get secretValue(): string {\n return this.#value;\n }\n\n private constructor(value: string, secret?: string) {\n super();\n this.#value = value;\n this.#hash = hash(value, secret);\n }\n\n static factory(secret: string | undefined): (value: string) => SecureString {\n return (value: string) => SecureString.from(value, secret);\n }\n\n public static from<T extends string | null | undefined>(value: T, secret?: string): T extends string ? SecureString : T {\n if (value === null) {\n return null as T extends string ? SecureString : T;\n }\n if (value === undefined) {\n return undefined as T extends string ? SecureString : T;\n }\n return new SecureString(value, secret) as T extends string ? SecureString : T;\n }\n\n public override toString() {\n return this.#hash;\n }\n public override toJSON() {\n return this.toString();\n }\n override [util.inspect.custom](depth: number, options: InspectOptions, inspect: InspectFunction): string {\n if (depth < 0) {\n return '[SecureString]';\n }\n const newOptions = Object.assign({}, options, {\n depth: options.depth == null ? null : options.depth - 1,\n });\n return inspect(this.toJSON(), newOptions);\n }\n}\n","import type { SecureKeys } from './types';\n\nexport const defaultSecureKeys = ['AccessKey', 'SharedAccessKey', 'Password', 'AccountKey', 'Secret', 'SecretKey', 'ApiKey', 'Token', 'Key', 'MasterKey', 'PrimaryKey', 'SecondaryKey'] as const satisfies SecureKeys;\n","import util, { type InspectOptions } from 'node:util';\nimport { SecureString } from './SecureString';\nimport { defaultSecureKeys } from './defaults';\nimport { BaseObject, type InspectFunction, type SecureKeys } from './types';\n\nexport class SecureConnectionString extends BaseObject {\n readonly #value: string;\n readonly #data: [string, string | SecureString][];\n\n public get secretValue(): string {\n return this.#value;\n }\n\n private constructor(value: string, secretKeys: SecureKeys, secret: string | undefined) {\n super();\n this.#value = value;\n this.#data = this.parseConnectionString(\n value,\n secretKeys.map((x) => x.toLocaleLowerCase()),\n secret,\n );\n }\n\n private parseConnectionString(value: string, secretKeys: SecureKeys, secret: string | undefined): [string, string | SecureString][] {\n return value\n .split(';')\n .filter(Boolean)\n .map((pair) => {\n const [key, value] = pair.split('=');\n const v = value ?? '';\n const val = secretKeys.includes(key.toLocaleLowerCase()) ? SecureString.from(v, secret) : v;\n return [key, val];\n });\n }\n\n static factory(secret: string | undefined, secretKeys?: SecureKeys): (value: string) => SecureConnectionString {\n return (value: string) => SecureConnectionString.from(value, secretKeys, secret);\n }\n\n public static from<T extends string | null | undefined>(value: T, secretKeys?: SecureKeys, secret?: string): T extends string ? SecureConnectionString : T {\n if (value === null) {\n return null as T extends string ? SecureConnectionString : T;\n }\n if (value === undefined) {\n return undefined as T extends string ? SecureConnectionString : T;\n }\n return new SecureConnectionString(value, secretKeys ?? defaultSecureKeys, secret) as T extends string ? SecureConnectionString : T;\n }\n\n public override toString(): string {\n return this.#data.map(([key, value]) => `${key}=${value}`).join(';');\n }\n\n public override toJSON(): object {\n return Object.fromEntries(this.#data);\n }\n\n public override [util.inspect.custom](depth: number, options: InspectOptions, inspect: InspectFunction): string {\n if (depth < 0) {\n return '[SecureConnectionString]';\n }\n const newOptions = Object.assign({}, options, {\n depth: options.depth == null ? null : options.depth - 1,\n });\n return inspect(this.toJSON(), newOptions);\n }\n}\n","import util, { type InspectOptions } from 'node:util';\nimport { SecureString } from './SecureString';\nimport { BaseObject, type InspectFunction } from './types';\n\ntype UrlObject = {\n href: string;\n password?: string;\n searchParams?: Record<string, string>;\n};\n\n/**\n * SecureURL obfuscates the password from the URL.\n */\nexport class SecureURL extends BaseObject {\n readonly #value: URL;\n readonly #password: SecureString | null;\n\n public get secretValue(): URL {\n return this.#value;\n }\n\n private constructor(value: URL, secret: string | undefined) {\n super();\n this.#value = value;\n this.#password = SecureString.from(value.password || null, secret);\n }\n\n static factory(secret: string | undefined): (value: URL) => SecureURL {\n return (value: URL) => SecureURL.from(value, secret);\n }\n\n public static from<T extends URL | null | undefined>(value: T, secret?: string): T extends URL ? SecureURL : T {\n if (value === null) {\n return null as T extends URL ? SecureURL : T;\n }\n if (value === undefined) {\n return undefined as T extends URL ? SecureURL : T;\n }\n return new SecureURL(value, secret) as T extends URL ? SecureURL : T;\n }\n\n override toString(): string {\n const newUrl = new URL(this.#value.href);\n if (this.#password !== null) {\n newUrl.password = this.#password.toString();\n }\n return newUrl.href;\n }\n\n override toJSON(): UrlObject {\n const newUrl = new URL(this.#value.href);\n newUrl.password = '';\n\n const searchParams = new URLSearchParams(newUrl.searchParams);\n newUrl.search = '';\n\n let password: string | undefined;\n if (this.#password !== null) {\n password = this.#password.toString();\n }\n\n const result: UrlObject = {\n href: newUrl.href,\n };\n if (password !== undefined) {\n result.password = password;\n }\n if (searchParams.size > 0) {\n result.searchParams = Object.fromEntries(searchParams);\n }\n return result;\n }\n override [util.inspect.custom](depth: number, options: InspectOptions, inspect: InspectFunction): string {\n if (depth < 0) {\n return '[SecureURL]';\n }\n const newOptions = Object.assign({}, options, {\n depth: options.depth == null ? null : options.depth - 1,\n });\n return inspect(this.toJSON(), newOptions);\n }\n}\n","import { SecureConnectionString } from './SecureConnectionString';\nimport { SecureString } from './SecureString';\nimport { SecureURL } from './SecureURL';\nimport type { SecureFactory } from './types';\n\nexport const createFactory = (secret?: string): SecureFactory => {\n return {\n string: SecureString.factory(secret),\n connectionString: SecureConnectionString.factory(secret),\n url: SecureURL.factory(secret),\n };\n};\n"]}
package/dist/index.d.cts CHANGED
@@ -1,6 +1,62 @@
1
- export { SecureConnectionString } from './SecureConnectionString.cjs';
2
- export { SecureString } from './SecureString.cjs';
3
- export { SecureURL } from './SecureURL.cjs';
4
- export { defaultSecureKeys } from './defaults.cjs';
5
- import 'node:util';
6
- import './types.cjs';
1
+ import util, { InspectOptions } from 'node:util';
2
+
3
+ declare class SecureString extends BaseObject {
4
+ #private;
5
+ get secretValue(): string;
6
+ private constructor();
7
+ static factory(secret: string | undefined): (value: string) => SecureString;
8
+ static from<T extends string | null | undefined>(value: T, secret?: string): T extends string ? SecureString : T;
9
+ toString(): string;
10
+ toJSON(): string;
11
+ [util.inspect.custom](depth: number, options: InspectOptions, inspect: InspectFunction): string;
12
+ }
13
+
14
+ type UrlObject = {
15
+ href: string;
16
+ password?: string;
17
+ searchParams?: Record<string, string>;
18
+ };
19
+ /**
20
+ * SecureURL obfuscates the password from the URL.
21
+ */
22
+ declare class SecureURL extends BaseObject {
23
+ #private;
24
+ get secretValue(): URL;
25
+ private constructor();
26
+ static factory(secret: string | undefined): (value: URL) => SecureURL;
27
+ static from<T extends URL | null | undefined>(value: T, secret?: string): T extends URL ? SecureURL : T;
28
+ toString(): string;
29
+ toJSON(): UrlObject;
30
+ [util.inspect.custom](depth: number, options: InspectOptions, inspect: InspectFunction): string;
31
+ }
32
+
33
+ type InspectFunction = typeof util.inspect;
34
+ declare abstract class BaseObject {
35
+ abstract toString(): string;
36
+ abstract toJSON(): string | object;
37
+ abstract [util.inspect.custom](depth: number, options: InspectOptions, inspect: InspectFunction): string;
38
+ }
39
+ type SecureFactory = {
40
+ string: (value: string) => SecureString;
41
+ connectionString: (value: string, secretKeys?: readonly string[]) => SecureConnectionString;
42
+ url: (value: URL) => SecureURL;
43
+ };
44
+ type SecureKeys = readonly string[];
45
+
46
+ declare class SecureConnectionString extends BaseObject {
47
+ #private;
48
+ get secretValue(): string;
49
+ private constructor();
50
+ private parseConnectionString;
51
+ static factory(secret: string | undefined, secretKeys?: SecureKeys): (value: string) => SecureConnectionString;
52
+ static from<T extends string | null | undefined>(value: T, secretKeys?: SecureKeys, secret?: string): T extends string ? SecureConnectionString : T;
53
+ toString(): string;
54
+ toJSON(): object;
55
+ [util.inspect.custom](depth: number, options: InspectOptions, inspect: InspectFunction): string;
56
+ }
57
+
58
+ declare const createFactory: (secret?: string) => SecureFactory;
59
+
60
+ declare const defaultSecureKeys: readonly ["AccessKey", "SharedAccessKey", "Password", "AccountKey", "Secret", "SecretKey", "ApiKey", "Token", "Key", "MasterKey", "PrimaryKey", "SecondaryKey"];
61
+
62
+ export { SecureConnectionString, SecureString, SecureURL, createFactory, defaultSecureKeys };
package/dist/index.d.ts CHANGED
@@ -1,6 +1,62 @@
1
- export { SecureConnectionString } from './SecureConnectionString.js';
2
- export { SecureString } from './SecureString.js';
3
- export { SecureURL } from './SecureURL.js';
4
- export { defaultSecureKeys } from './defaults.js';
5
- import 'node:util';
6
- import './types.js';
1
+ import util, { InspectOptions } from 'node:util';
2
+
3
+ declare class SecureString extends BaseObject {
4
+ #private;
5
+ get secretValue(): string;
6
+ private constructor();
7
+ static factory(secret: string | undefined): (value: string) => SecureString;
8
+ static from<T extends string | null | undefined>(value: T, secret?: string): T extends string ? SecureString : T;
9
+ toString(): string;
10
+ toJSON(): string;
11
+ [util.inspect.custom](depth: number, options: InspectOptions, inspect: InspectFunction): string;
12
+ }
13
+
14
+ type UrlObject = {
15
+ href: string;
16
+ password?: string;
17
+ searchParams?: Record<string, string>;
18
+ };
19
+ /**
20
+ * SecureURL obfuscates the password from the URL.
21
+ */
22
+ declare class SecureURL extends BaseObject {
23
+ #private;
24
+ get secretValue(): URL;
25
+ private constructor();
26
+ static factory(secret: string | undefined): (value: URL) => SecureURL;
27
+ static from<T extends URL | null | undefined>(value: T, secret?: string): T extends URL ? SecureURL : T;
28
+ toString(): string;
29
+ toJSON(): UrlObject;
30
+ [util.inspect.custom](depth: number, options: InspectOptions, inspect: InspectFunction): string;
31
+ }
32
+
33
+ type InspectFunction = typeof util.inspect;
34
+ declare abstract class BaseObject {
35
+ abstract toString(): string;
36
+ abstract toJSON(): string | object;
37
+ abstract [util.inspect.custom](depth: number, options: InspectOptions, inspect: InspectFunction): string;
38
+ }
39
+ type SecureFactory = {
40
+ string: (value: string) => SecureString;
41
+ connectionString: (value: string, secretKeys?: readonly string[]) => SecureConnectionString;
42
+ url: (value: URL) => SecureURL;
43
+ };
44
+ type SecureKeys = readonly string[];
45
+
46
+ declare class SecureConnectionString extends BaseObject {
47
+ #private;
48
+ get secretValue(): string;
49
+ private constructor();
50
+ private parseConnectionString;
51
+ static factory(secret: string | undefined, secretKeys?: SecureKeys): (value: string) => SecureConnectionString;
52
+ static from<T extends string | null | undefined>(value: T, secretKeys?: SecureKeys, secret?: string): T extends string ? SecureConnectionString : T;
53
+ toString(): string;
54
+ toJSON(): object;
55
+ [util.inspect.custom](depth: number, options: InspectOptions, inspect: InspectFunction): string;
56
+ }
57
+
58
+ declare const createFactory: (secret?: string) => SecureFactory;
59
+
60
+ declare const defaultSecureKeys: readonly ["AccessKey", "SharedAccessKey", "Password", "AccountKey", "Secret", "SecretKey", "ApiKey", "Token", "Key", "MasterKey", "PrimaryKey", "SecondaryKey"];
61
+
62
+ export { SecureConnectionString, SecureString, SecureURL, createFactory, defaultSecureKeys };
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- export{SecureConnectionString}from"./chunk-HK6ZXU7J.js";export{SecureString}from"./chunk-EQYTBWBL.js";export{SecureURL}from"./chunk-SAA2XVPV.js";export{defaultSecureKeys}from"./chunk-XHBKWGZG.js";import"./chunk-WO3QMJL2.js";import"./chunk-RBCLW5Z3.js";import"./chunk-7QVYU63E.js";//# sourceMappingURL=index.js.map
1
+ import t from"node:util";import{createHash as e,createHmac as r}from"node:crypto";var s=Object.defineProperty,n=(t,e)=>s(t,"name",{value:e,configurable:!0}),a={sha256:n((()=>({hash:n((t=>e("sha256").update(t).digest("hex")),"hash"),prefix:"sha256"})),"sha256"),hs256:n((t=>({hash:n((e=>r("sha256",t).update(e).digest("hex")),"hash"),prefix:"hs256"})),"hs256")},o=n((t=>void 0===t?a.sha256():a.hs256(t)),"getAlgorithm"),i=n(((t,e)=>{const r=o(e),s=r.hash(t);return`${r.prefix}:${s}`}),"hash"),c=class{static{n(this,"BaseObject")}},h=class e extends c{static{n(this,"SecureString")}#t;#e;get secretValue(){return this.#t}constructor(t,e){super(),this.#t=t,this.#e=i(t,e)}static factory(t){return r=>e.from(r,t)}static from(t,r){return null===t?null:void 0!==t?new e(t,r):void 0}toString(){return this.#e}toJSON(){return this.toString()}[t.inspect.custom](t,e,r){if(t<0)return"[SecureString]";const s=Object.assign({},e,{depth:null==e.depth?null:e.depth-1});return r(this.toJSON(),s)}},u=["AccessKey","SharedAccessKey","Password","AccountKey","Secret","SecretKey","ApiKey","Token","Key","MasterKey","PrimaryKey","SecondaryKey"],l=class e extends c{static{n(this,"SecureConnectionString")}#t;#r;get secretValue(){return this.#t}constructor(t,e,r){super(),this.#t=t,this.#r=this.parseConnectionString(t,e.map((t=>t.toLocaleLowerCase())),r)}parseConnectionString(t,e,r){return t.split(";").filter(Boolean).map((t=>{const[s,n]=t.split("="),a=n??"",o=e.includes(s.toLocaleLowerCase())?h.from(a,r):a;return[s,o]}))}static factory(t,r){return s=>e.from(s,r,t)}static from(t,r,s){return null===t?null:void 0!==t?new e(t,r??u,s):void 0}toString(){return this.#r.map((([t,e])=>`${t}=${e}`)).join(";")}toJSON(){return Object.fromEntries(this.#r)}[t.inspect.custom](t,e,r){if(t<0)return"[SecureConnectionString]";const s=Object.assign({},e,{depth:null==e.depth?null:e.depth-1});return r(this.toJSON(),s)}},d=class e extends c{static{n(this,"SecureURL")}#t;#s;get secretValue(){return this.#t}constructor(t,e){super(),this.#t=t,this.#s=h.from(t.password||null,e)}static factory(t){return r=>e.from(r,t)}static from(t,r){return null===t?null:void 0!==t?new e(t,r):void 0}toString(){const t=new URL(this.#t.href);return null!==this.#s&&(t.password=this.#s.toString()),t.href}toJSON(){const t=new URL(this.#t.href);t.password="";const e=new URLSearchParams(t.searchParams);let r;t.search="",null!==this.#s&&(r=this.#s.toString());const s={href:t.href};return void 0!==r&&(s.password=r),e.size>0&&(s.searchParams=Object.fromEntries(e)),s}[t.inspect.custom](t,e,r){if(t<0)return"[SecureURL]";const s=Object.assign({},e,{depth:null==e.depth?null:e.depth-1});return r(this.toJSON(),s)}},p=n((t=>({string:h.factory(t),connectionString:l.factory(t),url:d.factory(t)})),"createFactory");export{l as SecureConnectionString,h as SecureString,d as SecureURL,p as createFactory,u as defaultSecureKeys};//# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
1
+ {"version":3,"sources":["../src/hash.ts","../src/types.ts","../src/SecureString.ts","../src/defaults.ts","../src/SecureConnectionString.ts","../src/SecureURL.ts","../src/createFactory.ts"],"names":["hash","value","util"],"mappings":"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","file":"index.js","sourcesContent":["import { createHash, createHmac } from 'node:crypto';\n\ntype HashAlgorithm = {\n hash: (x: string) => string;\n prefix: string;\n};\n\nconst algorithms = {\n sha256: () => ({\n hash: (x: string) => createHash('sha256').update(x).digest('hex'),\n prefix: 'sha256',\n }),\n hs256: (secret: string) => ({\n hash: (x: string) => createHmac('sha256', secret).update(x).digest('hex'),\n prefix: 'hs256',\n }),\n} as const;\n\nconst getAlgorithm = (secret?: string): HashAlgorithm => {\n return secret === undefined ? algorithms.sha256() : algorithms.hs256(secret);\n};\n\nexport const hash = (input: string, secret?: string) => {\n const alg = getAlgorithm(secret);\n const hash = alg.hash(input);\n return `${alg.prefix}:${hash}`;\n};\n","import util, { type InspectOptions } from 'node:util';\nimport type { SecureConnectionString } from './SecureConnectionString';\nimport type { SecureString } from './SecureString';\nimport type { SecureURL } from './SecureURL';\n\nexport type InspectFunction = typeof util.inspect;\n\nexport abstract class BaseObject {\n public abstract toString(): string;\n public abstract toJSON(): string | object;\n public abstract [util.inspect.custom](depth: number, options: InspectOptions, inspect: InspectFunction): string;\n}\n\nexport type SecureFactory = {\n string: (value: string) => SecureString;\n connectionString: (value: string, secretKeys?: readonly string[]) => SecureConnectionString;\n url: (value: URL) => SecureURL;\n};\n\nexport type SecureKeys = readonly string[];\n","import util, { type InspectOptions } from 'node:util';\nimport { hash } from './hash';\nimport { BaseObject, type InspectFunction } from './types';\n\nexport class SecureString extends BaseObject {\n readonly #value: string;\n readonly #hash: string;\n\n public get secretValue(): string {\n return this.#value;\n }\n\n private constructor(value: string, secret?: string) {\n super();\n this.#value = value;\n this.#hash = hash(value, secret);\n }\n\n static factory(secret: string | undefined): (value: string) => SecureString {\n return (value: string) => SecureString.from(value, secret);\n }\n\n public static from<T extends string | null | undefined>(value: T, secret?: string): T extends string ? SecureString : T {\n if (value === null) {\n return null as T extends string ? SecureString : T;\n }\n if (value === undefined) {\n return undefined as T extends string ? SecureString : T;\n }\n return new SecureString(value, secret) as T extends string ? SecureString : T;\n }\n\n public override toString() {\n return this.#hash;\n }\n public override toJSON() {\n return this.toString();\n }\n override [util.inspect.custom](depth: number, options: InspectOptions, inspect: InspectFunction): string {\n if (depth < 0) {\n return '[SecureString]';\n }\n const newOptions = Object.assign({}, options, {\n depth: options.depth == null ? null : options.depth - 1,\n });\n return inspect(this.toJSON(), newOptions);\n }\n}\n","import type { SecureKeys } from './types';\n\nexport const defaultSecureKeys = ['AccessKey', 'SharedAccessKey', 'Password', 'AccountKey', 'Secret', 'SecretKey', 'ApiKey', 'Token', 'Key', 'MasterKey', 'PrimaryKey', 'SecondaryKey'] as const satisfies SecureKeys;\n","import util, { type InspectOptions } from 'node:util';\nimport { SecureString } from './SecureString';\nimport { defaultSecureKeys } from './defaults';\nimport { BaseObject, type InspectFunction, type SecureKeys } from './types';\n\nexport class SecureConnectionString extends BaseObject {\n readonly #value: string;\n readonly #data: [string, string | SecureString][];\n\n public get secretValue(): string {\n return this.#value;\n }\n\n private constructor(value: string, secretKeys: SecureKeys, secret: string | undefined) {\n super();\n this.#value = value;\n this.#data = this.parseConnectionString(\n value,\n secretKeys.map((x) => x.toLocaleLowerCase()),\n secret,\n );\n }\n\n private parseConnectionString(value: string, secretKeys: SecureKeys, secret: string | undefined): [string, string | SecureString][] {\n return value\n .split(';')\n .filter(Boolean)\n .map((pair) => {\n const [key, value] = pair.split('=');\n const v = value ?? '';\n const val = secretKeys.includes(key.toLocaleLowerCase()) ? SecureString.from(v, secret) : v;\n return [key, val];\n });\n }\n\n static factory(secret: string | undefined, secretKeys?: SecureKeys): (value: string) => SecureConnectionString {\n return (value: string) => SecureConnectionString.from(value, secretKeys, secret);\n }\n\n public static from<T extends string | null | undefined>(value: T, secretKeys?: SecureKeys, secret?: string): T extends string ? SecureConnectionString : T {\n if (value === null) {\n return null as T extends string ? SecureConnectionString : T;\n }\n if (value === undefined) {\n return undefined as T extends string ? SecureConnectionString : T;\n }\n return new SecureConnectionString(value, secretKeys ?? defaultSecureKeys, secret) as T extends string ? SecureConnectionString : T;\n }\n\n public override toString(): string {\n return this.#data.map(([key, value]) => `${key}=${value}`).join(';');\n }\n\n public override toJSON(): object {\n return Object.fromEntries(this.#data);\n }\n\n public override [util.inspect.custom](depth: number, options: InspectOptions, inspect: InspectFunction): string {\n if (depth < 0) {\n return '[SecureConnectionString]';\n }\n const newOptions = Object.assign({}, options, {\n depth: options.depth == null ? null : options.depth - 1,\n });\n return inspect(this.toJSON(), newOptions);\n }\n}\n","import util, { type InspectOptions } from 'node:util';\nimport { SecureString } from './SecureString';\nimport { BaseObject, type InspectFunction } from './types';\n\ntype UrlObject = {\n href: string;\n password?: string;\n searchParams?: Record<string, string>;\n};\n\n/**\n * SecureURL obfuscates the password from the URL.\n */\nexport class SecureURL extends BaseObject {\n readonly #value: URL;\n readonly #password: SecureString | null;\n\n public get secretValue(): URL {\n return this.#value;\n }\n\n private constructor(value: URL, secret: string | undefined) {\n super();\n this.#value = value;\n this.#password = SecureString.from(value.password || null, secret);\n }\n\n static factory(secret: string | undefined): (value: URL) => SecureURL {\n return (value: URL) => SecureURL.from(value, secret);\n }\n\n public static from<T extends URL | null | undefined>(value: T, secret?: string): T extends URL ? SecureURL : T {\n if (value === null) {\n return null as T extends URL ? SecureURL : T;\n }\n if (value === undefined) {\n return undefined as T extends URL ? SecureURL : T;\n }\n return new SecureURL(value, secret) as T extends URL ? SecureURL : T;\n }\n\n override toString(): string {\n const newUrl = new URL(this.#value.href);\n if (this.#password !== null) {\n newUrl.password = this.#password.toString();\n }\n return newUrl.href;\n }\n\n override toJSON(): UrlObject {\n const newUrl = new URL(this.#value.href);\n newUrl.password = '';\n\n const searchParams = new URLSearchParams(newUrl.searchParams);\n newUrl.search = '';\n\n let password: string | undefined;\n if (this.#password !== null) {\n password = this.#password.toString();\n }\n\n const result: UrlObject = {\n href: newUrl.href,\n };\n if (password !== undefined) {\n result.password = password;\n }\n if (searchParams.size > 0) {\n result.searchParams = Object.fromEntries(searchParams);\n }\n return result;\n }\n override [util.inspect.custom](depth: number, options: InspectOptions, inspect: InspectFunction): string {\n if (depth < 0) {\n return '[SecureURL]';\n }\n const newOptions = Object.assign({}, options, {\n depth: options.depth == null ? null : options.depth - 1,\n });\n return inspect(this.toJSON(), newOptions);\n }\n}\n","import { SecureConnectionString } from './SecureConnectionString';\nimport { SecureString } from './SecureString';\nimport { SecureURL } from './SecureURL';\nimport type { SecureFactory } from './types';\n\nexport const createFactory = (secret?: string): SecureFactory => {\n return {\n string: SecureString.factory(secret),\n connectionString: SecureConnectionString.factory(secret),\n url: SecureURL.factory(secret),\n };\n};\n"]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@shellicar/core-config",
3
3
  "type": "module",
4
- "version": "0.1.0",
4
+ "version": "1.0.1",
5
5
  "description": "A library for securely handling sensitive configuration values like connection strings, URLs, and secrets.",
6
6
  "license": "MIT",
7
7
  "homepage": "https://github.com/shellicar/core-config#readme",
@@ -54,8 +54,8 @@
54
54
  "vitest": "^2.1.8"
55
55
  },
56
56
  "scripts": {
57
- "build": "tsup",
58
- "dev": "tsup --watch src",
57
+ "build": "tsup-node",
58
+ "dev": "tsup-node --watch",
59
59
  "test": "vitest run",
60
60
  "type-check": "tsc -p tsconfig.check.json"
61
61
  }
package/CHANGELOG.md DELETED
@@ -1,7 +0,0 @@
1
- # Changelog
2
-
3
- ## [0.1.0] - 2026-01-07
4
-
5
- Initial release.
6
-
7
- [0.1.0]: https://github.com/shellicar/core-config/releases/tag/0.1.0
@@ -1 +0,0 @@
1
- "use strict";var e=require("./chunk-3GMWIOOZ.cjs");require("./chunk-MA2X5MES.cjs"),require("./chunk-5UKICLVE.cjs"),require("./chunk-W5TZC6JS.cjs"),require("./chunk-Z4KAMDJN.cjs"),require("./chunk-PK6SKIKE.cjs"),Object.defineProperty(exports,"SecureConnectionString",{enumerable:!0,get:function(){return e.SecureConnectionString}});//# sourceMappingURL=SecureConnectionString.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"SecureConnectionString.cjs"}
@@ -1,16 +0,0 @@
1
- import util, { InspectOptions } from 'node:util';
2
- import { BaseObject, InspectFunction } from './types.cjs';
3
-
4
- declare class SecureConnectionString extends BaseObject {
5
- #private;
6
- get secretValue(): string;
7
- private constructor();
8
- private parseConnectionString;
9
- static from(value: null | undefined, ...secretKeys: string[]): null;
10
- static from(value: string, ...secretKeys: string[]): SecureConnectionString;
11
- toString(): string;
12
- toJSON(): object;
13
- [util.inspect.custom](depth: number, options: InspectOptions, inspect: InspectFunction): string;
14
- }
15
-
16
- export { SecureConnectionString };
@@ -1,16 +0,0 @@
1
- import util, { InspectOptions } from 'node:util';
2
- import { BaseObject, InspectFunction } from './types.js';
3
-
4
- declare class SecureConnectionString extends BaseObject {
5
- #private;
6
- get secretValue(): string;
7
- private constructor();
8
- private parseConnectionString;
9
- static from(value: null | undefined, ...secretKeys: string[]): null;
10
- static from(value: string, ...secretKeys: string[]): SecureConnectionString;
11
- toString(): string;
12
- toJSON(): object;
13
- [util.inspect.custom](depth: number, options: InspectOptions, inspect: InspectFunction): string;
14
- }
15
-
16
- export { SecureConnectionString };
@@ -1 +0,0 @@
1
- export{SecureConnectionString}from"./chunk-HK6ZXU7J.js";import"./chunk-EQYTBWBL.js";import"./chunk-XHBKWGZG.js";import"./chunk-WO3QMJL2.js";import"./chunk-RBCLW5Z3.js";import"./chunk-7QVYU63E.js";//# sourceMappingURL=SecureConnectionString.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"SecureConnectionString.js"}
@@ -1 +0,0 @@
1
- "use strict";var e=require("./chunk-MA2X5MES.cjs");require("./chunk-W5TZC6JS.cjs"),require("./chunk-Z4KAMDJN.cjs"),require("./chunk-PK6SKIKE.cjs"),Object.defineProperty(exports,"SecureString",{enumerable:!0,get:function(){return e.SecureString}});//# sourceMappingURL=SecureString.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"SecureString.cjs"}
@@ -1,15 +0,0 @@
1
- import { inspect } from 'node:util';
2
- import { BaseObject } from './types.cjs';
3
-
4
- declare class SecureString extends BaseObject {
5
- #private;
6
- get secretValue(): string;
7
- private constructor();
8
- toString(): string;
9
- toJSON(): string;
10
- [inspect.custom](): string;
11
- static from(value: string): SecureString;
12
- static from(value: null | undefined): null;
13
- }
14
-
15
- export { SecureString };
@@ -1,15 +0,0 @@
1
- import { inspect } from 'node:util';
2
- import { BaseObject } from './types.js';
3
-
4
- declare class SecureString extends BaseObject {
5
- #private;
6
- get secretValue(): string;
7
- private constructor();
8
- toString(): string;
9
- toJSON(): string;
10
- [inspect.custom](): string;
11
- static from(value: string): SecureString;
12
- static from(value: null | undefined): null;
13
- }
14
-
15
- export { SecureString };
@@ -1 +0,0 @@
1
- export{SecureString}from"./chunk-EQYTBWBL.js";import"./chunk-WO3QMJL2.js";import"./chunk-RBCLW5Z3.js";import"./chunk-7QVYU63E.js";//# sourceMappingURL=SecureString.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"SecureString.js"}
@@ -1 +0,0 @@
1
- "use strict";var e=require("./chunk-M2AZ3CIA.cjs");require("./chunk-W5TZC6JS.cjs"),require("./chunk-Z4KAMDJN.cjs"),require("./chunk-PK6SKIKE.cjs"),Object.defineProperty(exports,"SecureURL",{enumerable:!0,get:function(){return e.SecureURL}});//# sourceMappingURL=SecureURL.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"SecureURL.cjs"}
@@ -1,18 +0,0 @@
1
- import util, { InspectOptions } from 'node:util';
2
- import { BaseObject, InspectFunction } from './types.cjs';
3
-
4
- /**
5
- * SecureURL obfuscates the password from the URL.
6
- */
7
- declare class SecureURL extends BaseObject {
8
- #private;
9
- get secretValue(): URL;
10
- private constructor();
11
- static from(value: undefined | null): null;
12
- static from(value: URL): SecureURL;
13
- toString(): string;
14
- toJSON(): object;
15
- [util.inspect.custom](depth: number, options: InspectOptions, inspect: InspectFunction): string;
16
- }
17
-
18
- export { SecureURL };
@@ -1,18 +0,0 @@
1
- import util, { InspectOptions } from 'node:util';
2
- import { BaseObject, InspectFunction } from './types.js';
3
-
4
- /**
5
- * SecureURL obfuscates the password from the URL.
6
- */
7
- declare class SecureURL extends BaseObject {
8
- #private;
9
- get secretValue(): URL;
10
- private constructor();
11
- static from(value: undefined | null): null;
12
- static from(value: URL): SecureURL;
13
- toString(): string;
14
- toJSON(): object;
15
- [util.inspect.custom](depth: number, options: InspectOptions, inspect: InspectFunction): string;
16
- }
17
-
18
- export { SecureURL };
package/dist/SecureURL.js DELETED
@@ -1 +0,0 @@
1
- export{SecureURL}from"./chunk-SAA2XVPV.js";import"./chunk-WO3QMJL2.js";import"./chunk-RBCLW5Z3.js";import"./chunk-7QVYU63E.js";//# sourceMappingURL=SecureURL.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"SecureURL.js"}
@@ -1 +0,0 @@
1
- "use strict";var e=require("./chunk-MA2X5MES.cjs"),t=require("./chunk-5UKICLVE.cjs"),r=require("./chunk-Z4KAMDJN.cjs"),n=require("./chunk-PK6SKIKE.cjs");function u(e){return e&&e.__esModule?e:{default:e}}var s=u(require("util")),i=class u extends r.BaseObject{static{n.__name(this,"SecureConnectionString")}#e;#t;get secretValue(){return this.#e}constructor(e,...r){super(),this.#e=e;const n=0===r.length?t.defaultSecureKeys:r;this.#t=this.parseConnectionString(e,...n.map((e=>e.toLocaleLowerCase())))}parseConnectionString(t,...r){return t.split(";").filter(Boolean).map((t=>{const[n,u]=t.split("="),s=u??"",i=r.includes(n.toLocaleLowerCase())?e.SecureString.from(s):s;return[n,i]}))}static from(e,...t){return null==e?null:new u(e,...t)}toString(){return this.#t.map((([e,t])=>`${e}=${t}`)).join(";")}toJSON(){return Object.fromEntries(this.#t)}[s.default.inspect.custom](e,t,r){if(e<0)return"[SecureConnectionString]";const n=Object.assign({},t,{depth:null==t.depth?null:t.depth-1});return r(this.toJSON(),n)}};exports.SecureConnectionString=i;//# sourceMappingURL=chunk-3GMWIOOZ.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/SecureConnectionString.ts"],"names":["BaseObject","__name","defaultSecureKeys","value","SecureString","util"],"mappings":"oWAKa,IAAA,sBAAA,GAAN,MAAM,uBAAA,SAA+BA,4BAAW,CAAA;AAAA,EALvD;AAKuD,IAAAC,wBAAA,CAAA,IAAA,EAAA,wBAAA,CAAA;AAAA;AAAA,EAC5C,MAAA;AAAA,EACA,KAAA;AAAA,EAET,IAAW,WAAsB,GAAA;AAC/B,IAAA,OAAO,IAAK,CAAA,MAAA;AAAA;AACd,EAEQ,WAAA,CAAY,UAAkB,UAAsB,EAAA;AAC1D,IAAM,KAAA,EAAA;AACN,IAAA,IAAA,CAAK,MAAS,GAAA,KAAA;AACd,IAAA,MAAM,IAAO,GAAA,UAAA,CAAW,MAAW,KAAA,CAAA,GAAIC,mCAAoB,GAAA,UAAA;AAC3D,IAAA,IAAA,CAAK,KAAQ,GAAA,IAAA,CAAK,qBAAsB,CAAA,KAAA,EAAO,GAAG,IAAA,CAAK,GAAI,CAAA,CAAC,CAAM,KAAA,CAAA,CAAE,iBAAkB,EAAC,CAAC,CAAA;AAAA;AAC1F,EAEQ,qBAAA,CAAsB,UAAkB,UAAyD,EAAA;AACvG,IAAO,OAAA,KAAA,CACJ,MAAM,GAAG,CAAA,CACT,OAAO,OAAO,CAAA,CACd,GAAI,CAAA,CAAC,IAAS,KAAA;AACb,MAAA,MAAM,CAAC,GAAKC,EAAAA,MAAK,CAAI,GAAA,IAAA,CAAK,MAAM,GAAG,CAAA;AACnC,MAAA,MAAM,IAAIA,MAAS,IAAA,EAAA;AACnB,MAAM,MAAA,GAAA,GAAM,UAAW,CAAA,QAAA,CAAS,GAAI,CAAA,iBAAA,EAAmB,CAAI,GAAAC,8BAAA,CAAa,IAAK,CAAA,CAAC,CAAI,GAAA,CAAA;AAClF,MAAO,OAAA,CAAC,KAAK,GAAG,CAAA;AAAA,KACjB,CAAA;AAAA;AACL,EAIA,OAAc,IAAK,CAAA,KAAA,EAAA,GAAqC,UAAsB,EAAA;AAC5E,IAAA,IAAI,SAAS,IAAM,EAAA;AACjB,MAAO,OAAA,IAAA;AAAA;AAET,IAAA,OAAO,IAAI,uBAAA,CAAuB,KAAO,EAAA,GAAG,UAAU,CAAA;AAAA;AACxD,EAEgB,QAAmB,GAAA;AACjC,IAAA,OAAO,IAAK,CAAA,KAAA,CAAM,GAAI,CAAA,CAAC,CAAC,GAAK,EAAA,KAAK,CAAM,KAAA,CAAA,EAAG,GAAG,CAAI,CAAA,EAAA,KAAK,CAAE,CAAA,CAAA,CAAE,KAAK,GAAG,CAAA;AAAA;AACrE,EAEgB,MAAiB,GAAA;AAC/B,IAAO,OAAA,MAAA,CAAO,WAAY,CAAA,IAAA,CAAK,KAAK,CAAA;AAAA;AACtC,EAEA,CAAiBC,qBAAK,CAAA,OAAA,CAAQ,MAAM,CAAE,CAAA,KAAA,EAAe,SAAyB,OAAkC,EAAA;AAC9G,IAAA,IAAI,QAAQ,CAAG,EAAA;AACb,MAAO,OAAA,0BAAA;AAAA;AAET,IAAA,MAAM,UAAa,GAAA,MAAA,CAAO,MAAO,CAAA,IAAI,OAAS,EAAA;AAAA,MAC5C,OAAO,OAAQ,CAAA,KAAA,IAAS,IAAO,GAAA,IAAA,GAAO,QAAQ,KAAQ,GAAA;AAAA,KACvD,CAAA;AACD,IAAA,OAAO,OAAQ,CAAA,IAAA,CAAK,MAAO,EAAA,EAAG,UAAU,CAAA;AAAA;AAE5C","file":"chunk-3GMWIOOZ.cjs","sourcesContent":["import util, { type InspectOptions } from 'node:util';\nimport { SecureString } from './SecureString';\nimport { defaultSecureKeys } from './defaults';\nimport { BaseObject, type InspectFunction } from './types';\n\nexport class SecureConnectionString extends BaseObject {\n readonly #value: string;\n readonly #data: [string, string | SecureString][];\n\n public get secretValue(): string {\n return this.#value;\n }\n\n private constructor(value: string, ...secretKeys: string[]) {\n super();\n this.#value = value;\n const keys = secretKeys.length === 0 ? defaultSecureKeys : secretKeys;\n this.#data = this.parseConnectionString(value, ...keys.map((x) => x.toLocaleLowerCase()));\n }\n\n private parseConnectionString(value: string, ...secretKeys: string[]): [string, string | SecureString][] {\n return value\n .split(';')\n .filter(Boolean)\n .map((pair) => {\n const [key, value] = pair.split('=');\n const v = value ?? '';\n const val = secretKeys.includes(key.toLocaleLowerCase()) ? SecureString.from(v) : v;\n return [key, val];\n });\n }\n\n public static from(value: null | undefined, ...secretKeys: string[]): null;\n public static from(value: string, ...secretKeys: string[]): SecureConnectionString;\n public static from(value: string | null | undefined, ...secretKeys: string[]) {\n if (value == null) {\n return null;\n }\n return new SecureConnectionString(value, ...secretKeys);\n }\n\n public override toString(): string {\n return this.#data.map(([key, value]) => `${key}=${value}`).join(';');\n }\n\n public override toJSON(): object {\n return Object.fromEntries(this.#data);\n }\n\n public override [util.inspect.custom](depth: number, options: InspectOptions, inspect: InspectFunction): string {\n if (depth < 0) {\n return '[SecureConnectionString]';\n }\n const newOptions = Object.assign({}, options, {\n depth: options.depth == null ? null : options.depth - 1,\n });\n return inspect(this.toJSON(), newOptions);\n }\n}\n"]}
@@ -1 +0,0 @@
1
- "use strict";exports.defaultSecureKeys=["AccessKey","SharedAccessKey","Password","AccountKey","Secret","SecretKey","ApiKey","Token","Key","MasterKey","PrimaryKey","SecondaryKey"];//# sourceMappingURL=chunk-5UKICLVE.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/defaults.ts"],"names":[],"mappings":";AAAO,IAAM,iBAAoB,GAAA,CAAC,WAAa,EAAA,iBAAA,EAAmB,UAAY,EAAA,YAAA,EAAc,QAAU,EAAA,WAAA,EAAa,QAAU,EAAA,OAAA,EAAS,KAAO,EAAA,WAAA,EAAa,cAAc,cAAc","file":"chunk-5UKICLVE.cjs","sourcesContent":["export const defaultSecureKeys = ['AccessKey', 'SharedAccessKey', 'Password', 'AccountKey', 'Secret', 'SecretKey', 'ApiKey', 'Token', 'Key', 'MasterKey', 'PrimaryKey', 'SecondaryKey'] as const;\n"]}
@@ -1 +0,0 @@
1
- var e=Object.defineProperty,r=(r,a)=>e(r,"name",{value:a,configurable:!0});export{r as __name};//# sourceMappingURL=chunk-7QVYU63E.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-7QVYU63E.js"}
@@ -1 +0,0 @@
1
- import{sha256 as t}from"./chunk-WO3QMJL2.js";import{BaseObject as r}from"./chunk-RBCLW5Z3.js";import{__name as e}from"./chunk-7QVYU63E.js";import{inspect as u}from"node:util";var n=class n extends r{static{e(this,"SecureString")}#t;get secretValue(){return this.#t}constructor(t){super(),this.#t=t}toString(){return t(this.#t)}toJSON(){return this.toString()}[u.custom](){return u(this.toString())}static from(t){return null==t?null:new n(t)}};export{n as SecureString};//# sourceMappingURL=chunk-EQYTBWBL.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/SecureString.ts"],"names":[],"mappings":"+JAIa,IAAA,YAAA,GAAN,MAAM,aAAA,SAAqB,UAAW,CAAA;AAAA,EAJ7C;AAI6C,IAAA,MAAA,CAAA,IAAA,EAAA,cAAA,CAAA;AAAA;AAAA,EAClC,MAAA;AAAA,EAET,IAAW,WAAsB,GAAA;AAC/B,IAAA,OAAO,IAAK,CAAA,MAAA;AAAA;AACd,EAEQ,YAAY,KAAe,EAAA;AACjC,IAAM,KAAA,EAAA;AACN,IAAA,IAAA,CAAK,MAAS,GAAA,KAAA;AAAA;AAChB,EACgB,QAAW,GAAA;AACzB,IAAO,OAAA,MAAA,CAAO,KAAK,MAAM,CAAA;AAAA;AAC3B,EACgB,MAAS,GAAA;AACvB,IAAA,OAAO,KAAK,QAAS,EAAA;AAAA;AACvB,EACA,CAAiB,OAAQ,CAAA,MAAM,CAAI,GAAA;AACjC,IAAO,OAAA,OAAA,CAAQ,IAAK,CAAA,QAAA,EAAU,CAAA;AAAA;AAChC,EAIA,OAAc,KAAK,KAAuD,EAAA;AACxE,IAAA,IAAI,SAAS,IAAM,EAAA;AACjB,MAAO,OAAA,IAAA;AAAA;AAET,IAAO,OAAA,IAAI,cAAa,KAAK,CAAA;AAAA;AAEjC","file":"chunk-EQYTBWBL.js","sourcesContent":["import { inspect } from 'node:util';\nimport { sha256 } from './sha256';\nimport { BaseObject } from './types';\n\nexport class SecureString extends BaseObject {\n readonly #value: string;\n\n public get secretValue(): string {\n return this.#value;\n }\n\n private constructor(value: string) {\n super();\n this.#value = value;\n }\n public override toString() {\n return sha256(this.#value);\n }\n public override toJSON() {\n return this.toString();\n }\n public override [inspect.custom]() {\n return inspect(this.toString());\n }\n\n public static from(value: string): SecureString;\n public static from(value: null | undefined): null;\n public static from(value: string | null | undefined): SecureString | null {\n if (value == null) {\n return null;\n }\n return new SecureString(value);\n }\n}\n"]}
@@ -1 +0,0 @@
1
- import{SecureString as t}from"./chunk-EQYTBWBL.js";import{defaultSecureKeys as e}from"./chunk-XHBKWGZG.js";import{BaseObject as r}from"./chunk-RBCLW5Z3.js";import{__name as n}from"./chunk-7QVYU63E.js";import o from"node:util";var s=class s extends r{static{n(this,"SecureConnectionString")}#t;#e;get secretValue(){return this.#t}constructor(t,...r){super(),this.#t=t;const n=0===r.length?e:r;this.#e=this.parseConnectionString(t,...n.map((t=>t.toLocaleLowerCase())))}parseConnectionString(e,...r){return e.split(";").filter(Boolean).map((e=>{const[n,o]=e.split("="),s=o??"",i=r.includes(n.toLocaleLowerCase())?t.from(s):s;return[n,i]}))}static from(t,...e){return null==t?null:new s(t,...e)}toString(){return this.#e.map((([t,e])=>`${t}=${e}`)).join(";")}toJSON(){return Object.fromEntries(this.#e)}[o.inspect.custom](t,e,r){if(t<0)return"[SecureConnectionString]";const n=Object.assign({},e,{depth:null==e.depth?null:e.depth-1});return r(this.toJSON(),n)}};export{s as SecureConnectionString};//# sourceMappingURL=chunk-HK6ZXU7J.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/SecureConnectionString.ts"],"names":["value"],"mappings":"qNAKa,IAAA,sBAAA,GAAN,MAAM,uBAAA,SAA+B,UAAW,CAAA;AAAA,EALvD;AAKuD,IAAA,MAAA,CAAA,IAAA,EAAA,wBAAA,CAAA;AAAA;AAAA,EAC5C,MAAA;AAAA,EACA,KAAA;AAAA,EAET,IAAW,WAAsB,GAAA;AAC/B,IAAA,OAAO,IAAK,CAAA,MAAA;AAAA;AACd,EAEQ,WAAA,CAAY,UAAkB,UAAsB,EAAA;AAC1D,IAAM,KAAA,EAAA;AACN,IAAA,IAAA,CAAK,MAAS,GAAA,KAAA;AACd,IAAA,MAAM,IAAO,GAAA,UAAA,CAAW,MAAW,KAAA,CAAA,GAAI,iBAAoB,GAAA,UAAA;AAC3D,IAAA,IAAA,CAAK,KAAQ,GAAA,IAAA,CAAK,qBAAsB,CAAA,KAAA,EAAO,GAAG,IAAA,CAAK,GAAI,CAAA,CAAC,CAAM,KAAA,CAAA,CAAE,iBAAkB,EAAC,CAAC,CAAA;AAAA;AAC1F,EAEQ,qBAAA,CAAsB,UAAkB,UAAyD,EAAA;AACvG,IAAO,OAAA,KAAA,CACJ,MAAM,GAAG,CAAA,CACT,OAAO,OAAO,CAAA,CACd,GAAI,CAAA,CAAC,IAAS,KAAA;AACb,MAAA,MAAM,CAAC,GAAKA,EAAAA,MAAK,CAAI,GAAA,IAAA,CAAK,MAAM,GAAG,CAAA;AACnC,MAAA,MAAM,IAAIA,MAAS,IAAA,EAAA;AACnB,MAAM,MAAA,GAAA,GAAM,UAAW,CAAA,QAAA,CAAS,GAAI,CAAA,iBAAA,EAAmB,CAAI,GAAA,YAAA,CAAa,IAAK,CAAA,CAAC,CAAI,GAAA,CAAA;AAClF,MAAO,OAAA,CAAC,KAAK,GAAG,CAAA;AAAA,KACjB,CAAA;AAAA;AACL,EAIA,OAAc,IAAK,CAAA,KAAA,EAAA,GAAqC,UAAsB,EAAA;AAC5E,IAAA,IAAI,SAAS,IAAM,EAAA;AACjB,MAAO,OAAA,IAAA;AAAA;AAET,IAAA,OAAO,IAAI,uBAAA,CAAuB,KAAO,EAAA,GAAG,UAAU,CAAA;AAAA;AACxD,EAEgB,QAAmB,GAAA;AACjC,IAAA,OAAO,IAAK,CAAA,KAAA,CAAM,GAAI,CAAA,CAAC,CAAC,GAAK,EAAA,KAAK,CAAM,KAAA,CAAA,EAAG,GAAG,CAAI,CAAA,EAAA,KAAK,CAAE,CAAA,CAAA,CAAE,KAAK,GAAG,CAAA;AAAA;AACrE,EAEgB,MAAiB,GAAA;AAC/B,IAAO,OAAA,MAAA,CAAO,WAAY,CAAA,IAAA,CAAK,KAAK,CAAA;AAAA;AACtC,EAEA,CAAiB,IAAK,CAAA,OAAA,CAAQ,MAAM,CAAE,CAAA,KAAA,EAAe,SAAyB,OAAkC,EAAA;AAC9G,IAAA,IAAI,QAAQ,CAAG,EAAA;AACb,MAAO,OAAA,0BAAA;AAAA;AAET,IAAA,MAAM,UAAa,GAAA,MAAA,CAAO,MAAO,CAAA,IAAI,OAAS,EAAA;AAAA,MAC5C,OAAO,OAAQ,CAAA,KAAA,IAAS,IAAO,GAAA,IAAA,GAAO,QAAQ,KAAQ,GAAA;AAAA,KACvD,CAAA;AACD,IAAA,OAAO,OAAQ,CAAA,IAAA,CAAK,MAAO,EAAA,EAAG,UAAU,CAAA;AAAA;AAE5C","file":"chunk-HK6ZXU7J.js","sourcesContent":["import util, { type InspectOptions } from 'node:util';\nimport { SecureString } from './SecureString';\nimport { defaultSecureKeys } from './defaults';\nimport { BaseObject, type InspectFunction } from './types';\n\nexport class SecureConnectionString extends BaseObject {\n readonly #value: string;\n readonly #data: [string, string | SecureString][];\n\n public get secretValue(): string {\n return this.#value;\n }\n\n private constructor(value: string, ...secretKeys: string[]) {\n super();\n this.#value = value;\n const keys = secretKeys.length === 0 ? defaultSecureKeys : secretKeys;\n this.#data = this.parseConnectionString(value, ...keys.map((x) => x.toLocaleLowerCase()));\n }\n\n private parseConnectionString(value: string, ...secretKeys: string[]): [string, string | SecureString][] {\n return value\n .split(';')\n .filter(Boolean)\n .map((pair) => {\n const [key, value] = pair.split('=');\n const v = value ?? '';\n const val = secretKeys.includes(key.toLocaleLowerCase()) ? SecureString.from(v) : v;\n return [key, val];\n });\n }\n\n public static from(value: null | undefined, ...secretKeys: string[]): null;\n public static from(value: string, ...secretKeys: string[]): SecureConnectionString;\n public static from(value: string | null | undefined, ...secretKeys: string[]) {\n if (value == null) {\n return null;\n }\n return new SecureConnectionString(value, ...secretKeys);\n }\n\n public override toString(): string {\n return this.#data.map(([key, value]) => `${key}=${value}`).join(';');\n }\n\n public override toJSON(): object {\n return Object.fromEntries(this.#data);\n }\n\n public override [util.inspect.custom](depth: number, options: InspectOptions, inspect: InspectFunction): string {\n if (depth < 0) {\n return '[SecureConnectionString]';\n }\n const newOptions = Object.assign({}, options, {\n depth: options.depth == null ? null : options.depth - 1,\n });\n return inspect(this.toJSON(), newOptions);\n }\n}\n"]}
@@ -1 +0,0 @@
1
- "use strict";var e=require("./chunk-W5TZC6JS.cjs"),r=require("./chunk-Z4KAMDJN.cjs"),s=require("./chunk-PK6SKIKE.cjs");function t(e){return e&&e.__esModule?e:{default:e}}var u=t(require("util")),a=class t extends r.BaseObject{static{s.__name(this,"SecureURL")}#e;get secretValue(){return this.#e}constructor(e){super(),this.#e=e}static from(e){return null==e?null:new t(e)}toString(){const r=new URL(this.#e.href);return r.password&&(r.password=e.sha256(r.password)),r.href}toJSON(){const r=new URL(this.#e.href),s=new URLSearchParams(r.searchParams);let t;r.search="",r.password&&(t=e.sha256(r.password),r.password="");const u={href:r.href};return void 0!==t&&(u.password=t),s.size>0&&(u.searchParams=Object.fromEntries(s)),u}[u.default.inspect.custom](e,r,s){if(e<0)return"[SecureURL]";const t=Object.assign({},r,{depth:null==r.depth?null:r.depth-1});return s(this.toJSON(),t)}};exports.SecureURL=a;//# sourceMappingURL=chunk-M2AZ3CIA.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/SecureURL.ts"],"names":["BaseObject","__name","sha256","util"],"mappings":"kTAaa,IAAA,SAAA,GAAN,MAAM,UAAA,SAAkBA,4BAAW,CAAA;AAAA,EAb1C;AAa0C,IAAAC,wBAAA,CAAA,IAAA,EAAA,WAAA,CAAA;AAAA;AAAA,EAC/B,MAAA;AAAA,EAET,IAAW,WAAmB,GAAA;AAC5B,IAAA,OAAO,IAAK,CAAA,MAAA;AAAA;AACd,EAEQ,YAAY,KAAY,EAAA;AAC9B,IAAM,KAAA,EAAA;AACN,IAAA,IAAA,CAAK,MAAS,GAAA,KAAA;AAAA;AAChB,EAIA,OAAc,KAAK,KAAiD,EAAA;AAClE,IAAA,IAAI,SAAS,IAAM,EAAA;AACjB,MAAO,OAAA,IAAA;AAAA;AAET,IAAO,OAAA,IAAI,WAAU,KAAK,CAAA;AAAA;AAC5B,EAES,QAAmB,GAAA;AAC1B,IAAA,MAAM,MAAS,GAAA,IAAI,GAAI,CAAA,IAAA,CAAK,OAAO,IAAI,CAAA;AACvC,IAAA,IAAI,OAAO,QAAU,EAAA;AACnB,MAAO,MAAA,CAAA,QAAA,GAAWC,wBAAO,CAAA,MAAA,CAAO,QAAQ,CAAA;AAAA;AAE1C,IAAA,OAAO,MAAO,CAAA,IAAA;AAAA;AAChB,EAES,MAAiB,GAAA;AACxB,IAAA,MAAM,MAAS,GAAA,IAAI,GAAI,CAAA,IAAA,CAAK,OAAO,IAAI,CAAA;AAEvC,IAAA,MAAM,YAAe,GAAA,IAAI,eAAgB,CAAA,MAAA,CAAO,YAAY,CAAA;AAC5D,IAAA,MAAA,CAAO,MAAS,GAAA,EAAA;AAEhB,IAAI,IAAA,QAAA;AACJ,IAAA,IAAI,OAAO,QAAU,EAAA;AACnB,MAAW,QAAA,GAAAA,wBAAA,CAAO,OAAO,QAAQ,CAAA;AACjC,MAAA,MAAA,CAAO,QAAW,GAAA,EAAA;AAAA;AAGpB,IAAA,MAAM,MAAoB,GAAA;AAAA,MACxB,MAAM,MAAO,CAAA;AAAA,KACf;AACA,IAAA,IAAI,aAAa,SAAW,EAAA;AAC1B,MAAA,MAAA,CAAO,QAAW,GAAA,QAAA;AAAA;AAEpB,IAAI,IAAA,YAAA,CAAa,OAAO,CAAG,EAAA;AACzB,MAAO,MAAA,CAAA,YAAA,GAAe,MAAO,CAAA,WAAA,CAAY,YAAY,CAAA;AAAA;AAEvD,IAAO,OAAA,MAAA;AAAA;AACT,EACA,CAAUC,qBAAK,CAAA,OAAA,CAAQ,MAAM,CAAE,CAAA,KAAA,EAAe,SAAyB,OAAkC,EAAA;AACvG,IAAA,IAAI,QAAQ,CAAG,EAAA;AACb,MAAO,OAAA,aAAA;AAAA;AAET,IAAA,MAAM,UAAa,GAAA,MAAA,CAAO,MAAO,CAAA,IAAI,OAAS,EAAA;AAAA,MAC5C,OAAO,OAAQ,CAAA,KAAA,IAAS,IAAO,GAAA,IAAA,GAAO,QAAQ,KAAQ,GAAA;AAAA,KACvD,CAAA;AACD,IAAA,OAAO,OAAQ,CAAA,IAAA,CAAK,MAAO,EAAA,EAAG,UAAU,CAAA;AAAA;AAE5C","file":"chunk-M2AZ3CIA.cjs","sourcesContent":["import util, { type InspectOptions } from 'node:util';\nimport { sha256 } from './sha256';\nimport { BaseObject, type InspectFunction } from './types';\n\ntype UrlObject = {\n href: string;\n password?: string;\n searchParams?: Record<string, string>;\n};\n\n/**\n * SecureURL obfuscates the password from the URL.\n */\nexport class SecureURL extends BaseObject {\n readonly #value: URL;\n\n public get secretValue(): URL {\n return this.#value;\n }\n\n private constructor(value: URL) {\n super();\n this.#value = value;\n }\n\n public static from(value: undefined | null): null;\n public static from(value: URL): SecureURL;\n public static from(value: URL | null | undefined): SecureURL | null {\n if (value == null) {\n return null;\n }\n return new SecureURL(value);\n }\n\n override toString(): string {\n const newUrl = new URL(this.#value.href);\n if (newUrl.password) {\n newUrl.password = sha256(newUrl.password);\n }\n return newUrl.href;\n }\n\n override toJSON(): object {\n const newUrl = new URL(this.#value.href);\n\n const searchParams = new URLSearchParams(newUrl.searchParams);\n newUrl.search = '';\n\n let password: string | undefined;\n if (newUrl.password) {\n password = sha256(newUrl.password);\n newUrl.password = '';\n }\n\n const result: UrlObject = {\n href: newUrl.href,\n };\n if (password !== undefined) {\n result.password = password;\n }\n if (searchParams.size > 0) {\n result.searchParams = Object.fromEntries(searchParams);\n }\n return result;\n }\n override [util.inspect.custom](depth: number, options: InspectOptions, inspect: InspectFunction): string {\n if (depth < 0) {\n return '[SecureURL]';\n }\n const newOptions = Object.assign({}, options, {\n depth: options.depth == null ? null : options.depth - 1,\n });\n return inspect(this.toJSON(), newOptions);\n }\n}\n"]}
@@ -1 +0,0 @@
1
- "use strict";var t=require("./chunk-W5TZC6JS.cjs"),e=require("./chunk-Z4KAMDJN.cjs"),r=require("./chunk-PK6SKIKE.cjs"),u=require("util"),s=class s extends e.BaseObject{static{r.__name(this,"SecureString")}#t;get secretValue(){return this.#t}constructor(t){super(),this.#t=t}toString(){return t.sha256(this.#t)}toJSON(){return this.toString()}[u.inspect.custom](){return u.inspect(this.toString())}static from(t){return null==t?null:new s(t)}};exports.SecureString=s;//# sourceMappingURL=chunk-MA2X5MES.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/SecureString.ts"],"names":["BaseObject","__name","sha256","inspect"],"mappings":"4LAIa,IAAA,YAAA,GAAN,MAAM,aAAA,SAAqBA,4BAAW,CAAA;AAAA,EAJ7C;AAI6C,IAAAC,wBAAA,CAAA,IAAA,EAAA,cAAA,CAAA;AAAA;AAAA,EAClC,MAAA;AAAA,EAET,IAAW,WAAsB,GAAA;AAC/B,IAAA,OAAO,IAAK,CAAA,MAAA;AAAA;AACd,EAEQ,YAAY,KAAe,EAAA;AACjC,IAAM,KAAA,EAAA;AACN,IAAA,IAAA,CAAK,MAAS,GAAA,KAAA;AAAA;AAChB,EACgB,QAAW,GAAA;AACzB,IAAO,OAAAC,wBAAA,CAAO,KAAK,MAAM,CAAA;AAAA;AAC3B,EACgB,MAAS,GAAA;AACvB,IAAA,OAAO,KAAK,QAAS,EAAA;AAAA;AACvB,EACA,CAAiBC,YAAQ,CAAA,MAAM,CAAI,GAAA;AACjC,IAAO,OAAAA,YAAA,CAAQ,IAAK,CAAA,QAAA,EAAU,CAAA;AAAA;AAChC,EAIA,OAAc,KAAK,KAAuD,EAAA;AACxE,IAAA,IAAI,SAAS,IAAM,EAAA;AACjB,MAAO,OAAA,IAAA;AAAA;AAET,IAAO,OAAA,IAAI,cAAa,KAAK,CAAA;AAAA;AAEjC","file":"chunk-MA2X5MES.cjs","sourcesContent":["import { inspect } from 'node:util';\nimport { sha256 } from './sha256';\nimport { BaseObject } from './types';\n\nexport class SecureString extends BaseObject {\n readonly #value: string;\n\n public get secretValue(): string {\n return this.#value;\n }\n\n private constructor(value: string) {\n super();\n this.#value = value;\n }\n public override toString() {\n return sha256(this.#value);\n }\n public override toJSON() {\n return this.toString();\n }\n public override [inspect.custom]() {\n return inspect(this.toString());\n }\n\n public static from(value: string): SecureString;\n public static from(value: null | undefined): null;\n public static from(value: string | null | undefined): SecureString | null {\n if (value == null) {\n return null;\n }\n return new SecureString(value);\n }\n}\n"]}
@@ -1 +0,0 @@
1
- "use strict";var e=Object.defineProperty;exports.__name=(r,a)=>e(r,"name",{value:a,configurable:!0});//# sourceMappingURL=chunk-PK6SKIKE.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-PK6SKIKE.cjs"}
@@ -1 +0,0 @@
1
- import{__name as s}from"./chunk-7QVYU63E.js";var t=class{static{s(this,"BaseObject")}};export{t as BaseObject};//# sourceMappingURL=chunk-RBCLW5Z3.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/types.ts"],"names":[],"mappings":";AAIO,IAAe,aAAf,MAA0B;AAAA,EAJjC;AAIiC,IAAA,MAAA,CAAA,IAAA,EAAA,YAAA,CAAA;AAAA;AAIjC","file":"chunk-RBCLW5Z3.js","sourcesContent":["import util, { type InspectOptions } from 'node:util';\n\nexport type InspectFunction = typeof util.inspect;\n\nexport abstract class BaseObject {\n public abstract toString(): string;\n public abstract toJSON(): string | object;\n public abstract [util.inspect.custom](depth: number, options: InspectOptions, inspect: InspectFunction): string;\n}\n"]}
@@ -1 +0,0 @@
1
- import{sha256 as r}from"./chunk-WO3QMJL2.js";import{BaseObject as s}from"./chunk-RBCLW5Z3.js";import{__name as e}from"./chunk-7QVYU63E.js";import t from"node:util";var o=class o extends s{static{e(this,"SecureURL")}#r;get secretValue(){return this.#r}constructor(r){super(),this.#r=r}static from(r){return null==r?null:new o(r)}toString(){const s=new URL(this.#r.href);return s.password&&(s.password=r(s.password)),s.href}toJSON(){const s=new URL(this.#r.href),e=new URLSearchParams(s.searchParams);let t;s.search="",s.password&&(t=r(s.password),s.password="");const o={href:s.href};return void 0!==t&&(o.password=t),e.size>0&&(o.searchParams=Object.fromEntries(e)),o}[t.inspect.custom](r,s,e){if(r<0)return"[SecureURL]";const t=Object.assign({},s,{depth:null==s.depth?null:s.depth-1});return e(this.toJSON(),t)}};export{o as SecureURL};//# sourceMappingURL=chunk-SAA2XVPV.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/SecureURL.ts"],"names":[],"mappings":"2JAaa,IAAA,SAAA,GAAN,MAAM,UAAA,SAAkB,UAAW,CAAA;AAAA,EAb1C;AAa0C,IAAA,MAAA,CAAA,IAAA,EAAA,WAAA,CAAA;AAAA;AAAA,EAC/B,MAAA;AAAA,EAET,IAAW,WAAmB,GAAA;AAC5B,IAAA,OAAO,IAAK,CAAA,MAAA;AAAA;AACd,EAEQ,YAAY,KAAY,EAAA;AAC9B,IAAM,KAAA,EAAA;AACN,IAAA,IAAA,CAAK,MAAS,GAAA,KAAA;AAAA;AAChB,EAIA,OAAc,KAAK,KAAiD,EAAA;AAClE,IAAA,IAAI,SAAS,IAAM,EAAA;AACjB,MAAO,OAAA,IAAA;AAAA;AAET,IAAO,OAAA,IAAI,WAAU,KAAK,CAAA;AAAA;AAC5B,EAES,QAAmB,GAAA;AAC1B,IAAA,MAAM,MAAS,GAAA,IAAI,GAAI,CAAA,IAAA,CAAK,OAAO,IAAI,CAAA;AACvC,IAAA,IAAI,OAAO,QAAU,EAAA;AACnB,MAAO,MAAA,CAAA,QAAA,GAAW,MAAO,CAAA,MAAA,CAAO,QAAQ,CAAA;AAAA;AAE1C,IAAA,OAAO,MAAO,CAAA,IAAA;AAAA;AAChB,EAES,MAAiB,GAAA;AACxB,IAAA,MAAM,MAAS,GAAA,IAAI,GAAI,CAAA,IAAA,CAAK,OAAO,IAAI,CAAA;AAEvC,IAAA,MAAM,YAAe,GAAA,IAAI,eAAgB,CAAA,MAAA,CAAO,YAAY,CAAA;AAC5D,IAAA,MAAA,CAAO,MAAS,GAAA,EAAA;AAEhB,IAAI,IAAA,QAAA;AACJ,IAAA,IAAI,OAAO,QAAU,EAAA;AACnB,MAAW,QAAA,GAAA,MAAA,CAAO,OAAO,QAAQ,CAAA;AACjC,MAAA,MAAA,CAAO,QAAW,GAAA,EAAA;AAAA;AAGpB,IAAA,MAAM,MAAoB,GAAA;AAAA,MACxB,MAAM,MAAO,CAAA;AAAA,KACf;AACA,IAAA,IAAI,aAAa,SAAW,EAAA;AAC1B,MAAA,MAAA,CAAO,QAAW,GAAA,QAAA;AAAA;AAEpB,IAAI,IAAA,YAAA,CAAa,OAAO,CAAG,EAAA;AACzB,MAAO,MAAA,CAAA,YAAA,GAAe,MAAO,CAAA,WAAA,CAAY,YAAY,CAAA;AAAA;AAEvD,IAAO,OAAA,MAAA;AAAA;AACT,EACA,CAAU,IAAK,CAAA,OAAA,CAAQ,MAAM,CAAE,CAAA,KAAA,EAAe,SAAyB,OAAkC,EAAA;AACvG,IAAA,IAAI,QAAQ,CAAG,EAAA;AACb,MAAO,OAAA,aAAA;AAAA;AAET,IAAA,MAAM,UAAa,GAAA,MAAA,CAAO,MAAO,CAAA,IAAI,OAAS,EAAA;AAAA,MAC5C,OAAO,OAAQ,CAAA,KAAA,IAAS,IAAO,GAAA,IAAA,GAAO,QAAQ,KAAQ,GAAA;AAAA,KACvD,CAAA;AACD,IAAA,OAAO,OAAQ,CAAA,IAAA,CAAK,MAAO,EAAA,EAAG,UAAU,CAAA;AAAA;AAE5C","file":"chunk-SAA2XVPV.js","sourcesContent":["import util, { type InspectOptions } from 'node:util';\nimport { sha256 } from './sha256';\nimport { BaseObject, type InspectFunction } from './types';\n\ntype UrlObject = {\n href: string;\n password?: string;\n searchParams?: Record<string, string>;\n};\n\n/**\n * SecureURL obfuscates the password from the URL.\n */\nexport class SecureURL extends BaseObject {\n readonly #value: URL;\n\n public get secretValue(): URL {\n return this.#value;\n }\n\n private constructor(value: URL) {\n super();\n this.#value = value;\n }\n\n public static from(value: undefined | null): null;\n public static from(value: URL): SecureURL;\n public static from(value: URL | null | undefined): SecureURL | null {\n if (value == null) {\n return null;\n }\n return new SecureURL(value);\n }\n\n override toString(): string {\n const newUrl = new URL(this.#value.href);\n if (newUrl.password) {\n newUrl.password = sha256(newUrl.password);\n }\n return newUrl.href;\n }\n\n override toJSON(): object {\n const newUrl = new URL(this.#value.href);\n\n const searchParams = new URLSearchParams(newUrl.searchParams);\n newUrl.search = '';\n\n let password: string | undefined;\n if (newUrl.password) {\n password = sha256(newUrl.password);\n newUrl.password = '';\n }\n\n const result: UrlObject = {\n href: newUrl.href,\n };\n if (password !== undefined) {\n result.password = password;\n }\n if (searchParams.size > 0) {\n result.searchParams = Object.fromEntries(searchParams);\n }\n return result;\n }\n override [util.inspect.custom](depth: number, options: InspectOptions, inspect: InspectFunction): string {\n if (depth < 0) {\n return '[SecureURL]';\n }\n const newOptions = Object.assign({}, options, {\n depth: options.depth == null ? null : options.depth - 1,\n });\n return inspect(this.toJSON(), newOptions);\n }\n}\n"]}
@@ -1 +0,0 @@
1
- "use strict";var e=require("./chunk-PK6SKIKE.cjs"),s=require("crypto"),a=e.__name((e=>`sha256:${s.createHash("sha256").update(e).digest("hex")}`),"sha256");exports.sha256=a;//# sourceMappingURL=chunk-W5TZC6JS.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/sha256.ts"],"names":["createHash"],"mappings":"4FAEa,IAAA,MAAA,6CAAU,KAAkB,KAAA;AACvC,EAAM,MAAA,IAAA,GAAOA,kBAAW,QAAQ,CAAA,CAAE,OAAO,KAAK,CAAA,CAAE,OAAO,KAAK,CAAA;AAC5D,EAAA,OAAO,UAAU,IAAI,CAAA,CAAA;AACvB,CAHsB,EAAA,QAAA","file":"chunk-W5TZC6JS.cjs","sourcesContent":["import { createHash } from 'node:crypto';\n\nexport const sha256 = (input: string) => {\n const hash = createHash('sha256').update(input).digest('hex');\n return `sha256:${hash}`;\n};\n"]}
@@ -1 +0,0 @@
1
- import{__name as o}from"./chunk-7QVYU63E.js";import{createHash as r}from"node:crypto";var t=o((o=>`sha256:${r("sha256").update(o).digest("hex")}`),"sha256");export{t as sha256};//# sourceMappingURL=chunk-WO3QMJL2.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/sha256.ts"],"names":[],"mappings":"8EAEa,IAAA,MAAA,2BAAU,KAAkB,KAAA;AACvC,EAAM,MAAA,IAAA,GAAO,WAAW,QAAQ,CAAA,CAAE,OAAO,KAAK,CAAA,CAAE,OAAO,KAAK,CAAA;AAC5D,EAAA,OAAO,UAAU,IAAI,CAAA,CAAA;AACvB,CAHsB,EAAA,QAAA","file":"chunk-WO3QMJL2.js","sourcesContent":["import { createHash } from 'node:crypto';\n\nexport const sha256 = (input: string) => {\n const hash = createHash('sha256').update(input).digest('hex');\n return `sha256:${hash}`;\n};\n"]}
@@ -1 +0,0 @@
1
- var e=["AccessKey","SharedAccessKey","Password","AccountKey","Secret","SecretKey","ApiKey","Token","Key","MasterKey","PrimaryKey","SecondaryKey"];export{e as defaultSecureKeys};//# sourceMappingURL=chunk-XHBKWGZG.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/defaults.ts"],"names":[],"mappings":";AAAO,IAAM,iBAAoB,GAAA,CAAC,WAAa,EAAA,iBAAA,EAAmB,UAAY,EAAA,YAAA,EAAc,QAAU,EAAA,WAAA,EAAa,QAAU,EAAA,OAAA,EAAS,KAAO,EAAA,WAAA,EAAa,cAAc,cAAc","file":"chunk-XHBKWGZG.js","sourcesContent":["export const defaultSecureKeys = ['AccessKey', 'SharedAccessKey', 'Password', 'AccountKey', 'Secret', 'SecretKey', 'ApiKey', 'Token', 'Key', 'MasterKey', 'PrimaryKey', 'SecondaryKey'] as const;\n"]}
@@ -1 +0,0 @@
1
- "use strict";var e=require("./chunk-PK6SKIKE.cjs");require("util");var s=class{static{e.__name(this,"BaseObject")}};exports.BaseObject=s;//# sourceMappingURL=chunk-Z4KAMDJN.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/types.ts"],"names":["__name"],"mappings":"mFAIO,IAAe,aAAf,MAA0B;AAAA,EAJjC;AAIiC,IAAAA,wBAAA,CAAA,IAAA,EAAA,YAAA,CAAA;AAAA;AAIjC","file":"chunk-Z4KAMDJN.cjs","sourcesContent":["import util, { type InspectOptions } from 'node:util';\n\nexport type InspectFunction = typeof util.inspect;\n\nexport abstract class BaseObject {\n public abstract toString(): string;\n public abstract toJSON(): string | object;\n public abstract [util.inspect.custom](depth: number, options: InspectOptions, inspect: InspectFunction): string;\n}\n"]}
package/dist/defaults.cjs DELETED
@@ -1 +0,0 @@
1
- "use strict";var e=require("./chunk-5UKICLVE.cjs");require("./chunk-PK6SKIKE.cjs"),Object.defineProperty(exports,"defaultSecureKeys",{enumerable:!0,get:function(){return e.defaultSecureKeys}});//# sourceMappingURL=defaults.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"defaults.cjs"}
@@ -1,3 +0,0 @@
1
- declare const defaultSecureKeys: readonly ["AccessKey", "SharedAccessKey", "Password", "AccountKey", "Secret", "SecretKey", "ApiKey", "Token", "Key", "MasterKey", "PrimaryKey", "SecondaryKey"];
2
-
3
- export { defaultSecureKeys };
@@ -1,3 +0,0 @@
1
- declare const defaultSecureKeys: readonly ["AccessKey", "SharedAccessKey", "Password", "AccountKey", "Secret", "SecretKey", "ApiKey", "Token", "Key", "MasterKey", "PrimaryKey", "SecondaryKey"];
2
-
3
- export { defaultSecureKeys };
package/dist/defaults.js DELETED
@@ -1 +0,0 @@
1
- export{defaultSecureKeys}from"./chunk-XHBKWGZG.js";import"./chunk-7QVYU63E.js";//# sourceMappingURL=defaults.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"defaults.js"}
package/dist/sha256.cjs DELETED
@@ -1 +0,0 @@
1
- "use strict";var e=require("./chunk-W5TZC6JS.cjs");require("./chunk-PK6SKIKE.cjs"),Object.defineProperty(exports,"sha256",{enumerable:!0,get:function(){return e.sha256}});//# sourceMappingURL=sha256.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"sha256.cjs"}
package/dist/sha256.d.cts DELETED
@@ -1,3 +0,0 @@
1
- declare const sha256: (input: string) => string;
2
-
3
- export { sha256 };
package/dist/sha256.d.ts DELETED
@@ -1,3 +0,0 @@
1
- declare const sha256: (input: string) => string;
2
-
3
- export { sha256 };
package/dist/sha256.js DELETED
@@ -1 +0,0 @@
1
- export{sha256}from"./chunk-WO3QMJL2.js";import"./chunk-7QVYU63E.js";//# sourceMappingURL=sha256.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"sha256.js"}
package/dist/types.cjs DELETED
@@ -1 +0,0 @@
1
- "use strict";var e=require("./chunk-Z4KAMDJN.cjs");require("./chunk-PK6SKIKE.cjs"),Object.defineProperty(exports,"BaseObject",{enumerable:!0,get:function(){return e.BaseObject}});//# sourceMappingURL=types.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"types.cjs"}
package/dist/types.d.cts DELETED
@@ -1,10 +0,0 @@
1
- import util, { InspectOptions } from 'node:util';
2
-
3
- type InspectFunction = typeof util.inspect;
4
- declare abstract class BaseObject {
5
- abstract toString(): string;
6
- abstract toJSON(): string | object;
7
- abstract [util.inspect.custom](depth: number, options: InspectOptions, inspect: InspectFunction): string;
8
- }
9
-
10
- export { BaseObject, type InspectFunction };
package/dist/types.d.ts DELETED
@@ -1,10 +0,0 @@
1
- import util, { InspectOptions } from 'node:util';
2
-
3
- type InspectFunction = typeof util.inspect;
4
- declare abstract class BaseObject {
5
- abstract toString(): string;
6
- abstract toJSON(): string | object;
7
- abstract [util.inspect.custom](depth: number, options: InspectOptions, inspect: InspectFunction): string;
8
- }
9
-
10
- export { BaseObject, type InspectFunction };
package/dist/types.js DELETED
@@ -1 +0,0 @@
1
- export{BaseObject}from"./chunk-RBCLW5Z3.js";import"./chunk-7QVYU63E.js";//# sourceMappingURL=types.js.map
package/dist/types.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"types.js"}