@shellicar/core-config 2.1.3 → 2.1.5

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 (117) hide show
  1. package/CHANGELOG.md +102 -0
  2. package/README.md +166 -3
  3. package/dist/cjs/EncryptedValue.cjs +8 -1
  4. package/dist/cjs/EncryptedValue.cjs.map +1 -1
  5. package/dist/cjs/SecureConnectionString.cjs +11 -1
  6. package/dist/cjs/SecureConnectionString.cjs.map +1 -1
  7. package/dist/cjs/SecureString.cjs +10 -1
  8. package/dist/cjs/SecureString.cjs.map +1 -1
  9. package/dist/cjs/SecureURL.cjs +11 -1
  10. package/dist/cjs/SecureURL.cjs.map +1 -1
  11. package/dist/cjs/chunks/chunk-BDMFGBTR.cjs +59 -0
  12. package/dist/cjs/chunks/chunk-BDMFGBTR.cjs.map +1 -0
  13. package/dist/cjs/chunks/chunk-FOL2TBBQ.cjs +7 -0
  14. package/dist/cjs/chunks/chunk-FOL2TBBQ.cjs.map +1 -0
  15. package/dist/cjs/chunks/chunk-GGWBGRR3.cjs +29 -0
  16. package/dist/cjs/chunks/chunk-GGWBGRR3.cjs.map +1 -0
  17. package/dist/cjs/chunks/chunk-K6RFKD55.cjs +41 -0
  18. package/dist/cjs/chunks/chunk-K6RFKD55.cjs.map +1 -0
  19. package/dist/cjs/chunks/chunk-PO2PS4VB.cjs +34 -0
  20. package/dist/cjs/chunks/chunk-PO2PS4VB.cjs.map +1 -0
  21. package/dist/cjs/chunks/chunk-R4H4GKFW.cjs +82 -0
  22. package/dist/cjs/chunks/chunk-R4H4GKFW.cjs.map +1 -0
  23. package/dist/cjs/chunks/chunk-SRMLZGCX.cjs +71 -0
  24. package/dist/cjs/chunks/chunk-SRMLZGCX.cjs.map +1 -0
  25. package/dist/cjs/chunks/chunk-X6BO6XFB.cjs +7 -0
  26. package/dist/cjs/chunks/chunk-X6BO6XFB.cjs.map +1 -0
  27. package/dist/cjs/chunks/chunk-YK25AWXL.cjs +48 -0
  28. package/dist/cjs/chunks/chunk-YK25AWXL.cjs.map +1 -0
  29. package/dist/cjs/createFactory.cjs +17 -1
  30. package/dist/cjs/createFactory.cjs.map +1 -1
  31. package/dist/cjs/createFactory.d.cts +1 -1
  32. package/dist/cjs/defaults.cjs +8 -1
  33. package/dist/cjs/defaults.cjs.map +1 -1
  34. package/dist/cjs/hash.cjs +8 -1
  35. package/dist/cjs/hash.cjs.map +1 -1
  36. package/dist/cjs/index.cjs +30 -1
  37. package/dist/cjs/index.cjs.map +1 -1
  38. package/dist/cjs/interfaces.cjs +14 -1
  39. package/dist/cjs/interfaces.cjs.map +1 -1
  40. package/dist/cjs/types.cjs +15 -1
  41. package/dist/cjs/types.cjs.map +1 -1
  42. package/dist/esm/EncryptedValue.js +8 -1
  43. package/dist/esm/EncryptedValue.js.map +1 -1
  44. package/dist/esm/SecureConnectionString.js +11 -1
  45. package/dist/esm/SecureConnectionString.js.map +1 -1
  46. package/dist/esm/SecureString.js +10 -1
  47. package/dist/esm/SecureString.js.map +1 -1
  48. package/dist/esm/SecureURL.js +11 -1
  49. package/dist/esm/SecureURL.js.map +1 -1
  50. package/dist/esm/chunks/chunk-2L4YGJ3C.js +71 -0
  51. package/dist/esm/chunks/chunk-2L4YGJ3C.js.map +1 -0
  52. package/dist/esm/chunks/chunk-GOUAOFCH.js +7 -0
  53. package/dist/esm/chunks/chunk-GOUAOFCH.js.map +1 -0
  54. package/dist/esm/chunks/chunk-GWYWZHV2.js +7 -0
  55. package/dist/esm/chunks/chunk-GWYWZHV2.js.map +1 -0
  56. package/dist/esm/chunks/chunk-KM6K7D2J.js +41 -0
  57. package/dist/esm/chunks/chunk-KM6K7D2J.js.map +1 -0
  58. package/dist/esm/chunks/chunk-TRDZS6YE.js +34 -0
  59. package/dist/esm/chunks/chunk-TRDZS6YE.js.map +1 -0
  60. package/dist/esm/chunks/chunk-UDMHV6JX.js +82 -0
  61. package/dist/esm/chunks/chunk-UDMHV6JX.js.map +1 -0
  62. package/dist/esm/chunks/chunk-UJTGIE6R.js +59 -0
  63. package/dist/esm/chunks/chunk-UJTGIE6R.js.map +1 -0
  64. package/dist/esm/chunks/chunk-UOGVVT4U.js +29 -0
  65. package/dist/esm/chunks/chunk-UOGVVT4U.js.map +1 -0
  66. package/dist/esm/chunks/chunk-VIUQA4IN.js +48 -0
  67. package/dist/esm/chunks/chunk-VIUQA4IN.js.map +1 -0
  68. package/dist/esm/createFactory.d.ts +1 -1
  69. package/dist/esm/createFactory.js +17 -1
  70. package/dist/esm/createFactory.js.map +1 -1
  71. package/dist/esm/defaults.js +8 -1
  72. package/dist/esm/defaults.js.map +1 -1
  73. package/dist/esm/hash.js +8 -1
  74. package/dist/esm/hash.js.map +1 -1
  75. package/dist/esm/index.js +30 -1
  76. package/dist/esm/index.js.map +1 -1
  77. package/dist/esm/interfaces.js +14 -1
  78. package/dist/esm/interfaces.js.map +1 -1
  79. package/dist/esm/types.js +15 -1
  80. package/dist/esm/types.js.map +1 -1
  81. package/package.json +12 -11
  82. package/dist/cjs/chunk-7PP3CDDK.cjs +0 -1
  83. package/dist/cjs/chunk-7PP3CDDK.cjs.map +0 -1
  84. package/dist/cjs/chunk-FKX4J4Q2.cjs +0 -1
  85. package/dist/cjs/chunk-FKX4J4Q2.cjs.map +0 -1
  86. package/dist/cjs/chunk-J7CRMQ5Z.cjs +0 -1
  87. package/dist/cjs/chunk-J7CRMQ5Z.cjs.map +0 -1
  88. package/dist/cjs/chunk-JS7CWWUD.cjs +0 -1
  89. package/dist/cjs/chunk-JS7CWWUD.cjs.map +0 -1
  90. package/dist/cjs/chunk-JVM3GGW6.cjs +0 -1
  91. package/dist/cjs/chunk-JVM3GGW6.cjs.map +0 -1
  92. package/dist/cjs/chunk-PK6SKIKE.cjs +0 -1
  93. package/dist/cjs/chunk-PK6SKIKE.cjs.map +0 -1
  94. package/dist/cjs/chunk-VQ2XCAJT.cjs +0 -1
  95. package/dist/cjs/chunk-VQ2XCAJT.cjs.map +0 -1
  96. package/dist/cjs/chunk-WZWXGAJN.cjs +0 -1
  97. package/dist/cjs/chunk-WZWXGAJN.cjs.map +0 -1
  98. package/dist/cjs/chunk-XVDIOMZD.cjs +0 -1
  99. package/dist/cjs/chunk-XVDIOMZD.cjs.map +0 -1
  100. package/dist/esm/chunk-7QVYU63E.js +0 -1
  101. package/dist/esm/chunk-7QVYU63E.js.map +0 -1
  102. package/dist/esm/chunk-CGPJ25IS.js +0 -1
  103. package/dist/esm/chunk-CGPJ25IS.js.map +0 -1
  104. package/dist/esm/chunk-FUGQ3OFQ.js +0 -1
  105. package/dist/esm/chunk-FUGQ3OFQ.js.map +0 -1
  106. package/dist/esm/chunk-GJXVQ2LL.js +0 -1
  107. package/dist/esm/chunk-GJXVQ2LL.js.map +0 -1
  108. package/dist/esm/chunk-JAXX5FG7.js +0 -1
  109. package/dist/esm/chunk-JAXX5FG7.js.map +0 -1
  110. package/dist/esm/chunk-NWPDBO55.js +0 -1
  111. package/dist/esm/chunk-NWPDBO55.js.map +0 -1
  112. package/dist/esm/chunk-S3UXVGVK.js +0 -1
  113. package/dist/esm/chunk-S3UXVGVK.js.map +0 -1
  114. package/dist/esm/chunk-TGJY6ZQ7.js +0 -1
  115. package/dist/esm/chunk-TGJY6ZQ7.js.map +0 -1
  116. package/dist/esm/chunk-XICVVAG4.js +0 -1
  117. package/dist/esm/chunk-XICVVAG4.js.map +0 -1
package/CHANGELOG.md ADDED
@@ -0,0 +1,102 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [2.1.5] - 2026-04-15
9
+
10
+ ### Changed
11
+
12
+ - Updated dependencies to latest versions
13
+
14
+ ## [2.1.4] - 2026-02-28
15
+
16
+ ### Changed
17
+
18
+ - Updated @shellicar/build-clean to 1.2.3, biome to 2.4.4
19
+ - Updated all dependencies to latest versions
20
+
21
+ ### Security
22
+
23
+ - Fixed CVE-2026-25547 in @isaacs/brace-expansion ([GHSA-7h2j-956f-4vf2](https://github.com/advisories/GHSA-7h2j-956f-4vf2))
24
+ - Fixed CVE-2026-26996 in minimatch ([GHSA-3ppc-4f35-3m26](https://github.com/advisories/GHSA-3ppc-4f35-3m26))
25
+
26
+ ## [2.1.3] - 2026-01-20
27
+
28
+ ### Fixed
29
+
30
+ - Export factory interface returned by `createFactory`
31
+
32
+ ## [2.1.2] - 2025-12-26
33
+
34
+ ### Changed
35
+
36
+ - Updated all dependencies to latest versions
37
+
38
+ ## [2.1.1] - 2025-10-24
39
+
40
+ ### Changed
41
+
42
+ - Updated all dependencies to latest versions
43
+
44
+ ## [2.1.0] - 2025-08-24
45
+
46
+ ### Changed
47
+
48
+ - Updated all dependencies to latest versions
49
+
50
+ ## [2.0.0] - 2025-08-03
51
+
52
+ ### Changed
53
+
54
+ - Exports now use abstract interfaces instead of concrete classes for better type safety
55
+ - `SecureString`, `SecureConnectionString`, and `SecureURL` classes are no longer exported, use `createFactory()` instead
56
+ - `createFactory()` now takes a configuration object instead of a string parameter
57
+ - Extracted proper abstract interfaces for better type safety and extensibility
58
+ - Moved type definitions to dedicated interfaces file for better organization
59
+
60
+ ### Security
61
+
62
+ - Replaced plain text memory storage with AES-256-GCM encryption for all secret values
63
+ - Added `EncryptedValue` class for secure in-memory storage with unique per-instance encryption keys
64
+ - Added configurable encryption provider to allow custom encryption implementations
65
+
66
+ ## [1.0.1] - 2025-01-08
67
+
68
+ ### Changed
69
+
70
+ - Use `hs256` prefix for HMAC-SHA256
71
+ - Fix zod example in README
72
+
73
+ ## [1.0.0] - 2025-01-08
74
+
75
+ ### Added
76
+
77
+ - `secret` parameter to use `HMAC-SHA256`
78
+ - `createFactory` method to simplify secret creation
79
+ - Add `readme` example project
80
+
81
+ ### Changed
82
+
83
+ - Examples in README
84
+ - Use `packages` and `examples` monorepo structure
85
+ - Use `tsup-node`
86
+
87
+ ## [0.1.0] - 2025-01-07
88
+
89
+ ### Added
90
+
91
+ - Initial release
92
+
93
+ [2.1.5]: https://github.com/shellicar/ecosystem/releases/tag/core-config@2.1.5
94
+ [2.1.4]: https://github.com/shellicar/ecosystem/releases/tag/2.1.4
95
+ [2.1.3]: https://github.com/shellicar/ecosystem/releases/tag/2.1.3
96
+ [2.1.2]: https://github.com/shellicar/ecosystem/releases/tag/2.1.2
97
+ [2.1.1]: https://github.com/shellicar/ecosystem/releases/tag/2.1.1
98
+ [2.1.0]: https://github.com/shellicar/ecosystem/releases/tag/2.1.0
99
+ [2.0.0]: https://github.com/shellicar/ecosystem/releases/tag/2.0.0
100
+ [1.0.1]: https://github.com/shellicar/ecosystem/releases/tag/1.0.1
101
+ [1.0.0]: https://github.com/shellicar/ecosystem/releases/tag/1.0.0
102
+ [0.1.0]: https://github.com/shellicar/ecosystem/releases/tag/0.1.0
package/README.md CHANGED
@@ -3,7 +3,13 @@
3
3
  > A library for securely handling sensitive configuration values like connection strings, URLs, and secrets.
4
4
 
5
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
+ [![build status](https://github.com/shellicar/ecosystem/actions/workflows/node.js.yml/badge.svg)](https://github.com/shellicar/ecosystem/actions/workflows/node.js.yml)
7
+
8
+ ## Features
9
+
10
+ - 🔐 **SecureString** - Safely handle sensitive string values with automatic hashing for logs and serialisation
11
+ - 🔗 **SecureConnectionString** - Parse and protect connection strings with configurable secret key detection
12
+ - 🌐 **SecureURL** - Handle URLs while protecting sensitive components like passwords
7
13
 
8
14
  ## Installation & Quick Start
9
15
 
@@ -25,6 +31,163 @@ console.log(factory.connectionString('Server=myserver.uri;Password=myPassword123
25
31
  console.log(factory.url(new URL('http://myuser:myPassword123@myserver.uri')));
26
32
  ```
27
33
 
28
- ## Documentation
34
+ <!-- BEGIN_ECOSYSTEM -->
35
+
36
+ ## @shellicar TypeScript Ecosystem
37
+
38
+ ### Core Libraries
39
+
40
+ - [`@shellicar/core-config`](https://github.com/shellicar/ecosystem/tree/main/packages/core-config) - A library for securely handling sensitive configuration values like connection strings, URLs, and secrets.
41
+ - [`@shellicar/core-di`](https://github.com/shellicar/core-di) - A basic dependency injection library.
42
+
43
+ ### Reference Architectures
44
+
45
+ - [`@shellicar/reference-foundation`](https://github.com/shellicar/reference-foundation) - A comprehensive starter repository. Illustrates individual concepts.
46
+ - [`@shellicar/reference-enterprise`](https://github.com/shellicar/reference-enterprise) - A comprehensive starter repository. Can be used as the basis for creating a new Azure application workload.
47
+
48
+ ### Build Tools
49
+
50
+ - [`@shellicar/build-clean`](https://github.com/shellicar/build-clean) - Build plugin that automatically cleans unused files from output directories.
51
+ - [`@shellicar/build-version`](https://github.com/shellicar/build-version) - Build plugin that calculates and exposes version information through a virtual module import.
52
+ - [`@shellicar/build-graphql`](https://github.com/shellicar/build-graphql) - Build plugin that loads GraphQL files and makes them available through a virtual module import.
53
+
54
+ ### Framework Adapters
55
+
56
+ - [`@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.
57
+ - [`@shellicar/cosmos-query-builder`](https://github.com/shellicar/cosmos-query-builder) - Helper class for type safe advanced queries for Cosmos DB (Sql Core).
58
+
59
+ ### Logging & Monitoring
60
+
61
+ - [`@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.
62
+ - [`@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)
63
+
64
+ <!-- END_ECOSYSTEM -->
65
+
66
+ ## Motivation
67
+
68
+ To make storing and comparing configuration including secrets easy and simple.
69
+
70
+ You can easily output or display your configuration, even secret/secure values, without having to manually hash them or extract them.
71
+
72
+ ## Feature Examples
73
+
74
+ Three main classes, `SecureString`, `SecureConnectionString`, and `SecureURL`.
75
+
76
+ See [readme examples](./examples/readme/src) for example source code.
77
+
78
+ - Handle strings.
79
+
80
+ ```typescript
81
+ import { createFactory } from '@shellicar/core-config';
82
+
83
+ const factory = createFactory();
84
+ const secret = factory.string('myPassword123');
85
+
86
+ console.log(secret.toString());
87
+ // sha256:71d4ec024886c1c8e4707fb02b46fd568df44e77dd5055cadc3451747f0f2716
88
+
89
+ console.log(JSON.stringify({ secret }));
90
+ // {"secret":"sha256:71d4ec024886c1c8e4707fb02b46fd568df44e77dd5055cadc3451747f0f2716"}
91
+ ```
92
+
93
+ - Handle connection strings (`Key=Value[;Key=Value...]`).
94
+
95
+ ```typescript
96
+ import { createFactory } from '@shellicar/core-config';
97
+
98
+ const factory = createFactory();
99
+ const conn = factory.connectionString('Server=myserver;Password=myPassword123');
100
+ console.log(conn.toString());
101
+ // Server=myserver;Password=sha256:71d4ec024886c1c8e4707fb02b46fd568df44e77dd5055cadc3451747f0f2716
102
+
103
+ // Custom secret keys
104
+ console.log(factory.connectionString('Server=myserver;SuperSecretKey=myPassword123', ['SuperSecretKey']));
105
+ // {
106
+ // Server: 'myserver',
107
+ // SuperSecretKey: 'sha256:71d4ec024886c1c8e4707fb02b46fd568df44e77dd5055cadc3451747f0f2716'
108
+ // }
109
+ ```
110
+
111
+ - Handle URLs with passwords.information:
112
+
113
+ ```typescript
114
+ import { createFactory } from '@shellicar/core-config';
115
+
116
+ const factory = createFactory();
117
+ const url = new URL('https://user:myPassword123@example.com?key=value');
118
+ const secureUrl = factory.url(url);
119
+
120
+ console.log(secureUrl.toString());
121
+ // https://user:sha256%3A71d4ec024886c1c8e4707fb02b46fd568df44e77dd5055cadc3451747f0f2716@example.com/?key=value
122
+
123
+ console.log(secureUrl);
124
+ // {
125
+ // href: 'https://user@example.com/',
126
+ // password: 'sha256:71d4ec024886c1c8e4707fb02b46fd568df44e77dd5055cadc3451747f0f2716',
127
+ // searchParams: { key: 'value' }
128
+ // }
129
+ ```
130
+
131
+ - Use HMAC.
132
+
133
+ ```ts
134
+ import { createFactory } from '@shellicar/core-config';
135
+
136
+ const factory = createFactory({ secret: 'mySecret' });
137
+ const secret = factory.string('myPassword123');
138
+
139
+ console.log(secret.toString());
140
+ // sha256:71d4ec024886c1c8e4707fb02b46fd568df44e77dd5055cadc3451747f0f2716
141
+
142
+ console.log(JSON.stringify({ secret }));
143
+ // {"secret":"sha256:71d4ec024886c1c8e4707fb02b46fd568df44e77dd5055cadc3451747f0f2716"}
144
+ ```
145
+
146
+ ### Default Secure Keys
147
+
148
+ For a list of default secure keys for connection strings, see [defaults.ts](./src/defaults.ts).
149
+
150
+ ### Secure Output
151
+
152
+ All secure types implement proper toString(), toJSON(), and inspect() methods to ensure sensitive data is never accidentally exposed through logs or serialisation.
153
+
154
+ ### Real World Example
155
+
156
+ Using with Zod for environment variable validation:
157
+
158
+ ```typescript
159
+ import { env } from 'node:process';
160
+ import { createFactory } from '@shellicar/core-config';
161
+ import { z } from 'zod';
162
+
163
+ const factory = createFactory();
164
+
165
+ const envSchema = z.object({
166
+ // MongoDB connection string with username/password
167
+ MONGODB_URL: z.url().transform((x) => factory.url(new URL(x))),
168
+
169
+ // API key for external service
170
+ API_KEY: z
171
+ .string()
172
+ .min(1)
173
+ .transform((x) => factory.string(x)),
174
+
175
+ // SQL Server connection string
176
+ SQL_CONNECTION: z.string().transform((x) => factory.connectionString(x)),
177
+ });
178
+
179
+ // Parse environment variables
180
+ const config = envSchema.parse(env);
181
+
182
+ // Values are now strongly typed and secured
183
+ console.log(config.MONGODB_URL.toString());
184
+ // mongodb://myuser:sha256%3A...@mongodb.example.com/
185
+
186
+ console.log(config.API_KEY.toString());
187
+ // sha256:...
188
+
189
+ console.log(config.SQL_CONNECTION.toString());
190
+ // Server=myserver;Database=mydb;User Id=admin;Password=sha256:...
191
+ ```
29
192
 
30
- For full documentation, visit [here](https://github.com/shellicar/core-config).
193
+ All sensitive values are automatically hashed in logs and serialisation, while still being accessible via the `secretValue` property when needed.
@@ -1 +1,8 @@
1
- "use strict";var e=require("./chunk-FKX4J4Q2.cjs");require("./chunk-PK6SKIKE.cjs"),Object.defineProperty(exports,"EncryptedValue",{enumerable:!0,get:function(){return e.EncryptedValue}});//# sourceMappingURL=EncryptedValue.cjs.map
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+ var _chunkYK25AWXLcjs = require('./chunks/chunk-YK25AWXL.cjs');
4
+ require('./chunks/chunk-X6BO6XFB.cjs');
5
+
6
+
7
+ exports.EncryptedValue = _chunkYK25AWXLcjs.EncryptedValue;
8
+ //# sourceMappingURL=EncryptedValue.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"EncryptedValue.cjs"}
1
+ {"version":3,"sources":["/home/runner/work/ecosystem/ecosystem/packages/core-config/dist/cjs/EncryptedValue.cjs"],"names":[],"mappings":"AAAA;AACE;AACF,+DAAoC;AACpC,uCAAoC;AACpC;AACE;AACF,0DAAC","file":"/home/runner/work/ecosystem/ecosystem/packages/core-config/dist/cjs/EncryptedValue.cjs"}
@@ -1 +1,11 @@
1
- "use strict";var e=require("./chunk-J7CRMQ5Z.cjs");require("./chunk-XVDIOMZD.cjs"),require("./chunk-JVM3GGW6.cjs"),require("./chunk-WZWXGAJN.cjs"),require("./chunk-PK6SKIKE.cjs"),Object.defineProperty(exports,"SecureConnectionString",{enumerable:!0,get:function(){return e.SecureConnectionString}});//# sourceMappingURL=SecureConnectionString.cjs.map
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+ var _chunkSRMLZGCXcjs = require('./chunks/chunk-SRMLZGCX.cjs');
4
+ require('./chunks/chunk-BDMFGBTR.cjs');
5
+ require('./chunks/chunk-PO2PS4VB.cjs');
6
+ require('./chunks/chunk-GGWBGRR3.cjs');
7
+ require('./chunks/chunk-X6BO6XFB.cjs');
8
+
9
+
10
+ exports.SecureConnectionString = _chunkSRMLZGCXcjs.SecureConnectionString;
11
+ //# sourceMappingURL=SecureConnectionString.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"SecureConnectionString.cjs"}
1
+ {"version":3,"sources":["/home/runner/work/ecosystem/ecosystem/packages/core-config/dist/cjs/SecureConnectionString.cjs"],"names":[],"mappings":"AAAA;AACE;AACF,+DAAoC;AACpC,uCAAoC;AACpC,uCAAoC;AACpC,uCAAoC;AACpC,uCAAoC;AACpC;AACE;AACF,0EAAC","file":"/home/runner/work/ecosystem/ecosystem/packages/core-config/dist/cjs/SecureConnectionString.cjs"}
@@ -1 +1,10 @@
1
- "use strict";var e=require("./chunk-XVDIOMZD.cjs");require("./chunk-JVM3GGW6.cjs"),require("./chunk-WZWXGAJN.cjs"),require("./chunk-PK6SKIKE.cjs"),Object.defineProperty(exports,"SecureString",{enumerable:!0,get:function(){return e.SecureString}});//# sourceMappingURL=SecureString.cjs.map
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+ var _chunkBDMFGBTRcjs = require('./chunks/chunk-BDMFGBTR.cjs');
4
+ require('./chunks/chunk-PO2PS4VB.cjs');
5
+ require('./chunks/chunk-GGWBGRR3.cjs');
6
+ require('./chunks/chunk-X6BO6XFB.cjs');
7
+
8
+
9
+ exports.SecureString = _chunkBDMFGBTRcjs.SecureString;
10
+ //# sourceMappingURL=SecureString.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"SecureString.cjs"}
1
+ {"version":3,"sources":["/home/runner/work/ecosystem/ecosystem/packages/core-config/dist/cjs/SecureString.cjs"],"names":[],"mappings":"AAAA;AACE;AACF,+DAAoC;AACpC,uCAAoC;AACpC,uCAAoC;AACpC,uCAAoC;AACpC;AACE;AACF,sDAAC","file":"/home/runner/work/ecosystem/ecosystem/packages/core-config/dist/cjs/SecureString.cjs"}
@@ -1 +1,11 @@
1
- "use strict";var e=require("./chunk-VQ2XCAJT.cjs");require("./chunk-XVDIOMZD.cjs"),require("./chunk-JVM3GGW6.cjs"),require("./chunk-WZWXGAJN.cjs"),require("./chunk-PK6SKIKE.cjs"),Object.defineProperty(exports,"SecureURL",{enumerable:!0,get:function(){return e.SecureURL}});//# sourceMappingURL=SecureURL.cjs.map
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+ var _chunkR4H4GKFWcjs = require('./chunks/chunk-R4H4GKFW.cjs');
4
+ require('./chunks/chunk-BDMFGBTR.cjs');
5
+ require('./chunks/chunk-PO2PS4VB.cjs');
6
+ require('./chunks/chunk-GGWBGRR3.cjs');
7
+ require('./chunks/chunk-X6BO6XFB.cjs');
8
+
9
+
10
+ exports.SecureURL = _chunkR4H4GKFWcjs.SecureURL;
11
+ //# sourceMappingURL=SecureURL.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"SecureURL.cjs"}
1
+ {"version":3,"sources":["/home/runner/work/ecosystem/ecosystem/packages/core-config/dist/cjs/SecureURL.cjs"],"names":[],"mappings":"AAAA;AACE;AACF,+DAAoC;AACpC,uCAAoC;AACpC,uCAAoC;AACpC,uCAAoC;AACpC,uCAAoC;AACpC;AACE;AACF,gDAAC","file":"/home/runner/work/ecosystem/ecosystem/packages/core-config/dist/cjs/SecureURL.cjs"}
@@ -0,0 +1,59 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2
+
3
+ var _chunkPO2PS4VBcjs = require('./chunk-PO2PS4VB.cjs');
4
+
5
+
6
+ var _chunkGGWBGRR3cjs = require('./chunk-GGWBGRR3.cjs');
7
+
8
+
9
+ var _chunkX6BO6XFBcjs = require('./chunk-X6BO6XFB.cjs');
10
+
11
+ // src/SecureString.ts
12
+ var _nodeutil = require('node:util'); var _nodeutil2 = _interopRequireDefault(_nodeutil);
13
+ var SecureString = class _SecureString extends _chunkPO2PS4VBcjs.ISecureString {
14
+ static {
15
+ _chunkX6BO6XFBcjs.__name.call(void 0, this, "SecureString");
16
+ }
17
+ #encryptedValue;
18
+ #hash;
19
+ get secretValue() {
20
+ return this.#encryptedValue.getValue();
21
+ }
22
+ constructor(value, config) {
23
+ super();
24
+ this.#encryptedValue = config.encryptionProvider.encrypt(value);
25
+ this.#hash = _chunkGGWBGRR3cjs.hash.call(void 0, value, config.secret);
26
+ }
27
+ static factory(config) {
28
+ return (value) => _SecureString.from(value, config);
29
+ }
30
+ static from(value, config) {
31
+ if (value === null) {
32
+ return null;
33
+ }
34
+ if (value === void 0) {
35
+ return void 0;
36
+ }
37
+ return new _SecureString(value, config);
38
+ }
39
+ toString() {
40
+ return this.#hash;
41
+ }
42
+ toJSON() {
43
+ return this.toString();
44
+ }
45
+ [_nodeutil2.default.inspect.custom](depth, options, inspect) {
46
+ if (depth < 0) {
47
+ return "[SecureString]";
48
+ }
49
+ const newOptions = Object.assign({}, options, {
50
+ depth: options.depth == null ? null : options.depth - 1
51
+ });
52
+ return inspect(this.toJSON(), newOptions);
53
+ }
54
+ };
55
+
56
+
57
+
58
+ exports.SecureString = SecureString;
59
+ //# sourceMappingURL=chunk-BDMFGBTR.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/ecosystem/ecosystem/packages/core-config/dist/cjs/chunks/chunk-BDMFGBTR.cjs","../../../src/SecureString.ts"],"names":[],"mappings":"AAAA;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACA;ACVA,yFAA0C;AAKnC,IAAM,aAAA,EAAN,MAAM,cAAA,QAAqB,gCAAc;AAAA,EALhD,OAKgD;AAAA,IAAA,sCAAA,IAAA,EAAA,cAAA,CAAA;AAAA,EAAA;AAAA,EACrC,CAAA,cAAA;AAAA,EACA,CAAA,IAAA;AAAA,EAET,IAAW,WAAA,CAAA,EAAsB;AAC/B,IAAA,OAAO,IAAA,CAAK,CAAA,cAAA,CAAgB,QAAA,CAAS,CAAA;AAAA,EACvC;AAAA,EAEQ,WAAA,CAAY,KAAA,EAAe,MAAA,EAAsB;AACvD,IAAA,KAAA,CAAM,CAAA;AACN,IAAA,IAAA,CAAK,CAAA,eAAA,EAAkB,MAAA,CAAO,kBAAA,CAAmB,OAAA,CAAQ,KAAK,CAAA;AAC9D,IAAA,IAAA,CAAK,CAAA,KAAA,EAAQ,oCAAA,KAAK,EAAO,MAAA,CAAO,MAAM,CAAA;AAAA,EACxC;AAAA,EAEA,OAAO,OAAA,CAAQ,MAAA,EAAuD;AACpE,IAAA,OAAO,CAAC,KAAA,EAAA,GAAkB,aAAA,CAAa,IAAA,CAAK,KAAA,EAAO,MAAM,CAAA;AAAA,EAC3D;AAAA,EAEA,OAAc,IAAA,CAA0C,KAAA,EAAU,MAAA,EAA2D;AAC3H,IAAA,GAAA,CAAI,MAAA,IAAU,IAAA,EAAM;AAClB,MAAA,OAAO,IAAA;AAAA,IACT;AACA,IAAA,GAAA,CAAI,MAAA,IAAU,KAAA,CAAA,EAAW;AACvB,MAAA,OAAO,KAAA,CAAA;AAAA,IACT;AACA,IAAA,OAAO,IAAI,aAAA,CAAa,KAAA,EAAO,MAAM,CAAA;AAAA,EACvC;AAAA,EAEgB,QAAA,CAAA,EAAW;AACzB,IAAA,OAAO,IAAA,CAAK,CAAA,IAAA;AAAA,EACd;AAAA,EACgB,MAAA,CAAA,EAAS;AACvB,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,CAAA;AAAA,EACvB;AAAA,EACA,CAAU,kBAAA,CAAK,OAAA,CAAQ,MAAM,CAAA,CAAE,KAAA,EAAe,OAAA,EAAyB,OAAA,EAAkC;AACvG,IAAA,GAAA,CAAI,MAAA,EAAQ,CAAA,EAAG;AACb,MAAA,OAAO,gBAAA;AAAA,IACT;AACA,IAAA,MAAM,WAAA,EAAa,MAAA,CAAO,MAAA,CAAO,CAAC,CAAA,EAAG,OAAA,EAAS;AAAA,MAC5C,KAAA,EAAO,OAAA,CAAQ,MAAA,GAAS,KAAA,EAAO,KAAA,EAAO,OAAA,CAAQ,MAAA,EAAQ;AAAA,IACxD,CAAC,CAAA;AACD,IAAA,OAAO,OAAA,CAAQ,IAAA,CAAK,MAAA,CAAO,CAAA,EAAG,UAAU,CAAA;AAAA,EAC1C;AACF,CAAA;ADMA;AACA;AACE;AACF,oCAAC","file":"/home/runner/work/ecosystem/ecosystem/packages/core-config/dist/cjs/chunks/chunk-BDMFGBTR.cjs","sourcesContent":[null,"import util, { type InspectOptions } from 'node:util';\nimport { hash } from './hash';\nimport { ISecureString } from './interfaces';\nimport type { IEncryptedValue, InspectFunction, SecureConfig } from './types';\n\nexport class SecureString extends ISecureString {\n readonly #encryptedValue: IEncryptedValue;\n readonly #hash: string;\n\n public get secretValue(): string {\n return this.#encryptedValue.getValue();\n }\n\n private constructor(value: string, config: SecureConfig) {\n super();\n this.#encryptedValue = config.encryptionProvider.encrypt(value);\n this.#hash = hash(value, config.secret);\n }\n\n static factory(config: SecureConfig): (value: string) => SecureString {\n return (value: string) => SecureString.from(value, config);\n }\n\n public static from<T extends string | null | undefined>(value: T, config: SecureConfig): 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, config) 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"]}
@@ -0,0 +1,7 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});// src/defaults.ts
2
+ var defaultSecureKeys = ["AccessKey", "SharedAccessKey", "Password", "AccountKey", "Secret", "SecretKey", "ApiKey", "Token", "Key", "MasterKey", "PrimaryKey", "SecondaryKey"];
3
+
4
+
5
+
6
+ exports.defaultSecureKeys = defaultSecureKeys;
7
+ //# sourceMappingURL=chunk-FOL2TBBQ.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/ecosystem/ecosystem/packages/core-config/dist/cjs/chunks/chunk-FOL2TBBQ.cjs","../../../src/defaults.ts"],"names":[],"mappings":"AAAA;ACEO,IAAM,kBAAA,EAAoB,CAAC,WAAA,EAAa,iBAAA,EAAmB,UAAA,EAAY,YAAA,EAAc,QAAA,EAAU,WAAA,EAAa,QAAA,EAAU,OAAA,EAAS,KAAA,EAAO,WAAA,EAAa,YAAA,EAAc,cAAc,CAAA;ADAtL;AACA;AACE;AACF,8CAAC","file":"/home/runner/work/ecosystem/ecosystem/packages/core-config/dist/cjs/chunks/chunk-FOL2TBBQ.cjs","sourcesContent":[null,"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"]}
@@ -0,0 +1,29 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+ var _chunkX6BO6XFBcjs = require('./chunk-X6BO6XFB.cjs');
4
+
5
+ // src/hash.ts
6
+ var _nodecrypto = require('node:crypto');
7
+ var algorithms = {
8
+ sha256: /* @__PURE__ */ _chunkX6BO6XFBcjs.__name.call(void 0, () => ({
9
+ hash: /* @__PURE__ */ _chunkX6BO6XFBcjs.__name.call(void 0, (x) => _nodecrypto.createHash.call(void 0, "sha256").update(x).digest("hex"), "hash"),
10
+ prefix: "sha256"
11
+ }), "sha256"),
12
+ hs256: /* @__PURE__ */ _chunkX6BO6XFBcjs.__name.call(void 0, (secret) => ({
13
+ hash: /* @__PURE__ */ _chunkX6BO6XFBcjs.__name.call(void 0, (x) => _nodecrypto.createHmac.call(void 0, "sha256", secret).update(x).digest("hex"), "hash"),
14
+ prefix: "hs256"
15
+ }), "hs256")
16
+ };
17
+ var getAlgorithm = /* @__PURE__ */ _chunkX6BO6XFBcjs.__name.call(void 0, (secret) => {
18
+ return secret == null ? algorithms.sha256() : algorithms.hs256(secret);
19
+ }, "getAlgorithm");
20
+ var hash = /* @__PURE__ */ _chunkX6BO6XFBcjs.__name.call(void 0, (input, secret) => {
21
+ const alg = getAlgorithm(secret);
22
+ const hash2 = alg.hash(input);
23
+ return `${alg.prefix}:${hash2}`;
24
+ }, "hash");
25
+
26
+
27
+
28
+ exports.hash = hash;
29
+ //# sourceMappingURL=chunk-GGWBGRR3.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/ecosystem/ecosystem/packages/core-config/dist/cjs/chunks/chunk-GGWBGRR3.cjs","../../../src/hash.ts"],"names":["hash"],"mappings":"AAAA;AACE;AACF,wDAA6B;AAC7B;AACA;ACJA,yCAAuC;AAOvC,IAAM,WAAA,EAAa;AAAA,EACjB,MAAA,kBAAQ,sCAAA,CAAA,EAAA,GAAA,CAAO;AAAA,IACb,IAAA,kBAAM,sCAAA,CAAC,CAAA,EAAA,GAAc,oCAAA,QAAmB,CAAA,CAAE,MAAA,CAAO,CAAC,CAAA,CAAE,MAAA,CAAO,KAAK,CAAA,EAA1D,MAAA,CAAA;AAAA,IACN,MAAA,EAAQ;AAAA,EACV,CAAA,CAAA,EAHQ,QAAA,CAAA;AAAA,EAIR,KAAA,kBAAO,sCAAA,CAAC,MAAA,EAAA,GAAA,CAAoB;AAAA,IAC1B,IAAA,kBAAM,sCAAA,CAAC,CAAA,EAAA,GAAc,oCAAA,QAAW,EAAU,MAAM,CAAA,CAAE,MAAA,CAAO,CAAC,CAAA,CAAE,MAAA,CAAO,KAAK,CAAA,EAAlE,MAAA,CAAA;AAAA,IACN,MAAA,EAAQ;AAAA,EACV,CAAA,CAAA,EAHO,OAAA;AAIT,CAAA;AAEA,IAAM,aAAA,kBAAe,sCAAA,CAAC,MAAA,EAAA,GAAyC;AAC7D,EAAA,OAAO,OAAA,GAAU,KAAA,EAAO,UAAA,CAAW,MAAA,CAAO,EAAA,EAAI,UAAA,CAAW,KAAA,CAAM,MAAM,CAAA;AACvE,CAAA,EAFqB,cAAA,CAAA;AAId,IAAM,KAAA,kBAAO,sCAAA,CAAC,KAAA,EAAe,MAAA,EAAA,GAA0B;AAC5D,EAAA,MAAM,IAAA,EAAM,YAAA,CAAa,MAAM,CAAA;AAC/B,EAAA,MAAMA,MAAAA,EAAO,GAAA,CAAI,IAAA,CAAK,KAAK,CAAA;AAC3B,EAAA,OAAO,CAAA,EAAA;AAHW;ADEV;AACA;AACA;AACA","file":"/home/runner/work/ecosystem/ecosystem/packages/core-config/dist/cjs/chunks/chunk-GGWBGRR3.cjs","sourcesContent":[null,"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 | null): HashAlgorithm => {\n return secret == null ? algorithms.sha256() : algorithms.hs256(secret);\n};\n\nexport const hash = (input: string, secret: string | null) => {\n const alg = getAlgorithm(secret);\n const hash = alg.hash(input);\n return `${alg.prefix}:${hash}`;\n};\n"]}
@@ -0,0 +1,41 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
+
3
+ var _chunkYK25AWXLcjs = require('./chunk-YK25AWXL.cjs');
4
+
5
+
6
+ var _chunkSRMLZGCXcjs = require('./chunk-SRMLZGCX.cjs');
7
+
8
+
9
+ var _chunkR4H4GKFWcjs = require('./chunk-R4H4GKFW.cjs');
10
+
11
+
12
+ var _chunkBDMFGBTRcjs = require('./chunk-BDMFGBTR.cjs');
13
+
14
+
15
+ var _chunkFOL2TBBQcjs = require('./chunk-FOL2TBBQ.cjs');
16
+
17
+
18
+ var _chunkX6BO6XFBcjs = require('./chunk-X6BO6XFB.cjs');
19
+
20
+ // src/createFactory.ts
21
+ var defaultEncryptionProvider = {
22
+ encrypt: /* @__PURE__ */ _chunkX6BO6XFBcjs.__name.call(void 0, (value) => new (0, _chunkYK25AWXLcjs.EncryptedValue)(value), "encrypt")
23
+ };
24
+ var createFactory = /* @__PURE__ */ _chunkX6BO6XFBcjs.__name.call(void 0, (options) => {
25
+ const config = {
26
+ secret: _nullishCoalesce(_optionalChain([options, 'optionalAccess', _ => _.secret]), () => ( null)),
27
+ encryptionProvider: _nullishCoalesce(_optionalChain([options, 'optionalAccess', _2 => _2.encryptionProvider]), () => ( defaultEncryptionProvider)),
28
+ secretKeys: _nullishCoalesce(_optionalChain([options, 'optionalAccess', _3 => _3.secretKeys]), () => ( _chunkFOL2TBBQcjs.defaultSecureKeys))
29
+ };
30
+ return {
31
+ string: _chunkBDMFGBTRcjs.SecureString.factory(config),
32
+ connectionString: _chunkSRMLZGCXcjs.SecureConnectionString.factory(config),
33
+ url: _chunkR4H4GKFWcjs.SecureURL.factory(config)
34
+ };
35
+ }, "createFactory");
36
+
37
+
38
+
39
+
40
+ exports.defaultEncryptionProvider = defaultEncryptionProvider; exports.createFactory = createFactory;
41
+ //# sourceMappingURL=chunk-K6RFKD55.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/ecosystem/ecosystem/packages/core-config/dist/cjs/chunks/chunk-K6RFKD55.cjs","../../../src/createFactory.ts"],"names":[],"mappings":"AAAA;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACA;ACXO,IAAM,0BAAA,EAAiD;AAAA,EAC5D,OAAA,kBAAS,sCAAA,CAAC,KAAA,EAAA,GAAkB,IAAI,qCAAA,CAAe,KAAK,CAAA,EAA3C,SAAA;AACX,CAAA;AAEO,IAAM,cAAA,kBAAgB,sCAAA,CAAC,OAAA,EAAA,GAAoD;AAChF,EAAA,MAAM,OAAA,EAAuB;AAAA,IAC3B,MAAA,mCAAQ,OAAA,2BAAS,QAAA,UAAU,MAAA;AAAA,IAC3B,kBAAA,mCAAoB,OAAA,6BAAS,oBAAA,UAAsB,2BAAA;AAAA,IACnD,UAAA,mCAAY,OAAA,6BAAS,YAAA,UAAc;AAAA,EACrC,CAAA;AAEA,EAAA,OAAO;AAAA,IACL,MAAA,EAAQ,8BAAA,CAAa,OAAA,CAAQ,MAAM,CAAA;AAAA,IACnC,gBAAA,EAAkB,wCAAA,CAAuB,OAAA,CAAQ,MAAM,CAAA;AAAA,IACvD,GAAA,EAAK,2BAAA,CAAU,OAAA,CAAQ,MAAM;AAAA,EAC/B,CAAA;AACF,CAAA,EAZ6B,eAAA,CAAA;ADuB7B;AACA;AACE;AACA;AACF,qGAAC","file":"/home/runner/work/ecosystem/ecosystem/packages/core-config/dist/cjs/chunks/chunk-K6RFKD55.cjs","sourcesContent":[null,"import { defaultSecureKeys } from './defaults';\nimport { EncryptedValue } from './EncryptedValue';\nimport type { ISecureFactory } from './interfaces';\nimport { SecureConnectionString } from './SecureConnectionString';\nimport { SecureString } from './SecureString';\nimport { SecureURL } from './SecureURL';\nimport type { IEncryptionProvider, SecureConfig } from './types';\n\nexport const defaultEncryptionProvider: IEncryptionProvider = {\n encrypt: (value: string) => new EncryptedValue(value),\n};\n\nexport const createFactory = (options?: Partial<SecureConfig>): ISecureFactory => {\n const config: SecureConfig = {\n secret: options?.secret ?? null,\n encryptionProvider: options?.encryptionProvider ?? defaultEncryptionProvider,\n secretKeys: options?.secretKeys ?? defaultSecureKeys,\n };\n\n return {\n string: SecureString.factory(config),\n connectionString: SecureConnectionString.factory(config),\n url: SecureURL.factory(config),\n };\n};\n"]}
@@ -0,0 +1,34 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+ var _chunkX6BO6XFBcjs = require('./chunk-X6BO6XFB.cjs');
4
+
5
+ // src/interfaces.ts
6
+ require('node:util');
7
+ var ISecureString = class {
8
+ static {
9
+ _chunkX6BO6XFBcjs.__name.call(void 0, this, "ISecureString");
10
+ }
11
+ };
12
+ var ISecureConnectionString = class {
13
+ static {
14
+ _chunkX6BO6XFBcjs.__name.call(void 0, this, "ISecureConnectionString");
15
+ }
16
+ };
17
+ var ISecureURL = class {
18
+ static {
19
+ _chunkX6BO6XFBcjs.__name.call(void 0, this, "ISecureURL");
20
+ }
21
+ };
22
+ var ISecureFactory = class {
23
+ static {
24
+ _chunkX6BO6XFBcjs.__name.call(void 0, this, "ISecureFactory");
25
+ }
26
+ };
27
+
28
+
29
+
30
+
31
+
32
+
33
+ exports.ISecureString = ISecureString; exports.ISecureConnectionString = ISecureConnectionString; exports.ISecureURL = ISecureURL; exports.ISecureFactory = ISecureFactory;
34
+ //# sourceMappingURL=chunk-PO2PS4VB.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/ecosystem/ecosystem/packages/core-config/dist/cjs/chunks/chunk-PO2PS4VB.cjs","../../../src/interfaces.ts"],"names":[],"mappings":"AAAA;AACE;AACF,wDAA6B;AAC7B;AACA;ACJA,qBAA0C;AAGnC,IAAe,cAAA,EAAf,MAAmD;AAAA,EAH1D,OAG0D;AAAA,IAAA,sCAAA,IAAA,EAAA,eAAA,CAAA;AAAA,EAAA;AAK1D,CAAA;AAEO,IAAe,wBAAA,EAAf,MAA6D;AAAA,EAVpE,OAUoE;AAAA,IAAA,sCAAA,IAAA,EAAA,yBAAA,CAAA;AAAA,EAAA;AAKpE,CAAA;AAEO,IAAe,WAAA,EAAf,MAAgD;AAAA,EAjBvD,OAiBuD;AAAA,IAAA,sCAAA,IAAA,EAAA,YAAA,CAAA;AAAA,EAAA;AAKvD,CAAA;AAEO,IAAe,eAAA,EAAf,MAA8B;AAAA,EAxBrC,OAwBqC;AAAA,IAAA,sCAAA,IAAA,EAAA,gBAAA,CAAA;AAAA,EAAA;AAIrC,CAAA;ADFA;AACA;AACE;AACA;AACA;AACA;AACF,2KAAC","file":"/home/runner/work/ecosystem/ecosystem/packages/core-config/dist/cjs/chunks/chunk-PO2PS4VB.cjs","sourcesContent":[null,"import util, { type InspectOptions } from 'node:util';\nimport type { BaseObject, InspectFunction } from './types';\n\nexport abstract class ISecureString implements 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 public abstract get secretValue(): string;\n}\n\nexport abstract class ISecureConnectionString implements 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 public abstract get secretValue(): string;\n}\n\nexport abstract class ISecureURL implements BaseObject {\n public abstract toString(): string;\n public abstract toJSON(): object;\n public abstract [util.inspect.custom](depth: number, options: InspectOptions, inspect: InspectFunction): string;\n public abstract get secretValue(): URL;\n}\n\nexport abstract class ISecureFactory {\n public abstract string(value: string): ISecureString;\n public abstract connectionString(value: string, secretKeys?: readonly string[]): ISecureConnectionString;\n public abstract url(value: URL): ISecureURL;\n}\n"]}
@@ -0,0 +1,82 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2
+
3
+ var _chunkBDMFGBTRcjs = require('./chunk-BDMFGBTR.cjs');
4
+
5
+
6
+ var _chunkPO2PS4VBcjs = require('./chunk-PO2PS4VB.cjs');
7
+
8
+
9
+ var _chunkX6BO6XFBcjs = require('./chunk-X6BO6XFB.cjs');
10
+
11
+ // src/SecureURL.ts
12
+ var _nodeutil = require('node:util'); var _nodeutil2 = _interopRequireDefault(_nodeutil);
13
+ var SecureURL = class _SecureURL extends _chunkPO2PS4VBcjs.ISecureURL {
14
+ static {
15
+ _chunkX6BO6XFBcjs.__name.call(void 0, this, "SecureURL");
16
+ }
17
+ #encryptedValue;
18
+ #password;
19
+ get secretValue() {
20
+ return new URL(this.#encryptedValue.getValue());
21
+ }
22
+ constructor(value, config) {
23
+ super();
24
+ this.#encryptedValue = config.encryptionProvider.encrypt(value.href);
25
+ this.#password = _chunkBDMFGBTRcjs.SecureString.from(value.password || null, config);
26
+ }
27
+ static factory(config) {
28
+ return (value) => _SecureURL.from(value, config);
29
+ }
30
+ static from(value, config) {
31
+ if (value === null) {
32
+ return null;
33
+ }
34
+ if (value === void 0) {
35
+ return void 0;
36
+ }
37
+ return new _SecureURL(value, config);
38
+ }
39
+ toString() {
40
+ const originalUrl = this.secretValue;
41
+ const newUrl = new URL(originalUrl.href);
42
+ if (this.#password !== null) {
43
+ newUrl.password = this.#password.toString();
44
+ }
45
+ return newUrl.href;
46
+ }
47
+ toJSON() {
48
+ const originalUrl = this.secretValue;
49
+ const newUrl = new URL(originalUrl.href);
50
+ newUrl.password = "";
51
+ const searchParams = new URLSearchParams(newUrl.searchParams);
52
+ newUrl.search = "";
53
+ let password;
54
+ if (this.#password !== null) {
55
+ password = this.#password.toString();
56
+ }
57
+ const result = {
58
+ href: newUrl.href
59
+ };
60
+ if (password !== void 0) {
61
+ result.password = password;
62
+ }
63
+ if (searchParams.size > 0) {
64
+ result.searchParams = Object.fromEntries(searchParams);
65
+ }
66
+ return result;
67
+ }
68
+ [_nodeutil2.default.inspect.custom](depth, options, inspect) {
69
+ if (depth < 0) {
70
+ return "[SecureURL]";
71
+ }
72
+ const newOptions = Object.assign({}, options, {
73
+ depth: options.depth == null ? null : options.depth - 1
74
+ });
75
+ return inspect(this.toJSON(), newOptions);
76
+ }
77
+ };
78
+
79
+
80
+
81
+ exports.SecureURL = SecureURL;
82
+ //# sourceMappingURL=chunk-R4H4GKFW.cjs.map