Skip to content

Commit f89f00c

Browse files
authored
Version 1.0.59 (#1472)
* Optimize Memory Create * Fix TS-Next Range Test * Use Consistent Property Configuration | Coverage * ChangeLog * Version
1 parent b14eb6b commit f89f00c

6 files changed

Lines changed: 59 additions & 28 deletions

File tree

changelog/1.0.0.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
---
44

55
### Version Updates
6+
- [Revision 1.0.59](https://github.com/sinclairzx81/typebox/pull/1472)
7+
- Optimize Schema Creation
68
- [Revision 1.0.58](https://github.com/sinclairzx81/typebox/pull/1468)
79
- Update Initial URI used for Json Schema Resolution
810
- [Revision 1.0.57](https://github.com/sinclairzx81/typebox/pull/1467)

deno.lock

Lines changed: 16 additions & 16 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/system/memory/create.ts

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,20 @@ import { Metrics } from './metrics.ts'
3434
// deno-lint-ignore no-explicit-any
3535
type ObjectLike = Record<PropertyKey, any>
3636

37-
function Merge(left: ObjectLike, right: ObjectLike, configuration: PropertyDescriptor = {}): ObjectLike {
38-
const descriptor: PropertyDescriptor = { configurable: true, writable: true, enumerable: true, ...configuration }
37+
function MergeHidden(left: ObjectLike, right: ObjectLike, configuration: PropertyDescriptor = {}): ObjectLike {
3938
for(const key of Object.keys(right)) {
40-
Object.defineProperty(left, key, { ...descriptor, value: right[key] })
39+
Object.defineProperty(left, key, {
40+
configurable: true,
41+
writable: true,
42+
enumerable: false,
43+
value: right[key]
44+
})
4145
}
4246
return left
4347
}
48+
function Merge(left: ObjectLike, right: ObjectLike): ObjectLike {
49+
return { ...left, ...right }
50+
}
4451
/**
4552
* Creates an object with hidden, enumerable, and optional property sets. This function
4653
* ensures types are instantiated according to configuration rules for enumerable and
@@ -49,8 +56,7 @@ function Merge(left: ObjectLike, right: ObjectLike, configuration: PropertyDescr
4956
export function Create(hidden: ObjectLike, enumerable: ObjectLike, options: ObjectLike = {}): ObjectLike {
5057
Metrics.create += 1
5158
const settings = Settings.Get()
52-
const withHidden = Merge({}, hidden , { enumerable: settings.enumerableKind })
53-
const withEnumerable = Merge(withHidden, enumerable)
54-
const withOptions = Merge(withEnumerable, options)
55-
return settings.immutableTypes ? Object.freeze(withOptions) : withOptions
59+
const withOptions = Merge(enumerable, options)
60+
const withHidden = settings.enumerableKind ? Merge(withOptions, hidden) : MergeHidden(withOptions, hidden)
61+
return settings.immutableTypes ? Object.freeze(withHidden) : withHidden
5662
}

task/range/range.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,15 @@ THE SOFTWARE.
2828

2929
import { Task } from 'tasksmith'
3030

31-
export async function Range(versions: string[]) {
32-
for(const version of versions) {
31+
export async function Range(legacy: string[], modern: string[]) {
32+
for(const version of legacy) {
3333
console.log('checking ...', version)
3434
await Task.tsc(version)
3535
.run('src/index.ts --target ES2020 --strict --noEmit --allowImportingTsExtensions')
3636
}
37+
for(const version of modern) {
38+
console.log('checking ...', version)
39+
await Task.tsc(version)
40+
.run('src/index.ts --target ES2020 --strict --noEmit --allowImportingTsExtensions --ignoreConfig')
41+
}
3742
}

tasks.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import { Range } from './task/range/index.ts'
88
import { Metrics } from './task/metrics/index.ts'
99
import { Task } from 'tasksmith'
1010

11-
const Version = '1.0.58'
11+
const Version = '1.0.59'
1212

1313
// ------------------------------------------------------------------
1414
// Build
@@ -100,5 +100,7 @@ Task.run('metrics', () => Metrics())
100100
Task.run('range', () => Range([
101101
'5.0.4', '5.1.3', '5.1.6', '5.2.2', '5.3.2', '5.3.3',
102102
'5.4.3', '5.4.5', '5.5.2', '5.5.3', '5.5.4', '5.6.2',
103-
'5.6.3', '5.7.2', '5.7.3', '5.9.2', 'next', 'latest'
103+
'5.6.3', '5.7.2', '5.7.3', '5.9.2', 'latest'
104+
], [
105+
'next'
104106
]))

test/typebox/runtime/system/memory.ts

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,23 @@ Test('Should Create 1', () => {
4545
Assert.IsEqual(A.y, 2)
4646
Assert.IsEqual(A.z, 3)
4747
})
48-
Test('Should Create 2', () => {
48+
// ------------------------------------------------------------------
49+
// EnumerableKind
50+
// ------------------------------------------------------------------
51+
Test('Should Create 3', () => {
52+
Settings.Set({ enumerableKind: true })
53+
const A: any = Memory.Create({ x: 1 }, { y: 2 }, { z: 3 })
54+
Assert.IsEqual(A.x, 1)
55+
Assert.IsEqual(A.y, 2)
56+
Assert.IsEqual(A.z, 3)
57+
A.x = 123
58+
Assert.IsEqual(A.x, 123)
59+
Settings.Reset()
60+
})
61+
// ------------------------------------------------------------------
62+
// ImmutableTypes
63+
// ------------------------------------------------------------------
64+
Test('Should Create 4', () => {
4965
Settings.Set({ immutableTypes: true })
5066
const A: any = Memory.Create({ x: 1 }, { y: 2 }, { z: 3 })
5167
Assert.IsEqual(A.x, 1)

0 commit comments

Comments
 (0)