samlesa 2.12.3 → 2.12.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.

Potentially problematic release.


This version of samlesa might be problematic. Click here for more details.

Files changed (60) hide show
  1. package/build/.idea/workspace.xml +13 -1
  2. package/build/index.js +54 -64
  3. package/build/index.js.map +1 -1
  4. package/build/src/api.js +24 -23
  5. package/build/src/api.js.map +1 -1
  6. package/build/src/binding-post.js +358 -368
  7. package/build/src/binding-post.js.map +1 -1
  8. package/build/src/binding-redirect.js +333 -332
  9. package/build/src/binding-redirect.js.map +1 -1
  10. package/build/src/binding-simplesign.js +222 -232
  11. package/build/src/binding-simplesign.js.map +1 -1
  12. package/build/src/entity-idp.js +130 -130
  13. package/build/src/entity-idp.js.map +1 -1
  14. package/build/src/entity-sp.js +96 -96
  15. package/build/src/entity-sp.js.map +1 -1
  16. package/build/src/entity.js +225 -235
  17. package/build/src/entity.js.map +1 -1
  18. package/build/src/extractor.js +385 -369
  19. package/build/src/extractor.js.map +1 -1
  20. package/build/src/flow.js +320 -319
  21. package/build/src/flow.js.map +1 -1
  22. package/build/src/libsaml.js +665 -641
  23. package/build/src/libsaml.js.map +1 -1
  24. package/build/src/metadata-idp.js +127 -127
  25. package/build/src/metadata-idp.js.map +1 -1
  26. package/build/src/metadata-sp.js +231 -231
  27. package/build/src/metadata-sp.js.map +1 -1
  28. package/build/src/metadata.js +166 -176
  29. package/build/src/metadata.js.map +1 -1
  30. package/build/src/types.js +11 -11
  31. package/build/src/urn.js +212 -212
  32. package/build/src/urn.js.map +1 -1
  33. package/build/src/utility.js +292 -248
  34. package/build/src/utility.js.map +1 -1
  35. package/build/src/validator.js +27 -26
  36. package/build/src/validator.js.map +1 -1
  37. package/package.json +8 -10
  38. package/src/api.ts +1 -1
  39. package/src/binding-redirect.ts +83 -64
  40. package/src/extractor.ts +23 -5
  41. package/src/libsaml.ts +95 -62
  42. package/src/utility.ts +147 -76
  43. package/types/index.d.ts +10 -10
  44. package/types/src/api.d.ts +13 -13
  45. package/types/src/binding-post.d.ts +46 -46
  46. package/types/src/binding-redirect.d.ts +52 -52
  47. package/types/src/binding-simplesign.d.ts +39 -39
  48. package/types/src/entity-idp.d.ts +42 -42
  49. package/types/src/entity-sp.d.ts +36 -36
  50. package/types/src/entity.d.ts +101 -99
  51. package/types/src/extractor.d.ts +25 -25
  52. package/types/src/flow.d.ts +6 -6
  53. package/types/src/libsaml.d.ts +200 -210
  54. package/types/src/metadata-idp.d.ts +24 -24
  55. package/types/src/metadata-sp.d.ts +36 -36
  56. package/types/src/metadata.d.ts +59 -57
  57. package/types/src/types.d.ts +129 -127
  58. package/types/src/urn.d.ts +194 -194
  59. package/types/src/utility.d.ts +134 -134
  60. package/types/src/validator.d.ts +3 -3
@@ -1,131 +1,131 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.IdentityProvider = void 0;
7
- exports.default = default_1;
8
- /**
9
- * @file entity-idp.ts
10
- * @author tngan
11
- * @desc Declares the actions taken by identity provider
12
- */
13
- const entity_js_1 = __importDefault(require("./entity.js"));
14
- const libsaml_js_1 = __importDefault(require("./libsaml.js"));
15
- const urn_js_1 = require("./urn.js");
16
- const binding_post_js_1 = __importDefault(require("./binding-post.js"));
17
- const binding_redirect_js_1 = __importDefault(require("./binding-redirect.js"));
18
- const binding_simplesign_js_1 = __importDefault(require("./binding-simplesign.js"));
19
- const flow_js_1 = require("./flow.js");
20
- const utility_js_1 = require("./utility.js");
21
- /**
22
- * Identity provider can be configured using either metadata importing or idpSetting
23
- */
24
- function default_1(props) {
25
- return new IdentityProvider(props);
26
- }
27
- /**
28
- * Identity provider can be configured using either metadata importing or idpSetting
29
- */
30
- class IdentityProvider extends entity_js_1.default {
31
- constructor(idpSetting) {
32
- const defaultIdpEntitySetting = {
33
- wantAuthnRequestsSigned: false,
34
- tagPrefix: {
35
- encryptedAssertion: 'saml',
36
- },
37
- };
38
- const entitySetting = Object.assign(defaultIdpEntitySetting, idpSetting);
39
- // build attribute part
40
- if (idpSetting.loginResponseTemplate) {
41
- if ((0, utility_js_1.isString)(idpSetting.loginResponseTemplate.context) && Array.isArray(idpSetting.loginResponseTemplate.attributes)) {
42
- let attributeStatementTemplate;
43
- let attributeTemplate;
44
- if (!idpSetting.loginResponseTemplate.additionalTemplates || !idpSetting.loginResponseTemplate.additionalTemplates.attributeStatementTemplate) {
45
- attributeStatementTemplate = libsaml_js_1.default.defaultAttributeStatementTemplate;
46
- }
47
- else {
48
- attributeStatementTemplate = idpSetting.loginResponseTemplate.additionalTemplates.attributeStatementTemplate;
49
- }
50
- if (!idpSetting.loginResponseTemplate.additionalTemplates || !idpSetting.loginResponseTemplate.additionalTemplates.attributeTemplate) {
51
- attributeTemplate = libsaml_js_1.default.defaultAttributeTemplate;
52
- }
53
- else {
54
- attributeTemplate = idpSetting.loginResponseTemplate.additionalTemplates.attributeTemplate;
55
- }
56
- const replacement = {
57
- AttributeStatement: libsaml_js_1.default.attributeStatementBuilder(idpSetting.loginResponseTemplate.attributes, attributeTemplate, attributeStatementTemplate),
58
- };
59
- entitySetting.loginResponseTemplate = {
60
- ...entitySetting.loginResponseTemplate,
61
- context: libsaml_js_1.default.replaceTagsByValue(entitySetting.loginResponseTemplate.context, replacement),
62
- };
63
- }
64
- else {
65
- console.warn('Invalid login response template');
66
- }
67
- }
68
- super(entitySetting, 'idp');
69
- }
70
- /**
71
- * @desc Generates the login response for developers to design their own method
72
- * @param sp object of service provider
73
- * @param requestInfo corresponding request, used to obtain the id
74
- * @param binding protocol binding
75
- * @param user current logged user (e.g. req.user)
76
- * @param customTagReplacement used when developers have their own login response template
77
- * @param encryptThenSign whether or not to encrypt then sign first (if signing)
78
- * @param relayState the relayState from corresponding request
79
- */
80
- async createLoginResponse(sp, requestInfo, binding, user, customTagReplacement, encryptThenSign, relayState) {
81
- const protocol = urn_js_1.namespace.binding[binding];
82
- // can support post, redirect and post simple sign bindings for login response
83
- let context = null;
84
- switch (protocol) {
85
- case urn_js_1.namespace.binding.post:
86
- context = await binding_post_js_1.default.base64LoginResponse(requestInfo, {
87
- idp: this,
88
- sp,
89
- }, user, customTagReplacement, encryptThenSign);
90
- break;
91
- case urn_js_1.namespace.binding.simpleSign:
92
- context = await binding_simplesign_js_1.default.base64LoginResponse(requestInfo, {
93
- idp: this, sp,
94
- }, user, relayState, customTagReplacement);
95
- break;
96
- case urn_js_1.namespace.binding.redirect:
97
- return binding_redirect_js_1.default.loginResponseRedirectURL(requestInfo, {
98
- idp: this,
99
- sp,
100
- }, user, relayState, customTagReplacement);
101
- default:
102
- throw new Error('ERR_CREATE_RESPONSE_UNDEFINED_BINDING');
103
- }
104
- return {
105
- ...context,
106
- relayState,
107
- entityEndpoint: sp.entityMeta.getAssertionConsumerService(binding),
108
- type: 'SAMLResponse'
109
- };
110
- }
111
- /**
112
- * Validation of the parsed URL parameters
113
- * @param sp ServiceProvider instance
114
- * @param binding Protocol binding
115
- * @param req RequesmessageSigningOrderst
116
- */
117
- parseLoginRequest(sp, binding, req) {
118
- const self = this;
119
- return (0, flow_js_1.flow)({
120
- from: sp,
121
- self: self,
122
- checkSignature: self.entityMeta.isWantAuthnRequestsSigned(),
123
- parserType: 'SAMLRequest',
124
- type: 'login',
125
- binding: binding,
126
- request: req
127
- });
128
- }
129
- }
130
- exports.IdentityProvider = IdentityProvider;
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.IdentityProvider = void 0;
7
+ /**
8
+ * @file entity-idp.ts
9
+ * @author tngan
10
+ * @desc Declares the actions taken by identity provider
11
+ */
12
+ const entity_js_1 = __importDefault(require("./entity.js"));
13
+ const libsaml_js_1 = __importDefault(require("./libsaml.js"));
14
+ const urn_js_1 = require("./urn.js");
15
+ const binding_post_js_1 = __importDefault(require("./binding-post.js"));
16
+ const binding_redirect_js_1 = __importDefault(require("./binding-redirect.js"));
17
+ const binding_simplesign_js_1 = __importDefault(require("./binding-simplesign.js"));
18
+ const flow_js_1 = require("./flow.js");
19
+ const utility_js_1 = require("./utility.js");
20
+ /**
21
+ * Identity provider can be configured using either metadata importing or idpSetting
22
+ */
23
+ function default_1(props) {
24
+ return new IdentityProvider(props);
25
+ }
26
+ exports.default = default_1;
27
+ /**
28
+ * Identity provider can be configured using either metadata importing or idpSetting
29
+ */
30
+ class IdentityProvider extends entity_js_1.default {
31
+ constructor(idpSetting) {
32
+ const defaultIdpEntitySetting = {
33
+ wantAuthnRequestsSigned: false,
34
+ tagPrefix: {
35
+ encryptedAssertion: 'saml',
36
+ },
37
+ };
38
+ const entitySetting = Object.assign(defaultIdpEntitySetting, idpSetting);
39
+ // build attribute part
40
+ if (idpSetting.loginResponseTemplate) {
41
+ if ((0, utility_js_1.isString)(idpSetting.loginResponseTemplate.context) && Array.isArray(idpSetting.loginResponseTemplate.attributes)) {
42
+ let attributeStatementTemplate;
43
+ let attributeTemplate;
44
+ if (!idpSetting.loginResponseTemplate.additionalTemplates || !idpSetting.loginResponseTemplate.additionalTemplates.attributeStatementTemplate) {
45
+ attributeStatementTemplate = libsaml_js_1.default.defaultAttributeStatementTemplate;
46
+ }
47
+ else {
48
+ attributeStatementTemplate = idpSetting.loginResponseTemplate.additionalTemplates.attributeStatementTemplate;
49
+ }
50
+ if (!idpSetting.loginResponseTemplate.additionalTemplates || !idpSetting.loginResponseTemplate.additionalTemplates.attributeTemplate) {
51
+ attributeTemplate = libsaml_js_1.default.defaultAttributeTemplate;
52
+ }
53
+ else {
54
+ attributeTemplate = idpSetting.loginResponseTemplate.additionalTemplates.attributeTemplate;
55
+ }
56
+ const replacement = {
57
+ AttributeStatement: libsaml_js_1.default.attributeStatementBuilder(idpSetting.loginResponseTemplate.attributes, attributeTemplate, attributeStatementTemplate),
58
+ };
59
+ entitySetting.loginResponseTemplate = {
60
+ ...entitySetting.loginResponseTemplate,
61
+ context: libsaml_js_1.default.replaceTagsByValue(entitySetting.loginResponseTemplate.context, replacement),
62
+ };
63
+ }
64
+ else {
65
+ console.warn('Invalid login response template');
66
+ }
67
+ }
68
+ super(entitySetting, 'idp');
69
+ }
70
+ /**
71
+ * @desc Generates the login response for developers to design their own method
72
+ * @param sp object of service provider
73
+ * @param requestInfo corresponding request, used to obtain the id
74
+ * @param binding protocol binding
75
+ * @param user current logged user (e.g. req.user)
76
+ * @param customTagReplacement used when developers have their own login response template
77
+ * @param encryptThenSign whether or not to encrypt then sign first (if signing)
78
+ * @param relayState the relayState from corresponding request
79
+ */
80
+ async createLoginResponse(sp, requestInfo, binding, user, customTagReplacement, encryptThenSign, relayState) {
81
+ const protocol = urn_js_1.namespace.binding[binding];
82
+ // can support post, redirect and post simple sign bindings for login response
83
+ let context = null;
84
+ switch (protocol) {
85
+ case urn_js_1.namespace.binding.post:
86
+ context = await binding_post_js_1.default.base64LoginResponse(requestInfo, {
87
+ idp: this,
88
+ sp,
89
+ }, user, customTagReplacement, encryptThenSign);
90
+ break;
91
+ case urn_js_1.namespace.binding.simpleSign:
92
+ context = await binding_simplesign_js_1.default.base64LoginResponse(requestInfo, {
93
+ idp: this, sp,
94
+ }, user, relayState, customTagReplacement);
95
+ break;
96
+ case urn_js_1.namespace.binding.redirect:
97
+ return binding_redirect_js_1.default.loginResponseRedirectURL(requestInfo, {
98
+ idp: this,
99
+ sp,
100
+ }, user, relayState, customTagReplacement);
101
+ default:
102
+ throw new Error('ERR_CREATE_RESPONSE_UNDEFINED_BINDING');
103
+ }
104
+ return {
105
+ ...context,
106
+ relayState,
107
+ entityEndpoint: sp.entityMeta.getAssertionConsumerService(binding),
108
+ type: 'SAMLResponse'
109
+ };
110
+ }
111
+ /**
112
+ * Validation of the parsed URL parameters
113
+ * @param sp ServiceProvider instance
114
+ * @param binding Protocol binding
115
+ * @param req RequesmessageSigningOrderst
116
+ */
117
+ parseLoginRequest(sp, binding, req) {
118
+ const self = this;
119
+ return (0, flow_js_1.flow)({
120
+ from: sp,
121
+ self: self,
122
+ checkSignature: self.entityMeta.isWantAuthnRequestsSigned(),
123
+ parserType: 'SAMLRequest',
124
+ type: 'login',
125
+ binding: binding,
126
+ request: req
127
+ });
128
+ }
129
+ }
130
+ exports.IdentityProvider = IdentityProvider;
131
131
  //# sourceMappingURL=entity-idp.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"entity-idp.js","sourceRoot":"","sources":["../../src/entity-idp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"entity-idp.js","sourceRoot":"","sources":["../../src/entity-idp.ts"],"names":[],"mappings":"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"}
@@ -1,97 +1,97 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.ServiceProvider = void 0;
7
- exports.default = default_1;
8
- /**
9
- * @file entity-sp.ts
10
- * @author tngan
11
- * @desc Declares the actions taken by service provider
12
- */
13
- const entity_js_1 = __importDefault(require("./entity.js"));
14
- const urn_js_1 = require("./urn.js");
15
- const binding_redirect_js_1 = __importDefault(require("./binding-redirect.js"));
16
- const binding_post_js_1 = __importDefault(require("./binding-post.js"));
17
- const binding_simplesign_js_1 = __importDefault(require("./binding-simplesign.js"));
18
- const flow_js_1 = require("./flow.js");
19
- /*
20
- * @desc interface function
21
- */
22
- function default_1(props) {
23
- return new ServiceProvider(props);
24
- }
25
- /**
26
- * @desc Service provider can be configured using either metadata importing or spSetting
27
- * @param {object} spSettingimport { FlowResult } from '../types/src/flow.d';
28
-
29
- */
30
- class ServiceProvider extends entity_js_1.default {
31
- /**
32
- * @desc Inherited from Entity
33
- * @param {object} spSetting setting of service provider
34
- */
35
- constructor(spSetting) {
36
- const entitySetting = Object.assign({
37
- authnRequestsSigned: false,
38
- wantAssertionsSigned: false,
39
- wantMessageSigned: false,
40
- }, spSetting);
41
- super(entitySetting, 'sp');
42
- }
43
- /**
44
- * @desc Generates the login request for developers to design their own method
45
- * @param {IdentityProvider} idp object of identity provider
46
- * @param {string} binding protocol binding
47
- * @param {function} customTagReplacement used when developers have their own login response template
48
- */
49
- createLoginRequest(idp, binding = 'redirect', customTagReplacement) {
50
- const nsBinding = urn_js_1.namespace.binding;
51
- const protocol = nsBinding[binding];
52
- if (this.entityMeta.isAuthnRequestSigned() !== idp.entityMeta.isWantAuthnRequestsSigned()) {
53
- throw new Error('ERR_METADATA_CONFLICT_REQUEST_SIGNED_FLAG');
54
- }
55
- let context = null;
56
- switch (protocol) {
57
- case nsBinding.redirect:
58
- return binding_redirect_js_1.default.loginRequestRedirectURL({ idp, sp: this }, customTagReplacement);
59
- case nsBinding.post:
60
- context = binding_post_js_1.default.base64LoginRequest("/*[local-name(.)='AuthnRequest']", { idp, sp: this }, customTagReplacement);
61
- break;
62
- case nsBinding.simpleSign:
63
- // Object context = {id, context, signature, sigAlg}
64
- context = binding_simplesign_js_1.default.base64LoginRequest({ idp, sp: this }, customTagReplacement);
65
- break;
66
- default:
67
- // Will support artifact in the next release
68
- throw new Error('ERR_SP_LOGIN_REQUEST_UNDEFINED_BINDING');
69
- }
70
- return {
71
- ...context,
72
- relayState: this.entitySetting.relayState,
73
- entityEndpoint: idp.entityMeta.getSingleSignOnService(binding),
74
- type: 'SAMLRequest',
75
- };
76
- }
77
- /**
78
- * @desc Validation of the parsed the URL parameters
79
- * @param {IdentityProvider} idp object of identity provider
80
- * @param {string} binding protocol binding
81
- * @param {request} req request
82
- */
83
- parseLoginResponse(idp, binding, request) {
84
- const self = this;
85
- return (0, flow_js_1.flow)({
86
- from: idp,
87
- self: self,
88
- checkSignature: true, // saml response must have signature
89
- parserType: 'SAMLResponse',
90
- type: 'login',
91
- binding: binding,
92
- request: request
93
- });
94
- }
95
- }
96
- exports.ServiceProvider = ServiceProvider;
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ServiceProvider = void 0;
7
+ /**
8
+ * @file entity-sp.ts
9
+ * @author tngan
10
+ * @desc Declares the actions taken by service provider
11
+ */
12
+ const entity_js_1 = __importDefault(require("./entity.js"));
13
+ const urn_js_1 = require("./urn.js");
14
+ const binding_redirect_js_1 = __importDefault(require("./binding-redirect.js"));
15
+ const binding_post_js_1 = __importDefault(require("./binding-post.js"));
16
+ const binding_simplesign_js_1 = __importDefault(require("./binding-simplesign.js"));
17
+ const flow_js_1 = require("./flow.js");
18
+ /*
19
+ * @desc interface function
20
+ */
21
+ function default_1(props) {
22
+ return new ServiceProvider(props);
23
+ }
24
+ exports.default = default_1;
25
+ /**
26
+ * @desc Service provider can be configured using either metadata importing or spSetting
27
+ * @param {object} spSettingimport { FlowResult } from '../types/src/flow.d';
28
+
29
+ */
30
+ class ServiceProvider extends entity_js_1.default {
31
+ /**
32
+ * @desc Inherited from Entity
33
+ * @param {object} spSetting setting of service provider
34
+ */
35
+ constructor(spSetting) {
36
+ const entitySetting = Object.assign({
37
+ authnRequestsSigned: false,
38
+ wantAssertionsSigned: false,
39
+ wantMessageSigned: false,
40
+ }, spSetting);
41
+ super(entitySetting, 'sp');
42
+ }
43
+ /**
44
+ * @desc Generates the login request for developers to design their own method
45
+ * @param {IdentityProvider} idp object of identity provider
46
+ * @param {string} binding protocol binding
47
+ * @param {function} customTagReplacement used when developers have their own login response template
48
+ */
49
+ createLoginRequest(idp, binding = 'redirect', customTagReplacement) {
50
+ const nsBinding = urn_js_1.namespace.binding;
51
+ const protocol = nsBinding[binding];
52
+ if (this.entityMeta.isAuthnRequestSigned() !== idp.entityMeta.isWantAuthnRequestsSigned()) {
53
+ throw new Error('ERR_METADATA_CONFLICT_REQUEST_SIGNED_FLAG');
54
+ }
55
+ let context = null;
56
+ switch (protocol) {
57
+ case nsBinding.redirect:
58
+ return binding_redirect_js_1.default.loginRequestRedirectURL({ idp, sp: this }, customTagReplacement);
59
+ case nsBinding.post:
60
+ context = binding_post_js_1.default.base64LoginRequest("/*[local-name(.)='AuthnRequest']", { idp, sp: this }, customTagReplacement);
61
+ break;
62
+ case nsBinding.simpleSign:
63
+ // Object context = {id, context, signature, sigAlg}
64
+ context = binding_simplesign_js_1.default.base64LoginRequest({ idp, sp: this }, customTagReplacement);
65
+ break;
66
+ default:
67
+ // Will support artifact in the next release
68
+ throw new Error('ERR_SP_LOGIN_REQUEST_UNDEFINED_BINDING');
69
+ }
70
+ return {
71
+ ...context,
72
+ relayState: this.entitySetting.relayState,
73
+ entityEndpoint: idp.entityMeta.getSingleSignOnService(binding),
74
+ type: 'SAMLRequest',
75
+ };
76
+ }
77
+ /**
78
+ * @desc Validation of the parsed the URL parameters
79
+ * @param {IdentityProvider} idp object of identity provider
80
+ * @param {string} binding protocol binding
81
+ * @param {request} req request
82
+ */
83
+ parseLoginResponse(idp, binding, request) {
84
+ const self = this;
85
+ return (0, flow_js_1.flow)({
86
+ from: idp,
87
+ self: self,
88
+ checkSignature: true,
89
+ parserType: 'SAMLResponse',
90
+ type: 'login',
91
+ binding: binding,
92
+ request: request
93
+ });
94
+ }
95
+ }
96
+ exports.ServiceProvider = ServiceProvider;
97
97
  //# sourceMappingURL=entity-sp.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"entity-sp.js","sourceRoot":"","sources":["../../src/entity-sp.ts"],"names":[],"mappings":";;;;;;AAyBA,4BAEC;AA3BD;;;;EAIE;AACF,4DAKqB;AAMrB,qCAAqC;AACrC,gFAAoD;AACpD,wEAA4C;AAC5C,oFAAwD;AACxD,uCAA8C;AAE9C;;GAEG;AACH,mBAAwB,KAA8B;IACpD,OAAO,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;AACpC,CAAC;AAED;;;;EAIE;AACF,MAAa,eAAgB,SAAQ,mBAAM;IAGzC;;;MAGE;IACF,YAAY,SAAkC;QAC5C,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC;YAClC,mBAAmB,EAAE,KAAK;YAC1B,oBAAoB,EAAE,KAAK;YAC3B,iBAAiB,EAAE,KAAK;SACzB,EAAE,SAAS,CAAC,CAAC;QACd,KAAK,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED;;;;;MAKE;IACK,kBAAkB,CACvB,GAAqB,EACrB,OAAO,GAAG,UAAU,EACpB,oBAA2D;QAE3D,MAAM,SAAS,GAAG,kBAAS,CAAC,OAAO,CAAC;QACpC,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;QACpC,IAAI,IAAI,CAAC,UAAU,CAAC,oBAAoB,EAAE,KAAK,GAAG,CAAC,UAAU,CAAC,yBAAyB,EAAE,EAAE,CAAC;YAC1F,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC/D,CAAC;QAED,IAAI,OAAO,GAAQ,IAAI,CAAC;QACxB,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,SAAS,CAAC,QAAQ;gBACrB,OAAO,6BAAe,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,oBAAoB,CAAC,CAAC;YAE1F,KAAK,SAAS,CAAC,IAAI;gBACjB,OAAO,GAAG,yBAAW,CAAC,kBAAkB,CAAC,kCAAkC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,oBAAoB,CAAC,CAAC;gBACtH,MAAM;YAER,KAAK,SAAS,CAAC,UAAU;gBACvB,oDAAoD;gBACpD,OAAO,GAAG,+BAAiB,CAAC,kBAAkB,CAAE,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,oBAAoB,CAAC,CAAC;gBACzF,MAAM;YAER;gBACE,4CAA4C;gBAC5C,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC9D,CAAC;QAED,OAAO;YACL,GAAG,OAAO;YACV,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU;YACzC,cAAc,EAAE,GAAG,CAAC,UAAU,CAAC,sBAAsB,CAAC,OAAO,CAAW;YACxE,IAAI,EAAE,aAAa;SACpB,CAAC;IACJ,CAAC;IAED;;;;;MAKE;IACK,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,OAAyB;QAC/D,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,OAAO,IAAA,cAAI,EAAC;YACV,IAAI,EAAE,GAAG;YACT,IAAI,EAAE,IAAI;YACV,cAAc,EAAE,IAAI,EAAE,oCAAoC;YAC1D,UAAU,EAAE,cAAc;YAC1B,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,OAAO;YAChB,OAAO,EAAE,OAAO;SACjB,CAAC,CAAC;IACL,CAAC;CAEF;AA/ED,0CA+EC"}
1
+ {"version":3,"file":"entity-sp.js","sourceRoot":"","sources":["../../src/entity-sp.ts"],"names":[],"mappings":";;;;;;AAAA;;;;EAIE;AACF,4DAKqB;AAMrB,qCAAqC;AACrC,gFAAoD;AACpD,wEAA4C;AAC5C,oFAAwD;AACxD,uCAA8C;AAE9C;;GAEG;AACH,mBAAwB,KAA8B;IACpD,OAAO,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;AACpC,CAAC;AAFD,4BAEC;AAED;;;;EAIE;AACF,MAAa,eAAgB,SAAQ,mBAAM;IAGzC;;;MAGE;IACF,YAAY,SAAkC;QAC5C,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC;YAClC,mBAAmB,EAAE,KAAK;YAC1B,oBAAoB,EAAE,KAAK;YAC3B,iBAAiB,EAAE,KAAK;SACzB,EAAE,SAAS,CAAC,CAAC;QACd,KAAK,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED;;;;;MAKE;IACK,kBAAkB,CACvB,GAAqB,EACrB,OAAO,GAAG,UAAU,EACpB,oBAA2D;QAE3D,MAAM,SAAS,GAAG,kBAAS,CAAC,OAAO,CAAC;QACpC,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;QACpC,IAAI,IAAI,CAAC,UAAU,CAAC,oBAAoB,EAAE,KAAK,GAAG,CAAC,UAAU,CAAC,yBAAyB,EAAE,EAAE;YACzF,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;SAC9D;QAED,IAAI,OAAO,GAAQ,IAAI,CAAC;QACxB,QAAQ,QAAQ,EAAE;YAChB,KAAK,SAAS,CAAC,QAAQ;gBACrB,OAAO,6BAAe,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,oBAAoB,CAAC,CAAC;YAE1F,KAAK,SAAS,CAAC,IAAI;gBACjB,OAAO,GAAG,yBAAW,CAAC,kBAAkB,CAAC,kCAAkC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,oBAAoB,CAAC,CAAC;gBACtH,MAAM;YAER,KAAK,SAAS,CAAC,UAAU;gBACvB,oDAAoD;gBACpD,OAAO,GAAG,+BAAiB,CAAC,kBAAkB,CAAE,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,oBAAoB,CAAC,CAAC;gBACzF,MAAM;YAER;gBACE,4CAA4C;gBAC5C,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;SAC7D;QAED,OAAO;YACL,GAAG,OAAO;YACV,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU;YACzC,cAAc,EAAE,GAAG,CAAC,UAAU,CAAC,sBAAsB,CAAC,OAAO,CAAW;YACxE,IAAI,EAAE,aAAa;SACpB,CAAC;IACJ,CAAC;IAED;;;;;MAKE;IACK,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,OAAyB;QAC/D,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,OAAO,IAAA,cAAI,EAAC;YACV,IAAI,EAAE,GAAG;YACT,IAAI,EAAE,IAAI;YACV,cAAc,EAAE,IAAI;YACpB,UAAU,EAAE,cAAc;YAC1B,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,OAAO;YAChB,OAAO,EAAE,OAAO;SACjB,CAAC,CAAC;IACL,CAAC;CAEF;AA/ED,0CA+EC"}