xml-model 1.3.3 → 2.0.0-beta.1
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/README.md +39 -35
- package/dist/index.d.ts +3 -7
- package/dist/index.js +18 -17
- package/dist/model.d.ts +53 -0
- package/dist/model.js +69 -0
- package/dist/util/zod.d.ts +4 -0
- package/dist/util/zod.js +21 -0
- package/dist/xml/codec.d.ts +87 -0
- package/dist/xml/codec.js +385 -0
- package/dist/xml/examples.d.ts +188 -0
- package/dist/xml/index.d.ts +5 -79
- package/dist/xml/index.js +14 -54
- package/dist/xml/model.d.ts +18 -0
- package/dist/xml/model.js +37 -0
- package/dist/xml/schema-meta.d.ts +57 -0
- package/dist/xml/schema-meta.js +96 -0
- package/dist/xml/xml-js.d.ts +138 -3
- package/dist/xml/xml-js.js +89 -5
- package/package.json +10 -23
- package/dist/_virtual/Reflect.js +0 -8
- package/dist/_virtual/Reflect2.js +0 -5
- package/dist/_virtual/_commonjsHelpers.js +0 -47
- package/dist/defaults.d.ts +0 -28
- package/dist/defaults.js +0 -165
- package/dist/errors.d.ts +0 -40
- package/dist/errors.js +0 -45
- package/dist/middleware.d.ts +0 -10
- package/dist/middleware.js +0 -25
- package/dist/model/built-ins.d.ts +0 -3
- package/dist/model/built-ins.js +0 -43
- package/dist/model/index.d.ts +0 -69
- package/dist/model/index.js +0 -264
- package/dist/model/property.d.ts +0 -18
- package/dist/model/property.js +0 -67
- package/dist/model/registry.d.ts +0 -9
- package/dist/model/registry.js +0 -19
- package/dist/model/types.d.ts +0 -109
- package/dist/node_modules/reflect-metadata/Reflect.js +0 -806
- package/dist/types.d.ts +0 -25
- package/dist/util/is-regexp.d.ts +0 -12
- package/dist/util/is-regexp.js +0 -8
- package/dist/util/merge-maps.d.ts +0 -2
- package/dist/util/merge-maps.js +0 -23
- package/dist/vite/index.d.ts +0 -80
- package/dist/vite/index.js +0 -71
- package/dist/vite/node_modules/typescript-rtti/dist.esm/common/format.js +0 -105
- package/dist/vite/node_modules/typescript-rtti/dist.esm/common/index.js +0 -55
- package/dist/vite/node_modules/typescript-rtti/dist.esm/transformer/api-call-transformer.js +0 -152
- package/dist/vite/node_modules/typescript-rtti/dist.esm/transformer/common/class-analyzer.js +0 -83
- package/dist/vite/node_modules/typescript-rtti/dist.esm/transformer/common/compile-error.js +0 -8
- package/dist/vite/node_modules/typescript-rtti/dist.esm/transformer/common/import-analyzer.js +0 -89
- package/dist/vite/node_modules/typescript-rtti/dist.esm/transformer/common/interface-analyzer.js +0 -58
- package/dist/vite/node_modules/typescript-rtti/dist.esm/transformer/common/visitor-base.js +0 -93
- package/dist/vite/node_modules/typescript-rtti/dist.esm/transformer/declarations-emitter.js +0 -31
- package/dist/vite/node_modules/typescript-rtti/dist.esm/transformer/encode-parameter.js +0 -64
- package/dist/vite/node_modules/typescript-rtti/dist.esm/transformer/find-relative-path.js +0 -41
- package/dist/vite/node_modules/typescript-rtti/dist.esm/transformer/flags.js +0 -43
- package/dist/vite/node_modules/typescript-rtti/dist.esm/transformer/forward-ref.js +0 -20
- package/dist/vite/node_modules/typescript-rtti/dist.esm/transformer/get-exports-for-symbol.js +0 -64
- package/dist/vite/node_modules/typescript-rtti/dist.esm/transformer/index.js +0 -130
- package/dist/vite/node_modules/typescript-rtti/dist.esm/transformer/legacy-decorator.js +0 -10
- package/dist/vite/node_modules/typescript-rtti/dist.esm/transformer/legacy-type-encoder.js +0 -82
- package/dist/vite/node_modules/typescript-rtti/dist.esm/transformer/literal-node.js +0 -9
- package/dist/vite/node_modules/typescript-rtti/dist.esm/transformer/metadata-collector.js +0 -56
- package/dist/vite/node_modules/typescript-rtti/dist.esm/transformer/metadata-decorator.js +0 -80
- package/dist/vite/node_modules/typescript-rtti/dist.esm/transformer/metadata-emitter.js +0 -425
- package/dist/vite/node_modules/typescript-rtti/dist.esm/transformer/metadata-encoder.js +0 -212
- package/dist/vite/node_modules/typescript-rtti/dist.esm/transformer/rt-helper.js +0 -96
- package/dist/vite/node_modules/typescript-rtti/dist.esm/transformer/rtti-visitor-base.js +0 -28
- package/dist/vite/node_modules/typescript-rtti/dist.esm/transformer/serialize.js +0 -31
- package/dist/vite/node_modules/typescript-rtti/dist.esm/transformer/type-encoder.js +0 -76
- package/dist/vite/node_modules/typescript-rtti/dist.esm/transformer/type-literal.js +0 -499
- package/dist/vite/node_modules/typescript-rtti/dist.esm/transformer/utils.js +0 -906
- package/dist/vite/node_modules/typescript-rtti/dist.esm/transformer/workarounds.js +0 -7
package/dist/defaults.d.ts
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { fromXMLContext, PropertyFromXMLContext, PropertyToXMLContext, toXMLContext, XMLModelPropertyOptions, XMLModel } from './model/types';
|
|
2
|
-
import { XMLElement, XMLRoot } from './types';
|
|
3
|
-
interface Defaults {
|
|
4
|
-
fromXML<T>(context: fromXMLContext<T>): T;
|
|
5
|
-
propertySourceElementsFilter<T>(...args: Parameters<XMLModelPropertyOptions<T>["isSourceElement"]>): boolean;
|
|
6
|
-
propertyResolveSourceElements<T>(context: Omit<PropertyFromXMLContext<T>, "elements">): XMLElement[];
|
|
7
|
-
propertyFromXML<T>(context: PropertyFromXMLContext<T>): T[keyof T];
|
|
8
|
-
toXML<T>(context: toXMLContext<T>): XMLRoot;
|
|
9
|
-
tagnameFromModel: (model: XMLModel) => string;
|
|
10
|
-
tagnameFromProperty<T>(property: XMLModelPropertyOptions<T>): string;
|
|
11
|
-
propertyToXML<T>(context: PropertyToXMLContext<T>): XMLRoot;
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* Global defaults used by all models and properties when no override is provided.
|
|
15
|
-
*
|
|
16
|
-
* You can mutate individual entries to change library-wide behaviour — for example,
|
|
17
|
-
* replace `defaults.fromXML` to provide a base deserialization strategy instead of
|
|
18
|
-
* having to specify `fromXML` on every `@Model()`.
|
|
19
|
-
*
|
|
20
|
-
* Key behaviours:
|
|
21
|
-
* - `fromXML` — throws by default; every root model **must** provide its own implementation.
|
|
22
|
-
* - `tagnameFromModel` / `tagnameFromProperty` — convert class/property names to kebab-case.
|
|
23
|
-
* - `propertyFromXML` — handles class, array, and union-of-literal property types via runtime reflection.
|
|
24
|
-
* - `propertyToXML` — serialises class, array, and union-of-literal values; respects `inline`.
|
|
25
|
-
*/
|
|
26
|
-
export declare const defaults: Defaults;
|
|
27
|
-
export {};
|
|
28
|
-
//# sourceMappingURL=defaults.d.ts.map
|
package/dist/defaults.js
DELETED
|
@@ -1,165 +0,0 @@
|
|
|
1
|
-
import { getModel } from "./model/registry.js";
|
|
2
|
-
import { kebabCase } from "./util/kebab-case.js";
|
|
3
|
-
const defaults = {
|
|
4
|
-
/**
|
|
5
|
-
* Default model-level `fromXML` handler.
|
|
6
|
-
* Always throws — models must supply their own `fromXML` or inherit one from a parent.
|
|
7
|
-
* @throws {TypeError}
|
|
8
|
-
*/
|
|
9
|
-
fromXML() {
|
|
10
|
-
throw new TypeError(
|
|
11
|
-
"you should define 'defaults.fromXML' yourself or provide a 'fromXML' function to @Model() decorator's options"
|
|
12
|
-
);
|
|
13
|
-
},
|
|
14
|
-
/**
|
|
15
|
-
* Collects the XML elements that are the source data for a property.
|
|
16
|
-
* Assumes `xml.elements[0]` is the wrapper element that contains all property tags.
|
|
17
|
-
*/
|
|
18
|
-
propertyResolveSourceElements(context) {
|
|
19
|
-
const innerElements = context.xml.elements[0]?.elements || [];
|
|
20
|
-
return innerElements.filter((el) => context.property.isSourceElement(el, context));
|
|
21
|
-
},
|
|
22
|
-
/**
|
|
23
|
-
* Returns `true` when the element's tag name matches the property's tagname.
|
|
24
|
-
*/
|
|
25
|
-
propertySourceElementsFilter(element, context) {
|
|
26
|
-
return context.property.tagname === element.name;
|
|
27
|
-
},
|
|
28
|
-
/**
|
|
29
|
-
* Converts resolved XML elements into a typed property value.
|
|
30
|
-
* Handles class types, arrays of class types, and union-of-literal types.
|
|
31
|
-
* Returns `undefined` for optional properties with no matching elements,
|
|
32
|
-
* and also for unrecognised types.
|
|
33
|
-
*/
|
|
34
|
-
propertyFromXML(context) {
|
|
35
|
-
const prop = context.property;
|
|
36
|
-
const elements = context.elements;
|
|
37
|
-
if (prop.reflected.isOptional && elements.length === 0) {
|
|
38
|
-
return void 0;
|
|
39
|
-
}
|
|
40
|
-
if (prop.model) {
|
|
41
|
-
return prop.model.fromXML({ elements });
|
|
42
|
-
}
|
|
43
|
-
const type = context.property.reflected.type;
|
|
44
|
-
if (type.is("class")) {
|
|
45
|
-
const model = getModel(type.class);
|
|
46
|
-
return model.fromXML({ elements: context.elements });
|
|
47
|
-
} else if (type.is("array")) {
|
|
48
|
-
let arrayEl = {};
|
|
49
|
-
if (!prop.inline && elements.length === 1 && elements[0].name === prop.tagname) {
|
|
50
|
-
arrayEl = elements[0];
|
|
51
|
-
} else if (prop.inline) {
|
|
52
|
-
arrayEl = { elements };
|
|
53
|
-
}
|
|
54
|
-
const els = arrayEl.elements || [];
|
|
55
|
-
const elType = type.elementType;
|
|
56
|
-
if (elType.is("class")) {
|
|
57
|
-
const model = getModel(elType.class);
|
|
58
|
-
const xmlInstances = els.map((el) => ({
|
|
59
|
-
elements: [el]
|
|
60
|
-
}));
|
|
61
|
-
return xmlInstances.map((xml) => model.fromXML(xml));
|
|
62
|
-
}
|
|
63
|
-
} else if (type.is("union") && type.types.length && type.types[0].is("literal")) {
|
|
64
|
-
const firstType = type.types[0];
|
|
65
|
-
if (firstType.is("literal")) {
|
|
66
|
-
const firstTypeCtor = firstType.value.constructor;
|
|
67
|
-
if (type.types.every((type2) => type2.is("literal") && type2.value.constructor === firstTypeCtor)) {
|
|
68
|
-
const model = getModel(firstTypeCtor);
|
|
69
|
-
return model.fromXML({ elements });
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
return void 0;
|
|
74
|
-
},
|
|
75
|
-
/**
|
|
76
|
-
* Default model-level `toXML` handler.
|
|
77
|
-
* Collects serialised property fragments and wraps them in a root element
|
|
78
|
-
* named after the model's tagname.
|
|
79
|
-
*/
|
|
80
|
-
toXML({ properties, model }) {
|
|
81
|
-
const elements = [];
|
|
82
|
-
model.resolveAllProperties().forEach((prop) => {
|
|
83
|
-
if (prop.name in properties && typeof prop.name !== "symbol") {
|
|
84
|
-
const _xml = properties[prop.name];
|
|
85
|
-
_xml.elements.forEach((el) => {
|
|
86
|
-
el.name = prop.tagname;
|
|
87
|
-
elements.push(el);
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
});
|
|
91
|
-
return {
|
|
92
|
-
elements: [
|
|
93
|
-
{
|
|
94
|
-
type: "element",
|
|
95
|
-
name: model.options.tagname,
|
|
96
|
-
elements
|
|
97
|
-
}
|
|
98
|
-
]
|
|
99
|
-
};
|
|
100
|
-
},
|
|
101
|
-
/**
|
|
102
|
-
* Derives the XML tag name for a model from its class name, converted to kebab-case.
|
|
103
|
-
* e.g. `MyClass` → `my-class`.
|
|
104
|
-
*/
|
|
105
|
-
tagnameFromModel(model) {
|
|
106
|
-
return kebabCase(model.type.name);
|
|
107
|
-
},
|
|
108
|
-
/**
|
|
109
|
-
* Derives the XML tag name for a property from its name, converted to kebab-case.
|
|
110
|
-
* e.g. `myProp` → `my-prop`.
|
|
111
|
-
*/
|
|
112
|
-
tagnameFromProperty(property) {
|
|
113
|
-
return kebabCase(String(property.name));
|
|
114
|
-
},
|
|
115
|
-
/**
|
|
116
|
-
* Converts a typed property value to an `XMLRoot` fragment.
|
|
117
|
-
* Handles class types, arrays of class types, and union-of-literal types.
|
|
118
|
-
* When the property has `inline: true`, array items are flattened into the parent element.
|
|
119
|
-
*/
|
|
120
|
-
propertyToXML(context) {
|
|
121
|
-
const property = context.property;
|
|
122
|
-
const type = property.reflected.type;
|
|
123
|
-
const value = context.value;
|
|
124
|
-
if (property.reflected.isOptional && typeof value === "undefined") {
|
|
125
|
-
return { elements: [] };
|
|
126
|
-
}
|
|
127
|
-
if (property.model) {
|
|
128
|
-
return property.model.toXML(value);
|
|
129
|
-
}
|
|
130
|
-
const getXML = () => {
|
|
131
|
-
if (type.is("class")) {
|
|
132
|
-
const model = getModel(type.class);
|
|
133
|
-
return model.toXML(value);
|
|
134
|
-
} else if (type.is("array")) {
|
|
135
|
-
const elementType = type.elementType;
|
|
136
|
-
if (elementType.is("class")) {
|
|
137
|
-
const model = getModel(elementType.class);
|
|
138
|
-
const elements = [];
|
|
139
|
-
value.forEach((el) => elements.push(...model.toXML(el).elements));
|
|
140
|
-
return { elements: [{ type: "element", name: "array", elements }] };
|
|
141
|
-
}
|
|
142
|
-
} else if (type.is("union") && type.types.length && type.types[0].is("literal")) {
|
|
143
|
-
const firstType = type.types[0];
|
|
144
|
-
if (firstType.is("literal")) {
|
|
145
|
-
const firstTypeCtor = firstType.value.constructor;
|
|
146
|
-
if (type.types.every(
|
|
147
|
-
(type2) => type2.is("literal") && type2.value.constructor === firstTypeCtor
|
|
148
|
-
)) {
|
|
149
|
-
const model = getModel(firstTypeCtor);
|
|
150
|
-
return model.toXML(context.value);
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
return { elements: [] };
|
|
155
|
-
};
|
|
156
|
-
const xml = getXML();
|
|
157
|
-
if (context.property.inline)
|
|
158
|
-
return { elements: xml.elements.map((el) => el.elements || []).flat() };
|
|
159
|
-
else return xml;
|
|
160
|
-
}
|
|
161
|
-
};
|
|
162
|
-
export {
|
|
163
|
-
defaults
|
|
164
|
-
};
|
|
165
|
-
//# sourceMappingURL=defaults.js.map
|
package/dist/errors.d.ts
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { fromXMLContext, PropertyFromXMLContext, PropertyToXMLContext, toXMLContext } from './model/types';
|
|
2
|
-
/**
|
|
3
|
-
* Thrown when model-level XML → object conversion fails.
|
|
4
|
-
* Wraps the original error along with the conversion context.
|
|
5
|
-
*/
|
|
6
|
-
export declare class FromXMLConversionError<T> extends Error {
|
|
7
|
-
context: Omit<fromXMLContext<T>, "properties">;
|
|
8
|
-
error: unknown;
|
|
9
|
-
name: string;
|
|
10
|
-
constructor(context: Omit<fromXMLContext<T>, "properties">, error: unknown);
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* Thrown when a single property's XML → value conversion fails.
|
|
14
|
-
* Extends `FromXMLConversionError` with additional property context.
|
|
15
|
-
*/
|
|
16
|
-
export declare class PropertyFromXMLConversionError<T> extends FromXMLConversionError<T> {
|
|
17
|
-
propertyContext: PropertyFromXMLContext<T>;
|
|
18
|
-
name: string;
|
|
19
|
-
constructor(context: Omit<fromXMLContext<T>, "properties">, propertyContext: PropertyFromXMLContext<T>, error: unknown);
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Thrown when model-level object → XML conversion fails.
|
|
23
|
-
* Wraps the original cause along with the conversion context.
|
|
24
|
-
*/
|
|
25
|
-
export declare class ToXMLConversionError<T> extends Error {
|
|
26
|
-
context: Omit<toXMLContext<T>, "properties">;
|
|
27
|
-
cause: unknown;
|
|
28
|
-
name: string;
|
|
29
|
-
constructor(context: Omit<toXMLContext<T>, "properties">, cause: unknown);
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Thrown when a single property's value → XML conversion fails.
|
|
33
|
-
* Extends `ToXMLConversionError` with additional property context.
|
|
34
|
-
*/
|
|
35
|
-
export declare class PropertyToXMLConversionError<T> extends ToXMLConversionError<T> {
|
|
36
|
-
propertyContext: PropertyToXMLContext<T>;
|
|
37
|
-
name: string;
|
|
38
|
-
constructor(context: Omit<toXMLContext<T>, "properties">, propertyContext: PropertyToXMLContext<T>, cause: unknown);
|
|
39
|
-
}
|
|
40
|
-
//# sourceMappingURL=errors.d.ts.map
|
package/dist/errors.js
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
class FromXMLConversionError extends Error {
|
|
2
|
-
constructor(context, error) {
|
|
3
|
-
const message = `[Model: ${context.model.type.name}] failed to convert from XML`;
|
|
4
|
-
super(message);
|
|
5
|
-
this.context = context;
|
|
6
|
-
this.error = error;
|
|
7
|
-
this.name = "FromXMLConversionError";
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
class PropertyFromXMLConversionError extends FromXMLConversionError {
|
|
11
|
-
constructor(context, propertyContext, error) {
|
|
12
|
-
super(context, error);
|
|
13
|
-
this.propertyContext = propertyContext;
|
|
14
|
-
this.name = "PropertyFromXMLConversionError";
|
|
15
|
-
this.message = `[Model: ${context.model.type.name}] failed to convert prop <${String(
|
|
16
|
-
propertyContext.property.name
|
|
17
|
-
)}> from XML`;
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
class ToXMLConversionError extends Error {
|
|
21
|
-
constructor(context, cause) {
|
|
22
|
-
const message = `[Model: ${context.model.type.name}] failed to convert to XML`;
|
|
23
|
-
super(message);
|
|
24
|
-
this.context = context;
|
|
25
|
-
this.cause = cause;
|
|
26
|
-
this.name = "ToXMLConversionError";
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
class PropertyToXMLConversionError extends ToXMLConversionError {
|
|
30
|
-
constructor(context, propertyContext, cause) {
|
|
31
|
-
super(context, cause);
|
|
32
|
-
this.propertyContext = propertyContext;
|
|
33
|
-
this.name = "PropertyToXMLConversionError";
|
|
34
|
-
this.message = `[Model: ${context.model.type.name}] failed to convert prop <${String(
|
|
35
|
-
propertyContext.property.name
|
|
36
|
-
)}> to XML`;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
export {
|
|
40
|
-
FromXMLConversionError,
|
|
41
|
-
PropertyFromXMLConversionError,
|
|
42
|
-
PropertyToXMLConversionError,
|
|
43
|
-
ToXMLConversionError
|
|
44
|
-
};
|
|
45
|
-
//# sourceMappingURL=errors.js.map
|
package/dist/middleware.d.ts
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export type Middleware<C, T> = (context: C, next: () => T) => T;
|
|
2
|
-
interface ChainableOptions<C, T> {
|
|
3
|
-
parent: ChainableOptions<C, T> | null;
|
|
4
|
-
middlewares: Middleware<C, T>[];
|
|
5
|
-
}
|
|
6
|
-
export declare function MiddlewareChain<C, T>(options: ChainableOptions<C, T>): Generator<Middleware<C, T>, void, unknown>;
|
|
7
|
-
type MiddlewareChain<C, T> = Iterator<Middleware<C, T>>;
|
|
8
|
-
export declare function resolve<C, T>(middlewares: MiddlewareChain<C, T>, context: C): T;
|
|
9
|
-
export {};
|
|
10
|
-
//# sourceMappingURL=middleware.d.ts.map
|
package/dist/middleware.js
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
function* MiddlewareChain(options) {
|
|
2
|
-
do {
|
|
3
|
-
for (let index = options.middlewares.length - 1; index >= 0; index--) {
|
|
4
|
-
yield options.middlewares[index];
|
|
5
|
-
}
|
|
6
|
-
if (options.parent) options = options.parent;
|
|
7
|
-
else return;
|
|
8
|
-
} while (true);
|
|
9
|
-
}
|
|
10
|
-
function resolve(middlewares, context) {
|
|
11
|
-
const next = () => {
|
|
12
|
-
const { value: nextMiddleware, done } = middlewares.next();
|
|
13
|
-
if (done || !nextMiddleware) {
|
|
14
|
-
throw new Error("no more next middleware");
|
|
15
|
-
} else {
|
|
16
|
-
return nextMiddleware(context, next);
|
|
17
|
-
}
|
|
18
|
-
};
|
|
19
|
-
return next();
|
|
20
|
-
}
|
|
21
|
-
export {
|
|
22
|
-
MiddlewareChain,
|
|
23
|
-
resolve
|
|
24
|
-
};
|
|
25
|
-
//# sourceMappingURL=middleware.js.map
|
package/dist/model/built-ins.js
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { getContent, fromContent } from "../xml/index.js";
|
|
2
|
-
function registerBuiltIns(create) {
|
|
3
|
-
create(String, {
|
|
4
|
-
toXML(ctx) {
|
|
5
|
-
return {
|
|
6
|
-
elements: [fromContent(ctx.object, "string")]
|
|
7
|
-
};
|
|
8
|
-
},
|
|
9
|
-
fromXML(ctx) {
|
|
10
|
-
return String(getContent(ctx.xml.elements[0]));
|
|
11
|
-
}
|
|
12
|
-
});
|
|
13
|
-
create(Number, {
|
|
14
|
-
toXML(ctx) {
|
|
15
|
-
return {
|
|
16
|
-
elements: [fromContent(String(ctx.object), "number")]
|
|
17
|
-
};
|
|
18
|
-
},
|
|
19
|
-
fromXML(ctx) {
|
|
20
|
-
return Number(getContent(ctx.xml.elements[0]));
|
|
21
|
-
}
|
|
22
|
-
});
|
|
23
|
-
create(Boolean, {
|
|
24
|
-
toXML(ctx) {
|
|
25
|
-
return {
|
|
26
|
-
elements: [
|
|
27
|
-
{
|
|
28
|
-
type: "element",
|
|
29
|
-
name: "boolean",
|
|
30
|
-
...fromContent(String(ctx.object))
|
|
31
|
-
}
|
|
32
|
-
]
|
|
33
|
-
};
|
|
34
|
-
},
|
|
35
|
-
fromXML(ctx) {
|
|
36
|
-
return Boolean(getContent(ctx.xml.elements[0]));
|
|
37
|
-
}
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
export {
|
|
41
|
-
registerBuiltIns as default
|
|
42
|
-
};
|
|
43
|
-
//# sourceMappingURL=built-ins.js.map
|
package/dist/model/index.d.ts
DELETED
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
import { Constructor } from 'typescript-rtti';
|
|
2
|
-
import { XMLModelOptions, XMLModelPropertyOptions, CreateXMLModelOptions } from './types';
|
|
3
|
-
import { XMLRoot } from '../types';
|
|
4
|
-
/**
|
|
5
|
-
* Returns the parent `XMLModel` for the given model, walking the prototype chain
|
|
6
|
-
* if no explicit parent was set in options.
|
|
7
|
-
*/
|
|
8
|
-
export declare function getParentModel(model: XMLModel<any>): XMLModel<any>;
|
|
9
|
-
/**
|
|
10
|
-
* Encapsulates the XML ↔ TypeScript conversion logic for a specific class.
|
|
11
|
-
*
|
|
12
|
-
* Create instances via `createModel` or the `@Model()` decorator rather than
|
|
13
|
-
* calling this constructor directly.
|
|
14
|
-
*/
|
|
15
|
-
export declare class XMLModel<T = any> {
|
|
16
|
-
readonly type: Constructor<T>;
|
|
17
|
-
options: XMLModelOptions<T>;
|
|
18
|
-
constructor(type: Constructor<T>, options: CreateXMLModelOptions<T>);
|
|
19
|
-
/**
|
|
20
|
-
* Converts an XML document (string or parsed `XMLRoot`) into an instance of `T`.
|
|
21
|
-
*
|
|
22
|
-
* @param xml - Raw XML string or a pre-parsed `XMLRoot` object.
|
|
23
|
-
* @returns The converted instance produced by the model's `fromXML` middleware chain.
|
|
24
|
-
* @throws {FromXMLConversionError} When model-level conversion fails.
|
|
25
|
-
* @throws {PropertyFromXMLConversionError} When a property-level conversion fails.
|
|
26
|
-
*/
|
|
27
|
-
fromXML(xml: XMLRoot | string): T;
|
|
28
|
-
/**
|
|
29
|
-
* Converts an instance of `T` into an XML document.
|
|
30
|
-
*
|
|
31
|
-
* @param instance - An instance of the class this model was created for.
|
|
32
|
-
* @returns An `XMLRoot` representing the serialised object.
|
|
33
|
-
* @throws {TypeError} When `instance` is not an instance of the expected type.
|
|
34
|
-
* @throws {ToXMLConversionError} When model-level conversion fails.
|
|
35
|
-
* @throws {PropertyToXMLConversionError} When a property-level conversion fails.
|
|
36
|
-
*/
|
|
37
|
-
toXML(instance: unknown): XMLRoot;
|
|
38
|
-
/** The typescript-rtti reflection metadata for the model's class. */
|
|
39
|
-
get reflectedClass(): import('typescript-rtti').ReflectedClass<Constructor<T>>;
|
|
40
|
-
/**
|
|
41
|
-
* Returns a merged map of all property options for this model, including inherited properties.
|
|
42
|
-
* Own properties override parent properties with the same name.
|
|
43
|
-
*/
|
|
44
|
-
resolveAllProperties(): Map<string, XMLModelPropertyOptions<any> & {
|
|
45
|
-
model: any;
|
|
46
|
-
}>;
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Creates and registers a new `XMLModel` for the given constructor.
|
|
50
|
-
*
|
|
51
|
-
* @param type - The class constructor to create a model for.
|
|
52
|
-
* @param options - Model creation options including `fromXML` and `toXML` middlewares.
|
|
53
|
-
* @returns The newly created `XMLModel`.
|
|
54
|
-
* @throws {TypeError} When a model for this type has already been registered.
|
|
55
|
-
*/
|
|
56
|
-
export declare function createModel<T>(type: Constructor<T>, options: CreateXMLModelOptions<T>): XMLModel<T>;
|
|
57
|
-
/**
|
|
58
|
-
* Decorator factory that registers an `XMLModel` for the decorated class.
|
|
59
|
-
*
|
|
60
|
-
* Provide at minimum a `fromXML` function unless the class inherits from a
|
|
61
|
-
* parent class that already has a model — the default `fromXML` throws.
|
|
62
|
-
*
|
|
63
|
-
* @param options - Optional model creation options.
|
|
64
|
-
*/
|
|
65
|
-
declare function ModelDecoratorFactory<T>(options?: CreateXMLModelOptions<T>): (constructor: Constructor<T>) => void;
|
|
66
|
-
export { getModel } from './registry';
|
|
67
|
-
export { ModelDecoratorFactory as Model };
|
|
68
|
-
export { Prop } from './property';
|
|
69
|
-
//# sourceMappingURL=index.d.ts.map
|