typebox 1.2.4 → 1.2.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.
@@ -1,12 +1,13 @@
1
1
  import { type TSchemaOptions } from '../types/schema.mjs';
2
2
  import { type TProperties } from '../types/properties.mjs';
3
3
  import { type TDeferred } from '../types/deferred.mjs';
4
- import { type TInstantiate } from '../engine/instantiate.mjs';
4
+ import { type TState } from '../engine/instantiate.mjs';
5
+ import { type TModuleInstantiate } from '../engine/module/instantiate.mjs';
5
6
  /** Creates a deferred Module action. */
6
- export type TModuleDeferred<Context extends TProperties> = (TDeferred<'Module', [Context]>);
7
+ export type TModuleDeferred<Declarations extends TProperties> = (TDeferred<'Module', [Declarations]>);
7
8
  /** Creates a deferred Module action. */
8
- export declare function ModuleDeferred<Context extends TProperties>(context: Context, options?: TSchemaOptions): TModuleDeferred<Context>;
9
- /** Applies a Module transformation action to the embedded property types. */
10
- export type TModule<Context extends TProperties> = (TInstantiate<{}, TModuleDeferred<Context>>);
11
- /** Applies a Module transformation action to the embedded property types. */
12
- export declare function Module<Context extends TProperties>(context: Context, options?: TSchemaOptions): TModule<Context>;
9
+ export declare function ModuleDeferred<Declarations extends TProperties>(declarations: Declarations, options?: TSchemaOptions): TModuleDeferred<Declarations>;
10
+ /** Creates a Module with the given declarations */
11
+ export type TModule<Declarations extends TProperties> = (TModuleInstantiate<{}, TState<[], []>, Declarations>);
12
+ /** Creates a Module with the given declarations */
13
+ export declare function Module<Declarations extends TProperties>(declarations: Declarations, options?: TSchemaOptions): TModule<Declarations>;
@@ -1,12 +1,13 @@
1
1
  // deno-lint-ignore-file ban-types
2
2
  // deno-fmt-ignore-file
3
3
  import { Deferred } from '../types/deferred.mjs';
4
- import { Instantiate } from '../engine/instantiate.mjs';
4
+ import { State } from '../engine/instantiate.mjs';
5
+ import { ModuleInstantiate } from '../engine/module/instantiate.mjs';
5
6
  /** Creates a deferred Module action. */
6
- export function ModuleDeferred(context, options = {}) {
7
- return Deferred('Module', [context], options);
7
+ export function ModuleDeferred(declarations, options = {}) {
8
+ return Deferred('Module', [declarations], options);
8
9
  }
9
- /** Applies a Module transformation action to the embedded property types. */
10
- export function Module(context, options = {}) {
11
- return Instantiate({}, ModuleDeferred(context, options));
10
+ /** Creates a Module with the given declarations */
11
+ export function Module(declarations, options = {}) {
12
+ return ModuleInstantiate({}, State([], []), declarations, options);
12
13
  }
@@ -131,7 +131,7 @@ type TInstantiateDeferred<Context extends TProperties, State extends TState, Act
131
131
  ] extends ['Mapped', [infer Name extends TIdentifier, infer Key extends TSchema, infer As extends TSchema, infer Property extends TSchema]] ? TMappedInstantiate<Context, State, Name, Key, As, Property> : [
132
132
  Action,
133
133
  Parameters
134
- ] extends ['Module', [infer Properties extends TProperties]] ? TModuleInstantiate<Context, State, Properties> : [
134
+ ] extends ['Module', [infer Declarations extends TProperties]] ? TModuleInstantiate<Context, State, Declarations> : [
135
135
  Action,
136
136
  Parameters
137
137
  ] extends ['NonNullable', [infer Type extends TSchema]] ? TNonNullableInstantiate<Context, State, Type> : [
@@ -5,15 +5,15 @@ import { type TState } from '../instantiate.mjs';
5
5
  import { type TCyclicCandidates } from '../cyclic/candidates.mjs';
6
6
  import { type TInstantiateCyclic } from '../cyclic/instantiate.mjs';
7
7
  import { type TInstantiateType } from '../instantiate.mjs';
8
- type TInstantiateCyclics<Context extends TProperties, CyclicKeys extends string[], Result extends TProperties = {
9
- [Key in Extract<keyof Context, CyclicKeys[number]>]: TInstantiateCyclic<Context, Key, Context[Key]>;
8
+ type TInstantiateCyclics<Context extends TProperties, Declarations extends TProperties, CyclicKeys extends string[], DeclarationContext extends TProperties = Memory.TAssign<Context, Declarations>, Result extends TProperties = {
9
+ [Key in Extract<keyof Declarations, CyclicKeys[number]>]: TInstantiateCyclic<DeclarationContext, Key, Declarations[Key]>;
10
10
  }> = Result;
11
- type TInstantiateNonCyclics<Context extends TProperties, CyclicKeys extends string[], Result extends TProperties = {
12
- [Key in Exclude<keyof Context, CyclicKeys[number]>]: TInstantiateType<Context, TState<[], []>, Context[Key]>;
11
+ type TInstantiateNonCyclics<Context extends TProperties, Declarations extends TProperties, CyclicKeys extends string[], DeclarationContext extends TProperties = Memory.TAssign<Context, Declarations>, Result extends TProperties = {
12
+ [Key in Exclude<keyof Declarations, CyclicKeys[number]>]: TInstantiateType<DeclarationContext, TState<[], []>, Declarations[Key]>;
13
13
  }> = Result;
14
- type TInstantiateModule<Context extends TProperties, CyclicCandidates extends string[] = TCyclicCandidates<Context>, InstantiatedCyclics extends TProperties = TInstantiateCyclics<Context, CyclicCandidates>, InstantiatedNonCyclics extends TProperties = TInstantiateNonCyclics<Context, CyclicCandidates>, InstantiatedModule extends TProperties = InstantiatedCyclics & InstantiatedNonCyclics> = {
14
+ type TInstantiateModule<Context extends TProperties, Declarations extends TProperties, CyclicCandidates extends string[] = TCyclicCandidates<Declarations>, InstantiatedCyclics extends TProperties = TInstantiateCyclics<Context, Declarations, CyclicCandidates>, InstantiatedNonCyclics extends TProperties = TInstantiateNonCyclics<Context, Declarations, CyclicCandidates>, InstantiatedModule extends TProperties = InstantiatedCyclics & InstantiatedNonCyclics> = {
15
15
  [Key in keyof InstantiatedModule]: InstantiatedModule[Key];
16
16
  } & {};
17
- export type TModuleInstantiate<Context extends TProperties, _State extends TState, Properties extends TProperties, ModuleContext extends TProperties = Memory.TAssign<Context, Properties>, InstantiatedModule extends TProperties = TInstantiateModule<ModuleContext>> = InstantiatedModule;
18
- export declare function ModuleInstantiate<Context extends TProperties, State extends TState, Properties extends TProperties>(context: Context, _state: State, properties: Properties, options: TSchemaOptions): TModuleInstantiate<Context, State, Properties>;
17
+ export type TModuleInstantiate<Context extends TProperties, _State extends TState, Declarations extends TProperties, InstantiatedModule extends TProperties = TInstantiateModule<Context, Declarations>> = InstantiatedModule;
18
+ export declare function ModuleInstantiate<Context extends TProperties, State extends TState, Declarations extends TProperties>(context: Context, _state: State, declarations: Declarations, options: TSchemaOptions): TModuleInstantiate<Context, State, Declarations>;
19
19
  export {};
@@ -9,27 +9,28 @@ import { State } from '../instantiate.mjs';
9
9
  import { CyclicCandidates } from '../cyclic/candidates.mjs';
10
10
  import { InstantiateCyclic } from '../cyclic/instantiate.mjs';
11
11
  import { InstantiateType } from '../instantiate.mjs';
12
- function InstantiateCyclics(context, cyclicKeys) {
13
- const keys = Guard.Keys(context).filter(key => cyclicKeys.includes(key));
14
- return keys.reduce((result, key) => {
15
- return { ...result, [key]: InstantiateCyclic(context, key, context[key]) };
12
+ function InstantiateCyclics(context, declarations, cyclicKeys) {
13
+ const declarationContext = Memory.Assign(context, declarations);
14
+ const declarationKeys = Guard.Keys(declarations).filter(key => cyclicKeys.includes(key));
15
+ return declarationKeys.reduce((result, key) => {
16
+ return { ...result, [key]: InstantiateCyclic(declarationContext, key, declarations[key]) };
16
17
  }, {});
17
18
  }
18
- function InstantiateNonCyclics(context, cyclicKeys) {
19
- const keys = Guard.Keys(context).filter(key => !cyclicKeys.includes(key));
20
- return keys.reduce((result, key) => {
21
- return { ...result, [key]: InstantiateType(context, State([], []), context[key]) };
19
+ function InstantiateNonCyclics(context, declarations, cyclicKeys) {
20
+ const declarationContext = Memory.Assign(context, declarations);
21
+ const declarationKeys = Guard.Keys(declarations).filter(key => !cyclicKeys.includes(key));
22
+ return declarationKeys.reduce((result, key) => {
23
+ return { ...result, [key]: InstantiateType(declarationContext, State([], []), declarations[key]) };
22
24
  }, {});
23
25
  }
24
- function InstantiateModule(context, options) {
25
- const cyclicCandidates = CyclicCandidates(context);
26
- const instantiatedCyclics = InstantiateCyclics(context, cyclicCandidates);
27
- const instantiatedNonCyclics = InstantiateNonCyclics(context, cyclicCandidates);
26
+ function InstantiateModule(context, declarations, options) {
27
+ const cyclicCandidates = CyclicCandidates(declarations);
28
+ const instantiatedCyclics = InstantiateCyclics(context, declarations, cyclicCandidates);
29
+ const instantiatedNonCyclics = InstantiateNonCyclics(context, declarations, cyclicCandidates);
28
30
  const instantiatedModule = { ...instantiatedCyclics, ...instantiatedNonCyclics };
29
31
  return Memory.Update(instantiatedModule, {}, options);
30
32
  }
31
- export function ModuleInstantiate(context, _state, properties, options) {
32
- const moduleContext = Memory.Assign(context, properties);
33
- const instantiatedModule = InstantiateModule(moduleContext, options);
33
+ export function ModuleInstantiate(context, _state, declarations, options) {
34
+ const instantiatedModule = InstantiateModule(context, declarations, options);
34
35
  return instantiatedModule;
35
36
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "typebox",
3
3
  "description": "Json Schema Type Builder with Static Type Resolution for TypeScript",
4
- "version": "1.2.4",
4
+ "version": "1.2.5",
5
5
  "keywords": [
6
6
  "typescript",
7
7
  "jsonschema"