@cratis/fundamentals 6.0.1 → 6.1.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.
Files changed (125) hide show
  1. package/Constructor.ts +2 -1
  2. package/Guid.ts +17 -2
  3. package/IEquatable.ts +1 -1
  4. package/JsonSerializer.ts +8 -6
  5. package/PropertyAccessor.ts +3 -1
  6. package/PropertyPathResolverProxyHandler.ts +3 -0
  7. package/README.md +1 -0
  8. package/derivedTypeDecorator.ts +3 -0
  9. package/dist/Constructor.d.ts +2 -0
  10. package/dist/Constructor.d.ts.map +1 -0
  11. package/dist/Constructor.js +2 -0
  12. package/dist/Constructor.js.map +1 -0
  13. package/dist/DerivedType.d.ts +6 -0
  14. package/dist/DerivedType.d.ts.map +1 -0
  15. package/dist/DerivedType.js +9 -0
  16. package/dist/DerivedType.js.map +1 -0
  17. package/dist/Field.d.ts +9 -0
  18. package/dist/Field.d.ts.map +1 -0
  19. package/dist/Field.js +13 -0
  20. package/dist/Field.js.map +1 -0
  21. package/dist/Fields.d.ts +8 -0
  22. package/dist/Fields.d.ts.map +1 -0
  23. package/dist/Fields.js +23 -0
  24. package/dist/Fields.js.map +1 -0
  25. package/dist/Guid.d.ts +14 -0
  26. package/dist/Guid.d.ts.map +1 -0
  27. package/dist/Guid.js +81 -0
  28. package/dist/Guid.js.map +1 -0
  29. package/dist/IEquatable.d.ts +4 -0
  30. package/dist/IEquatable.d.ts.map +1 -0
  31. package/dist/IEquatable.js +2 -0
  32. package/dist/IEquatable.js.map +1 -0
  33. package/dist/JsonSerializer.d.ts +10 -0
  34. package/dist/JsonSerializer.d.ts.map +1 -0
  35. package/dist/JsonSerializer.js +118 -0
  36. package/dist/JsonSerializer.js.map +1 -0
  37. package/dist/PropertyAccessor.d.ts +2 -0
  38. package/dist/PropertyAccessor.d.ts.map +1 -0
  39. package/dist/PropertyAccessor.js +2 -0
  40. package/dist/PropertyAccessor.js.map +1 -0
  41. package/dist/PropertyAccessorDescriptor.d.ts +10 -0
  42. package/dist/PropertyAccessorDescriptor.d.ts.map +1 -0
  43. package/dist/PropertyAccessorDescriptor.js +18 -0
  44. package/dist/PropertyAccessorDescriptor.js.map +1 -0
  45. package/dist/PropertyPathResolverProxyHandler.d.ts +12 -0
  46. package/dist/PropertyPathResolverProxyHandler.d.ts.map +1 -0
  47. package/dist/PropertyPathResolverProxyHandler.js +28 -0
  48. package/dist/PropertyPathResolverProxyHandler.js.map +1 -0
  49. package/dist/cjs/Constructor.d.ts +1 -1
  50. package/dist/cjs/Constructor.d.ts.map +1 -1
  51. package/dist/cjs/Field.js +4 -0
  52. package/dist/cjs/Field.js.map +1 -1
  53. package/dist/cjs/Guid.d.ts +2 -1
  54. package/dist/cjs/Guid.d.ts.map +1 -1
  55. package/dist/cjs/Guid.js +14 -6
  56. package/dist/cjs/Guid.js.map +1 -1
  57. package/dist/cjs/IEquatable.d.ts +1 -1
  58. package/dist/cjs/IEquatable.d.ts.map +1 -1
  59. package/dist/cjs/JsonSerializer.d.ts +4 -4
  60. package/dist/cjs/JsonSerializer.d.ts.map +1 -1
  61. package/dist/cjs/JsonSerializer.js +3 -4
  62. package/dist/cjs/JsonSerializer.js.map +1 -1
  63. package/dist/cjs/PropertyAccessor.d.ts +1 -1
  64. package/dist/cjs/PropertyAccessor.d.ts.map +1 -1
  65. package/dist/cjs/PropertyAccessorDescriptor.js +2 -0
  66. package/dist/cjs/PropertyAccessorDescriptor.js.map +1 -1
  67. package/dist/cjs/PropertyPathResolverProxyHandler.d.ts.map +1 -1
  68. package/dist/cjs/PropertyPathResolverProxyHandler.js +3 -2
  69. package/dist/cjs/PropertyPathResolverProxyHandler.js.map +1 -1
  70. package/dist/cjs/derivedTypeDecorator.d.ts.map +1 -1
  71. package/dist/cjs/derivedTypeDecorator.js.map +1 -1
  72. package/dist/cjs/fieldDecorator.d.ts.map +1 -1
  73. package/dist/cjs/fieldDecorator.js.map +1 -1
  74. package/dist/derivedTypeDecorator.d.ts +3 -0
  75. package/dist/derivedTypeDecorator.d.ts.map +1 -0
  76. package/dist/derivedTypeDecorator.js +8 -0
  77. package/dist/derivedTypeDecorator.js.map +1 -0
  78. package/dist/esm/Constructor.d.ts +1 -1
  79. package/dist/esm/Constructor.d.ts.map +1 -1
  80. package/dist/esm/Field.js +4 -0
  81. package/dist/esm/Field.js.map +1 -1
  82. package/dist/esm/Guid.d.ts +2 -1
  83. package/dist/esm/Guid.d.ts.map +1 -1
  84. package/dist/esm/Guid.js +14 -6
  85. package/dist/esm/Guid.js.map +1 -1
  86. package/dist/esm/IEquatable.d.ts +1 -1
  87. package/dist/esm/IEquatable.d.ts.map +1 -1
  88. package/dist/esm/JsonSerializer.d.ts +4 -4
  89. package/dist/esm/JsonSerializer.d.ts.map +1 -1
  90. package/dist/esm/JsonSerializer.js +3 -4
  91. package/dist/esm/JsonSerializer.js.map +1 -1
  92. package/dist/esm/PropertyAccessor.d.ts +1 -1
  93. package/dist/esm/PropertyAccessor.d.ts.map +1 -1
  94. package/dist/esm/PropertyAccessorDescriptor.js +2 -0
  95. package/dist/esm/PropertyAccessorDescriptor.js.map +1 -1
  96. package/dist/esm/PropertyPathResolverProxyHandler.d.ts.map +1 -1
  97. package/dist/esm/PropertyPathResolverProxyHandler.js +3 -2
  98. package/dist/esm/PropertyPathResolverProxyHandler.js.map +1 -1
  99. package/dist/esm/derivedTypeDecorator.d.ts.map +1 -1
  100. package/dist/esm/derivedTypeDecorator.js.map +1 -1
  101. package/dist/esm/fieldDecorator.d.ts.map +1 -1
  102. package/dist/esm/fieldDecorator.js.map +1 -1
  103. package/dist/fieldDecorator.d.ts +3 -0
  104. package/dist/fieldDecorator.d.ts.map +1 -0
  105. package/dist/fieldDecorator.js +7 -0
  106. package/dist/fieldDecorator.js.map +1 -0
  107. package/dist/index.d.ts +13 -0
  108. package/dist/index.d.ts.map +1 -0
  109. package/dist/index.js +13 -0
  110. package/dist/index.js.map +1 -0
  111. package/dist/tsconfig.tsbuildinfo +1 -0
  112. package/dist/vite.config.d.mts +3 -0
  113. package/dist/vite.config.d.mts.map +1 -0
  114. package/dist/vite.config.mjs +5 -0
  115. package/dist/vite.config.mjs.map +1 -0
  116. package/fieldDecorator.ts +2 -0
  117. package/for_Guid/when_checking_equality/of_a_guid_and_a_number.ts +1 -1
  118. package/for_Guid/when_checking_string_is_valid_guid/and_it_has_invalid_bytes.ts +11 -0
  119. package/for_Guid/when_checking_string_is_valid_guid/and_it_has_same_length_but_is_not_a_guid.ts +11 -0
  120. package/for_Guid/when_checking_string_is_valid_guid/and_it_is.ts +11 -0
  121. package/for_Guid/when_getting_as/{and_input_is_string.ts → and_input_is_a_valid_string.ts} +1 -1
  122. package/for_Guid/when_getting_empty.ts +1 -1
  123. package/for_JsonSerializer/Types.ts +1 -0
  124. package/for_JsonSerializer/when_deserializing_object_with_any_object_on_it.ts +1 -0
  125. package/package.json +4 -3
package/Constructor.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  // Copyright (c) Cratis. All rights reserved.
2
2
  // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
3
 
4
- export type Constructor<T extends {} = {}> = new (...args: any[]) => T;
4
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
5
+ export type Constructor<T = any> = new (...args: any[]) => T;
package/Guid.ts CHANGED
@@ -3,6 +3,7 @@
3
3
 
4
4
  import { IEquatable } from './IEquatable';
5
5
 
6
+ const guidRegex = /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/;
6
7
  const lookUpTable: string[] = [];
7
8
  (() => {
8
9
  for (let i = 0; i < 256; i += 1) {
@@ -93,6 +94,15 @@ export class Guid implements IEquatable {
93
94
  return new Guid(bytes);
94
95
  }
95
96
 
97
+ /**
98
+ * Check if a string is a valid {Guid}
99
+ * @param {string} value Value to check.
100
+ * @returns True if it is, false if not.
101
+ */
102
+ static isGuid(value: string): boolean {
103
+ return guidRegex.test(value);
104
+ }
105
+
96
106
  /**
97
107
  * Parses if the type is a string parse, otherwise pass through the input as desired output type.
98
108
  * @template T Type to handle for
@@ -109,8 +119,13 @@ export class Guid implements IEquatable {
109
119
  /**
110
120
  * @inheritdoc
111
121
  */
112
- equals(other: any): boolean {
113
- return Guid.as(other).toString() === this.toString();
122
+ equals(other: object): boolean {
123
+ const actualOther = other instanceof Guid ? other : other.toString();
124
+ if (typeof actualOther === 'string' && !Guid.isGuid(actualOther)) {
125
+ return false;
126
+ }
127
+
128
+ return Guid.as(actualOther).toString() === this.toString();
114
129
  }
115
130
 
116
131
  /**
package/IEquatable.ts CHANGED
@@ -14,5 +14,5 @@ export interface IEquatable {
14
14
  * @param {*} other
15
15
  * @returns {boolean}
16
16
  */
17
- equals(other: any): boolean
17
+ equals(other: object): boolean
18
18
  }
package/JsonSerializer.ts CHANGED
@@ -7,6 +7,8 @@ import { Field } from './Field';
7
7
  import { Fields } from './Fields';
8
8
  import { Guid } from './Guid';
9
9
 
10
+ /* eslint-disable @typescript-eslint/no-explicit-any */
11
+
10
12
  type typeSerializer = (value: any) => any;
11
13
 
12
14
  const typeConverters: Map<Constructor, typeSerializer> = new Map<Constructor, typeSerializer>([
@@ -22,7 +24,7 @@ const typeSerializers: Map<Constructor, typeSerializer> = new Map<Constructor, t
22
24
  [String, (value: any) => value],
23
25
  [Boolean, (value: any) => value],
24
26
  [Date, (value: any) => new Date(value)],
25
- [Guid, (value: any) => Guid.parse(value.toString())],
27
+ // [Guid, (value: any) => Guid.parse(value.toString())],
26
28
  ]);
27
29
 
28
30
  const serializeValueForType = (type: Constructor, value: any) => {
@@ -102,7 +104,7 @@ export class JsonSerializer {
102
104
  * @param {string} json Actual JSON to deserialize.
103
105
  * @returns An instance of the target type.
104
106
  */
105
- static deserialize<TResult extends {}>(targetType: Constructor<TResult>, json: string): TResult {
107
+ static deserialize<TResult extends object>(targetType: Constructor<TResult>, json: string): TResult {
106
108
  const parsed = JSON.parse(json);
107
109
  return this.deserializeFromInstance<TResult>(targetType, parsed);
108
110
  }
@@ -113,7 +115,7 @@ export class JsonSerializer {
113
115
  * @param {string} json Actual JSON to deserialize.
114
116
  * @returns An array of instances of the target type.
115
117
  */
116
- static deserializeArray<TResult extends {}>(targetType: Constructor<TResult>, json: string): TResult[] {
118
+ static deserializeArray<TResult extends object>(targetType: Constructor<TResult>, json: string): TResult[] {
117
119
  const parsed = JSON.parse(json);
118
120
  return this.deserializeArrayFromInstance(targetType, parsed);
119
121
  }
@@ -124,7 +126,7 @@ export class JsonSerializer {
124
126
  * @param {*} instance Actual instance to deserialize.
125
127
  * @returns An instance of the target type.
126
128
  */
127
- static deserializeFromInstance<TResult extends {}>(targetType: Constructor<TResult>, instance: any): TResult {
129
+ static deserializeFromInstance<TResult extends object>(targetType: Constructor<TResult>, instance: any): TResult {
128
130
  const fields = Fields.getFieldsForType(targetType as Constructor);
129
131
 
130
132
  if (typeSerializers.has(targetType)) {
@@ -146,7 +148,7 @@ export class JsonSerializer {
146
148
  }
147
149
 
148
150
  if ((targetType as Constructor) == Object) {
149
- const objectFields = Object.keys(instance).filter((value, index, arr) => {
151
+ const objectFields = Object.keys(instance).filter((value) => {
150
152
  return !fields.some(_ => _.name == value);
151
153
  });
152
154
 
@@ -164,7 +166,7 @@ export class JsonSerializer {
164
166
  * @param {instances} instances Actual instances to deserialize.
165
167
  * @returns An array of instances of the target type.
166
168
  */
167
- static deserializeArrayFromInstance<TResult extends {}>(targetType: Constructor<TResult>, instances: any): TResult[] {
169
+ static deserializeArrayFromInstance<TResult extends object>(targetType: Constructor<TResult>, instances: any): TResult[] {
168
170
  const deserialized: TResult[] = [];
169
171
 
170
172
  for (const instance of instances) {
@@ -1,7 +1,9 @@
1
1
  // Copyright (c) Cratis. All rights reserved.
2
2
  // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
3
 
4
+ /* eslint-disable @typescript-eslint/no-explicit-any */
5
+
4
6
  /**
5
7
  * The delegate for representing accessing a property
6
8
  */
7
- export type PropertyAccessor<T = any> = (instance: T) => any;
9
+ export type PropertyAccessor<T = object> = (instance: T) => any;
@@ -1,6 +1,9 @@
1
1
  // Copyright (c) Cratis. All rights reserved.
2
2
  // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
3
 
4
+ /* eslint-disable @typescript-eslint/no-explicit-any */
5
+ /* eslint-disable @typescript-eslint/no-unused-vars */
6
+
4
7
  /**
5
8
  * Object proxy handler
6
9
  * @template TObject
package/README.md CHANGED
@@ -9,6 +9,7 @@
9
9
 
10
10
  [![.NET Build](https://github.com/cratis/Fundamentals/actions/workflows/dotnet-build.yml/badge.svg)](https://github.com/cratis/Fundamentals/actions/workflows/dotnet-build.yml)
11
11
  [![JavaScript Build](https://github.com/cratis/Fundamentals/actions/workflows/javascript-build.yml/badge.svg)](https://github.com/cratis/Fundamentals/actions/workflows/javascript-build.yml)
12
+ [![Documentation site](https://github.com/Cratis/Documentation/actions/workflows/pages.yml/badge.svg)](https://github.com/Cratis/Documentation/actions/workflows/pages.yml)
12
13
 
13
14
  ## Description
14
15
 
@@ -4,6 +4,9 @@
4
4
  import 'reflect-metadata';
5
5
  import { DerivedType } from './DerivedType';
6
6
 
7
+
8
+ /* eslint-disable @typescript-eslint/no-explicit-any */
9
+
7
10
  export function derivedType(identifier: string) {
8
11
  return function (target: any) {
9
12
  DerivedType.set(target, identifier);
@@ -0,0 +1,2 @@
1
+ export type Constructor<T = any> = new (...args: any[]) => T;
2
+ //# sourceMappingURL=Constructor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Constructor.d.ts","sourceRoot":"","sources":["../Constructor.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,GAAG,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Constructor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Constructor.js","sourceRoot":"","sources":["../Constructor.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ import { Constructor } from './Constructor';
2
+ export declare class DerivedType {
3
+ static set(target: Constructor, identifier: string): void;
4
+ static get(target: Constructor): string;
5
+ }
6
+ //# sourceMappingURL=DerivedType.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DerivedType.d.ts","sourceRoot":"","sources":["../DerivedType.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,qBAAa,WAAW;IACpB,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM;IAIlD,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM;CAG1C"}
@@ -0,0 +1,9 @@
1
+ export class DerivedType {
2
+ static set(target, identifier) {
3
+ Reflect.defineMetadata('derivedType', identifier, target);
4
+ }
5
+ static get(target) {
6
+ return Reflect.getOwnMetadata('derivedType', target);
7
+ }
8
+ }
9
+ //# sourceMappingURL=DerivedType.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DerivedType.js","sourceRoot":"","sources":["../DerivedType.ts"],"names":[],"mappings":"AAKA,MAAM,OAAO,WAAW;IACpB,MAAM,CAAC,GAAG,CAAC,MAAmB,EAAE,UAAkB;QAC9C,OAAO,CAAC,cAAc,CAAC,aAAa,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IAC9D,CAAC;IAED,MAAM,CAAC,GAAG,CAAC,MAAmB;QAC1B,OAAO,OAAO,CAAC,cAAc,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IACzD,CAAC;CACJ"}
@@ -0,0 +1,9 @@
1
+ import { Constructor } from './Constructor';
2
+ export declare class Field {
3
+ readonly name: string;
4
+ readonly type: Constructor;
5
+ readonly enumerable: boolean;
6
+ readonly derivatives: Constructor[];
7
+ constructor(name: string, type: Constructor, enumerable: boolean, derivatives: Constructor[]);
8
+ }
9
+ //# sourceMappingURL=Field.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Field.d.ts","sourceRoot":"","sources":["../Field.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAK3C,qBAAa,KAAK;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW;IAAE,QAAQ,CAAC,UAAU,EAAE,OAAO;IAAE,QAAQ,CAAC,WAAW,EAAE,WAAW,EAAE;gBAA3G,IAAI,EAAE,MAAM,EAAW,IAAI,EAAE,WAAW,EAAW,UAAU,EAAE,OAAO,EAAW,WAAW,EAAE,WAAW,EAAE;CAEnI"}
package/dist/Field.js ADDED
@@ -0,0 +1,13 @@
1
+ export class Field {
2
+ name;
3
+ type;
4
+ enumerable;
5
+ derivatives;
6
+ constructor(name, type, enumerable, derivatives) {
7
+ this.name = name;
8
+ this.type = type;
9
+ this.enumerable = enumerable;
10
+ this.derivatives = derivatives;
11
+ }
12
+ }
13
+ //# sourceMappingURL=Field.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Field.js","sourceRoot":"","sources":["../Field.ts"],"names":[],"mappings":"AAQC,MAAM,OAAO,KAAK;IACM;IAAuB;IAA4B;IAA8B;IAAtG,YAAqB,IAAY,EAAW,IAAiB,EAAW,UAAmB,EAAW,WAA0B;QAA3G,SAAI,GAAJ,IAAI,CAAQ;QAAW,SAAI,GAAJ,IAAI,CAAa;QAAW,eAAU,GAAV,UAAU,CAAS;QAAW,gBAAW,GAAX,WAAW,CAAe;IAChI,CAAC;CACJ"}
@@ -0,0 +1,8 @@
1
+ import 'reflect-metadata';
2
+ import { Constructor } from './Constructor';
3
+ import { Field } from './Field';
4
+ export declare class Fields {
5
+ static addFieldToType(target: Constructor, field: string, fieldType: Constructor, enumerable: boolean, derivatives: Constructor[]): void;
6
+ static getFieldsForType(target: Constructor): Field[];
7
+ }
8
+ //# sourceMappingURL=Fields.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Fields.d.ts","sourceRoot":"","sources":["../Fields.ts"],"names":[],"mappings":"AAGA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAKhC,qBAAa,MAAM;IACf,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE;IASjI,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,WAAW,GAAG,KAAK,EAAE;CAWxD"}
package/dist/Fields.js ADDED
@@ -0,0 +1,23 @@
1
+ import 'reflect-metadata';
2
+ import { Field } from './Field';
3
+ export class Fields {
4
+ static addFieldToType(target, field, fieldType, enumerable, derivatives) {
5
+ let fields = new Map();
6
+ if (Reflect.hasOwnMetadata('fields', target)) {
7
+ fields = Reflect.getOwnMetadata('fields', target);
8
+ }
9
+ fields.set(field, new Field(field, fieldType, enumerable, derivatives));
10
+ Reflect.defineMetadata('fields', fields, target);
11
+ }
12
+ static getFieldsForType(target) {
13
+ const fields = [];
14
+ if (Reflect.hasOwnMetadata('fields', target)) {
15
+ const fieldsMap = Reflect.getOwnMetadata('fields', target);
16
+ for (const field of fieldsMap.entries()) {
17
+ fields.push(field[1]);
18
+ }
19
+ }
20
+ return fields;
21
+ }
22
+ }
23
+ //# sourceMappingURL=Fields.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Fields.js","sourceRoot":"","sources":["../Fields.ts"],"names":[],"mappings":"AAGA,OAAO,kBAAkB,CAAC;AAE1B,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAKhC,MAAM,OAAO,MAAM;IACf,MAAM,CAAC,cAAc,CAAC,MAAmB,EAAE,KAAa,EAAE,SAAsB,EAAE,UAAmB,EAAE,WAA0B;QAC7H,IAAI,MAAM,GAAuB,IAAI,GAAG,EAAiB,CAAC;QAC1D,IAAI,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC;YAC3C,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACtD,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC;QACxE,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,CAAC,gBAAgB,CAAC,MAAmB;QACvC,MAAM,MAAM,GAAY,EAAE,CAAC;QAC3B,IAAI,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC;YAC3C,MAAM,SAAS,GAAG,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAuB,CAAC;YACjF,KAAK,MAAM,KAAK,IAAI,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC;gBACtC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1B,CAAC;QACL,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;CACJ"}
package/dist/Guid.d.ts ADDED
@@ -0,0 +1,14 @@
1
+ import { IEquatable } from './IEquatable';
2
+ export declare class Guid implements IEquatable {
3
+ readonly bytes: number[] | Uint8Array;
4
+ static readonly empty: Guid;
5
+ private _stringVersion;
6
+ constructor(bytes: number[] | Uint8Array);
7
+ static create(): Guid;
8
+ static parse(guid: string): Guid;
9
+ static isGuid(value: string): boolean;
10
+ static as<T extends Guid = Guid>(input: string | T): T;
11
+ equals(other: object): boolean;
12
+ toString(): string;
13
+ }
14
+ //# sourceMappingURL=Guid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Guid.d.ts","sourceRoot":"","sources":["../Guid.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAoB1C,qBAAa,IAAK,YAAW,UAAU;IAcvB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,UAAU;IATjD,MAAM,CAAC,QAAQ,CAAC,KAAK,OAA8D;IAEnF,OAAO,CAAC,cAAc,CAAM;gBAOP,KAAK,EAAE,MAAM,EAAE,GAAG,UAAU;IAiBjD,MAAM,CAAC,MAAM,IAAI,IAAI;IAgCrB,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAehC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAUrC,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,IAAI,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,GAAG,CAAC;IAUtD,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAa9B,QAAQ,IAAI,MAAM;CAGrB"}
package/dist/Guid.js ADDED
@@ -0,0 +1,81 @@
1
+ const guidRegex = /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/;
2
+ const lookUpTable = [];
3
+ (() => {
4
+ for (let i = 0; i < 256; i += 1) {
5
+ lookUpTable[i] = (i < 16 ? '0' : '') + (i).toString(16);
6
+ }
7
+ })();
8
+ const getString = (num) => {
9
+ return num.toString(16).padStart(2, '0');
10
+ };
11
+ export class Guid {
12
+ bytes;
13
+ static empty = new Guid([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);
14
+ _stringVersion = '';
15
+ constructor(bytes) {
16
+ this.bytes = bytes;
17
+ this._stringVersion = '' +
18
+ getString(bytes[3]) + getString(bytes[2]) + getString(bytes[1]) + getString(bytes[0]) +
19
+ '-' +
20
+ getString(bytes[5]) + getString(bytes[4]) +
21
+ '-' +
22
+ getString(bytes[7]) + getString(bytes[6]) +
23
+ '-' +
24
+ getString(bytes[8]) + getString(bytes[9]) +
25
+ '-' +
26
+ getString(bytes[10]) + getString(bytes[11]) + getString(bytes[12]) + getString(bytes[13]) + getString(bytes[14]) + getString(bytes[15]);
27
+ }
28
+ static create() {
29
+ const d0 = Math.random() * 0xFFFFFFFF | 0;
30
+ const d1 = Math.random() * 0xFFFFFFFF | 0;
31
+ const d2 = Math.random() * 0xFFFFFFFF | 0;
32
+ const d3 = Math.random() * 0xFFFFFFFF | 0;
33
+ const bytes = [
34
+ lookUpTable[d0 & 0xFF],
35
+ lookUpTable[d0 >> 8 & 0xFF],
36
+ lookUpTable[d0 >> 16 & 0xFF],
37
+ lookUpTable[d0 >> 24 & 0xFF],
38
+ lookUpTable[d1 & 0xFF],
39
+ lookUpTable[d1 >> 8 & 0xFF],
40
+ lookUpTable[d1 >> 16 & 0x0F | 0x40],
41
+ lookUpTable[d1 >> 24 & 0xFF],
42
+ lookUpTable[d2 & 0x3F | 0x80],
43
+ lookUpTable[d2 >> 8 & 0xFF],
44
+ lookUpTable[d2 >> 16 & 0xFF],
45
+ lookUpTable[d2 >> 24 & 0xFF],
46
+ lookUpTable[d3 & 0xFF],
47
+ lookUpTable[d3 >> 8 & 0xFF],
48
+ lookUpTable[d3 >> 16 & 0xFF],
49
+ lookUpTable[d3 >> 24 & 0xFF]
50
+ ];
51
+ return new Guid(bytes.map(_ => parseInt(`0x${_}`, 16)));
52
+ }
53
+ static parse(guid) {
54
+ const bytes = [];
55
+ guid.split('-').map((number, index) => {
56
+ const bytesInChar = index < 3 ? number.match(/.{1,2}/g)?.reverse() : number.match(/.{1,2}/g);
57
+ bytesInChar?.map((byte) => { bytes.push(parseInt(byte, 16)); });
58
+ });
59
+ return new Guid(bytes);
60
+ }
61
+ static isGuid(value) {
62
+ return guidRegex.test(value);
63
+ }
64
+ static as(input) {
65
+ if (typeof input === 'string') {
66
+ return Guid.parse(input);
67
+ }
68
+ return input;
69
+ }
70
+ equals(other) {
71
+ const actualOther = other instanceof Guid ? other : other.toString();
72
+ if (typeof actualOther === 'string' && !Guid.isGuid(actualOther)) {
73
+ return false;
74
+ }
75
+ return Guid.as(actualOther).toString() === this.toString();
76
+ }
77
+ toString() {
78
+ return this._stringVersion;
79
+ }
80
+ }
81
+ //# sourceMappingURL=Guid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Guid.js","sourceRoot":"","sources":["../Guid.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export interface IEquatable {
2
+ equals(other: object): boolean;
3
+ }
4
+ //# sourceMappingURL=IEquatable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IEquatable.d.ts","sourceRoot":"","sources":["../IEquatable.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,UAAU;IAOvB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAA;CACjC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=IEquatable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IEquatable.js","sourceRoot":"","sources":["../IEquatable.ts"],"names":[],"mappings":""}
@@ -0,0 +1,10 @@
1
+ import { Constructor } from './Constructor';
2
+ export declare class JsonSerializer {
3
+ static readonly DerivedTypeIdProperty: string;
4
+ static serialize(value: any): string;
5
+ static deserialize<TResult extends object>(targetType: Constructor<TResult>, json: string): TResult;
6
+ static deserializeArray<TResult extends object>(targetType: Constructor<TResult>, json: string): TResult[];
7
+ static deserializeFromInstance<TResult extends object>(targetType: Constructor<TResult>, instance: any): TResult;
8
+ static deserializeArrayFromInstance<TResult extends object>(targetType: Constructor<TResult>, instances: any): TResult[];
9
+ }
10
+ //# sourceMappingURL=JsonSerializer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JsonSerializer.d.ts","sourceRoot":"","sources":["../JsonSerializer.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAoF5C,qBAAa,cAAc;IACvB,MAAM,CAAC,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAoB;IAOjE,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM;IAWpC,MAAM,CAAC,WAAW,CAAC,OAAO,SAAS,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO;IAWnG,MAAM,CAAC,gBAAgB,CAAC,OAAO,SAAS,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,EAAE;IAW1G,MAAM,CAAC,uBAAuB,CAAC,OAAO,SAAS,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,GAAG,GAAG,OAAO;IAwChH,MAAM,CAAC,4BAA4B,CAAC,OAAO,SAAS,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,GAAG,GAAG,OAAO,EAAE;CAS3H"}
@@ -0,0 +1,118 @@
1
+ import { DerivedType } from './DerivedType';
2
+ import { Fields } from './Fields';
3
+ import { Guid } from './Guid';
4
+ const typeConverters = new Map([
5
+ [Number, (value) => value],
6
+ [String, (value) => value],
7
+ [Boolean, (value) => value],
8
+ [Date, (value) => value.toISOString()],
9
+ [Guid, (value) => value?.toString() ?? '']
10
+ ]);
11
+ const typeSerializers = new Map([
12
+ [Number, (value) => value],
13
+ [String, (value) => value],
14
+ [Boolean, (value) => value],
15
+ [Date, (value) => new Date(value)],
16
+ ]);
17
+ const serializeValueForType = (type, value) => {
18
+ if (!value)
19
+ return value;
20
+ if (typeConverters.has(type)) {
21
+ return typeConverters.get(type)(value);
22
+ }
23
+ else {
24
+ return convertTypesOnInstance(value);
25
+ }
26
+ };
27
+ const deserializeValueFromType = (type, value) => {
28
+ if (typeSerializers.has(type)) {
29
+ return typeSerializers.get(type)(value);
30
+ }
31
+ else {
32
+ return JsonSerializer.deserialize(type, JSON.stringify(value));
33
+ }
34
+ };
35
+ const deserializeValueFromField = (field, value) => {
36
+ if (typeSerializers.has(field.type)) {
37
+ return typeSerializers.get(field.type)(value);
38
+ }
39
+ else {
40
+ let type = field.type;
41
+ if (field.derivatives.length > 0 && value[JsonSerializer.DerivedTypeIdProperty]) {
42
+ const derivedTypeId = value[JsonSerializer.DerivedTypeIdProperty];
43
+ type = field.derivatives.find(_ => DerivedType.get(_) == derivedTypeId) || type;
44
+ }
45
+ return JsonSerializer.deserialize(type, JSON.stringify(value));
46
+ }
47
+ };
48
+ const convertTypesOnInstance = (instance) => {
49
+ if (typeConverters.has(instance.constructor)) {
50
+ return serializeValueForType(instance.constructor, instance);
51
+ }
52
+ const properties = Object.getOwnPropertyNames(instance);
53
+ const converted = {};
54
+ properties.forEach(property => {
55
+ let value = instance[property];
56
+ if (value !== undefined) {
57
+ if (Array.isArray(value)) {
58
+ value = value.map(_ => convertTypesOnInstance(_));
59
+ }
60
+ else {
61
+ value = serializeValueForType(value.__proto__.constructor, value);
62
+ }
63
+ }
64
+ converted[property] = value;
65
+ });
66
+ return converted;
67
+ };
68
+ export class JsonSerializer {
69
+ static DerivedTypeIdProperty = "_derivedTypeId";
70
+ static serialize(value) {
71
+ const converted = convertTypesOnInstance(value);
72
+ return JSON.stringify(converted);
73
+ }
74
+ static deserialize(targetType, json) {
75
+ const parsed = JSON.parse(json);
76
+ return this.deserializeFromInstance(targetType, parsed);
77
+ }
78
+ static deserializeArray(targetType, json) {
79
+ const parsed = JSON.parse(json);
80
+ return this.deserializeArrayFromInstance(targetType, parsed);
81
+ }
82
+ static deserializeFromInstance(targetType, instance) {
83
+ const fields = Fields.getFieldsForType(targetType);
84
+ if (typeSerializers.has(targetType)) {
85
+ return deserializeValueFromType(targetType, instance);
86
+ }
87
+ const deserialized = new targetType();
88
+ for (const field of fields) {
89
+ let value = instance[field.name];
90
+ if (value) {
91
+ if (field.enumerable) {
92
+ value = value.map(_ => deserializeValueFromField(field, _));
93
+ }
94
+ else {
95
+ value = deserializeValueFromField(field, value);
96
+ }
97
+ }
98
+ deserialized[field.name] = value;
99
+ }
100
+ if (targetType == Object) {
101
+ const objectFields = Object.keys(instance).filter((value) => {
102
+ return !fields.some(_ => _.name == value);
103
+ });
104
+ for (const field of objectFields) {
105
+ deserialized[field] = instance[field];
106
+ }
107
+ }
108
+ return deserialized;
109
+ }
110
+ static deserializeArrayFromInstance(targetType, instances) {
111
+ const deserialized = [];
112
+ for (const instance of instances) {
113
+ deserialized.push(this.deserializeFromInstance(targetType, instance));
114
+ }
115
+ return deserialized;
116
+ }
117
+ }
118
+ //# sourceMappingURL=JsonSerializer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JsonSerializer.js","sourceRoot":"","sources":["../JsonSerializer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export type PropertyAccessor<T = object> = (instance: T) => any;
2
+ //# sourceMappingURL=PropertyAccessor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PropertyAccessor.d.ts","sourceRoot":"","sources":["../PropertyAccessor.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,gBAAgB,CAAC,CAAC,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,GAAG,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=PropertyAccessor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PropertyAccessor.js","sourceRoot":"","sources":["../PropertyAccessor.ts"],"names":[],"mappings":""}
@@ -0,0 +1,10 @@
1
+ import { PropertyAccessor } from './PropertyAccessor';
2
+ export declare class PropertyAccessorDescriptor {
3
+ private readonly _accessor;
4
+ private readonly _segments;
5
+ constructor(_accessor: PropertyAccessor, _segments: string[]);
6
+ get accessor(): PropertyAccessor;
7
+ get segments(): readonly string[];
8
+ get path(): string;
9
+ }
10
+ //# sourceMappingURL=PropertyAccessorDescriptor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PropertyAccessorDescriptor.d.ts","sourceRoot":"","sources":["../PropertyAccessorDescriptor.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAKtD,qBAAa,0BAA0B;IAOvB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAAoB,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAAvD,SAAS,EAAE,gBAAgB,EAAmB,SAAS,EAAE,MAAM,EAAE;IAO9F,IAAI,QAAQ,IAAI,gBAAgB,CAE/B;IAMD,IAAI,QAAQ,IAAI,SAAS,MAAM,EAAE,CAEhC;IAMD,IAAI,IAAI,IAAI,MAAM,CAEjB;CACJ"}
@@ -0,0 +1,18 @@
1
+ export class PropertyAccessorDescriptor {
2
+ _accessor;
3
+ _segments;
4
+ constructor(_accessor, _segments) {
5
+ this._accessor = _accessor;
6
+ this._segments = _segments;
7
+ }
8
+ get accessor() {
9
+ return this._accessor;
10
+ }
11
+ get segments() {
12
+ return this._segments;
13
+ }
14
+ get path() {
15
+ return this._segments.join('.');
16
+ }
17
+ }
18
+ //# sourceMappingURL=PropertyAccessorDescriptor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PropertyAccessorDescriptor.js","sourceRoot":"","sources":["../PropertyAccessorDescriptor.ts"],"names":[],"mappings":"AAQA,MAAM,OAAO,0BAA0B;IAON;IAA8C;IAA3E,YAA6B,SAA2B,EAAmB,SAAmB;QAAjE,cAAS,GAAT,SAAS,CAAkB;QAAmB,cAAS,GAAT,SAAS,CAAU;IAC9F,CAAC;IAMD,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAMD,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAMD,IAAI,IAAI;QACJ,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpC,CAAC;CACJ"}
@@ -0,0 +1,12 @@
1
+ export declare class PropertyPathResolverProxyHandler implements ProxyHandler<any> {
2
+ private readonly _root?;
3
+ _property: string;
4
+ _segments: string[];
5
+ constructor(_root?: PropertyPathResolverProxyHandler | undefined);
6
+ get property(): string;
7
+ get segments(): readonly string[];
8
+ get path(): string;
9
+ private addSegment;
10
+ get(target: any, p: PropertyKey, receiver: any): any;
11
+ }
12
+ //# sourceMappingURL=PropertyPathResolverProxyHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PropertyPathResolverProxyHandler.d.ts","sourceRoot":"","sources":["../PropertyPathResolverProxyHandler.ts"],"names":[],"mappings":"AAUA,qBAAa,gCAAiC,YAAW,YAAY,CAAC,GAAG,CAAC;IAI1D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;IAHnC,SAAS,SAAM;IACf,SAAS,EAAE,MAAM,EAAE,CAAM;gBAEI,KAAK,CAAC,EAAE,gCAAgC,YAAA;IAGrE,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,QAAQ,IAAI,SAAS,MAAM,EAAE,CAEhC;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,OAAO,CAAC,UAAU;IAKlB,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,GAAG,GAAG;CASvD"}