xml-model 0.1.2 → 0.2.2

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 (37) hide show
  1. package/build/main/defaults/index.js +22 -16
  2. package/build/main/defaults/models.js +4 -4
  3. package/build/main/errors.d.ts +4 -0
  4. package/build/main/errors.js +35 -0
  5. package/build/main/middleware.js +11 -11
  6. package/build/main/model/index.d.ts +7 -9
  7. package/build/main/model/index.js +88 -67
  8. package/build/main/model/property.js +16 -14
  9. package/build/main/model/types.d.ts +5 -1
  10. package/build/main/model/types.js +86 -70
  11. package/build/main/types.d.ts +10 -2
  12. package/build/main/types.js +34 -1
  13. package/build/{module/xml.d.ts → main/xml/index.d.ts} +5 -4
  14. package/build/main/{xml.js → xml/index.js} +29 -19
  15. package/build/main/xml/xml-js.d.ts +9 -0
  16. package/build/main/xml/xml-js.js +26 -0
  17. package/build/module/defaults/index.js +24 -17
  18. package/build/module/defaults/models.js +6 -10
  19. package/build/module/errors.d.ts +4 -0
  20. package/build/module/errors.js +31 -0
  21. package/build/module/middleware.js +11 -11
  22. package/build/module/model/index.d.ts +7 -9
  23. package/build/module/model/index.js +97 -74
  24. package/build/module/model/property.js +18 -16
  25. package/build/module/model/types.d.ts +5 -1
  26. package/build/module/model/types.js +88 -72
  27. package/build/module/types.d.ts +10 -2
  28. package/build/module/types.js +33 -2
  29. package/build/{main/xml.d.ts → module/xml/index.d.ts} +5 -4
  30. package/build/module/{xml.js → xml/index.js} +26 -18
  31. package/build/module/xml/xml-js.d.ts +9 -0
  32. package/build/module/xml/xml-js.js +24 -0
  33. package/package.json +2 -2
  34. package/build/main/model.spec.d.ts +0 -1
  35. package/build/main/model.spec.js +0 -261
  36. package/build/module/model.spec.d.ts +0 -1
  37. package/build/module/model.spec.js +0 -259
@@ -1,6 +1,9 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.setAttribute = exports.addElement = exports.fromContent = exports.getContent = exports.stringify = exports.parse = void 0;
6
+ exports.deleteAttribute = exports.setAttribute = exports.addElement = exports.fromContent = exports.getContent = exports.stringify = exports.parse = void 0;
4
7
  const __RΦ = { m: (k, v) => (t, ...a) => t && Reflect.metadata ? Reflect.metadata(k, v)(t, ...a) : void 0, f: (f, d, n) => (d.forEach(d => d(f)), Object.defineProperty(f, "name", { value: n, writable: false }), f), c: (c, d, dp, dsp, n) => (d.forEach(d => d(c)), dp.forEach(([p, d]) => d(c.prototype, p)), dsp.forEach(([p, d]) => d(c, p)), n ? Object.defineProperty(c, "name", { value: n, writable: false }) : undefined, c), r: (o, a) => (Object.assign(o, a)), a: id => {
5
8
  let t = __RΦ.t[id];
6
9
  if (t === void 0)
@@ -16,22 +19,19 @@ const __RΦ = { m: (k, v) => (t, ...a) => t && Reflect.metadata ? Reflect.metada
16
19
  __RΦ.t[id] = t = l;
17
20
  }
18
21
  return t;
19
- }, t: { [13]: { LΦ: t => String }, [93]: { RΦ: t => ({ TΦ: "O", m: [{ n: "elements", f: "", t: __RΦ.a(92) }] }) }, [92]: { RΦ: t => ({ TΦ: "[", e: __RΦ.a(91) }) }, [91]: { LΦ: t => require("xml-js/types").IΦElement }, [1021]: { RΦ: t => ({ TΦ: "|", t: [__RΦ.a(10), __RΦ.a(1018)] }) }, [10]: { RΦ: t => ({ TΦ: "u" }) }, [1018]: { LΦ: t => require("xml-js/types").IΦJS2XML }, [1046]: { RΦ: t => ({ TΦ: "|", t: [__RΦ.a(10), __RΦ.a(13), __RΦ.a(14), __RΦ.a(17), __RΦ.a(19)] }) }, [14]: { LΦ: t => Number }, [17]: { RΦ: t => ({ TΦ: "0" }) }, [19]: { RΦ: t => ({ TΦ: "1" }) }, [46]: { LΦ: t => "" }, [1062]: { RΦ: t => ({ TΦ: "|", t: [__RΦ.a(10), __RΦ.a(1061)] }) }, [1061]: { LΦ: t => require("xml-js/types").IΦAttributes }, [22]: { RΦ: t => ({ TΦ: "V" }) } } };
20
- const xml_js_1 = require("xml-js");
22
+ }, t: { [13]: { LΦ: t => String }, [109]: { RΦ: t => ({ TΦ: "O", m: [{ n: "elements", f: "", t: __RΦ.a(105) }] }) }, [105]: { RΦ: t => ({ TΦ: "[", e: __RΦ.a(103) }) }, [103]: { LΦ: t => require("../types").IΦXMLElement }, [108]: { RΦ: t => ({ TΦ: "|", t: [__RΦ.a(10), __RΦ.a(13), __RΦ.a(14), __RΦ.a(17), __RΦ.a(19)] }) }, [10]: { RΦ: t => ({ TΦ: "u" }) }, [14]: { LΦ: t => Number }, [17]: { RΦ: t => ({ TΦ: "0" }) }, [19]: { RΦ: t => ({ TΦ: "1" }) }, [46]: { LΦ: t => "" }, [104]: { RΦ: t => ({ TΦ: "|", t: [__RΦ.a(10), __RΦ.a(101)] }) }, [101]: { LΦ: t => require("../types").IΦXMLAttributes }, [22]: { RΦ: t => ({ TΦ: "V" }) } } };
23
+ /**
24
+ * @rtti:skip
25
+ */
26
+ const xml_js_1 = __importDefault(require("./xml-js"));
21
27
  function parse(string) {
22
- return (0, xml_js_1.xml2js)(string);
28
+ return xml_js_1.default.parse(string);
23
29
  }
24
30
  exports.parse = parse;
25
31
  __RΦ.m("rt:p", [{ n: "string", t: () => __RΦ.a(13), v: null }])(parse);
26
32
  __RΦ.m("rt:f", "F")(parse);
27
- __RΦ.m("rt:t", () => __RΦ.a(93))(parse);
28
- function stringify(xml, options) {
29
- return (0, xml_js_1.js2xml)(xml, options);
30
- }
31
- exports.stringify = stringify;
32
- __RΦ.m("rt:p", [{ n: "xml", t: () => __RΦ.a(93), v: null }, { n: "options", t: () => __RΦ.a(1021), v: null, f: "?" }])(stringify);
33
- __RΦ.m("rt:f", "F")(stringify);
34
- __RΦ.m("rt:t", () => __RΦ.a(13))(stringify);
33
+ __RΦ.m("rt:t", () => __RΦ.a(109))(parse);
34
+ exports.stringify = xml_js_1.default.stringify;
35
35
  function getContent(xml) {
36
36
  var _a;
37
37
  if (((_a = xml.elements) === null || _a === void 0 ? void 0 : _a.length) === 1) {
@@ -44,9 +44,9 @@ function getContent(xml) {
44
44
  throw new TypeError(`can't get text from XMLElement: ${JSON.stringify(xml)}`);
45
45
  }
46
46
  exports.getContent = getContent;
47
- __RΦ.m("rt:p", [{ n: "xml", t: () => __RΦ.a(91), v: null }])(getContent);
47
+ __RΦ.m("rt:p", [{ n: "xml", t: () => __RΦ.a(103), v: null }])(getContent);
48
48
  __RΦ.m("rt:f", "F")(getContent);
49
- __RΦ.m("rt:t", () => __RΦ.a(1046))(getContent);
49
+ __RΦ.m("rt:t", () => __RΦ.a(108))(getContent);
50
50
  function fromContent(content = "", tag, attributes) {
51
51
  const el = {
52
52
  elements: content ? [{ type: "text", text: String(content) }] : [],
@@ -63,16 +63,16 @@ function fromContent(content = "", tag, attributes) {
63
63
  return el;
64
64
  }
65
65
  exports.fromContent = fromContent;
66
- __RΦ.m("rt:p", [{ n: "content", t: () => __RΦ.a(46), v: function () { return ""; } }, { n: "tag", t: () => __RΦ.a(13), v: null, f: "?" }, { n: "attributes", t: () => __RΦ.a(1062), v: null, f: "?" }])(fromContent);
66
+ __RΦ.m("rt:p", [{ n: "content", t: () => __RΦ.a(46), v: function () { return ""; } }, { n: "tag", t: () => __RΦ.a(13), v: null, f: "?" }, { n: "attributes", t: () => __RΦ.a(104), v: null, f: "?" }])(fromContent);
67
67
  __RΦ.m("rt:f", "F")(fromContent);
68
- __RΦ.m("rt:t", () => __RΦ.a(91))(fromContent);
68
+ __RΦ.m("rt:t", () => __RΦ.a(103))(fromContent);
69
69
  function addElement(xml, element) {
70
70
  if (!xml.elements)
71
71
  xml.elements = [];
72
72
  xml.elements.push(element);
73
73
  }
74
74
  exports.addElement = addElement;
75
- __RΦ.m("rt:p", [{ n: "xml", t: () => __RΦ.a(91), v: null }, { n: "element", t: () => __RΦ.a(91), v: null }])(addElement);
75
+ __RΦ.m("rt:p", [{ n: "xml", t: () => __RΦ.a(103), v: null }, { n: "element", t: () => __RΦ.a(103), v: null }])(addElement);
76
76
  __RΦ.m("rt:f", "F")(addElement);
77
77
  __RΦ.m("rt:t", () => __RΦ.a(22))(addElement);
78
78
  function setAttribute(xml, attribute, value) {
@@ -81,15 +81,25 @@ function setAttribute(xml, attribute, value) {
81
81
  xml.attributes[attribute] = value;
82
82
  }
83
83
  exports.setAttribute = setAttribute;
84
- __RΦ.m("rt:p", [{ n: "xml", t: () => __RΦ.a(91), v: null }, { n: "attribute", t: () => __RΦ.a(13), v: null }, { n: "value", t: () => __RΦ.a(13), v: null }])(setAttribute);
84
+ __RΦ.m("rt:p", [{ n: "xml", t: () => __RΦ.a(103), v: null }, { n: "attribute", t: () => __RΦ.a(13), v: null }, { n: "value", t: () => __RΦ.a(13), v: null }])(setAttribute);
85
85
  __RΦ.m("rt:f", "F")(setAttribute);
86
86
  __RΦ.m("rt:t", () => __RΦ.a(22))(setAttribute);
87
+ function deleteAttribute(xml, attribute) {
88
+ if (!xml.attributes)
89
+ return;
90
+ delete xml.attributes[attribute];
91
+ }
92
+ exports.deleteAttribute = deleteAttribute;
93
+ __RΦ.m("rt:p", [{ n: "xml", t: () => __RΦ.a(103), v: null }, { n: "attribute", t: () => __RΦ.a(13), v: null }])(deleteAttribute);
94
+ __RΦ.m("rt:f", "F")(deleteAttribute);
95
+ __RΦ.m("rt:t", () => __RΦ.a(22))(deleteAttribute);
87
96
  const XML = {
88
97
  parse,
89
- stringify,
98
+ stringify: exports.stringify,
90
99
  fromContent,
91
100
  getContent,
92
101
  addElement,
93
102
  setAttribute,
103
+ deleteAttribute,
94
104
  };
95
105
  exports.default = XML;
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @rtti:skip
3
+ */
4
+ import { xml2js as parse, js2xml as stringify } from "xml-js";
5
+ declare const _default: {
6
+ parse: typeof parse;
7
+ stringify: typeof stringify;
8
+ };
9
+ export default _default;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const __RΦ = { m: (k, v) => (t, ...a) => t && Reflect.metadata ? Reflect.metadata(k, v)(t, ...a) : void 0, f: (f, d, n) => (d.forEach(d => d(f)), Object.defineProperty(f, "name", { value: n, writable: false }), f), c: (c, d, dp, dsp, n) => (d.forEach(d => d(c)), dp.forEach(([p, d]) => d(c.prototype, p)), dsp.forEach(([p, d]) => d(c, p)), n ? Object.defineProperty(c, "name", { value: n, writable: false }) : undefined, c), r: (o, a) => (Object.assign(o, a)), a: id => {
4
+ let t = __RΦ.t[id];
5
+ if (t === void 0)
6
+ return void 0;
7
+ if (t.RΦ) {
8
+ let r = t.RΦ;
9
+ delete t.RΦ;
10
+ __RΦ.r(t, r(t));
11
+ }
12
+ else if (t.LΦ) {
13
+ let l = t.LΦ();
14
+ delete t.LΦ;
15
+ __RΦ.t[id] = t = l;
16
+ }
17
+ return t;
18
+ }, t: {} };
19
+ /**
20
+ * @rtti:skip
21
+ */
22
+ const xml_js_1 = require("xml-js");
23
+ exports.default = {
24
+ parse: xml_js_1.xml2js,
25
+ stringify: xml_js_1.js2xml,
26
+ };
@@ -21,18 +21,22 @@ export const defaults = {
21
21
  throw new TypeError("you should define 'defaults.fromXML' yourself or provide a 'fromXML' function to @Model() decorator's options");
22
22
  },
23
23
  propertyResolveSourceElements(context) {
24
+ var _a;
24
25
  // We assume context.xml.elements is a single tag containing all the props
25
26
  // FIXME: is it safe ?
26
- const innerElements = context.xml.elements[0]?.elements || [];
27
+ const innerElements = ((_a = context.xml.elements[0]) === null || _a === void 0 ? void 0 : _a.elements) || [];
27
28
  return innerElements.filter((el) => context.property.isSourceElement(el, context));
28
29
  },
29
30
  propertySourceElementsFilter(element, context) {
30
- return context.property.tagname == element.name;
31
+ return context.property.tagname === element.name;
31
32
  },
32
33
  propertyFromXML(context) {
33
34
  // TODO: handle inline
34
35
  const prop = context.property;
35
36
  const elements = context.elements;
37
+ if (prop.model) {
38
+ return prop.model.fromXML({ elements });
39
+ }
36
40
  const type = context.property.reflected.type;
37
41
  if (prop.reflected.isOptional && elements.length === 0) {
38
42
  return undefined;
@@ -49,20 +53,18 @@ export const defaults = {
49
53
  // we assume our array is contained in a root tag
50
54
  arrayEl = elements[0];
51
55
  }
52
- else if (prop.inline &&
53
- elements.every((el) => el.name === prop.tagname)) {
56
+ else if (prop.inline) {
54
57
  // we assume our array is contained in xml.elements
55
58
  arrayEl = { elements };
56
59
  }
57
- if (arrayEl.elements) {
58
- const elType = type.elementType;
59
- if (elType.is("class")) {
60
- const model = getModel(elType.class);
61
- const xmlInstances = arrayEl.elements.map((el) => ({
62
- elements: [el],
63
- }));
64
- return xmlInstances.map((xml) => model.fromXML(xml));
65
- }
60
+ const els = arrayEl.elements || [];
61
+ const elType = type.elementType;
62
+ if (elType.is("class")) {
63
+ const model = getModel(elType.class);
64
+ const xmlInstances = els.map((el) => ({
65
+ elements: [el],
66
+ }));
67
+ return xmlInstances.map((xml) => model.fromXML(xml));
66
68
  }
67
69
  }
68
70
  else if (type.is("union") &&
@@ -84,14 +86,16 @@ export const defaults = {
84
86
  /* Object -> XML */
85
87
  toXML({ properties, model }) {
86
88
  const elements = [];
87
- model.options.properties.options.forEach((prop) => {
89
+ model.resolveAllProperties().forEach((prop) => {
88
90
  if (prop.name in properties && typeof prop.name !== "symbol") {
89
91
  // FIXME: prop.name should never be a symbol anyway
90
92
  const _xml = properties[prop.name];
91
- // overwrite tagnames
92
93
  _xml.elements.forEach((el) => {
93
- (el.name = prop.tagname), // TODO: configurable ?
94
- elements.push(el);
94
+ if (!prop.inline) {
95
+ // overwrite tagnames
96
+ el.name = prop.tagname; // TODO: configurable ?
97
+ }
98
+ elements.push(el);
95
99
  });
96
100
  }
97
101
  });
@@ -113,6 +117,9 @@ export const defaults = {
113
117
  },
114
118
  propertyToXML(context) {
115
119
  const property = context.property;
120
+ if (property.model) {
121
+ return property.model.toXML(context.value);
122
+ }
116
123
  const type = property.reflected.type;
117
124
  const value = context.value;
118
125
  if (property.reflected.isOptional && typeof value === "undefined") {
@@ -13,17 +13,17 @@ const __RΦ = { m: (k, v) => (t, ...a) => t && Reflect.metadata ? Reflect.metada
13
13
  __RΦ.t[id] = t = l;
14
14
  }
15
15
  return t;
16
- }, t: { [4]: { RΦ: t => ({ TΦ: "~" }) }, [1248]: { RΦ: t => ({ TΦ: "O", m: [{ n: "elements", f: "", t: __RΦ.a(1246) }] }) }, [1246]: { RΦ: t => ({ TΦ: "[", e: __RΦ.a(1066) }) }, [1066]: { RΦ: t => ({ TΦ: "O", m: [{ n: "type", f: "", t: __RΦ.a(1067) }, { n: "name", f: "", t: __RΦ.a(13) }, { n: "attributes", f: "?", t: __RΦ.a(1065) }, { n: "elements", f: "", t: __RΦ.a(1071) }] }) }, [1067]: { LΦ: t => "element" }, [13]: { LΦ: t => String }, [1065]: { RΦ: t => ({ TΦ: "|", t: [__RΦ.a(10), __RΦ.a(1064)] }) }, [10]: { RΦ: t => ({ TΦ: "u" }) }, [1064]: { LΦ: t => LΦ_0.IΦAttributes }, [1071]: { RΦ: t => ({ TΦ: "|", t: [__RΦ.a(166), __RΦ.a(1070)] }) }, [166]: { RΦ: t => ({ TΦ: "O", m: [] }) }, [1070]: { RΦ: t => ({ TΦ: "T", e: [{ t: __RΦ.a(1069) }] }) }, [1069]: { RΦ: t => ({ TΦ: "O", m: [{ n: "type", f: "", t: __RΦ.a(1046) }, { n: "text", f: "", t: __RΦ.a(13) }] }) }, [1046]: { LΦ: t => "text" }, [1269]: { RΦ: t => ({ TΦ: "O", m: [{ n: "elements", f: "", t: __RΦ.a(1246) }] }) }, [14]: { LΦ: t => Number }, [1295]: { RΦ: t => ({ TΦ: "O", m: [{ n: "elements", f: "", t: __RΦ.a(3014) }] }) }, [3014]: { RΦ: t => ({ TΦ: "[", e: __RΦ.a(3012) }) }, [3012]: { RΦ: t => ({ TΦ: "O", m: [{ n: "type", f: "", t: __RΦ.a(13) }, { n: "name", f: "", t: __RΦ.a(13) }] }) }, [20]: { LΦ: t => Boolean } } };
16
+ }, t: { [4]: { RΦ: t => ({ TΦ: "~" }) }, [109]: { RΦ: t => ({ TΦ: "O", m: [{ n: "elements", f: "", t: __RΦ.a(105) }] }) }, [105]: { RΦ: t => ({ TΦ: "[", e: __RΦ.a(103) }) }, [103]: { LΦ: t => LΦ_0.IΦXMLElement }, [13]: { LΦ: t => String }, [14]: { LΦ: t => Number }, [1694]: { RΦ: t => ({ TΦ: "O", m: [{ n: "elements", f: "", t: __RΦ.a(3121) }] }) }, [3121]: { RΦ: t => ({ TΦ: "[", e: __RΦ.a(3119) }) }, [3119]: { RΦ: t => ({ TΦ: "O", m: [{ n: "type", f: "", t: __RΦ.a(13) }, { n: "name", f: "", t: __RΦ.a(13) }] }) }, [20]: { LΦ: t => Boolean } } };
17
17
  import { createModel } from "../model";
18
18
  import { getContent, fromContent } from "../xml";
19
- import * as LΦ_0 from "xml-js/types";
19
+ import * as LΦ_0 from "../types";
20
20
  // string is <string>value</string>
21
21
  createModel(String, {
22
22
  toXML: __RΦ.f((ctx) => {
23
23
  return {
24
24
  elements: [fromContent(ctx.object, "string")],
25
25
  };
26
- }, [__RΦ.m("rt:p", [{ n: "ctx", t: () => __RΦ.a(4), v: null }]), __RΦ.m("rt:f", "F>"), __RΦ.m("rt:t", () => __RΦ.a(1248))], "toXML"),
26
+ }, [__RΦ.m("rt:p", [{ n: "ctx", t: () => __RΦ.a(4), v: null }]), __RΦ.m("rt:f", "F>"), __RΦ.m("rt:t", () => __RΦ.a(109))], "toXML"),
27
27
  fromXML: __RΦ.f((ctx) => {
28
28
  return String(getContent(ctx.xml.elements[0]));
29
29
  }, [__RΦ.m("rt:p", [{ n: "ctx", t: () => __RΦ.a(4), v: null }]), __RΦ.m("rt:f", "F>"), __RΦ.m("rt:t", () => __RΦ.a(13))], "fromXML"),
@@ -34,7 +34,7 @@ createModel(Number, {
34
34
  return {
35
35
  elements: [fromContent(String(ctx.object), "number")],
36
36
  };
37
- }, [__RΦ.m("rt:p", [{ n: "ctx", t: () => __RΦ.a(4), v: null }]), __RΦ.m("rt:f", "F>"), __RΦ.m("rt:t", () => __RΦ.a(1269))], "toXML"),
37
+ }, [__RΦ.m("rt:p", [{ n: "ctx", t: () => __RΦ.a(4), v: null }]), __RΦ.m("rt:f", "F>"), __RΦ.m("rt:t", () => __RΦ.a(109))], "toXML"),
38
38
  fromXML: __RΦ.f((ctx) => {
39
39
  return Number(getContent(ctx.xml.elements[0]));
40
40
  }, [__RΦ.m("rt:p", [{ n: "ctx", t: () => __RΦ.a(4), v: null }]), __RΦ.m("rt:f", "F>"), __RΦ.m("rt:t", () => __RΦ.a(14))], "fromXML"),
@@ -44,14 +44,10 @@ createModel(Boolean, {
44
44
  toXML: __RΦ.f((ctx) => {
45
45
  return {
46
46
  elements: [
47
- {
48
- type: "element",
49
- name: "boolean",
50
- ...fromContent(String(ctx.object)),
51
- },
47
+ Object.assign({ type: "element", name: "boolean" }, fromContent(String(ctx.object))),
52
48
  ],
53
49
  };
54
- }, [__RΦ.m("rt:p", [{ n: "ctx", t: () => __RΦ.a(4), v: null }]), __RΦ.m("rt:f", "F>"), __RΦ.m("rt:t", () => __RΦ.a(1295))], "toXML"),
50
+ }, [__RΦ.m("rt:p", [{ n: "ctx", t: () => __RΦ.a(4), v: null }]), __RΦ.m("rt:f", "F>"), __RΦ.m("rt:t", () => __RΦ.a(1694))], "toXML"),
55
51
  fromXML: __RΦ.f((ctx) => {
56
52
  return Boolean(getContent(ctx.xml.elements[0]));
57
53
  }, [__RΦ.m("rt:p", [{ n: "ctx", t: () => __RΦ.a(4), v: null }]), __RΦ.m("rt:f", "F>"), __RΦ.m("rt:t", () => __RΦ.a(20))], "fromXML"),
@@ -0,0 +1,4 @@
1
+ export declare class XMLConversionError extends Error {
2
+ origin: unknown;
3
+ constructor(message: string, origin?: XMLConversionError["origin"]);
4
+ }
@@ -0,0 +1,31 @@
1
+ const __RΦ = { m: (k, v) => (t, ...a) => t && Reflect.metadata ? Reflect.metadata(k, v)(t, ...a) : void 0, f: (f, d, n) => (d.forEach(d => d(f)), Object.defineProperty(f, "name", { value: n, writable: false }), f), c: (c, d, dp, dsp, n) => (d.forEach(d => d(c)), dp.forEach(([p, d]) => d(c.prototype, p)), dsp.forEach(([p, d]) => d(c, p)), n ? Object.defineProperty(c, "name", { value: n, writable: false }) : undefined, c), r: (o, a) => (Object.assign(o, a)), a: id => {
2
+ let t = __RΦ.t[id];
3
+ if (t === void 0)
4
+ return void 0;
5
+ if (t.RΦ) {
6
+ let r = t.RΦ;
7
+ delete t.RΦ;
8
+ __RΦ.r(t, r(t));
9
+ }
10
+ else if (t.LΦ) {
11
+ let l = t.LΦ();
12
+ delete t.LΦ;
13
+ __RΦ.t[id] = t = l;
14
+ }
15
+ return t;
16
+ }, t: { [13]: { LΦ: t => String }, [8]: { RΦ: t => ({ TΦ: "U" }) } } };
17
+ export class XMLConversionError extends Error {
18
+ constructor(message, origin) {
19
+ super(message);
20
+ this.origin = origin;
21
+ }
22
+ }
23
+ (t => __RΦ.t[85] = t)(XMLConversionError);
24
+ __RΦ.m("rt:SP", [])(XMLConversionError);
25
+ __RΦ.m("rt:P", ["origin"])(XMLConversionError);
26
+ __RΦ.m("rt:Sm", [])(XMLConversionError);
27
+ __RΦ.m("rt:m", [])(XMLConversionError);
28
+ __RΦ.m("rt:p", [{ n: "message", t: () => __RΦ.a(13), v: null }, { n: "origin", t: () => __RΦ.a(8), v: null, f: "?" }])(XMLConversionError);
29
+ __RΦ.m("rt:f", "Ce")(XMLConversionError);
30
+ __RΦ.m("rt:t", () => __RΦ.a(8))(XMLConversionError.prototype, "origin");
31
+ __RΦ.m("rt:f", "P")(XMLConversionError.prototype, "origin");
@@ -13,19 +13,19 @@ const __RΦ = { m: (k, v) => (t, ...a) => t && Reflect.metadata ? Reflect.metada
13
13
  __RΦ.t[id] = t = l;
14
14
  }
15
15
  return t;
16
- }, t: { [102]: { RΦ: t => ({ TΦ: "|", t: [__RΦ.a(12), __RΦ.a(99)] }) }, [12]: { RΦ: t => ({ TΦ: "n" }) }, [99]: { TΦ: "5", name: "ChainableOptions" }, [105]: { RΦ: t => ({ TΦ: "[", e: __RΦ.a(104) }) }, [104]: { RΦ: t => ({ TΦ: "O", m: [{ n: "__call", f: "", t: __RΦ.a(4) }] }) }, [4]: { RΦ: t => ({ TΦ: "~" }) }, [108]: { RΦ: t => ({ TΦ: "g", t: __RΦ.a(99), p: [__RΦ.a(106), __RΦ.a(107)] }) }, [106]: { LΦ: t => Object }, [107]: { LΦ: t => Object }, [127]: { RΦ: t => ({ TΦ: "g", t: __RΦ.a(122), p: [__RΦ.a(109), __RΦ.a(22), __RΦ.a(8)] }) }, [122]: { LΦ: t => Object }, [109]: { RΦ: t => ({ TΦ: "O", m: [{ n: "__call", f: "", t: __RΦ.a(4) }] }) }, [22]: { RΦ: t => ({ TΦ: "V" }) }, [8]: { RΦ: t => ({ TΦ: "U" }) }, [139]: { RΦ: t => ({ TΦ: "g", t: __RΦ.a(131), p: [__RΦ.a(142), __RΦ.a(1), __RΦ.a(10)] }) }, [131]: { LΦ: t => Object }, [142]: { RΦ: t => ({ TΦ: "O", m: [{ n: "__call", f: "", t: __RΦ.a(4) }] }) }, [1]: { RΦ: t => ({ TΦ: "~" }) }, [10]: { RΦ: t => ({ TΦ: "u" }) }, [137]: { LΦ: t => Object }, [138]: { LΦ: t => Object } } };
16
+ }, t: { [118]: { RΦ: t => ({ TΦ: "|", t: [__RΦ.a(12), __RΦ.a(115)] }) }, [12]: { RΦ: t => ({ TΦ: "n" }) }, [115]: { TΦ: "5", name: "ChainableOptions" }, [121]: { RΦ: t => ({ TΦ: "[", e: __RΦ.a(120) }) }, [120]: { RΦ: t => ({ TΦ: "O", m: [{ n: "__call", f: "", t: __RΦ.a(4) }] }) }, [4]: { RΦ: t => ({ TΦ: "~" }) }, [124]: { RΦ: t => ({ TΦ: "g", t: __RΦ.a(115), p: [__RΦ.a(122), __RΦ.a(123)] }) }, [122]: { LΦ: t => Object }, [123]: { LΦ: t => Object }, [143]: { RΦ: t => ({ TΦ: "g", t: __RΦ.a(138), p: [__RΦ.a(125), __RΦ.a(22), __RΦ.a(8)] }) }, [138]: { LΦ: t => Object }, [125]: { RΦ: t => ({ TΦ: "O", m: [{ n: "__call", f: "", t: __RΦ.a(4) }] }) }, [22]: { RΦ: t => ({ TΦ: "V" }) }, [8]: { RΦ: t => ({ TΦ: "U" }) }, [155]: { RΦ: t => ({ TΦ: "g", t: __RΦ.a(147), p: [__RΦ.a(158), __RΦ.a(1), __RΦ.a(10)] }) }, [147]: { LΦ: t => Object }, [158]: { RΦ: t => ({ TΦ: "O", m: [{ n: "__call", f: "", t: __RΦ.a(4) }] }) }, [1]: { RΦ: t => ({ TΦ: "~" }) }, [10]: { RΦ: t => ({ TΦ: "u" }) }, [153]: { LΦ: t => Object }, [154]: { LΦ: t => Object } } };
17
17
  var IΦChainableOptions = { name: "ChainableOptions", prototype: {}, identity: Symbol("ChainableOptions (interface)") };
18
- (t => __RΦ.t[99] = t)(IΦChainableOptions);
18
+ (t => __RΦ.t[115] = t)(IΦChainableOptions);
19
19
  __RΦ.m("rt:P", ["parent", "middlewares"])(IΦChainableOptions);
20
20
  __RΦ.m("rt:m", [])(IΦChainableOptions);
21
21
  __RΦ.m("rt:f", "I")(IΦChainableOptions);
22
- __RΦ.m("rt:t", () => __RΦ.a(102))(IΦChainableOptions.prototype, "parent");
22
+ __RΦ.m("rt:t", () => __RΦ.a(118))(IΦChainableOptions.prototype, "parent");
23
23
  __RΦ.m("rt:f", "P")(IΦChainableOptions.prototype, "parent");
24
- __RΦ.m("rt:t", () => __RΦ.a(105))(IΦChainableOptions.prototype, "middlewares");
24
+ __RΦ.m("rt:t", () => __RΦ.a(121))(IΦChainableOptions.prototype, "middlewares");
25
25
  __RΦ.m("rt:f", "P")(IΦChainableOptions.prototype, "middlewares");
26
- __RΦ.m("rt:t", () => __RΦ.a(102))(IΦChainableOptions.prototype, "parent");
26
+ __RΦ.m("rt:t", () => __RΦ.a(118))(IΦChainableOptions.prototype, "parent");
27
27
  __RΦ.m("rt:f", "P")(IΦChainableOptions.prototype, "parent");
28
- __RΦ.m("rt:t", () => __RΦ.a(105))(IΦChainableOptions.prototype, "middlewares");
28
+ __RΦ.m("rt:t", () => __RΦ.a(121))(IΦChainableOptions.prototype, "middlewares");
29
29
  __RΦ.m("rt:f", "P")(IΦChainableOptions.prototype, "middlewares");
30
30
  export function* MiddlewareChain(options) {
31
31
  do {
@@ -38,9 +38,9 @@ export function* MiddlewareChain(options) {
38
38
  return;
39
39
  } while (true);
40
40
  }
41
- __RΦ.m("rt:p", [{ n: "options", t: () => __RΦ.a(108), v: null }])(MiddlewareChain);
41
+ __RΦ.m("rt:p", [{ n: "options", t: () => __RΦ.a(124), v: null }])(MiddlewareChain);
42
42
  __RΦ.m("rt:f", "F")(MiddlewareChain);
43
- __RΦ.m("rt:t", () => __RΦ.a(127))(MiddlewareChain);
43
+ __RΦ.m("rt:t", () => __RΦ.a(143))(MiddlewareChain);
44
44
  export function resolve(middlewares, context) {
45
45
  const next = __RΦ.f(() => {
46
46
  const { value: nextMiddleware, done } = middlewares.next();
@@ -52,9 +52,9 @@ export function resolve(middlewares, context) {
52
52
  else {
53
53
  return nextMiddleware(context, next);
54
54
  }
55
- }, [__RΦ.m("rt:p", []), __RΦ.m("rt:f", "F>"), __RΦ.m("rt:t", () => __RΦ.a(138))], "next");
55
+ }, [__RΦ.m("rt:p", []), __RΦ.m("rt:f", "F>"), __RΦ.m("rt:t", () => __RΦ.a(154))], "next");
56
56
  return next();
57
57
  }
58
- __RΦ.m("rt:p", [{ n: "middlewares", t: () => __RΦ.a(139), v: null }, { n: "context", t: () => __RΦ.a(137), v: null }])(resolve);
58
+ __RΦ.m("rt:p", [{ n: "middlewares", t: () => __RΦ.a(155), v: null }, { n: "context", t: () => __RΦ.a(153), v: null }])(resolve);
59
59
  __RΦ.m("rt:f", "F")(resolve);
60
- __RΦ.m("rt:t", () => __RΦ.a(138))(resolve);
60
+ __RΦ.m("rt:t", () => __RΦ.a(154))(resolve);
@@ -1,26 +1,24 @@
1
1
  import "reflect-metadata";
2
2
  import type { Constructor } from "typescript-rtti";
3
- import { XMLModelOptions } from "./types";
3
+ import { XMLModelOptions, XMLModelPropertyOptions, CreateXMLModelOptions } from "./types";
4
4
  import { XMLRoot } from "../types";
5
- export interface XMLModelConversionOptions<T> {
6
- fromXML?: XMLModelOptions<T>["fromXML"]["middlewares"][number];
7
- tagname?: string;
8
- toXML?: XMLModelOptions<T>["toXML"]["middlewares"][number];
9
- }
10
5
  export declare class XMLModel<T = any> {
11
6
  readonly type: Constructor<T>;
12
7
  options: XMLModelOptions<T>;
13
- constructor(type: Constructor<T>, options: XMLModelConversionOptions<T>);
8
+ constructor(type: Constructor<T>, options: CreateXMLModelOptions<T>);
14
9
  fromXML(xml: XMLRoot | string): T;
15
10
  toXML(instance: object): XMLRoot;
16
11
  get reflectedClass(): import("typescript-rtti").ReflectedClass<Constructor<T>>;
12
+ resolveAllProperties(): Map<string, XMLModelPropertyOptions<any> & {
13
+ model: any;
14
+ }>;
17
15
  }
18
- export declare function createModel<T>(type: Constructor<T>, options: XMLModelConversionOptions<T>): XMLModel<T>;
16
+ export declare function createModel<T>(type: Constructor<T>, options: CreateXMLModelOptions<T>): XMLModel<T>;
19
17
  declare type ModelID<T> = Constructor<T>;
20
18
  export declare const Models: Map<ModelID<unknown>, XMLModel<unknown>>;
21
19
  export declare function findModel<T>(id: ModelID<T>): XMLModel<T> | undefined;
22
20
  export declare function getModel<T>(id: ModelID<T>): XMLModel<T>;
23
- declare function ModelDecoratorFactory<T>(options?: XMLModelConversionOptions<T>): (constructor: Constructor<T>) => void;
21
+ declare function ModelDecoratorFactory<T>(options?: CreateXMLModelOptions<T>): (constructor: Constructor<T>) => void;
24
22
  export { ModelDecoratorFactory as Model };
25
23
  export { Prop } from "./property";
26
24
  import "../defaults/models";