@skmtc/core 0.0.366 → 0.0.367

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.
@@ -48,7 +48,7 @@ export class FunctionParameter {
48
48
  .with({ type: 'void' }, () => List.toEmpty())
49
49
  .with({ type: 'regular' }, ({ name }) => List.toSingle(name))
50
50
  .with({ type: 'destructured' }, ({ typeDefinition }) => {
51
- return List.fromRecord(typeDefinition.value.objectProperties?.properties);
51
+ return List.fromKeys(typeDefinition.value.objectProperties?.properties).toObjectPlain();
52
52
  })
53
53
  .exhaustive();
54
54
  }
@@ -74,13 +74,7 @@ export class FunctionParameter {
74
74
  }
75
75
  }
76
76
  const toDestructured = (typeDefinition) => {
77
- const { values } = List.fromRecord(typeDefinition.value.objectProperties?.properties);
78
- const camelised = values
79
- .map(value => value.toString())
80
- .map(value => {
81
- return isIdentifierName(value)
82
- ? value
83
- : List.toKeyValue(value, camelCase(value));
77
+ return List.fromKeys(typeDefinition.value.objectProperties?.properties).toObject(key => {
78
+ return isIdentifierName(key) ? key : List.toKeyValue(key, camelCase(key));
84
79
  });
85
- return List.toObject(camelised);
86
80
  };
@@ -1,4 +1,8 @@
1
1
  import type { Stringable } from '../dsl/Stringable.js';
2
+ export type ListObject<V extends Stringable> = List<V[], ', ', '{}'>;
3
+ export type ListLines<V extends Stringable> = List<V[], '\n', 'none'>;
4
+ export type ListArray<V extends Stringable> = List<V[], ', ', '[]'>;
5
+ export type ListParams<V extends Stringable> = List<V[], ', ', '()'>;
2
6
  type BookendsType = '[]' | '{}' | '()' | '<>' | 'none';
3
7
  type ConstructorOptions<Separator extends string = ', ', Bookends extends BookendsType = 'none'> = {
4
8
  separator?: Separator;
@@ -47,7 +51,7 @@ export declare class List<Values extends Stringable[] = Stringable[], Separator
47
51
  * @param record
48
52
  * @returns `record` with `undefined` values filtered out
49
53
  */
50
- static toFilteredRecord: (record: Record<string, undefined | Stringable | Stringable[] | List>) => List<Stringable[], ", ", "{}">;
54
+ static toFilteredRecord: (record: Record<string, undefined | Stringable | Stringable[] | List>) => ListObject<List<[string, Stringable | List<Stringable[], string, BookendsType> | Stringable[]], ": ", "none">>;
51
55
  /**
52
56
  * Join `key` and `value` using `: ` as separator
53
57
  * @param key
@@ -67,31 +71,32 @@ export declare class List<Values extends Stringable[] = Stringable[], Separator
67
71
  * @param values
68
72
  * @returns `values` joined with `, ` as separator and wrapped in `{` and `}`
69
73
  */
70
- static toObject: (values: (Stringable | undefined)[]) => List<Stringable[], ", ", "{}">;
74
+ static toObject: <V extends Stringable>(values: (V | undefined)[]) => ListObject<V>;
71
75
  /**
72
76
  * Join `values` using `, ` as separator and wrap in `[` and `]`
73
77
  * @param values
74
78
  * @returns `values` joined with `, ` as separator and wrapped in `{` and `}`
75
79
  */
76
- static toArray: (values: (Stringable | undefined)[]) => List<Stringable[], ", ", "[]">;
80
+ static toArray: <V extends Stringable>(values: (V | undefined)[]) => ListArray<V>;
77
81
  /**
78
82
  * Join `values` using `, ` as separator and wrap in `(` and `)`
79
83
  * @param values
80
84
  * @returns `values` joined with `, ` as separator and wrapped in `(` and `)`
81
85
  */
82
- static toParams: (values: (Stringable | undefined)[]) => List<Stringable[], ", ", "()">;
86
+ static toParams: <V extends Stringable>(values: (V | undefined)[]) => ListParams<V>;
83
87
  /**
84
88
  * Join `values` using `\n` as separator without a wrapper
85
89
  * @param values
86
90
  * @returns `values` joined with `\n` as separator without a wrapper
87
91
  */
88
- static toLines: (values: (Stringable | undefined)[]) => List<Stringable[], "\n", "none">;
92
+ static toLines: <V extends Stringable>(values: (V | undefined)[]) => ListLines<V>;
89
93
  /**
90
- * Create a List using the keys of a record
94
+ * Create a KeyList using the keys of @param record
95
+ * @afdafg
91
96
  * @param record
92
- * @returns List of record keys
97
+ * @returns KeyList
93
98
  */
94
- static fromRecord: (record: Record<string, Stringable> | undefined) => List<string[], ", ", "none">;
99
+ static fromKeys: (record: Record<string, Stringable> | undefined) => KeyList;
95
100
  /**
96
101
  * Create a keyValue pair if `value` is not undefined and is not an empty array or List.
97
102
  * Return `undefined` otherwise.
@@ -109,5 +114,14 @@ export declare class List<Values extends Stringable[] = Stringable[], Separator
109
114
  */
110
115
  static hasValue: (value: undefined | Stringable | Stringable[] | List) => value is Stringable | Stringable[] | List;
111
116
  }
117
+ type MapFn<V extends Stringable> = (key: string, index: number) => V;
118
+ export declare class KeyList {
119
+ keys: string[];
120
+ constructor(keys: string[]);
121
+ toObject<V extends Stringable>(mapFn: MapFn<V>): ListObject<V>;
122
+ toObjectPlain(): ListObject<string>;
123
+ toLines<V extends Stringable>(mapFn: MapFn<V>): ListLines<V>;
124
+ toLinesPlain(): ListLines<string>;
125
+ }
112
126
  export {};
113
127
  //# sourceMappingURL=List.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"List.d.ts","sourceRoot":"","sources":["../../src/typescript/List.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"List.d.ts","sourceRoot":"","sources":["../../src/typescript/List.ts"],"names":[],"mappings":"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"}
@@ -194,16 +194,17 @@ Object.defineProperty(List, "toLines", {
194
194
  }
195
195
  });
196
196
  /**
197
- * Create a List using the keys of a record
197
+ * Create a KeyList using the keys of @param record
198
+ * @afdafg
198
199
  * @param record
199
- * @returns List of record keys
200
+ * @returns KeyList
200
201
  */
201
- Object.defineProperty(List, "fromRecord", {
202
+ Object.defineProperty(List, "fromKeys", {
202
203
  enumerable: true,
203
204
  configurable: true,
204
205
  writable: true,
205
206
  value: (record) => {
206
- return new List(Object.keys(record ?? {}));
207
+ return new KeyList(Object.keys(record ?? {}));
207
208
  }
208
209
  });
209
210
  /**
@@ -246,3 +247,26 @@ Object.defineProperty(List, "hasValue", {
246
247
  return true;
247
248
  }
248
249
  });
250
+ export class KeyList {
251
+ constructor(keys) {
252
+ Object.defineProperty(this, "keys", {
253
+ enumerable: true,
254
+ configurable: true,
255
+ writable: true,
256
+ value: void 0
257
+ });
258
+ this.keys = keys;
259
+ }
260
+ toObject(mapFn) {
261
+ return List.toObject(this.keys.map((key, index) => mapFn(key, index)));
262
+ }
263
+ toObjectPlain() {
264
+ return List.toObject(this.keys);
265
+ }
266
+ toLines(mapFn) {
267
+ return List.toLines(this.keys.map((key, index) => mapFn(key, index)));
268
+ }
269
+ toLinesPlain() {
270
+ return List.toLines(this.keys);
271
+ }
272
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skmtc/core",
3
- "version": "0.0.366",
3
+ "version": "0.0.367",
4
4
  "main": "./script/mod.js",
5
5
  "module": "./esm/mod.js",
6
6
  "exports": {
@@ -51,7 +51,7 @@ class FunctionParameter {
51
51
  .with({ type: 'void' }, () => List_js_1.List.toEmpty())
52
52
  .with({ type: 'regular' }, ({ name }) => List_js_1.List.toSingle(name))
53
53
  .with({ type: 'destructured' }, ({ typeDefinition }) => {
54
- return List_js_1.List.fromRecord(typeDefinition.value.objectProperties?.properties);
54
+ return List_js_1.List.fromKeys(typeDefinition.value.objectProperties?.properties).toObjectPlain();
55
55
  })
56
56
  .exhaustive();
57
57
  }
@@ -78,13 +78,7 @@ class FunctionParameter {
78
78
  }
79
79
  exports.FunctionParameter = FunctionParameter;
80
80
  const toDestructured = (typeDefinition) => {
81
- const { values } = List_js_1.List.fromRecord(typeDefinition.value.objectProperties?.properties);
82
- const camelised = values
83
- .map(value => value.toString())
84
- .map(value => {
85
- return (0, helper_validator_identifier_1.isIdentifierName)(value)
86
- ? value
87
- : List_js_1.List.toKeyValue(value, (0, lodash_es_1.camelCase)(value));
81
+ return List_js_1.List.fromKeys(typeDefinition.value.objectProperties?.properties).toObject(key => {
82
+ return (0, helper_validator_identifier_1.isIdentifierName)(key) ? key : List_js_1.List.toKeyValue(key, (0, lodash_es_1.camelCase)(key));
88
83
  });
89
- return List_js_1.List.toObject(camelised);
90
84
  };
@@ -1,4 +1,8 @@
1
1
  import type { Stringable } from '../dsl/Stringable.js';
2
+ export type ListObject<V extends Stringable> = List<V[], ', ', '{}'>;
3
+ export type ListLines<V extends Stringable> = List<V[], '\n', 'none'>;
4
+ export type ListArray<V extends Stringable> = List<V[], ', ', '[]'>;
5
+ export type ListParams<V extends Stringable> = List<V[], ', ', '()'>;
2
6
  type BookendsType = '[]' | '{}' | '()' | '<>' | 'none';
3
7
  type ConstructorOptions<Separator extends string = ', ', Bookends extends BookendsType = 'none'> = {
4
8
  separator?: Separator;
@@ -47,7 +51,7 @@ export declare class List<Values extends Stringable[] = Stringable[], Separator
47
51
  * @param record
48
52
  * @returns `record` with `undefined` values filtered out
49
53
  */
50
- static toFilteredRecord: (record: Record<string, undefined | Stringable | Stringable[] | List>) => List<Stringable[], ", ", "{}">;
54
+ static toFilteredRecord: (record: Record<string, undefined | Stringable | Stringable[] | List>) => ListObject<List<[string, Stringable | List<Stringable[], string, BookendsType> | Stringable[]], ": ", "none">>;
51
55
  /**
52
56
  * Join `key` and `value` using `: ` as separator
53
57
  * @param key
@@ -67,31 +71,32 @@ export declare class List<Values extends Stringable[] = Stringable[], Separator
67
71
  * @param values
68
72
  * @returns `values` joined with `, ` as separator and wrapped in `{` and `}`
69
73
  */
70
- static toObject: (values: (Stringable | undefined)[]) => List<Stringable[], ", ", "{}">;
74
+ static toObject: <V extends Stringable>(values: (V | undefined)[]) => ListObject<V>;
71
75
  /**
72
76
  * Join `values` using `, ` as separator and wrap in `[` and `]`
73
77
  * @param values
74
78
  * @returns `values` joined with `, ` as separator and wrapped in `{` and `}`
75
79
  */
76
- static toArray: (values: (Stringable | undefined)[]) => List<Stringable[], ", ", "[]">;
80
+ static toArray: <V extends Stringable>(values: (V | undefined)[]) => ListArray<V>;
77
81
  /**
78
82
  * Join `values` using `, ` as separator and wrap in `(` and `)`
79
83
  * @param values
80
84
  * @returns `values` joined with `, ` as separator and wrapped in `(` and `)`
81
85
  */
82
- static toParams: (values: (Stringable | undefined)[]) => List<Stringable[], ", ", "()">;
86
+ static toParams: <V extends Stringable>(values: (V | undefined)[]) => ListParams<V>;
83
87
  /**
84
88
  * Join `values` using `\n` as separator without a wrapper
85
89
  * @param values
86
90
  * @returns `values` joined with `\n` as separator without a wrapper
87
91
  */
88
- static toLines: (values: (Stringable | undefined)[]) => List<Stringable[], "\n", "none">;
92
+ static toLines: <V extends Stringable>(values: (V | undefined)[]) => ListLines<V>;
89
93
  /**
90
- * Create a List using the keys of a record
94
+ * Create a KeyList using the keys of @param record
95
+ * @afdafg
91
96
  * @param record
92
- * @returns List of record keys
97
+ * @returns KeyList
93
98
  */
94
- static fromRecord: (record: Record<string, Stringable> | undefined) => List<string[], ", ", "none">;
99
+ static fromKeys: (record: Record<string, Stringable> | undefined) => KeyList;
95
100
  /**
96
101
  * Create a keyValue pair if `value` is not undefined and is not an empty array or List.
97
102
  * Return `undefined` otherwise.
@@ -109,5 +114,14 @@ export declare class List<Values extends Stringable[] = Stringable[], Separator
109
114
  */
110
115
  static hasValue: (value: undefined | Stringable | Stringable[] | List) => value is Stringable | Stringable[] | List;
111
116
  }
117
+ type MapFn<V extends Stringable> = (key: string, index: number) => V;
118
+ export declare class KeyList {
119
+ keys: string[];
120
+ constructor(keys: string[]);
121
+ toObject<V extends Stringable>(mapFn: MapFn<V>): ListObject<V>;
122
+ toObjectPlain(): ListObject<string>;
123
+ toLines<V extends Stringable>(mapFn: MapFn<V>): ListLines<V>;
124
+ toLinesPlain(): ListLines<string>;
125
+ }
112
126
  export {};
113
127
  //# sourceMappingURL=List.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"List.d.ts","sourceRoot":"","sources":["../../src/typescript/List.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"List.d.ts","sourceRoot":"","sources":["../../src/typescript/List.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.List = void 0;
3
+ exports.KeyList = exports.List = void 0;
4
4
  const ts_pattern_1 = require("ts-pattern");
5
5
  class List {
6
6
  constructor(values, { separator, bookends } = {}) {
@@ -198,16 +198,17 @@ Object.defineProperty(List, "toLines", {
198
198
  }
199
199
  });
200
200
  /**
201
- * Create a List using the keys of a record
201
+ * Create a KeyList using the keys of @param record
202
+ * @afdafg
202
203
  * @param record
203
- * @returns List of record keys
204
+ * @returns KeyList
204
205
  */
205
- Object.defineProperty(List, "fromRecord", {
206
+ Object.defineProperty(List, "fromKeys", {
206
207
  enumerable: true,
207
208
  configurable: true,
208
209
  writable: true,
209
210
  value: (record) => {
210
- return new List(Object.keys(record ?? {}));
211
+ return new KeyList(Object.keys(record ?? {}));
211
212
  }
212
213
  });
213
214
  /**
@@ -250,3 +251,27 @@ Object.defineProperty(List, "hasValue", {
250
251
  return true;
251
252
  }
252
253
  });
254
+ class KeyList {
255
+ constructor(keys) {
256
+ Object.defineProperty(this, "keys", {
257
+ enumerable: true,
258
+ configurable: true,
259
+ writable: true,
260
+ value: void 0
261
+ });
262
+ this.keys = keys;
263
+ }
264
+ toObject(mapFn) {
265
+ return List.toObject(this.keys.map((key, index) => mapFn(key, index)));
266
+ }
267
+ toObjectPlain() {
268
+ return List.toObject(this.keys);
269
+ }
270
+ toLines(mapFn) {
271
+ return List.toLines(this.keys.map((key, index) => mapFn(key, index)));
272
+ }
273
+ toLinesPlain() {
274
+ return List.toLines(this.keys);
275
+ }
276
+ }
277
+ exports.KeyList = KeyList;