@boxyhq/saml-jackson 1.4.0 → 1.5.0

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 (51) hide show
  1. package/dist/controller/analytics.d.ts +12 -0
  2. package/dist/controller/analytics.js +66 -0
  3. package/dist/controller/analytics.js.map +1 -0
  4. package/dist/controller/api.js +12 -1
  5. package/dist/controller/api.js.map +1 -1
  6. package/dist/controller/oauth.d.ts +3 -2
  7. package/dist/controller/oauth.js +132 -280
  8. package/dist/controller/oauth.js.map +1 -1
  9. package/dist/controller/saml-handler.d.ts +38 -0
  10. package/dist/controller/saml-handler.js +166 -0
  11. package/dist/controller/saml-handler.js.map +1 -0
  12. package/dist/controller/setup-link.d.ts +7 -7
  13. package/dist/controller/setup-link.js +45 -64
  14. package/dist/controller/setup-link.js.map +1 -1
  15. package/dist/controller/utils.d.ts +13 -1
  16. package/dist/controller/utils.js +45 -3
  17. package/dist/controller/utils.js.map +1 -1
  18. package/dist/db/mem.js +6 -2
  19. package/dist/db/mem.js.map +1 -1
  20. package/dist/db/utils.js +0 -1
  21. package/dist/db/utils.js.map +1 -1
  22. package/dist/directory-sync/Base.js +2 -2
  23. package/dist/directory-sync/Base.js.map +1 -1
  24. package/dist/directory-sync/WebhookEventsLogger.d.ts +4 -1
  25. package/dist/directory-sync/WebhookEventsLogger.js +3 -3
  26. package/dist/directory-sync/WebhookEventsLogger.js.map +1 -1
  27. package/dist/ee/common/checkLicense.d.ts +2 -0
  28. package/dist/ee/common/checkLicense.js +19 -0
  29. package/dist/ee/common/checkLicense.js.map +1 -0
  30. package/dist/ee/federated-saml/app.d.ts +19 -0
  31. package/dist/ee/federated-saml/app.js +126 -0
  32. package/dist/ee/federated-saml/app.js.map +1 -0
  33. package/dist/ee/federated-saml/index.d.ts +12 -0
  34. package/dist/ee/federated-saml/index.js +56 -0
  35. package/dist/ee/federated-saml/index.js.map +1 -0
  36. package/dist/ee/federated-saml/sso.d.ts +17 -0
  37. package/dist/ee/federated-saml/sso.js +76 -0
  38. package/dist/ee/federated-saml/sso.js.map +1 -0
  39. package/dist/ee/federated-saml/types.d.ts +18 -0
  40. package/dist/ee/federated-saml/types.js +3 -0
  41. package/dist/ee/federated-saml/types.js.map +1 -0
  42. package/dist/index.d.ts +7 -0
  43. package/dist/index.js +18 -2
  44. package/dist/index.js.map +1 -1
  45. package/dist/saml/lib.d.ts +31 -0
  46. package/dist/saml/lib.js +217 -0
  47. package/dist/saml/lib.js.map +1 -0
  48. package/dist/typings.d.ts +18 -19
  49. package/dist/typings.js +15 -0
  50. package/dist/typings.js.map +1 -1
  51. package/package.json +14 -13
package/dist/index.js CHANGED
@@ -52,7 +52,10 @@ const directory_sync_1 = __importDefault(require("./directory-sync"));
52
52
  const oidc_discovery_1 = require("./controller/oidc-discovery");
53
53
  const sp_config_1 = require("./controller/sp-config");
54
54
  const setup_link_1 = require("./controller/setup-link");
55
+ const analytics_1 = require("./controller/analytics");
55
56
  const x509 = __importStar(require("./saml/x509"));
57
+ const federated_saml_1 = __importDefault(require("./ee/federated-saml"));
58
+ const checkLicense_1 = __importDefault(require("./ee/common/checkLicense"));
56
59
  const defaultOpts = (opts) => {
57
60
  const newOpts = Object.assign({}, opts);
58
61
  if (!newOpts.externalUrl) {
@@ -72,6 +75,7 @@ const defaultOpts = (opts) => {
72
75
  newOpts.db.pageLimit = newOpts.db.pageLimit || 50;
73
76
  newOpts.openid = newOpts.openid || {};
74
77
  newOpts.openid.jwsAlg = newOpts.openid.jwsAlg || 'RS256';
78
+ newOpts.boxyhqLicenseKey = newOpts.boxyhqLicenseKey || undefined;
75
79
  return newOpts;
76
80
  };
77
81
  const controllers = (opts) => __awaiter(void 0, void 0, void 0, function* () {
@@ -88,8 +92,14 @@ const controllers = (opts) => __awaiter(void 0, void 0, void 0, function* () {
88
92
  const connectionAPIController = new api_1.ConnectionAPIController({ connectionStore, opts });
89
93
  const adminController = new admin_1.AdminController({ connectionStore });
90
94
  const healthCheckController = new health_check_1.HealthCheckController({ healthCheckStore });
91
- const setupLinkController = new setup_link_1.SetupLinkController({ setupLinkStore });
92
95
  yield healthCheckController.init();
96
+ const setupLinkController = new setup_link_1.SetupLinkController({ setupLinkStore });
97
+ if (!opts.noAnalytics) {
98
+ console.info('Anonymous analytics enabled. You can disable this by setting the DO_NOT_TRACK=1 or BOXYHQ_NO_ANALYTICS=1 environment variables');
99
+ const analyticsStore = db.store('_analytics:events');
100
+ const analyticsController = new analytics_1.AnalyticsController({ analyticsStore });
101
+ yield analyticsController.init();
102
+ }
93
103
  // Create default certificate if it doesn't exist.
94
104
  yield x509.init(certificateStore, opts);
95
105
  const oauthController = new oauth_1.OAuthController({
@@ -104,9 +114,10 @@ const controllers = (opts) => __awaiter(void 0, void 0, void 0, function* () {
104
114
  sessionStore,
105
115
  opts,
106
116
  });
107
- const directorySyncController = yield (0, directory_sync_1.default)({ db, opts });
108
117
  const oidcDiscoveryController = new oidc_discovery_1.OidcDiscoveryController({ opts });
109
118
  const spConfig = new sp_config_1.SPSAMLConfig(opts);
119
+ const directorySyncController = yield (0, directory_sync_1.default)({ db, opts });
120
+ const samlFederatedController = yield (0, federated_saml_1.default)({ db, opts });
110
121
  // write pre-loaded connections if present
111
122
  const preLoadedConnection = opts.preLoadedConnection || opts.preLoadedConfig;
112
123
  if (preLoadedConnection && preLoadedConnection.length > 0) {
@@ -134,9 +145,14 @@ const controllers = (opts) => __awaiter(void 0, void 0, void 0, function* () {
134
145
  setupLinkController,
135
146
  directorySyncController,
136
147
  oidcDiscoveryController,
148
+ samlFederatedController,
149
+ checkLicense: () => {
150
+ return (0, checkLicense_1.default)(opts.boxyhqLicenseKey);
151
+ },
137
152
  };
138
153
  });
139
154
  exports.controllers = controllers;
140
155
  exports.default = exports.controllers;
141
156
  __exportStar(require("./typings"), exports);
157
+ __exportStar(require("./ee/federated-saml/types"), exports);
142
158
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import type { SAMLProfile } from '@boxyhq/saml20/dist/typings';
2
+ export declare const extractSAMLResponseAttributes: (decodedResponse: string, validateOpts: ValidateOption) => Promise<SAMLProfile>;
3
+ export declare const extractSAMLRequestAttributes: (samlRequest: string) => Promise<{
4
+ id: string;
5
+ acsUrl: string;
6
+ entityId: string;
7
+ publicKey: string;
8
+ providerName: string;
9
+ }>;
10
+ export declare const createMetadataXML: ({ ssoUrl, entityId, x509cert, }: {
11
+ ssoUrl: string;
12
+ entityId: string;
13
+ x509cert: string;
14
+ }) => Promise<string>;
15
+ export declare const decodeBase64: (string: string, isDeflated: boolean) => Promise<string>;
16
+ export declare const createSAMLResponse: ({ audience, issuer, acsUrl, profile, requestId, privateKey, publicKey, }: {
17
+ audience: string;
18
+ issuer: string;
19
+ acsUrl: string;
20
+ profile: SAMLProfile;
21
+ requestId: string;
22
+ privateKey: string;
23
+ publicKey: string;
24
+ }) => Promise<string>;
25
+ type ValidateOption = {
26
+ thumbprint: string;
27
+ audience: string;
28
+ privateKey: string;
29
+ inResponseTo?: string;
30
+ };
31
+ export {};
@@ -0,0 +1,217 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.createSAMLResponse = exports.decodeBase64 = exports.createMetadataXML = exports.extractSAMLRequestAttributes = exports.extractSAMLResponseAttributes = void 0;
16
+ const crypto_1 = __importDefault(require("crypto"));
17
+ const xml2js_1 = __importDefault(require("xml2js"));
18
+ const zlib_1 = require("zlib");
19
+ const util_1 = require("util");
20
+ const saml20_1 = __importDefault(require("@boxyhq/saml20"));
21
+ const xmlbuilder_1 = __importDefault(require("xmlbuilder"));
22
+ const claims_1 = __importDefault(require("../saml/claims"));
23
+ // Validate the SAMLResponse and extract the user profile
24
+ const extractSAMLResponseAttributes = (decodedResponse, validateOpts) => __awaiter(void 0, void 0, void 0, function* () {
25
+ const attributes = yield saml20_1.default.validate(decodedResponse, validateOpts);
26
+ if (attributes && attributes.claims) {
27
+ // We map claims to our attributes id, email, firstName, lastName where possible. We also map original claims to raw
28
+ attributes.claims = claims_1.default.map(attributes.claims);
29
+ // Some providers don't return the id in the assertion, we set it to a sha256 hash of the email
30
+ if (!attributes.claims.id && attributes.claims.email) {
31
+ attributes.claims.id = crypto_1.default.createHash('sha256').update(attributes.claims.email).digest('hex');
32
+ }
33
+ }
34
+ return attributes;
35
+ });
36
+ exports.extractSAMLResponseAttributes = extractSAMLResponseAttributes;
37
+ const extractSAMLRequestAttributes = (samlRequest) => __awaiter(void 0, void 0, void 0, function* () {
38
+ const decodeRequest = yield (0, exports.decodeBase64)(samlRequest, true);
39
+ const result = yield parseXML(decodeRequest);
40
+ const publicKey = result['samlp:AuthnRequest']['Signature']
41
+ ? result['samlp:AuthnRequest']['Signature'][0]['KeyInfo'][0]['X509Data'][0]['X509Certificate'][0]
42
+ : null;
43
+ const attributes = result['samlp:AuthnRequest']['$'];
44
+ const id = attributes.ID;
45
+ const providerName = attributes.ProviderName;
46
+ const acsUrl = attributes.AssertionConsumerServiceURL;
47
+ const entityId = result['samlp:AuthnRequest']['saml:Issuer'][0];
48
+ if (!entityId) {
49
+ throw new Error("Missing 'Entity ID' in SAML Request.");
50
+ }
51
+ if (!acsUrl) {
52
+ throw new Error("Missing 'ACS URL' in SAML Request.");
53
+ }
54
+ return {
55
+ id,
56
+ acsUrl,
57
+ entityId,
58
+ publicKey,
59
+ providerName,
60
+ };
61
+ });
62
+ exports.extractSAMLRequestAttributes = extractSAMLRequestAttributes;
63
+ // Create Metadata XML
64
+ const createMetadataXML = ({ ssoUrl, entityId, x509cert, }) => __awaiter(void 0, void 0, void 0, function* () {
65
+ x509cert = saml20_1.default.stripCertHeaderAndFooter(x509cert);
66
+ const today = new Date();
67
+ const nodes = {
68
+ 'md:EntityDescriptor': {
69
+ '@xmlns:md': 'urn:oasis:names:tc:SAML:2.0:metadata',
70
+ '@entityID': entityId,
71
+ '@validUntil': new Date(today.setFullYear(today.getFullYear() + 10)).toISOString(),
72
+ 'md:IDPSSODescriptor': {
73
+ '@WantAuthnRequestsSigned': false,
74
+ '@protocolSupportEnumeration': 'urn:oasis:names:tc:SAML:2.0:protocol',
75
+ 'md:KeyDescriptor': {
76
+ '@use': 'signing',
77
+ 'ds:KeyInfo': {
78
+ '@xmlns:ds': 'http://www.w3.org/2000/09/xmldsig#',
79
+ 'ds:X509Data': {
80
+ 'ds:X509Certificate': {
81
+ '#text': x509cert,
82
+ },
83
+ },
84
+ },
85
+ },
86
+ 'md:NameIDFormat': {
87
+ '#text': 'urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress',
88
+ },
89
+ 'md:SingleSignOnService': [
90
+ {
91
+ '@Binding': 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect',
92
+ '@Location': ssoUrl,
93
+ },
94
+ {
95
+ '@Binding': 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST',
96
+ '@Location': ssoUrl,
97
+ },
98
+ ],
99
+ },
100
+ },
101
+ };
102
+ return xmlbuilder_1.default.create(nodes, { encoding: 'UTF-8', standalone: false }).end({ pretty: true });
103
+ });
104
+ exports.createMetadataXML = createMetadataXML;
105
+ // Decode the base64 string
106
+ const decodeBase64 = (string, isDeflated) => __awaiter(void 0, void 0, void 0, function* () {
107
+ const inflateRawAsync = (0, util_1.promisify)(zlib_1.inflateRaw);
108
+ return isDeflated
109
+ ? (yield inflateRawAsync(Buffer.from(string, 'base64'))).toString()
110
+ : Buffer.from(string, 'base64').toString();
111
+ });
112
+ exports.decodeBase64 = decodeBase64;
113
+ // Parse XML
114
+ const parseXML = (xml) => __awaiter(void 0, void 0, void 0, function* () {
115
+ return new Promise((resolve, reject) => {
116
+ xml2js_1.default.parseString(xml, (err, result) => {
117
+ if (err) {
118
+ reject(err);
119
+ }
120
+ resolve(result);
121
+ });
122
+ });
123
+ });
124
+ const randomId = () => {
125
+ return '_' + crypto_1.default.randomBytes(10).toString('hex');
126
+ };
127
+ // Create SAML Response and sign it
128
+ const createSAMLResponse = ({ audience, issuer, acsUrl, profile, requestId, privateKey, publicKey, }) => __awaiter(void 0, void 0, void 0, function* () {
129
+ const authDate = new Date();
130
+ const authTimestamp = authDate.toISOString();
131
+ authDate.setMinutes(authDate.getMinutes() - 5);
132
+ const notBefore = authDate.toISOString();
133
+ authDate.setMinutes(authDate.getMinutes() + 10);
134
+ const notAfter = authDate.toISOString();
135
+ const nodes = {
136
+ 'samlp:Response': {
137
+ '@xmlns:samlp': 'urn:oasis:names:tc:SAML:2.0:protocol',
138
+ '@Version': '2.0',
139
+ '@ID': randomId(),
140
+ '@Destination': acsUrl,
141
+ '@InResponseTo': requestId,
142
+ '@IssueInstant': authTimestamp,
143
+ 'saml:Issuer': {
144
+ '@xmlns:saml': 'urn:oasis:names:tc:SAML:2.0:assertion',
145
+ '@Format': 'urn:oasis:names:tc:SAML:2.0:assertion',
146
+ '#text': issuer,
147
+ },
148
+ 'samlp:Status': {
149
+ 'samlp:StatusCode': {
150
+ '@Value': 'urn:oasis:names:tc:SAML:2.0:status:Success',
151
+ },
152
+ },
153
+ 'saml:Assertion': {
154
+ '@xmlns:saml': 'urn:oasis:names:tc:SAML:2.0:assertion',
155
+ '@Version': '2.0',
156
+ '@ID': randomId(),
157
+ '@IssueInstant': authTimestamp,
158
+ 'saml:Issuer': {
159
+ '#text': issuer,
160
+ },
161
+ 'saml:Subject': {
162
+ '@xmlns:saml': 'urn:oasis:names:tc:SAML:2.0:assertion',
163
+ 'saml:NameID': {
164
+ '@Format': 'urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress',
165
+ '#text': profile.claims.email,
166
+ },
167
+ 'saml:SubjectConfirmation': {
168
+ '@Method': 'urn:oasis:names:tc:SAML:2.0:cm:bearer',
169
+ 'saml:SubjectConfirmationData': {
170
+ '@Recipient': acsUrl,
171
+ '@NotOnOrAfter': notAfter,
172
+ '@InResponseTo': requestId,
173
+ },
174
+ },
175
+ },
176
+ 'saml:Conditions': {
177
+ '@NotBefore': notBefore,
178
+ '@NotOnOrAfter': notAfter,
179
+ 'saml:AudienceRestriction': {
180
+ 'saml:Audience': {
181
+ '#text': audience,
182
+ },
183
+ },
184
+ },
185
+ 'saml:AuthnStatement': {
186
+ '@AuthnInstant': authTimestamp,
187
+ '@SessionIndex': '_YIlFoNFzLMDYxdwf-T_BuimfkGa5qhKg',
188
+ 'saml:AuthnContext': {
189
+ 'saml:AuthnContextClassRef': {
190
+ '#text': 'urn:oasis:names:tc:SAML:2.0:ac:classes:unspecified',
191
+ },
192
+ },
193
+ },
194
+ 'saml:AttributeStatement': {
195
+ '@xmlns:xs': 'http://www.w3.org/2001/XMLSchema',
196
+ '@xmlns:xsi': 'http://www.w3.org/2001/XMLSchema-instance',
197
+ 'saml:Attribute': Object.keys(profile.claims.raw).map((attributeName) => {
198
+ return {
199
+ '@Name': attributeName,
200
+ '@NameFormat': 'urn:oasis:names:tc:SAML:2.0:attrname-format:basic',
201
+ 'saml:AttributeValue': {
202
+ '@xmlns:xs': 'http://www.w3.org/2001/XMLSchema',
203
+ '@xmlns:xsi': 'http://www.w3.org/2001/XMLSchema-instance',
204
+ '@xsi:type': 'xs:string',
205
+ '#text': profile.claims.raw[attributeName],
206
+ },
207
+ };
208
+ }),
209
+ },
210
+ },
211
+ },
212
+ };
213
+ const xml = xmlbuilder_1.default.create(nodes, { encoding: 'UTF-8' }).end();
214
+ return yield saml20_1.default.sign(xml, privateKey, publicKey, '/*[local-name(.)="Response" and namespace-uri(.)="urn:oasis:names:tc:SAML:2.0:protocol"]');
215
+ });
216
+ exports.createSAMLResponse = createSAMLResponse;
217
+ //# sourceMappingURL=lib.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lib.js","sourceRoot":"","sources":["../../src/saml/lib.ts"],"names":[],"mappings":"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"}
package/dist/typings.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { type JWK } from 'jose';
2
+ export * from '../src/ee/federated-saml/types';
2
3
  interface SSOConnection {
3
4
  defaultRedirectUrl: string;
4
5
  redirectUrl: string[] | string;
@@ -68,7 +69,9 @@ type TenantProduct = {
68
69
  tenant: string;
69
70
  product: string;
70
71
  };
71
- export type GetConnectionsQuery = ClientIDQuery | TenantQuery;
72
+ export type GetConnectionsQuery = ClientIDQuery | TenantQuery | {
73
+ entityId: string;
74
+ };
72
75
  export type GetIDPEntityIDBody = TenantProduct;
73
76
  export type DelConnectionsQuery = (ClientIDQuery & {
74
77
  clientSecret: string;
@@ -119,6 +122,7 @@ export interface IOAuthController {
119
122
  samlResponse(body: SAMLResponsePayload): Promise<{
120
123
  redirect_url?: string;
121
124
  app_select_form?: string;
125
+ responseForm?: string;
122
126
  }>;
123
127
  oidcAuthzResponse(body: OIDCAuthzResponsePayload): Promise<{
124
128
  redirect_url?: string;
@@ -301,6 +305,12 @@ export interface JacksonOption {
301
305
  publicKey: string;
302
306
  privateKey: string;
303
307
  };
308
+ boxyhqLicenseKey?: string;
309
+ retraced?: {
310
+ host?: string;
311
+ adminToken?: string;
312
+ };
313
+ noAnalytics?: boolean;
304
314
  }
305
315
  export interface SLORequestParams {
306
316
  nameId: string;
@@ -546,7 +556,10 @@ export interface IDirectoryGroups {
546
556
  }
547
557
  export interface IWebhookEventsLogger extends Base {
548
558
  log(directory: Directory, event: DirectorySyncEvent): Promise<WebhookEventLog>;
549
- getAll(): Promise<WebhookEventLog[]>;
559
+ getAll({ pageOffset, pageLimit }: {
560
+ pageOffset?: number;
561
+ pageLimit?: number;
562
+ }): Promise<WebhookEventLog[]>;
550
563
  get(id: string): Promise<WebhookEventLog>;
551
564
  clear(): Promise<void>;
552
565
  delete(id: string): Promise<void>;
@@ -614,29 +627,15 @@ export interface WebhookEventLog extends DirectorySyncEvent {
614
627
  export type SetupLinkCreatePayload = {
615
628
  tenant: string;
616
629
  product: string;
617
- service: 'sso' | 'dsync';
630
+ service: SetupLinkService;
618
631
  regenerate?: boolean;
619
632
  };
620
- export type SetupLinkRegeneratePayload = {
621
- reference: string;
622
- };
623
633
  export type SetupLink = {
624
634
  setupID: string;
625
635
  tenant: string;
626
636
  product: string;
627
637
  url: string;
628
- service: string;
638
+ service: SetupLinkService;
629
639
  validTill: number;
630
640
  };
631
- export type ApiResponse<T> = {
632
- data: T | null;
633
- error: ApiError | null;
634
- };
635
- export interface ISetupLinkController {
636
- create(body: SetupLinkCreatePayload): Promise<ApiResponse<SetupLink>>;
637
- getAll(): Promise<ApiResponse<SetupLink[]>>;
638
- getByService(service: any): Promise<ApiResponse<SetupLink[]>>;
639
- getByToken(token: any): Promise<ApiResponse<SetupLink>>;
640
- remove(key: string): Promise<ApiResponse<boolean>>;
641
- }
642
- export {};
641
+ export type SetupLinkService = 'sso' | 'dsync';
package/dist/typings.js CHANGED
@@ -1,6 +1,21 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
2
16
  Object.defineProperty(exports, "__esModule", { value: true });
3
17
  exports.DirectorySyncProviders = void 0;
18
+ __exportStar(require("../src/ee/federated-saml/types"), exports);
4
19
  var DirectorySyncProviders;
5
20
  (function (DirectorySyncProviders) {
6
21
  DirectorySyncProviders["azure-scim-v2"] = "Azure SCIM v2.0";
@@ -1 +1 @@
1
- {"version":3,"file":"typings.js","sourceRoot":"","sources":["../src/typings.ts"],"names":[],"mappings":";;;AAkfA,IAAY,sBAMX;AAND,WAAY,sBAAsB;IAChC,2DAAmC,CAAA;IACnC,iEAAyC,CAAA;IACzC,yDAAiC,CAAA;IACjC,8DAAsC,CAAA;IACtC,+DAAuC,CAAA;AACzC,CAAC,EANW,sBAAsB,GAAtB,8BAAsB,KAAtB,8BAAsB,QAMjC"}
1
+ {"version":3,"file":"typings.js","sourceRoot":"","sources":["../src/typings.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAEA,iEAA+C;AA0f/C,IAAY,sBAMX;AAND,WAAY,sBAAsB;IAChC,2DAAmC,CAAA;IACnC,iEAAyC,CAAA;IACzC,yDAAiC,CAAA;IACjC,8DAAsC,CAAA;IACtC,+DAAuC,CAAA;AACzC,CAAC,EANW,sBAAsB,GAAtB,8BAAsB,KAAtB,8BAAsB,QAMjC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@boxyhq/saml-jackson",
3
- "version": "1.4.0",
3
+ "version": "1.5.0",
4
4
  "description": "SAML Jackson library",
5
5
  "keywords": [
6
6
  "SAML 2.0"
@@ -42,10 +42,11 @@
42
42
  "dependencies": {
43
43
  "@boxyhq/saml20": "1.1.0",
44
44
  "@opentelemetry/api": "1.3.0",
45
- "axios": "1.1.3",
46
- "jose": "4.11.1",
47
- "marked": "4.2.4",
48
- "mongodb": "4.12.1",
45
+ "axios": "1.2.2",
46
+ "jose": "4.11.2",
47
+ "marked": "4.2.5",
48
+ "mixpanel": "0.17.0",
49
+ "mongodb": "4.13.0",
49
50
  "mssql": "9.0.1",
50
51
  "mysql2": "2.3.3",
51
52
  "node-forge": "1.3.1",
@@ -60,20 +61,20 @@
60
61
  },
61
62
  "devDependencies": {
62
63
  "@faker-js/faker": "7.6.0",
63
- "@types/node": "18.11.13",
64
+ "@types/node": "18.11.18",
64
65
  "@types/sinon": "10.0.13",
65
66
  "@types/tap": "15.0.7",
66
- "@typescript-eslint/eslint-plugin": "5.44.0",
67
- "@typescript-eslint/parser": "5.45.1",
67
+ "@typescript-eslint/eslint-plugin": "5.47.1",
68
+ "@typescript-eslint/parser": "5.47.1",
68
69
  "cross-env": "7.0.3",
69
- "eslint": "8.28.0",
70
+ "eslint": "8.31.0",
70
71
  "eslint-config-prettier": "8.5.0",
71
- "prettier": "2.8.0",
72
- "sinon": "14.0.2",
72
+ "prettier": "2.8.1",
73
+ "sinon": "15.0.1",
73
74
  "tap": "16.3.2",
74
75
  "ts-node": "10.9.1",
75
- "tsconfig-paths": "4.1.1",
76
- "typescript": "4.9.3"
76
+ "tsconfig-paths": "4.1.2",
77
+ "typescript": "4.9.4"
77
78
  },
78
79
  "engines": {
79
80
  "node": ">=14.18.1 <=18.x"