@adonoustech/bacon-core 4.21.0 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.js +2 -1
- package/dist/cjs/utils/TypeUtils.js +15 -0
- package/dist/cjs/utils/index.js +5 -0
- package/dist/es/index.js +2 -1
- package/dist/es/utils/TypeUtils.js +11 -0
- package/dist/es/utils/index.js +2 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/utils/TypeUtils.d.ts +68 -0
- package/dist/types/utils/index.d.ts +1 -0
- package/package.json +2 -2
- package/src/index.ts +1 -0
- package/src/utils/TypeUtils.ts +86 -0
- package/src/utils/index.ts +1 -0
package/dist/cjs/index.js
CHANGED
|
@@ -13,4 +13,5 @@ tslib_1.__exportStar(require("./enums"), exports);
|
|
|
13
13
|
tslib_1.__exportStar(require("./interfaces"), exports);
|
|
14
14
|
tslib_1.__exportStar(require("./maps"), exports);
|
|
15
15
|
tslib_1.__exportStar(require("./static"), exports);
|
|
16
|
-
|
|
16
|
+
tslib_1.__exportStar(require("./utils"), exports);
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7O0VBSUU7OztBQUVGLGlEQUF1QjtBQUN2QixxREFBMkI7QUFDM0Isc0RBQTRCO0FBQzVCLGtEQUF3QjtBQUN4Qix1REFBNkI7QUFDN0IsaURBQXVCO0FBQ3ZCLG1EQUF5QjtBQUN6QixrREFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQmFjb24gQ29yZVxyXG4gKiBcclxuICogQG1vZHVsZSBiYWNvbi1jb3JlXHJcbiovXHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2Jhc2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2NvbmNyZXRlJztcclxuZXhwb3J0ICogZnJvbSAnLi9jb25zdGFudHMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2VudW1zJztcclxuZXhwb3J0ICogZnJvbSAnLi9pbnRlcmZhY2VzJztcclxuZXhwb3J0ICogZnJvbSAnLi9tYXBzJztcclxuZXhwb3J0ICogZnJvbSAnLi9zdGF0aWMnO1xyXG5leHBvcnQgKiBmcm9tICcuL3V0aWxzJztcclxuXHJcbiJdfQ==
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Core type utilities for flexible type creation and manipulation
|
|
4
|
+
* Minimum TypeScript Version: 4.5
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.createTypeBuilder = void 0;
|
|
8
|
+
const createTypeBuilder = () => {
|
|
9
|
+
return {
|
|
10
|
+
required: (keys) => (0, exports.createTypeBuilder)(),
|
|
11
|
+
optional: (keys) => (0, exports.createTypeBuilder)(),
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
exports.createTypeBuilder = createTypeBuilder;
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHlwZVV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxzL1R5cGVVdGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7OztHQUdHOzs7QUE2RUksTUFBTSxpQkFBaUIsR0FBRyxHQUFzQixFQUFFO0lBQ3ZELE9BQU87UUFDTCxRQUFRLEVBQUUsQ0FBb0IsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFBLHlCQUFpQixHQUFLO1FBQ2xFLFFBQVEsRUFBRSxDQUFvQixJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUEseUJBQWlCLEdBQUs7S0FDakQsQ0FBQztBQUN0QixDQUFDLENBQUM7QUFMVyxRQUFBLGlCQUFpQixxQkFLNUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQ29yZSB0eXBlIHV0aWxpdGllcyBmb3IgZmxleGlibGUgdHlwZSBjcmVhdGlvbiBhbmQgbWFuaXB1bGF0aW9uXHJcbiAqIE1pbmltdW0gVHlwZVNjcmlwdCBWZXJzaW9uOiA0LjVcclxuICovXHJcblxyXG4vKipcclxuICogTWFrZXMgc3BlY2lmaWVkIHByb3BlcnRpZXMgb3B0aW9uYWwgd2hpbGUga2VlcGluZyBvdGhlcnMgcmVxdWlyZWRcclxuICogQGV4YW1wbGVcclxuICogaW50ZXJmYWNlIFVzZXIgeyBpZDogc3RyaW5nOyBuYW1lOiBzdHJpbmc7IGVtYWlsOiBzdHJpbmc7IH1cclxuICogdHlwZSBQYXJ0aWFsVXNlciA9IE1ha2VQcm9wZXJ0aWVzT3B0aW9uYWw8VXNlciwgJ25hbWUnIHwgJ2VtYWlsJz47XHJcbiAqIFJlc3VsdDogeyBpZDogc3RyaW5nOyBuYW1lPzogc3RyaW5nOyBlbWFpbD86IHN0cmluZzsgfVxyXG4gKi9cclxuZXhwb3J0IHR5cGUgTWFrZVByb3BlcnRpZXNPcHRpb25hbDxULCBLIGV4dGVuZHMga2V5b2YgVCA9IG5ldmVyPiA9IHtcclxuICBbUCBpbiBrZXlvZiBUIGFzIFAgZXh0ZW5kcyBLID8gbmV2ZXIgOiBQXTogVFtQXTtcclxufSAmIHtcclxuICBbUCBpbiBLXT86IFRbUF07XHJcbn07XHJcblxyXG4vKipcclxuICogQ3JlYXRlcyBhIHR5cGUgd2l0aCBleHBsaWNpdGx5IGRlZmluZWQgcmVxdWlyZWQgYW5kIG9wdGlvbmFsIHByb3BlcnRpZXNcclxuICogU2FmZXIgYWx0ZXJuYXRpdmUgdG8gY29tcGxleCBkZWVwIHBhdGggbWFuaXB1bGF0aW9uXHJcbiAqIEBleGFtcGxlXHJcbiAqIGludGVyZmFjZSBQcm9kdWN0IHsgaWQ6IHN0cmluZzsgbmFtZTogc3RyaW5nOyBwcmljZTogbnVtYmVyOyBkZXNjcmlwdGlvbj86IHN0cmluZzsgfVxyXG4gKiB0eXBlIEJhc2ljUHJvZHVjdCA9IENvbmZpZ3VyYWJsZVR5cGU8UHJvZHVjdCwgJ2lkJyB8ICduYW1lJywgJ3ByaWNlJyB8ICdkZXNjcmlwdGlvbic+O1xyXG4gKiBSZXN1bHQ6IHsgaWQ6IHN0cmluZzsgbmFtZTogc3RyaW5nOyBwcmljZT86IG51bWJlcjsgZGVzY3JpcHRpb24/OiBzdHJpbmc7IH1cclxuICovXHJcbmV4cG9ydCB0eXBlIENvbmZpZ3VyYWJsZVR5cGU8XHJcbiAgVCxcclxuICBSZXF1aXJlZCBleHRlbmRzIGtleW9mIFQsXHJcbiAgT3B0aW9uYWwgZXh0ZW5kcyBrZXlvZiBUID0gbmV2ZXJcclxuPiA9IHtcclxuICBbUCBpbiBSZXF1aXJlZF06IFRbUF07XHJcbn0gJiB7XHJcbiAgW1AgaW4gT3B0aW9uYWxdPzogVFtQXTtcclxufTtcclxuXHJcbi8qKlxyXG4gKiBNYWtlcyBhbGwgcHJvcGVydGllcyBvcHRpb25hbCBleGNlcHQgc3BlY2lmaWVkIG9uZXNcclxuICogU2FmZSB2ZXJzaW9uIHRoYXQgZG9lc24ndCByZWx5IG9uIGNvbXBsZXggc3RyaW5nIG1hbmlwdWxhdGlvblxyXG4gKiBAZXhhbXBsZVxyXG4gKiBpbnRlcmZhY2UgU2V0dGluZ3MgeyBpZDogc3RyaW5nOyBjb25maWc6IHsgdGhlbWU6IHN0cmluZzsgfTsgZGF0YT86IGFueTsgfVxyXG4gKiB0eXBlIFBhcnRpYWxTZXR0aW5ncyA9IERlZXBQYXJ0aWFsRXhjZXB0PFNldHRpbmdzLCAnaWQnPjtcclxuICogUmVzdWx0OiB7IGlkOiBzdHJpbmc7IGNvbmZpZz86IHsgdGhlbWU/OiBzdHJpbmc7IH07IGRhdGE/OiBhbnk7IH1cclxuICovXHJcbmV4cG9ydCB0eXBlIERlZXBQYXJ0aWFsRXhjZXB0PFQsIEsgZXh0ZW5kcyBrZXlvZiBUPiA9IHtcclxuICBbUCBpbiBLXTogVFtQXTtcclxufSAmIHtcclxuICBbUCBpbiBFeGNsdWRlPGtleW9mIFQsIEs+XT86IFRbUF0gZXh0ZW5kcyBvYmplY3RcclxuICAgID8gRGVlcFBhcnRpYWxFeGNlcHQ8VFtQXSwga2V5b2YgVFtQXT5cclxuICAgIDogVFtQXTtcclxufTtcclxuXHJcbi8qKlxyXG4gKiBUeXBlIGJ1aWxkZXIgdXRpbGl0aWVzIGZvciBtb3JlIGV4cGxpY2l0IHR5cGUgY29uc3RydWN0aW9uXHJcbiAqIFVzZXMgc3RhYmxlIHR5cGUgc3lzdGVtIGZlYXR1cmVzXHJcbiAqL1xyXG5leHBvcnQgdHlwZSBSZXF1aXJlZFByb3BzPFQsIEsgZXh0ZW5kcyBrZXlvZiBUPiA9IHtcclxuICBbUCBpbiBLXTogVFtQXTtcclxufTtcclxuXHJcbmV4cG9ydCB0eXBlIE9wdGlvbmFsUHJvcHM8VCwgSyBleHRlbmRzIGtleW9mIFQ+ID0ge1xyXG4gIFtQIGluIEtdPzogVFtQXTtcclxufTtcclxuXHJcbi8qKlxyXG4gKiBUeXBlIGJ1aWxkZXIgZm9yIGNyZWF0aW5nIHR5cGVzIHdpdGggZXhwbGljaXQgcmVxdWlyZWQvb3B0aW9uYWwgcHJvcGVydGllc1xyXG4gKiBAZXhhbXBsZVxyXG4gKiBpbnRlcmZhY2UgVXNlciB7IGlkOiBzdHJpbmc7IG5hbWU6IHN0cmluZzsgZW1haWw6IHN0cmluZzsgcHJvZmlsZT86IGFueTsgfVxyXG4gKlxyXG4gKiBjb25zdCB1c2VyVHlwZSA9IGNyZWF0ZVR5cGVCdWlsZGVyPFVzZXI+KClcclxuICogICAucmVxdWlyZWQoWydpZCcsICdlbWFpbCddKVxyXG4gKiAgIC5vcHRpb25hbChbJ25hbWUnLCAncHJvZmlsZSddKTtcclxuICpcclxuICogdHlwZSBQYXJ0aWFsVXNlciA9IHR5cGVvZiB1c2VyVHlwZTtcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgVHlwZUJ1aWxkZXI8VD4ge1xyXG4gIHJlcXVpcmVkPEsgZXh0ZW5kcyBrZXlvZiBUPihrZXlzOiBLW10pOiBSZXF1aXJlZFByb3BzPFQsIEs+ICYgVHlwZUJ1aWxkZXI8VD47XHJcbiAgb3B0aW9uYWw8SyBleHRlbmRzIGtleW9mIFQ+KGtleXM6IEtbXSk6IE9wdGlvbmFsUHJvcHM8VCwgSz4gJiBUeXBlQnVpbGRlcjxUPjtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IGNyZWF0ZVR5cGVCdWlsZGVyID0gPFQ+KCk6IFR5cGVCdWlsZGVyPFQ+ID0+IHtcclxuICByZXR1cm4ge1xyXG4gICAgcmVxdWlyZWQ6IDxLIGV4dGVuZHMga2V5b2YgVD4oa2V5czogS1tdKSA9PiBjcmVhdGVUeXBlQnVpbGRlcjxUPigpLFxyXG4gICAgb3B0aW9uYWw6IDxLIGV4dGVuZHMga2V5b2YgVD4oa2V5czogS1tdKSA9PiBjcmVhdGVUeXBlQnVpbGRlcjxUPigpLFxyXG4gIH0gYXMgVHlwZUJ1aWxkZXI8VD47XHJcbn07XHJcbiJdfQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
tslib_1.__exportStar(require("./TypeUtils"), exports);
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsc0RBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9UeXBlVXRpbHMnOyJdfQ==
|
package/dist/es/index.js
CHANGED
|
@@ -10,4 +10,5 @@ export * from './enums';
|
|
|
10
10
|
export * from './interfaces';
|
|
11
11
|
export * from './maps';
|
|
12
12
|
export * from './static';
|
|
13
|
-
|
|
13
|
+
export * from './utils';
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7RUFJRTtBQUVGLGNBQWMsUUFBUSxDQUFDO0FBQ3ZCLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsUUFBUSxDQUFDO0FBQ3ZCLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIEJhY29uIENvcmVcclxuICogXHJcbiAqIEBtb2R1bGUgYmFjb24tY29yZVxyXG4qL1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9iYXNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9jb25jcmV0ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RhbnRzJztcclxuZXhwb3J0ICogZnJvbSAnLi9lbnVtcyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vaW50ZXJmYWNlcyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbWFwcyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vc3RhdGljJztcclxuZXhwb3J0ICogZnJvbSAnLi91dGlscyc7XHJcblxyXG4iXX0=
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core type utilities for flexible type creation and manipulation
|
|
3
|
+
* Minimum TypeScript Version: 4.5
|
|
4
|
+
*/
|
|
5
|
+
export var createTypeBuilder = function () {
|
|
6
|
+
return {
|
|
7
|
+
required: function (keys) { return createTypeBuilder(); },
|
|
8
|
+
optional: function (keys) { return createTypeBuilder(); },
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHlwZVV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxzL1R5cGVVdGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUE2RUgsTUFBTSxDQUFDLElBQU0saUJBQWlCLEdBQUc7SUFDL0IsT0FBTztRQUNMLFFBQVEsRUFBRSxVQUFvQixJQUFTLElBQUssT0FBQSxpQkFBaUIsRUFBSyxFQUF0QixDQUFzQjtRQUNsRSxRQUFRLEVBQUUsVUFBb0IsSUFBUyxJQUFLLE9BQUEsaUJBQWlCLEVBQUssRUFBdEIsQ0FBc0I7S0FDakQsQ0FBQztBQUN0QixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQ29yZSB0eXBlIHV0aWxpdGllcyBmb3IgZmxleGlibGUgdHlwZSBjcmVhdGlvbiBhbmQgbWFuaXB1bGF0aW9uXHJcbiAqIE1pbmltdW0gVHlwZVNjcmlwdCBWZXJzaW9uOiA0LjVcclxuICovXHJcblxyXG4vKipcclxuICogTWFrZXMgc3BlY2lmaWVkIHByb3BlcnRpZXMgb3B0aW9uYWwgd2hpbGUga2VlcGluZyBvdGhlcnMgcmVxdWlyZWRcclxuICogQGV4YW1wbGVcclxuICogaW50ZXJmYWNlIFVzZXIgeyBpZDogc3RyaW5nOyBuYW1lOiBzdHJpbmc7IGVtYWlsOiBzdHJpbmc7IH1cclxuICogdHlwZSBQYXJ0aWFsVXNlciA9IE1ha2VQcm9wZXJ0aWVzT3B0aW9uYWw8VXNlciwgJ25hbWUnIHwgJ2VtYWlsJz47XHJcbiAqIFJlc3VsdDogeyBpZDogc3RyaW5nOyBuYW1lPzogc3RyaW5nOyBlbWFpbD86IHN0cmluZzsgfVxyXG4gKi9cclxuZXhwb3J0IHR5cGUgTWFrZVByb3BlcnRpZXNPcHRpb25hbDxULCBLIGV4dGVuZHMga2V5b2YgVCA9IG5ldmVyPiA9IHtcclxuICBbUCBpbiBrZXlvZiBUIGFzIFAgZXh0ZW5kcyBLID8gbmV2ZXIgOiBQXTogVFtQXTtcclxufSAmIHtcclxuICBbUCBpbiBLXT86IFRbUF07XHJcbn07XHJcblxyXG4vKipcclxuICogQ3JlYXRlcyBhIHR5cGUgd2l0aCBleHBsaWNpdGx5IGRlZmluZWQgcmVxdWlyZWQgYW5kIG9wdGlvbmFsIHByb3BlcnRpZXNcclxuICogU2FmZXIgYWx0ZXJuYXRpdmUgdG8gY29tcGxleCBkZWVwIHBhdGggbWFuaXB1bGF0aW9uXHJcbiAqIEBleGFtcGxlXHJcbiAqIGludGVyZmFjZSBQcm9kdWN0IHsgaWQ6IHN0cmluZzsgbmFtZTogc3RyaW5nOyBwcmljZTogbnVtYmVyOyBkZXNjcmlwdGlvbj86IHN0cmluZzsgfVxyXG4gKiB0eXBlIEJhc2ljUHJvZHVjdCA9IENvbmZpZ3VyYWJsZVR5cGU8UHJvZHVjdCwgJ2lkJyB8ICduYW1lJywgJ3ByaWNlJyB8ICdkZXNjcmlwdGlvbic+O1xyXG4gKiBSZXN1bHQ6IHsgaWQ6IHN0cmluZzsgbmFtZTogc3RyaW5nOyBwcmljZT86IG51bWJlcjsgZGVzY3JpcHRpb24/OiBzdHJpbmc7IH1cclxuICovXHJcbmV4cG9ydCB0eXBlIENvbmZpZ3VyYWJsZVR5cGU8XHJcbiAgVCxcclxuICBSZXF1aXJlZCBleHRlbmRzIGtleW9mIFQsXHJcbiAgT3B0aW9uYWwgZXh0ZW5kcyBrZXlvZiBUID0gbmV2ZXJcclxuPiA9IHtcclxuICBbUCBpbiBSZXF1aXJlZF06IFRbUF07XHJcbn0gJiB7XHJcbiAgW1AgaW4gT3B0aW9uYWxdPzogVFtQXTtcclxufTtcclxuXHJcbi8qKlxyXG4gKiBNYWtlcyBhbGwgcHJvcGVydGllcyBvcHRpb25hbCBleGNlcHQgc3BlY2lmaWVkIG9uZXNcclxuICogU2FmZSB2ZXJzaW9uIHRoYXQgZG9lc24ndCByZWx5IG9uIGNvbXBsZXggc3RyaW5nIG1hbmlwdWxhdGlvblxyXG4gKiBAZXhhbXBsZVxyXG4gKiBpbnRlcmZhY2UgU2V0dGluZ3MgeyBpZDogc3RyaW5nOyBjb25maWc6IHsgdGhlbWU6IHN0cmluZzsgfTsgZGF0YT86IGFueTsgfVxyXG4gKiB0eXBlIFBhcnRpYWxTZXR0aW5ncyA9IERlZXBQYXJ0aWFsRXhjZXB0PFNldHRpbmdzLCAnaWQnPjtcclxuICogUmVzdWx0OiB7IGlkOiBzdHJpbmc7IGNvbmZpZz86IHsgdGhlbWU/OiBzdHJpbmc7IH07IGRhdGE/OiBhbnk7IH1cclxuICovXHJcbmV4cG9ydCB0eXBlIERlZXBQYXJ0aWFsRXhjZXB0PFQsIEsgZXh0ZW5kcyBrZXlvZiBUPiA9IHtcclxuICBbUCBpbiBLXTogVFtQXTtcclxufSAmIHtcclxuICBbUCBpbiBFeGNsdWRlPGtleW9mIFQsIEs+XT86IFRbUF0gZXh0ZW5kcyBvYmplY3RcclxuICAgID8gRGVlcFBhcnRpYWxFeGNlcHQ8VFtQXSwga2V5b2YgVFtQXT5cclxuICAgIDogVFtQXTtcclxufTtcclxuXHJcbi8qKlxyXG4gKiBUeXBlIGJ1aWxkZXIgdXRpbGl0aWVzIGZvciBtb3JlIGV4cGxpY2l0IHR5cGUgY29uc3RydWN0aW9uXHJcbiAqIFVzZXMgc3RhYmxlIHR5cGUgc3lzdGVtIGZlYXR1cmVzXHJcbiAqL1xyXG5leHBvcnQgdHlwZSBSZXF1aXJlZFByb3BzPFQsIEsgZXh0ZW5kcyBrZXlvZiBUPiA9IHtcclxuICBbUCBpbiBLXTogVFtQXTtcclxufTtcclxuXHJcbmV4cG9ydCB0eXBlIE9wdGlvbmFsUHJvcHM8VCwgSyBleHRlbmRzIGtleW9mIFQ+ID0ge1xyXG4gIFtQIGluIEtdPzogVFtQXTtcclxufTtcclxuXHJcbi8qKlxyXG4gKiBUeXBlIGJ1aWxkZXIgZm9yIGNyZWF0aW5nIHR5cGVzIHdpdGggZXhwbGljaXQgcmVxdWlyZWQvb3B0aW9uYWwgcHJvcGVydGllc1xyXG4gKiBAZXhhbXBsZVxyXG4gKiBpbnRlcmZhY2UgVXNlciB7IGlkOiBzdHJpbmc7IG5hbWU6IHN0cmluZzsgZW1haWw6IHN0cmluZzsgcHJvZmlsZT86IGFueTsgfVxyXG4gKlxyXG4gKiBjb25zdCB1c2VyVHlwZSA9IGNyZWF0ZVR5cGVCdWlsZGVyPFVzZXI+KClcclxuICogICAucmVxdWlyZWQoWydpZCcsICdlbWFpbCddKVxyXG4gKiAgIC5vcHRpb25hbChbJ25hbWUnLCAncHJvZmlsZSddKTtcclxuICpcclxuICogdHlwZSBQYXJ0aWFsVXNlciA9IHR5cGVvZiB1c2VyVHlwZTtcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgVHlwZUJ1aWxkZXI8VD4ge1xyXG4gIHJlcXVpcmVkPEsgZXh0ZW5kcyBrZXlvZiBUPihrZXlzOiBLW10pOiBSZXF1aXJlZFByb3BzPFQsIEs+ICYgVHlwZUJ1aWxkZXI8VD47XHJcbiAgb3B0aW9uYWw8SyBleHRlbmRzIGtleW9mIFQ+KGtleXM6IEtbXSk6IE9wdGlvbmFsUHJvcHM8VCwgSz4gJiBUeXBlQnVpbGRlcjxUPjtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IGNyZWF0ZVR5cGVCdWlsZGVyID0gPFQ+KCk6IFR5cGVCdWlsZGVyPFQ+ID0+IHtcclxuICByZXR1cm4ge1xyXG4gICAgcmVxdWlyZWQ6IDxLIGV4dGVuZHMga2V5b2YgVD4oa2V5czogS1tdKSA9PiBjcmVhdGVUeXBlQnVpbGRlcjxUPigpLFxyXG4gICAgb3B0aW9uYWw6IDxLIGV4dGVuZHMga2V5b2YgVD4oa2V5czogS1tdKSA9PiBjcmVhdGVUeXBlQnVpbGRlcjxUPigpLFxyXG4gIH0gYXMgVHlwZUJ1aWxkZXI8VD47XHJcbn07XHJcbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './TypeUtils';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxhQUFhLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL1R5cGVVdGlscyc7Il19
|
package/dist/types/index.d.ts
CHANGED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core type utilities for flexible type creation and manipulation
|
|
3
|
+
* Minimum TypeScript Version: 4.5
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Makes specified properties optional while keeping others required
|
|
7
|
+
* @example
|
|
8
|
+
* interface User { id: string; name: string; email: string; }
|
|
9
|
+
* type PartialUser = MakePropertiesOptional<User, 'name' | 'email'>;
|
|
10
|
+
* Result: { id: string; name?: string; email?: string; }
|
|
11
|
+
*/
|
|
12
|
+
export type MakePropertiesOptional<T, K extends keyof T = never> = {
|
|
13
|
+
[P in keyof T as P extends K ? never : P]: T[P];
|
|
14
|
+
} & {
|
|
15
|
+
[P in K]?: T[P];
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Creates a type with explicitly defined required and optional properties
|
|
19
|
+
* Safer alternative to complex deep path manipulation
|
|
20
|
+
* @example
|
|
21
|
+
* interface Product { id: string; name: string; price: number; description?: string; }
|
|
22
|
+
* type BasicProduct = ConfigurableType<Product, 'id' | 'name', 'price' | 'description'>;
|
|
23
|
+
* Result: { id: string; name: string; price?: number; description?: string; }
|
|
24
|
+
*/
|
|
25
|
+
export type ConfigurableType<T, Required extends keyof T, Optional extends keyof T = never> = {
|
|
26
|
+
[P in Required]: T[P];
|
|
27
|
+
} & {
|
|
28
|
+
[P in Optional]?: T[P];
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Makes all properties optional except specified ones
|
|
32
|
+
* Safe version that doesn't rely on complex string manipulation
|
|
33
|
+
* @example
|
|
34
|
+
* interface Settings { id: string; config: { theme: string; }; data?: any; }
|
|
35
|
+
* type PartialSettings = DeepPartialExcept<Settings, 'id'>;
|
|
36
|
+
* Result: { id: string; config?: { theme?: string; }; data?: any; }
|
|
37
|
+
*/
|
|
38
|
+
export type DeepPartialExcept<T, K extends keyof T> = {
|
|
39
|
+
[P in K]: T[P];
|
|
40
|
+
} & {
|
|
41
|
+
[P in Exclude<keyof T, K>]?: T[P] extends object ? DeepPartialExcept<T[P], keyof T[P]> : T[P];
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* Type builder utilities for more explicit type construction
|
|
45
|
+
* Uses stable type system features
|
|
46
|
+
*/
|
|
47
|
+
export type RequiredProps<T, K extends keyof T> = {
|
|
48
|
+
[P in K]: T[P];
|
|
49
|
+
};
|
|
50
|
+
export type OptionalProps<T, K extends keyof T> = {
|
|
51
|
+
[P in K]?: T[P];
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* Type builder for creating types with explicit required/optional properties
|
|
55
|
+
* @example
|
|
56
|
+
* interface User { id: string; name: string; email: string; profile?: any; }
|
|
57
|
+
*
|
|
58
|
+
* const userType = createTypeBuilder<User>()
|
|
59
|
+
* .required(['id', 'email'])
|
|
60
|
+
* .optional(['name', 'profile']);
|
|
61
|
+
*
|
|
62
|
+
* type PartialUser = typeof userType;
|
|
63
|
+
*/
|
|
64
|
+
export interface TypeBuilder<T> {
|
|
65
|
+
required<K extends keyof T>(keys: K[]): RequiredProps<T, K> & TypeBuilder<T>;
|
|
66
|
+
optional<K extends keyof T>(keys: K[]): OptionalProps<T, K> & TypeBuilder<T>;
|
|
67
|
+
}
|
|
68
|
+
export declare const createTypeBuilder: <T>() => TypeBuilder<T>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './TypeUtils';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@adonoustech/bacon-core",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "5.0.0",
|
|
4
4
|
"scripts": {
|
|
5
5
|
"build:cjs": "tsc -p tsconfig.cjs.json",
|
|
6
6
|
"build:es": "tsc -p tsconfig.es.json",
|
|
@@ -39,5 +39,5 @@
|
|
|
39
39
|
"bugs": {
|
|
40
40
|
"url": "https://github.com/AdonousTech/bacon-core/issues"
|
|
41
41
|
},
|
|
42
|
-
"gitHead": "
|
|
42
|
+
"gitHead": "1a630568fb62a64a25f5f750e3c498281ba17711"
|
|
43
43
|
}
|
package/src/index.ts
CHANGED
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core type utilities for flexible type creation and manipulation
|
|
3
|
+
* Minimum TypeScript Version: 4.5
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Makes specified properties optional while keeping others required
|
|
8
|
+
* @example
|
|
9
|
+
* interface User { id: string; name: string; email: string; }
|
|
10
|
+
* type PartialUser = MakePropertiesOptional<User, 'name' | 'email'>;
|
|
11
|
+
* Result: { id: string; name?: string; email?: string; }
|
|
12
|
+
*/
|
|
13
|
+
export type MakePropertiesOptional<T, K extends keyof T = never> = {
|
|
14
|
+
[P in keyof T as P extends K ? never : P]: T[P];
|
|
15
|
+
} & {
|
|
16
|
+
[P in K]?: T[P];
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Creates a type with explicitly defined required and optional properties
|
|
21
|
+
* Safer alternative to complex deep path manipulation
|
|
22
|
+
* @example
|
|
23
|
+
* interface Product { id: string; name: string; price: number; description?: string; }
|
|
24
|
+
* type BasicProduct = ConfigurableType<Product, 'id' | 'name', 'price' | 'description'>;
|
|
25
|
+
* Result: { id: string; name: string; price?: number; description?: string; }
|
|
26
|
+
*/
|
|
27
|
+
export type ConfigurableType<
|
|
28
|
+
T,
|
|
29
|
+
Required extends keyof T,
|
|
30
|
+
Optional extends keyof T = never
|
|
31
|
+
> = {
|
|
32
|
+
[P in Required]: T[P];
|
|
33
|
+
} & {
|
|
34
|
+
[P in Optional]?: T[P];
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Makes all properties optional except specified ones
|
|
39
|
+
* Safe version that doesn't rely on complex string manipulation
|
|
40
|
+
* @example
|
|
41
|
+
* interface Settings { id: string; config: { theme: string; }; data?: any; }
|
|
42
|
+
* type PartialSettings = DeepPartialExcept<Settings, 'id'>;
|
|
43
|
+
* Result: { id: string; config?: { theme?: string; }; data?: any; }
|
|
44
|
+
*/
|
|
45
|
+
export type DeepPartialExcept<T, K extends keyof T> = {
|
|
46
|
+
[P in K]: T[P];
|
|
47
|
+
} & {
|
|
48
|
+
[P in Exclude<keyof T, K>]?: T[P] extends object
|
|
49
|
+
? DeepPartialExcept<T[P], keyof T[P]>
|
|
50
|
+
: T[P];
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Type builder utilities for more explicit type construction
|
|
55
|
+
* Uses stable type system features
|
|
56
|
+
*/
|
|
57
|
+
export type RequiredProps<T, K extends keyof T> = {
|
|
58
|
+
[P in K]: T[P];
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
export type OptionalProps<T, K extends keyof T> = {
|
|
62
|
+
[P in K]?: T[P];
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Type builder for creating types with explicit required/optional properties
|
|
67
|
+
* @example
|
|
68
|
+
* interface User { id: string; name: string; email: string; profile?: any; }
|
|
69
|
+
*
|
|
70
|
+
* const userType = createTypeBuilder<User>()
|
|
71
|
+
* .required(['id', 'email'])
|
|
72
|
+
* .optional(['name', 'profile']);
|
|
73
|
+
*
|
|
74
|
+
* type PartialUser = typeof userType;
|
|
75
|
+
*/
|
|
76
|
+
export interface TypeBuilder<T> {
|
|
77
|
+
required<K extends keyof T>(keys: K[]): RequiredProps<T, K> & TypeBuilder<T>;
|
|
78
|
+
optional<K extends keyof T>(keys: K[]): OptionalProps<T, K> & TypeBuilder<T>;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
export const createTypeBuilder = <T>(): TypeBuilder<T> => {
|
|
82
|
+
return {
|
|
83
|
+
required: <K extends keyof T>(keys: K[]) => createTypeBuilder<T>(),
|
|
84
|
+
optional: <K extends keyof T>(keys: K[]) => createTypeBuilder<T>(),
|
|
85
|
+
} as TypeBuilder<T>;
|
|
86
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './TypeUtils';
|