@boxyhq/saml-jackson 1.32.0 → 1.33.1-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/dist/controller/api.js +17 -7
- package/dist/controller/api.js.map +1 -1
- package/dist/controller/connection/oidc.js +17 -7
- package/dist/controller/connection/oidc.js.map +1 -1
- package/dist/controller/connection/saml.js +17 -7
- package/dist/controller/connection/saml.js.map +1 -1
- package/dist/controller/logout.js +17 -7
- package/dist/controller/logout.js.map +1 -1
- package/dist/controller/oauth/oidc-client.d.ts +9 -4
- package/dist/controller/oauth/oidc-client.js +80 -11
- package/dist/controller/oauth/oidc-client.js.map +1 -1
- package/dist/controller/oauth/oidc-issuer.d.ts +2 -0
- package/dist/controller/oauth/oidc-issuer.js +25 -0
- package/dist/controller/oauth/oidc-issuer.js.map +1 -0
- package/dist/controller/oauth.js +97 -46
- package/dist/controller/oauth.js.map +1 -1
- package/dist/controller/setup-link.js +17 -7
- package/dist/controller/setup-link.js.map +1 -1
- package/dist/controller/sso-handler.d.ts +10 -2
- package/dist/controller/sso-handler.js +34 -12
- package/dist/controller/sso-handler.js.map +1 -1
- package/dist/controller/utils.d.ts +5 -3
- package/dist/controller/utils.js +27 -9
- package/dist/controller/utils.js.map +1 -1
- package/dist/db/db.js +17 -7
- package/dist/db/db.js.map +1 -1
- package/dist/db/dynamoDb.js +17 -7
- package/dist/db/dynamoDb.js.map +1 -1
- package/dist/db/mem.js +17 -7
- package/dist/db/mem.js.map +1 -1
- package/dist/db/mongo.js +17 -7
- package/dist/db/mongo.js.map +1 -1
- package/dist/db/redis.js +17 -7
- package/dist/db/redis.js.map +1 -1
- package/dist/db/sql/sql.js +17 -7
- package/dist/db/sql/sql.js.map +1 -1
- package/dist/db/store.js +17 -7
- package/dist/db/store.js.map +1 -1
- package/dist/directory-sync/batch-events/queue.js +17 -7
- package/dist/directory-sync/batch-events/queue.js.map +1 -1
- package/dist/directory-sync/scim/DirectoryConfig.js +17 -7
- package/dist/directory-sync/scim/DirectoryConfig.js.map +1 -1
- package/dist/directory-sync/scim/Groups.js +17 -7
- package/dist/directory-sync/scim/Groups.js.map +1 -1
- package/dist/ee/identity-federation/idp-login.js +20 -14
- package/dist/ee/identity-federation/idp-login.js.map +1 -1
- package/dist/ee/identity-federation/sso.js +16 -11
- package/dist/ee/identity-federation/sso.js.map +1 -1
- package/dist/event/axios.d.ts +2 -1
- package/dist/index.js +17 -7
- package/dist/index.js.map +1 -1
- package/dist/loadConnection.js +17 -7
- package/dist/loadConnection.js.map +1 -1
- package/dist/saml/lib.js +17 -7
- package/dist/saml/lib.js.map +1 -1
- package/dist/saml/x509.js +17 -7
- package/dist/saml/x509.js.map +1 -1
- package/dist/src/controller/admin.d.ts +27 -0
- package/dist/src/controller/admin.js +60 -0
- package/dist/src/controller/admin.js.map +1 -0
- package/dist/src/controller/analytics.d.ts +16 -0
- package/dist/src/controller/analytics.js +79 -0
- package/dist/src/controller/analytics.js.map +1 -0
- package/dist/src/controller/api.d.ts +557 -0
- package/dist/src/controller/api.js +806 -0
- package/dist/src/controller/api.js.map +1 -0
- package/dist/src/controller/connection/oidc.d.ts +7 -0
- package/dist/src/controller/connection/oidc.js +181 -0
- package/dist/src/controller/connection/oidc.js.map +1 -0
- package/dist/src/controller/connection/saml.d.ts +7 -0
- package/dist/src/controller/connection/saml.js +250 -0
- package/dist/src/controller/connection/saml.js.map +1 -0
- package/dist/src/controller/error.d.ts +10 -0
- package/dist/src/controller/error.js +13 -0
- package/dist/src/controller/error.js.map +1 -0
- package/dist/src/controller/health-check.d.ts +11 -0
- package/dist/src/controller/health-check.js +51 -0
- package/dist/src/controller/health-check.js.map +1 -0
- package/dist/src/controller/logout.d.ts +18 -0
- package/dist/src/controller/logout.js +132 -0
- package/dist/src/controller/logout.js.map +1 -0
- package/dist/src/controller/oauth/allowed.d.ts +1 -0
- package/dist/src/controller/oauth/allowed.js +30 -0
- package/dist/src/controller/oauth/allowed.js.map +1 -0
- package/dist/src/controller/oauth/code-verifier.d.ts +1 -0
- package/dist/src/controller/oauth/code-verifier.js +8 -0
- package/dist/src/controller/oauth/code-verifier.js.map +1 -0
- package/dist/src/controller/oauth/oidc-client.d.ts +12 -0
- package/dist/src/controller/oauth/oidc-client.js +89 -0
- package/dist/src/controller/oauth/oidc-client.js.map +1 -0
- package/dist/src/controller/oauth/redirect.d.ts +1 -0
- package/dist/src/controller/oauth/redirect.js +13 -0
- package/dist/src/controller/oauth/redirect.js.map +1 -0
- package/dist/src/controller/oauth.d.ts +142 -0
- package/dist/src/controller/oauth.js +1112 -0
- package/dist/src/controller/oauth.js.map +1 -0
- package/dist/src/controller/oidc-discovery.d.ts +22 -0
- package/dist/src/controller/oidc-discovery.js +47 -0
- package/dist/src/controller/oidc-discovery.js.map +1 -0
- package/dist/src/controller/setup-link.d.ts +307 -0
- package/dist/src/controller/setup-link.js +462 -0
- package/dist/src/controller/setup-link.js.map +1 -0
- package/dist/src/controller/sp-config.d.ts +22 -0
- package/dist/src/controller/sp-config.js +89 -0
- package/dist/src/controller/sp-config.js.map +1 -0
- package/dist/src/controller/sso-handler.d.ts +66 -0
- package/dist/src/controller/sso-handler.js +306 -0
- package/dist/src/controller/sso-handler.js.map +1 -0
- package/dist/src/controller/utils.d.ts +84 -0
- package/dist/src/controller/utils.js +328 -0
- package/dist/src/controller/utils.js.map +1 -0
- package/dist/src/cron/lock.d.ts +18 -0
- package/dist/src/cron/lock.js +98 -0
- package/dist/src/cron/lock.js.map +1 -0
- package/dist/src/db/db.d.ts +5 -0
- package/dist/src/db/db.js +178 -0
- package/dist/src/db/db.js.map +1 -0
- package/dist/src/db/defaultDb.d.ts +2 -0
- package/dist/src/db/defaultDb.js +18 -0
- package/dist/src/db/defaultDb.js.map +1 -0
- package/dist/src/db/dynamoDb.d.ts +19 -0
- package/dist/src/db/dynamoDb.js +320 -0
- package/dist/src/db/dynamoDb.js.map +1 -0
- package/dist/src/db/encrypter.d.ts +3 -0
- package/dist/src/db/encrypter.js +22 -0
- package/dist/src/db/encrypter.js.map +1 -0
- package/dist/src/db/mem.d.ts +23 -0
- package/dist/src/db/mem.js +186 -0
- package/dist/src/db/mem.js.map +1 -0
- package/dist/src/db/mongo.d.ts +22 -0
- package/dist/src/db/mongo.js +177 -0
- package/dist/src/db/mongo.js.map +1 -0
- package/dist/src/db/planetscale/entity/JacksonIndex.d.ts +5 -0
- package/dist/src/db/planetscale/entity/JacksonIndex.js +32 -0
- package/dist/src/db/planetscale/entity/JacksonIndex.js.map +1 -0
- package/dist/src/db/planetscale/entity/JacksonStore.d.ts +9 -0
- package/dist/src/db/planetscale/entity/JacksonStore.js +63 -0
- package/dist/src/db/planetscale/entity/JacksonStore.js.map +1 -0
- package/dist/src/db/planetscale/entity/JacksonTTL.d.ts +4 -0
- package/dist/src/db/planetscale/entity/JacksonTTL.js +27 -0
- package/dist/src/db/planetscale/entity/JacksonTTL.js.map +1 -0
- package/dist/src/db/redis.d.ts +18 -0
- package/dist/src/db/redis.js +214 -0
- package/dist/src/db/redis.js.map +1 -0
- package/dist/src/db/sql/entity/JacksonIndex.d.ts +7 -0
- package/dist/src/db/sql/entity/JacksonIndex.js +39 -0
- package/dist/src/db/sql/entity/JacksonIndex.js.map +1 -0
- package/dist/src/db/sql/entity/JacksonStore.d.ts +9 -0
- package/dist/src/db/sql/entity/JacksonStore.js +61 -0
- package/dist/src/db/sql/entity/JacksonStore.js.map +1 -0
- package/dist/src/db/sql/entity/JacksonTTL.d.ts +4 -0
- package/dist/src/db/sql/entity/JacksonTTL.js +27 -0
- package/dist/src/db/sql/entity/JacksonTTL.js.map +1 -0
- package/dist/src/db/sql/mariadb/entity/JacksonIndex.d.ts +7 -0
- package/dist/src/db/sql/mariadb/entity/JacksonIndex.js +39 -0
- package/dist/src/db/sql/mariadb/entity/JacksonIndex.js.map +1 -0
- package/dist/src/db/sql/mariadb/entity/JacksonStore.d.ts +9 -0
- package/dist/src/db/sql/mariadb/entity/JacksonStore.js +63 -0
- package/dist/src/db/sql/mariadb/entity/JacksonStore.js.map +1 -0
- package/dist/src/db/sql/mariadb/entity/JacksonTTL.d.ts +4 -0
- package/dist/src/db/sql/mariadb/entity/JacksonTTL.js +27 -0
- package/dist/src/db/sql/mariadb/entity/JacksonTTL.js.map +1 -0
- package/dist/src/db/sql/mssql/entity/JacksonIndex.d.ts +7 -0
- package/dist/src/db/sql/mssql/entity/JacksonIndex.js +39 -0
- package/dist/src/db/sql/mssql/entity/JacksonIndex.js.map +1 -0
- package/dist/src/db/sql/mssql/entity/JacksonStore.d.ts +9 -0
- package/dist/src/db/sql/mssql/entity/JacksonStore.js +61 -0
- package/dist/src/db/sql/mssql/entity/JacksonStore.js.map +1 -0
- package/dist/src/db/sql/mssql/entity/JacksonTTL.d.ts +4 -0
- package/dist/src/db/sql/mssql/entity/JacksonTTL.js +27 -0
- package/dist/src/db/sql/mssql/entity/JacksonTTL.js.map +1 -0
- package/dist/src/db/sql/mssql.d.ts +1 -0
- package/dist/src/db/sql/mssql.js +44 -0
- package/dist/src/db/sql/mssql.js.map +1 -0
- package/dist/src/db/sql/sql.d.ts +32 -0
- package/dist/src/db/sql/sql.js +318 -0
- package/dist/src/db/sql/sql.js.map +1 -0
- package/dist/src/db/sql/sqlite/entity/JacksonIndex.d.ts +7 -0
- package/dist/src/db/sql/sqlite/entity/JacksonIndex.js +39 -0
- package/dist/src/db/sql/sqlite/entity/JacksonIndex.js.map +1 -0
- package/dist/src/db/sql/sqlite/entity/JacksonStore.d.ts +9 -0
- package/dist/src/db/sql/sqlite/entity/JacksonStore.js +61 -0
- package/dist/src/db/sql/sqlite/entity/JacksonStore.js.map +1 -0
- package/dist/src/db/sql/sqlite/entity/JacksonTTL.d.ts +4 -0
- package/dist/src/db/sql/sqlite/entity/JacksonTTL.js +27 -0
- package/dist/src/db/sql/sqlite/entity/JacksonTTL.js.map +1 -0
- package/dist/src/db/store.d.ts +5 -0
- package/dist/src/db/store.js +65 -0
- package/dist/src/db/store.js.map +1 -0
- package/dist/src/db/utils.d.ts +16 -0
- package/dist/src/db/utils.js +28 -0
- package/dist/src/db/utils.js.map +1 -0
- package/dist/src/directory-sync/batch-events/queue.d.ts +40 -0
- package/dist/src/directory-sync/batch-events/queue.js +225 -0
- package/dist/src/directory-sync/batch-events/queue.js.map +1 -0
- package/dist/src/directory-sync/index.d.ts +27 -0
- package/dist/src/directory-sync/index.js +97 -0
- package/dist/src/directory-sync/index.js.map +1 -0
- package/dist/src/directory-sync/non-scim/google/api.d.ts +36 -0
- package/dist/src/directory-sync/non-scim/google/api.js +143 -0
- package/dist/src/directory-sync/non-scim/google/api.js.map +1 -0
- package/dist/src/directory-sync/non-scim/google/index.d.ts +12 -0
- package/dist/src/directory-sync/non-scim/google/index.js +10 -0
- package/dist/src/directory-sync/non-scim/google/index.js.map +1 -0
- package/dist/src/directory-sync/non-scim/google/oauth.d.ts +27 -0
- package/dist/src/directory-sync/non-scim/google/oauth.js +105 -0
- package/dist/src/directory-sync/non-scim/google/oauth.js.map +1 -0
- package/dist/src/directory-sync/non-scim/index.d.ts +24 -0
- package/dist/src/directory-sync/non-scim/index.js +85 -0
- package/dist/src/directory-sync/non-scim/index.js.map +1 -0
- package/dist/src/directory-sync/non-scim/syncGroupMembers.d.ts +23 -0
- package/dist/src/directory-sync/non-scim/syncGroupMembers.js +105 -0
- package/dist/src/directory-sync/non-scim/syncGroupMembers.js.map +1 -0
- package/dist/src/directory-sync/non-scim/syncGroups.d.ts +24 -0
- package/dist/src/directory-sync/non-scim/syncGroups.js +120 -0
- package/dist/src/directory-sync/non-scim/syncGroups.js.map +1 -0
- package/dist/src/directory-sync/non-scim/syncUsers.d.ts +24 -0
- package/dist/src/directory-sync/non-scim/syncUsers.js +120 -0
- package/dist/src/directory-sync/non-scim/syncUsers.js.map +1 -0
- package/dist/src/directory-sync/non-scim/utils.d.ts +36 -0
- package/dist/src/directory-sync/non-scim/utils.js +109 -0
- package/dist/src/directory-sync/non-scim/utils.js.map +1 -0
- package/dist/src/directory-sync/request.d.ts +14 -0
- package/dist/src/directory-sync/request.js +29 -0
- package/dist/src/directory-sync/request.js.map +1 -0
- package/dist/src/directory-sync/scim/Base.d.ts +12 -0
- package/dist/src/directory-sync/scim/Base.js +23 -0
- package/dist/src/directory-sync/scim/Base.js.map +1 -0
- package/dist/src/directory-sync/scim/DirectoryConfig.d.ts +343 -0
- package/dist/src/directory-sync/scim/DirectoryConfig.js +580 -0
- package/dist/src/directory-sync/scim/DirectoryConfig.js.map +1 -0
- package/dist/src/directory-sync/scim/DirectoryGroups.d.ts +28 -0
- package/dist/src/directory-sync/scim/DirectoryGroups.js +252 -0
- package/dist/src/directory-sync/scim/DirectoryGroups.js.map +1 -0
- package/dist/src/directory-sync/scim/DirectoryUsers.d.ts +25 -0
- package/dist/src/directory-sync/scim/DirectoryUsers.js +193 -0
- package/dist/src/directory-sync/scim/DirectoryUsers.js.map +1 -0
- package/dist/src/directory-sync/scim/Groups.d.ts +166 -0
- package/dist/src/directory-sync/scim/Groups.js +348 -0
- package/dist/src/directory-sync/scim/Groups.js.map +1 -0
- package/dist/src/directory-sync/scim/Users.d.ts +99 -0
- package/dist/src/directory-sync/scim/Users.js +215 -0
- package/dist/src/directory-sync/scim/Users.js.map +1 -0
- package/dist/src/directory-sync/scim/WebhookEventsLogger.d.ts +101 -0
- package/dist/src/directory-sync/scim/WebhookEventsLogger.js +165 -0
- package/dist/src/directory-sync/scim/WebhookEventsLogger.js.map +1 -0
- package/dist/src/directory-sync/scim/transform.d.ts +6 -0
- package/dist/src/directory-sync/scim/transform.js +37 -0
- package/dist/src/directory-sync/scim/transform.js.map +1 -0
- package/dist/src/directory-sync/scim/utils.d.ts +33 -0
- package/dist/src/directory-sync/scim/utils.js +129 -0
- package/dist/src/directory-sync/scim/utils.js.map +1 -0
- package/dist/src/directory-sync/types.d.ts +195 -0
- package/dist/src/directory-sync/types.js +10 -0
- package/dist/src/directory-sync/types.js.map +1 -0
- package/dist/src/directory-sync/utils.d.ts +19 -0
- package/dist/src/directory-sync/utils.js +56 -0
- package/dist/src/directory-sync/utils.js.map +1 -0
- package/dist/src/ee/branding/index.d.ts +17 -0
- package/dist/src/ee/branding/index.js +49 -0
- package/dist/src/ee/branding/index.js.map +1 -0
- package/dist/src/ee/common/checkLicense.d.ts +3 -0
- package/dist/src/ee/common/checkLicense.js +23 -0
- package/dist/src/ee/common/checkLicense.js.map +1 -0
- package/dist/src/ee/identity-federation/app.d.ts +328 -0
- package/dist/src/ee/identity-federation/app.js +532 -0
- package/dist/src/ee/identity-federation/app.js.map +1 -0
- package/dist/src/ee/identity-federation/idp-login.d.ts +18 -0
- package/dist/src/ee/identity-federation/idp-login.js +98 -0
- package/dist/src/ee/identity-federation/idp-login.js.map +1 -0
- package/dist/src/ee/identity-federation/index.d.ts +15 -0
- package/dist/src/ee/identity-federation/index.js +43 -0
- package/dist/src/ee/identity-federation/index.js.map +1 -0
- package/dist/src/ee/identity-federation/sso.d.ts +24 -0
- package/dist/src/ee/identity-federation/sso.js +124 -0
- package/dist/src/ee/identity-federation/sso.js.map +1 -0
- package/dist/src/ee/identity-federation/types.d.ts +38 -0
- package/dist/src/ee/identity-federation/types.js +2 -0
- package/dist/src/ee/identity-federation/types.js.map +1 -0
- package/dist/src/ee/ory/ory.d.ts +18 -0
- package/dist/src/ee/ory/ory.js +195 -0
- package/dist/src/ee/ory/ory.js.map +1 -0
- package/dist/src/ee/product/index.d.ts +14 -0
- package/dist/src/ee/product/index.js +45 -0
- package/dist/src/ee/product/index.js.map +1 -0
- package/dist/src/event/axios.d.ts +2 -0
- package/dist/src/event/axios.js +27 -0
- package/dist/src/event/axios.js.map +1 -0
- package/dist/src/event/index.d.ts +11 -0
- package/dist/src/event/index.js +53 -0
- package/dist/src/event/index.js.map +1 -0
- package/dist/src/event/types.d.ts +21 -0
- package/dist/src/event/types.js +2 -0
- package/dist/src/event/types.js.map +1 -0
- package/dist/src/event/utils.d.ts +4 -0
- package/dist/src/event/utils.js +33 -0
- package/dist/src/event/utils.js.map +1 -0
- package/dist/src/event/webhook.d.ts +3 -0
- package/dist/src/event/webhook.js +34 -0
- package/dist/src/event/webhook.js.map +1 -0
- package/dist/src/index.d.ts +35 -0
- package/dist/src/index.js +161 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/loadConnection.d.ts +4 -0
- package/dist/src/loadConnection.js +38 -0
- package/dist/src/loadConnection.js.map +1 -0
- package/dist/src/opentelemetry/metrics.d.ts +14 -0
- package/dist/src/opentelemetry/metrics.js +64 -0
- package/dist/src/opentelemetry/metrics.js.map +1 -0
- package/dist/src/saml/claims.d.ts +12 -0
- package/dist/src/saml/claims.js +57 -0
- package/dist/src/saml/claims.js.map +1 -0
- package/dist/src/saml/lib.d.ts +8 -0
- package/dist/src/saml/lib.js +29 -0
- package/dist/src/saml/lib.js.map +1 -0
- package/dist/src/saml/x509.d.ts +9 -0
- package/dist/src/saml/x509.js +93 -0
- package/dist/src/saml/x509.js.map +1 -0
- package/dist/src/sso-traces/index.d.ts +114 -0
- package/dist/src/sso-traces/index.js +229 -0
- package/dist/src/sso-traces/index.js.map +1 -0
- package/dist/src/sso-traces/types.d.ts +44 -0
- package/dist/src/sso-traces/types.js +2 -0
- package/dist/src/sso-traces/types.js.map +1 -0
- package/dist/src/typings.d.ts +540 -0
- package/dist/src/typings.js +5 -0
- package/dist/src/typings.js.map +1 -0
- package/dist/typeorm.d.ts +3 -0
- package/dist/typeorm.js +58 -0
- package/dist/typeorm.js.map +1 -0
- package/dist/typings.d.ts +1 -1
- package/package.json +13 -13
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/event/index.ts"],"names":[],"mappings":";;;;;;;;;AAWA,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EACL,0BAA0B,EAC1B,4BAA4B,EAC5B,0BAA0B,GAC3B,MAAM,SAAS,CAAC;AAEjB,MAAM,CAAC,OAAO,OAAO,KAAK;IAIxB,YAAY,EAAE,IAAI,EAA2B;QAC3C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IAC1B,CAAC;IAEK,MAAM,CACV,KAAQ,EACR,IAAkF;;YAElF,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAEnD,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACtD,CAAC;KAAA;IAEO,gBAAgB,CAAC,KAAgB,EAAE,IAA+C;QACxF,IAAI,eAA0B,CAAC;QAE/B,IAAI,aAAa,IAAI,IAAI,EAAE,CAAC;YAC1B,eAAe,GAAG,0BAA0B,CAAC,IAAI,CAAC,CAAC;QACrD,CAAC;aAAM,IAAI,cAAc,IAAI,IAAI,EAAE,CAAC;YAClC,eAAe,GAAG,0BAA0B,CAAC,IAAI,CAAC,CAAC;QACrD,CAAC;aAAM,CAAC;YACN,eAAe,GAAG,4BAA4B,CAAC,IAAI,CAAC,CAAC;QACvD,CAAC;QAED,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QAEjC,MAAM,OAAO,GAAuB;YAClC,KAAK;YACL,MAAM;YACN,OAAO;YACP,IAAI,EAAE,eAAe;SACtB,CAAC;QAEF,OAAO,OAAO,CAAC;IACjB,CAAC;IAEK,gBAAgB,CAAC,OAA4B,EAAE,OAA2B;;;YAC9E,IAAI,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,CAAA,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;gBAC1C,OAAO;YACT,CAAC;YAED,OAAO,MAAM,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,MAAA,IAAI,CAAC,KAAK,0CAAE,aAAa,CAAC,CAAC;QACjF,CAAC;KAAA;CACF"}
|
@@ -0,0 +1,21 @@
|
|
1
|
+
import EventController from '../event';
|
2
|
+
import type { Directory, DirectorySyncEventType, SAMLSSORecord, OIDCSSORecord, DirectorySyncEventData } from '../typings';
|
3
|
+
export type IEventController = InstanceType<typeof EventController>;
|
4
|
+
export type SSOConnectionEventType = 'sso.created' | 'sso.deleted' | 'sso.activated' | 'sso.deactivated';
|
5
|
+
export type DsyncConnectionEventType = 'dsync.created' | 'dsync.deleted' | 'dsync.activated' | 'dsync.deactivated';
|
6
|
+
export type EventType = SSOConnectionEventType | DsyncConnectionEventType | DirectorySyncEventType;
|
7
|
+
export type SAMLSSOConnectionEventData = Pick<SAMLSSORecord, 'name' | 'description' | 'clientID' | 'clientSecret'> & {
|
8
|
+
provider: string;
|
9
|
+
friendlyProviderName: string;
|
10
|
+
};
|
11
|
+
export type OIDCSSOConnectionEventData = Pick<OIDCSSORecord, 'name' | 'description' | 'clientID' | 'clientSecret'> & {
|
12
|
+
provider: string | undefined;
|
13
|
+
};
|
14
|
+
export type DsyncConnectionEventData = Pick<Directory, 'id' | 'name' | 'type'>;
|
15
|
+
export type EventData = SAMLSSOConnectionEventData | OIDCSSOConnectionEventData | DsyncConnectionEventData | DirectorySyncEventData;
|
16
|
+
export type EventPayloadSchema = {
|
17
|
+
tenant: string;
|
18
|
+
product: string;
|
19
|
+
event: EventType;
|
20
|
+
data: EventData;
|
21
|
+
};
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/event/types.ts"],"names":[],"mappings":""}
|
@@ -0,0 +1,4 @@
|
|
1
|
+
import type { Directory, DsyncConnectionEventData, SAMLSSOConnectionEventData, OIDCSSOConnectionEventData, SAMLSSORecord, OIDCSSORecord } from '../typings';
|
2
|
+
export declare const transformSAMLSSOConnection: (data: SAMLSSORecord) => SAMLSSOConnectionEventData;
|
3
|
+
export declare const transformOIDCSSOConnection: (data: OIDCSSORecord) => OIDCSSOConnectionEventData;
|
4
|
+
export declare const transformDirectoryConnection: (data: Directory) => DsyncConnectionEventData;
|
@@ -0,0 +1,33 @@
|
|
1
|
+
import { findFriendlyProviderName } from '../controller/utils';
|
2
|
+
export const transformSAMLSSOConnection = (data) => {
|
3
|
+
const { name, description, clientID, clientSecret, idpMetadata } = data;
|
4
|
+
const { provider } = idpMetadata;
|
5
|
+
return {
|
6
|
+
name,
|
7
|
+
description,
|
8
|
+
clientID,
|
9
|
+
clientSecret,
|
10
|
+
provider,
|
11
|
+
friendlyProviderName: findFriendlyProviderName(provider),
|
12
|
+
};
|
13
|
+
};
|
14
|
+
export const transformOIDCSSOConnection = (data) => {
|
15
|
+
const { name, description, clientID, clientSecret, oidcProvider } = data;
|
16
|
+
const { provider } = oidcProvider;
|
17
|
+
return {
|
18
|
+
name,
|
19
|
+
description,
|
20
|
+
clientID,
|
21
|
+
clientSecret,
|
22
|
+
provider,
|
23
|
+
};
|
24
|
+
};
|
25
|
+
export const transformDirectoryConnection = (data) => {
|
26
|
+
const { id, name, type } = data;
|
27
|
+
return {
|
28
|
+
id,
|
29
|
+
name,
|
30
|
+
type,
|
31
|
+
};
|
32
|
+
};
|
33
|
+
//# sourceMappingURL=utils.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/event/utils.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAE/D,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,IAAmB,EAA8B,EAAE;IAC5F,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;IACxE,MAAM,EAAE,QAAQ,EAAE,GAAG,WAAW,CAAC;IAEjC,OAAO;QACL,IAAI;QACJ,WAAW;QACX,QAAQ;QACR,YAAY;QACZ,QAAQ;QACR,oBAAoB,EAAE,wBAAwB,CAAC,QAAQ,CAAC;KACzD,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,IAAmB,EAA8B,EAAE;IAC5F,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;IACzE,MAAM,EAAE,QAAQ,EAAE,GAAG,YAAY,CAAC;IAElC,OAAO;QACL,IAAI;QACJ,WAAW;QACX,QAAQ;QACR,YAAY;QACZ,QAAQ;KACT,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,IAAe,EAA4B,EAAE;IACxF,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IAEhC,OAAO;QACL,EAAE;QACF,IAAI;QACJ,IAAI;KACL,CAAC;AACJ,CAAC,CAAC"}
|
@@ -0,0 +1,3 @@
|
|
1
|
+
import type { EventPayloadSchema, Webhook } from '../typings';
|
2
|
+
export declare const createSignatureString: (secret: string, payload: any) => string;
|
3
|
+
export declare const sendPayloadToWebhook: (webhook: Webhook, payload: EventPayloadSchema | EventPayloadSchema[], debugWebhooks: boolean | undefined) => Promise<any>;
|
@@ -0,0 +1,34 @@
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
8
|
+
});
|
9
|
+
};
|
10
|
+
import crypto from 'crypto';
|
11
|
+
import axios from './axios';
|
12
|
+
export const createSignatureString = (secret, payload) => {
|
13
|
+
if (!secret) {
|
14
|
+
return '';
|
15
|
+
}
|
16
|
+
const timestamp = new Date().getTime();
|
17
|
+
const signature = crypto
|
18
|
+
.createHmac('sha256', secret)
|
19
|
+
.update(`${timestamp}.${JSON.stringify(payload)}`)
|
20
|
+
.digest('hex');
|
21
|
+
return `t=${timestamp},s=${signature}`;
|
22
|
+
};
|
23
|
+
export const sendPayloadToWebhook = (webhook, payload, debugWebhooks) => __awaiter(void 0, void 0, void 0, function* () {
|
24
|
+
if (debugWebhooks) {
|
25
|
+
console.log('Sending payload to webhook:', JSON.stringify(payload, null, 2));
|
26
|
+
}
|
27
|
+
return yield axios.post(webhook.endpoint, payload, {
|
28
|
+
headers: {
|
29
|
+
'Content-Type': 'application/json',
|
30
|
+
'BoxyHQ-Signature': createSignatureString(webhook.secret, payload),
|
31
|
+
},
|
32
|
+
});
|
33
|
+
});
|
34
|
+
//# sourceMappingURL=webhook.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"webhook.js","sourceRoot":"","sources":["../../../src/event/webhook.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,KAAK,MAAM,SAAS,CAAC;AAE5B,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,MAAc,EAAE,OAAY,EAAE,EAAE;IACpE,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;IAEvC,MAAM,SAAS,GAAG,MAAM;SACrB,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC;SAC5B,MAAM,CAAC,GAAG,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;SACjD,MAAM,CAAC,KAAK,CAAC,CAAC;IAEjB,OAAO,KAAK,SAAS,MAAM,SAAS,EAAE,CAAC;AACzC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,OAAgB,EAChB,OAAkD,EAClD,aAAkC,EAClC,EAAE;IACF,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,6BAA6B,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/E,CAAC;IAED,OAAO,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE;QACjD,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;YAClC,kBAAkB,EAAE,qBAAqB,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC;SACnE;KACF,CAAC,CAAC;AACL,CAAC,CAAA,CAAC"}
|
@@ -0,0 +1,35 @@
|
|
1
|
+
import type { IDirectorySyncController, JacksonOption } from './typings';
|
2
|
+
import { AdminController } from './controller/admin';
|
3
|
+
import { ConnectionAPIController } from './controller/api';
|
4
|
+
import { OAuthController } from './controller/oauth';
|
5
|
+
import { HealthCheckController } from './controller/health-check';
|
6
|
+
import { LogoutController } from './controller/logout';
|
7
|
+
import { OidcDiscoveryController } from './controller/oidc-discovery';
|
8
|
+
import { SPSSOConfig } from './controller/sp-config';
|
9
|
+
import { SetupLinkController } from './controller/setup-link';
|
10
|
+
import { type IIdentityFederationController } from './ee/identity-federation';
|
11
|
+
import { BrandingController } from './ee/branding';
|
12
|
+
import { ProductController } from './ee/product';
|
13
|
+
export declare const controllers: (opts: JacksonOption) => Promise<{
|
14
|
+
apiController: ConnectionAPIController;
|
15
|
+
connectionAPIController: ConnectionAPIController;
|
16
|
+
oauthController: OAuthController;
|
17
|
+
adminController: AdminController;
|
18
|
+
logoutController: LogoutController;
|
19
|
+
healthCheckController: HealthCheckController;
|
20
|
+
setupLinkController: SetupLinkController;
|
21
|
+
directorySyncController: IDirectorySyncController;
|
22
|
+
oidcDiscoveryController: OidcDiscoveryController;
|
23
|
+
spConfig: SPSSOConfig;
|
24
|
+
identityFederationController: IIdentityFederationController;
|
25
|
+
brandingController: IBrandingController;
|
26
|
+
checkLicense: () => Promise<boolean>;
|
27
|
+
productController: ProductController;
|
28
|
+
close: () => Promise<void>;
|
29
|
+
}>;
|
30
|
+
export default controllers;
|
31
|
+
export * from './typings';
|
32
|
+
export * from './ee/identity-federation/types';
|
33
|
+
export type SAMLJackson = Awaited<ReturnType<typeof controllers>>;
|
34
|
+
export type ISetupLinkController = InstanceType<typeof SetupLinkController>;
|
35
|
+
export type IBrandingController = InstanceType<typeof BrandingController>;
|
@@ -0,0 +1,161 @@
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
8
|
+
});
|
9
|
+
};
|
10
|
+
import DB from './db/db';
|
11
|
+
import defaultDb from './db/defaultDb';
|
12
|
+
import loadConnection from './loadConnection';
|
13
|
+
import { AdminController } from './controller/admin';
|
14
|
+
import { ConnectionAPIController } from './controller/api';
|
15
|
+
import { OAuthController } from './controller/oauth';
|
16
|
+
import { HealthCheckController } from './controller/health-check';
|
17
|
+
import { LogoutController } from './controller/logout';
|
18
|
+
import initDirectorySync from './directory-sync';
|
19
|
+
import { OidcDiscoveryController } from './controller/oidc-discovery';
|
20
|
+
import { SPSSOConfig } from './controller/sp-config';
|
21
|
+
import { SetupLinkController } from './controller/setup-link';
|
22
|
+
import { AnalyticsController } from './controller/analytics';
|
23
|
+
import * as x509 from './saml/x509';
|
24
|
+
import initIdentityFederation from './ee/identity-federation';
|
25
|
+
import checkLicense from './ee/common/checkLicense';
|
26
|
+
import { BrandingController } from './ee/branding';
|
27
|
+
import SSOTraces from './sso-traces';
|
28
|
+
import EventController from './event';
|
29
|
+
import { ProductController } from './ee/product';
|
30
|
+
import { OryController } from './ee/ory/ory';
|
31
|
+
const tracesTTL = 7 * 24 * 60 * 60;
|
32
|
+
const defaultOpts = (opts) => {
|
33
|
+
var _a, _b, _c, _d;
|
34
|
+
const newOpts = Object.assign({}, opts);
|
35
|
+
if (!newOpts.externalUrl) {
|
36
|
+
throw new Error('externalUrl is required');
|
37
|
+
}
|
38
|
+
if (!newOpts.samlPath) {
|
39
|
+
throw new Error('samlPath is required');
|
40
|
+
}
|
41
|
+
newOpts.scimPath = newOpts.scimPath || '/api/scim/v2.0';
|
42
|
+
newOpts.samlAudience = newOpts.samlAudience || 'https://saml.boxyhq.com';
|
43
|
+
// path to folder containing static IdP connections that will be preloaded. This is useful for self-hosted deployments that only have to support a single tenant (or small number of known tenants).
|
44
|
+
newOpts.preLoadedConnection = newOpts.preLoadedConnection || '';
|
45
|
+
newOpts.idpEnabled = newOpts.idpEnabled === true;
|
46
|
+
defaultDb(newOpts);
|
47
|
+
newOpts.clientSecretVerifier = newOpts.clientSecretVerifier || 'dummy';
|
48
|
+
newOpts.db.pageLimit = newOpts.db.pageLimit || 50;
|
49
|
+
newOpts.openid = newOpts.openid || {};
|
50
|
+
newOpts.openid.jwsAlg = newOpts.openid.jwsAlg || 'RS256';
|
51
|
+
newOpts.openid.requestProfileScope = (_b = (_a = newOpts.openid) === null || _a === void 0 ? void 0 : _a.requestProfileScope) !== null && _b !== void 0 ? _b : true;
|
52
|
+
newOpts.openid.forwardOIDCParams = (_d = (_c = newOpts.openid) === null || _c === void 0 ? void 0 : _c.forwardOIDCParams) !== null && _d !== void 0 ? _d : false;
|
53
|
+
newOpts.boxyhqLicenseKey = newOpts.boxyhqLicenseKey || undefined;
|
54
|
+
return newOpts;
|
55
|
+
};
|
56
|
+
export const controllers = (opts) => __awaiter(void 0, void 0, void 0, function* () {
|
57
|
+
opts = defaultOpts(opts);
|
58
|
+
const db = yield DB.new(opts.db);
|
59
|
+
const connectionStore = db.store('saml:config');
|
60
|
+
const sessionStore = db.store('oauth:session', opts.db.ttl);
|
61
|
+
const codeStore = db.store('oauth:code', opts.db.ttl);
|
62
|
+
const tokenStore = db.store('oauth:token', opts.db.ttl);
|
63
|
+
const healthCheckStore = db.store('_health:check');
|
64
|
+
const setupLinkStore = db.store('setup:link');
|
65
|
+
const certificateStore = db.store('x509:certificates');
|
66
|
+
const settingsStore = db.store('portal:settings');
|
67
|
+
const productStore = db.store('product:config');
|
68
|
+
const tracesStore = db.store('saml:tracer', tracesTTL);
|
69
|
+
const ssoTraces = new SSOTraces({ tracesStore });
|
70
|
+
const eventController = new EventController({ opts });
|
71
|
+
const productController = new ProductController({ productStore, opts });
|
72
|
+
const oryController = new OryController({ opts, productController });
|
73
|
+
const connectionAPIController = new ConnectionAPIController({
|
74
|
+
connectionStore,
|
75
|
+
opts,
|
76
|
+
eventController,
|
77
|
+
oryController,
|
78
|
+
});
|
79
|
+
const adminController = new AdminController({ connectionStore, ssoTraces });
|
80
|
+
const healthCheckController = new HealthCheckController({ healthCheckStore });
|
81
|
+
yield healthCheckController.init();
|
82
|
+
const setupLinkController = new SetupLinkController({ setupLinkStore, opts });
|
83
|
+
// Create default certificate if it doesn't exist.
|
84
|
+
yield x509.init(certificateStore, opts);
|
85
|
+
// Enterprise Features
|
86
|
+
const identityFederationController = yield initIdentityFederation({ db, opts, ssoTraces });
|
87
|
+
const brandingController = new BrandingController({ store: settingsStore, opts });
|
88
|
+
const oauthController = new OAuthController({
|
89
|
+
connectionStore,
|
90
|
+
sessionStore,
|
91
|
+
codeStore,
|
92
|
+
tokenStore,
|
93
|
+
ssoTraces,
|
94
|
+
opts,
|
95
|
+
idFedApp: identityFederationController.app,
|
96
|
+
});
|
97
|
+
const logoutController = new LogoutController({
|
98
|
+
connectionStore,
|
99
|
+
sessionStore,
|
100
|
+
opts,
|
101
|
+
});
|
102
|
+
const oidcDiscoveryController = new OidcDiscoveryController({ opts });
|
103
|
+
const spConfig = new SPSSOConfig(opts);
|
104
|
+
const directorySyncController = yield initDirectorySync({ db, opts, eventController });
|
105
|
+
// write pre-loaded connections if present
|
106
|
+
const preLoadedConnection = opts.preLoadedConnection;
|
107
|
+
if (preLoadedConnection && preLoadedConnection.length > 0) {
|
108
|
+
const connections = yield loadConnection(preLoadedConnection);
|
109
|
+
for (const connection of connections) {
|
110
|
+
if ('oidcDiscoveryUrl' in connection || 'oidcMetadata' in connection) {
|
111
|
+
yield connectionAPIController.createOIDCConnection(connection);
|
112
|
+
}
|
113
|
+
else {
|
114
|
+
yield connectionAPIController.createSAMLConnection(connection);
|
115
|
+
}
|
116
|
+
console.info(`loaded connection for tenant "${connection.tenant}" and product "${connection.product}"`);
|
117
|
+
}
|
118
|
+
}
|
119
|
+
if (!opts.noAnalytics) {
|
120
|
+
console.info('Anonymous analytics enabled. You can disable this by setting the DO_NOT_TRACK=1 or BOXYHQ_NO_ANALYTICS=1 environment variables');
|
121
|
+
const analyticsStore = db.store('_analytics:events');
|
122
|
+
const analyticsController = new AnalyticsController({
|
123
|
+
analyticsStore,
|
124
|
+
connectionAPIController,
|
125
|
+
directorySyncController,
|
126
|
+
});
|
127
|
+
yield analyticsController.init();
|
128
|
+
}
|
129
|
+
if ('driver' in opts.db) {
|
130
|
+
console.info(`Using external database driver`);
|
131
|
+
}
|
132
|
+
else {
|
133
|
+
const type = opts.db.engine === 'sql' && opts.db.type ? ' Type: ' + opts.db.type : '';
|
134
|
+
console.info(`Using engine: ${opts.db.engine}.${type}`);
|
135
|
+
}
|
136
|
+
return {
|
137
|
+
spConfig,
|
138
|
+
apiController: connectionAPIController,
|
139
|
+
connectionAPIController,
|
140
|
+
oauthController,
|
141
|
+
adminController,
|
142
|
+
logoutController,
|
143
|
+
healthCheckController,
|
144
|
+
setupLinkController,
|
145
|
+
directorySyncController,
|
146
|
+
oidcDiscoveryController,
|
147
|
+
identityFederationController,
|
148
|
+
brandingController,
|
149
|
+
checkLicense: () => {
|
150
|
+
return checkLicense(opts.boxyhqLicenseKey);
|
151
|
+
},
|
152
|
+
productController,
|
153
|
+
close: () => __awaiter(void 0, void 0, void 0, function* () {
|
154
|
+
yield db.close();
|
155
|
+
}),
|
156
|
+
};
|
157
|
+
});
|
158
|
+
export default controllers;
|
159
|
+
export * from './typings';
|
160
|
+
export * from './ee/identity-federation/types';
|
161
|
+
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,4 @@
|
|
1
|
+
import { OIDCSSOConnectionWithDiscoveryUrl, OIDCSSOConnectionWithMetadata, SAMLSSOConnectionWithEncodedMetadata, SAMLSSOConnectionWithRawMetadata } from './typings';
|
2
|
+
type connection = SAMLSSOConnectionWithEncodedMetadata | SAMLSSOConnectionWithRawMetadata | OIDCSSOConnectionWithDiscoveryUrl | OIDCSSOConnectionWithMetadata;
|
3
|
+
declare const loadConnection: (preLoadedConnection: string) => Promise<connection[]>;
|
4
|
+
export default loadConnection;
|
@@ -0,0 +1,38 @@
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
8
|
+
});
|
9
|
+
};
|
10
|
+
import * as fs from 'fs';
|
11
|
+
import * as path from 'path';
|
12
|
+
import * as url from 'url';
|
13
|
+
const loadConnection = (preLoadedConnection) => __awaiter(void 0, void 0, void 0, function* () {
|
14
|
+
if (preLoadedConnection.startsWith('./')) {
|
15
|
+
preLoadedConnection = path.resolve(process.cwd(), preLoadedConnection);
|
16
|
+
}
|
17
|
+
else {
|
18
|
+
preLoadedConnection = path.resolve(preLoadedConnection);
|
19
|
+
}
|
20
|
+
const files = yield fs.promises.readdir(preLoadedConnection);
|
21
|
+
const connections = [];
|
22
|
+
for (const idx in files) {
|
23
|
+
const file = files[idx];
|
24
|
+
if (file.endsWith('.js')) {
|
25
|
+
const filePath = path.join(preLoadedConnection, file);
|
26
|
+
const fileUrl = preLoadedConnection.startsWith('/') ? filePath : url.pathToFileURL(filePath).toString();
|
27
|
+
const { default: connection, } = yield import(/* webpackIgnore: true */ fileUrl);
|
28
|
+
if (!('oidcDiscoveryUrl' in connection) && !('oidcMetadata' in connection)) {
|
29
|
+
const rawMetadata = yield fs.promises.readFile(path.join(preLoadedConnection, path.parse(file).name + '.xml'), 'utf8');
|
30
|
+
connection.encodedRawMetadata = Buffer.from(rawMetadata, 'utf8').toString('base64');
|
31
|
+
}
|
32
|
+
connections.push(connection);
|
33
|
+
}
|
34
|
+
}
|
35
|
+
return connections;
|
36
|
+
});
|
37
|
+
export default loadConnection;
|
38
|
+
//# sourceMappingURL=loadConnection.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"loadConnection.js","sourceRoot":"","sources":["../../src/loadConnection.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAc3B,MAAM,cAAc,GAAG,CAAO,mBAA2B,EAAyB,EAAE;IAClF,IAAI,mBAAmB,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACzC,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,mBAAmB,CAAC,CAAC;IACzE,CAAC;SAAM,CAAC;QACN,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAC7D,MAAM,WAAW,GAAiB,EAAE,CAAC;IAErC,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;QACxB,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;YACtD,MAAM,OAAO,GAAG,mBAAmB,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;YACxG,MAAM,EACJ,OAAO,EAAE,UAAU,GACpB,GAEG,MAAM,MAAM,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC;YACpD,IAAI,CAAC,CAAC,kBAAkB,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,cAAc,IAAI,UAAU,CAAC,EAAE,CAAC;gBAC3E,MAAM,WAAW,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAC5C,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,EAC9D,MAAM,CACP,CAAC;gBACF,UAAU,CAAC,kBAAkB,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACtF,CAAC;YAED,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC,CAAA,CAAC;AAEF,eAAe,cAAc,CAAC"}
|
@@ -0,0 +1,14 @@
|
|
1
|
+
declare const counters: {
|
2
|
+
createConnection: () => any;
|
3
|
+
getConnections: () => any;
|
4
|
+
deleteConnections: () => any;
|
5
|
+
oauthAuthorize: () => any;
|
6
|
+
oauthToken: () => any;
|
7
|
+
oauthUserInfo: () => any;
|
8
|
+
createDsyncConnection: () => any;
|
9
|
+
getDsyncConnections: () => any;
|
10
|
+
deleteDsyncConnections: () => any;
|
11
|
+
dsyncEventsBatchFailed: () => void;
|
12
|
+
};
|
13
|
+
declare const increment: (action: keyof typeof counters) => void;
|
14
|
+
export { increment };
|
@@ -0,0 +1,64 @@
|
|
1
|
+
import { incrementCounter } from '@boxyhq/metrics';
|
2
|
+
const METER = 'jackson';
|
3
|
+
const counters = {
|
4
|
+
createConnection: () => incrementCounter({
|
5
|
+
meter: METER,
|
6
|
+
name: 'jackson.connection.create',
|
7
|
+
counterOptions: { description: 'Number of IdP connection create requests' },
|
8
|
+
}),
|
9
|
+
getConnections: () => incrementCounter({
|
10
|
+
meter: METER,
|
11
|
+
name: 'jackson.connection.get',
|
12
|
+
counterOptions: { description: 'Number of IdP connections get requests' },
|
13
|
+
}),
|
14
|
+
deleteConnections: () => incrementCounter({
|
15
|
+
meter: METER,
|
16
|
+
name: 'jackson.connection.delete',
|
17
|
+
counterOptions: { description: 'Number of IdP connections delete requests' },
|
18
|
+
}),
|
19
|
+
oauthAuthorize: () => incrementCounter({
|
20
|
+
meter: METER,
|
21
|
+
name: 'jackson.oauth.authorize',
|
22
|
+
counterOptions: { description: 'Number of oauth authorize requests' },
|
23
|
+
}),
|
24
|
+
oauthToken: () => incrementCounter({
|
25
|
+
meter: METER,
|
26
|
+
name: 'jackson.oauth.token',
|
27
|
+
counterOptions: { description: 'Number of oauth token requests' },
|
28
|
+
}),
|
29
|
+
oauthUserInfo: () => incrementCounter({
|
30
|
+
meter: METER,
|
31
|
+
name: 'jackson.oauth.userinfo',
|
32
|
+
counterOptions: { description: 'Number of oauth user info requests' },
|
33
|
+
}),
|
34
|
+
createDsyncConnection: () => incrementCounter({
|
35
|
+
meter: METER,
|
36
|
+
name: 'jackson.dsync.connection.create',
|
37
|
+
counterOptions: { description: 'Number of DSync connection create requests' },
|
38
|
+
}),
|
39
|
+
getDsyncConnections: () => incrementCounter({
|
40
|
+
meter: METER,
|
41
|
+
name: 'jackson.dsync.connection.get',
|
42
|
+
counterOptions: { description: 'Number of DSync connections get requests' },
|
43
|
+
}),
|
44
|
+
deleteDsyncConnections: () => incrementCounter({
|
45
|
+
meter: METER,
|
46
|
+
name: 'jackson.dsync.connection.delete',
|
47
|
+
counterOptions: { description: 'Number of DSync connections delete requests' },
|
48
|
+
}),
|
49
|
+
dsyncEventsBatchFailed: () => {
|
50
|
+
incrementCounter({
|
51
|
+
meter: METER,
|
52
|
+
name: 'jackson.dsync.events_batch.failed',
|
53
|
+
counterOptions: { description: 'Indicate that a batch of dsync events failed' },
|
54
|
+
});
|
55
|
+
},
|
56
|
+
};
|
57
|
+
const increment = (action) => {
|
58
|
+
const counterIncrement = counters[action];
|
59
|
+
if (typeof counterIncrement === 'function') {
|
60
|
+
counterIncrement();
|
61
|
+
}
|
62
|
+
};
|
63
|
+
export { increment };
|
64
|
+
//# sourceMappingURL=metrics.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../../src/opentelemetry/metrics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnD,MAAM,KAAK,GAAG,SAAS,CAAC;AAExB,MAAM,QAAQ,GAAG;IACf,gBAAgB,EAAE,GAAG,EAAE,CACrB,gBAAgB,CAAC;QACf,KAAK,EAAE,KAAK;QACZ,IAAI,EAAE,2BAA2B;QACjC,cAAc,EAAE,EAAE,WAAW,EAAE,0CAA0C,EAAE;KAC5E,CAAC;IACJ,cAAc,EAAE,GAAG,EAAE,CACnB,gBAAgB,CAAC;QACf,KAAK,EAAE,KAAK;QACZ,IAAI,EAAE,wBAAwB;QAC9B,cAAc,EAAE,EAAE,WAAW,EAAE,wCAAwC,EAAE;KAC1E,CAAC;IACJ,iBAAiB,EAAE,GAAG,EAAE,CACtB,gBAAgB,CAAC;QACf,KAAK,EAAE,KAAK;QACZ,IAAI,EAAE,2BAA2B;QACjC,cAAc,EAAE,EAAE,WAAW,EAAE,2CAA2C,EAAE;KAC7E,CAAC;IACJ,cAAc,EAAE,GAAG,EAAE,CACnB,gBAAgB,CAAC;QACf,KAAK,EAAE,KAAK;QACZ,IAAI,EAAE,yBAAyB;QAC/B,cAAc,EAAE,EAAE,WAAW,EAAE,oCAAoC,EAAE;KACtE,CAAC;IACJ,UAAU,EAAE,GAAG,EAAE,CACf,gBAAgB,CAAC;QACf,KAAK,EAAE,KAAK;QACZ,IAAI,EAAE,qBAAqB;QAC3B,cAAc,EAAE,EAAE,WAAW,EAAE,gCAAgC,EAAE;KAClE,CAAC;IAEJ,aAAa,EAAE,GAAG,EAAE,CAClB,gBAAgB,CAAC;QACf,KAAK,EAAE,KAAK;QACZ,IAAI,EAAE,wBAAwB;QAC9B,cAAc,EAAE,EAAE,WAAW,EAAE,oCAAoC,EAAE;KACtE,CAAC;IAEJ,qBAAqB,EAAE,GAAG,EAAE,CAC1B,gBAAgB,CAAC;QACf,KAAK,EAAE,KAAK;QACZ,IAAI,EAAE,iCAAiC;QACvC,cAAc,EAAE,EAAE,WAAW,EAAE,4CAA4C,EAAE;KAC9E,CAAC;IAEJ,mBAAmB,EAAE,GAAG,EAAE,CACxB,gBAAgB,CAAC;QACf,KAAK,EAAE,KAAK;QACZ,IAAI,EAAE,8BAA8B;QACpC,cAAc,EAAE,EAAE,WAAW,EAAE,0CAA0C,EAAE;KAC5E,CAAC;IAEJ,sBAAsB,EAAE,GAAG,EAAE,CAC3B,gBAAgB,CAAC;QACf,KAAK,EAAE,KAAK;QACZ,IAAI,EAAE,iCAAiC;QACvC,cAAc,EAAE,EAAE,WAAW,EAAE,6CAA6C,EAAE;KAC/E,CAAC;IAEJ,sBAAsB,EAAE,GAAG,EAAE;QAC3B,gBAAgB,CAAC;YACf,KAAK,EAAE,KAAK;YACZ,IAAI,EAAE,mCAAmC;YACzC,cAAc,EAAE,EAAE,WAAW,EAAE,8CAA8C,EAAE;SAChF,CAAC,CAAC;IACL,CAAC;CACF,CAAC;AAEF,MAAM,SAAS,GAAG,CAAC,MAA6B,EAAE,EAAE;IAClD,MAAM,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC1C,IAAI,OAAO,gBAAgB,KAAK,UAAU,EAAE,CAAC;QAC3C,gBAAgB,EAAE,CAAC;IACrB,CAAC;AACH,CAAC,CAAC;AAEF,OAAO,EAAE,SAAS,EAAE,CAAC"}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
declare const mapping: {
|
2
|
+
attribute: string;
|
3
|
+
schema: string;
|
4
|
+
}[];
|
5
|
+
type attributes = (typeof mapping)[number]['attribute'];
|
6
|
+
type schemas = (typeof mapping)[number]['schema'];
|
7
|
+
declare const _default: {
|
8
|
+
map: (claims: Record<attributes | schemas, unknown>) => {
|
9
|
+
raw: Record<string, unknown>;
|
10
|
+
};
|
11
|
+
};
|
12
|
+
export default _default;
|
@@ -0,0 +1,57 @@
|
|
1
|
+
const rolesAttribute = 'roles';
|
2
|
+
const rolesSchema = 'http://schemas.microsoft.com/ws/2008/06/identity/claims/role';
|
3
|
+
const groupsAttribute = 'groups';
|
4
|
+
const groupsSchema = 'http://schemas.xmlsoap.org/claims/Group';
|
5
|
+
const arrayMapping = [
|
6
|
+
{
|
7
|
+
attribute: rolesAttribute,
|
8
|
+
schema: rolesSchema,
|
9
|
+
},
|
10
|
+
{
|
11
|
+
attribute: groupsAttribute,
|
12
|
+
schema: groupsSchema,
|
13
|
+
},
|
14
|
+
];
|
15
|
+
const mapping = [
|
16
|
+
{
|
17
|
+
attribute: 'id',
|
18
|
+
schema: 'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier',
|
19
|
+
},
|
20
|
+
{
|
21
|
+
attribute: 'email',
|
22
|
+
schema: 'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress',
|
23
|
+
},
|
24
|
+
{
|
25
|
+
attribute: 'firstName',
|
26
|
+
schema: 'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname',
|
27
|
+
},
|
28
|
+
{
|
29
|
+
attribute: 'lastName',
|
30
|
+
schema: 'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname',
|
31
|
+
},
|
32
|
+
...arrayMapping,
|
33
|
+
];
|
34
|
+
const map = (claims) => {
|
35
|
+
arrayMapping.forEach((m) => {
|
36
|
+
if (claims[m.attribute]) {
|
37
|
+
claims[m.attribute] = [].concat(claims[m.attribute]);
|
38
|
+
}
|
39
|
+
else if (claims[m.schema]) {
|
40
|
+
claims[m.schema] = [].concat(claims[m.schema]);
|
41
|
+
}
|
42
|
+
});
|
43
|
+
const profile = {
|
44
|
+
raw: claims,
|
45
|
+
};
|
46
|
+
mapping.forEach((m) => {
|
47
|
+
if (claims[m.attribute]) {
|
48
|
+
profile[m.attribute] = claims[m.attribute];
|
49
|
+
}
|
50
|
+
else if (claims[m.schema]) {
|
51
|
+
profile[m.attribute] = claims[m.schema];
|
52
|
+
}
|
53
|
+
});
|
54
|
+
return profile;
|
55
|
+
};
|
56
|
+
export default { map };
|
57
|
+
//# sourceMappingURL=claims.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"claims.js","sourceRoot":"","sources":["../../../src/saml/claims.ts"],"names":[],"mappings":"AAAA,MAAM,cAAc,GAAG,OAAO,CAAC;AAC/B,MAAM,WAAW,GAAG,8DAA8D,CAAC;AAEnF,MAAM,eAAe,GAAG,QAAQ,CAAC;AACjC,MAAM,YAAY,GAAG,yCAAyC,CAAC;AAE/D,MAAM,YAAY,GAAG;IACnB;QACE,SAAS,EAAE,cAAc;QACzB,MAAM,EAAE,WAAW;KACpB;IACD;QACE,SAAS,EAAE,eAAe;QAC1B,MAAM,EAAE,YAAY;KACrB;CACF,CAAC;AAEF,MAAM,OAAO,GAAG;IACd;QACE,SAAS,EAAE,IAAI;QACf,MAAM,EAAE,sEAAsE;KAC/E;IACD;QACE,SAAS,EAAE,OAAO;QAClB,MAAM,EAAE,oEAAoE;KAC7E;IACD;QACE,SAAS,EAAE,WAAW;QACtB,MAAM,EAAE,iEAAiE;KAC1E;IACD;QACE,SAAS,EAAE,UAAU;QACrB,MAAM,EAAE,+DAA+D;KACxE;IACD,GAAG,YAAY;CAChB,CAAC;AAKF,MAAM,GAAG,GAAG,CAAC,MAA6C,EAAE,EAAE;IAC5D,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QACzB,IAAI,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC;YACxB,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAQ,CAAC,CAAC;QAC9D,CAAC;aAAM,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5B,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAQ,CAAC,CAAC;QACxD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG;QACd,GAAG,EAAE,MAAM;KACZ,CAAC;IAEF,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QACpB,IAAI,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC;YACxB,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC7C,CAAC;aAAM,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5B,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,eAAe,EAAE,GAAG,EAAE,CAAC"}
|
@@ -0,0 +1,8 @@
|
|
1
|
+
export declare const extractSAMLResponseAttributes: (decodedResponse: string, validateOpts: ValidateOption) => Promise<any>;
|
2
|
+
export type ValidateOption = {
|
3
|
+
thumbprint?: string;
|
4
|
+
publicKey?: string;
|
5
|
+
audience: string;
|
6
|
+
privateKey: string;
|
7
|
+
inResponseTo?: string;
|
8
|
+
};
|
@@ -0,0 +1,29 @@
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
8
|
+
});
|
9
|
+
};
|
10
|
+
import crypto from 'crypto';
|
11
|
+
import saml from '@boxyhq/saml20';
|
12
|
+
import * as dbutils from '../db/utils';
|
13
|
+
import claims from '../saml/claims';
|
14
|
+
// Validate the SAMLResponse and extract the user profile
|
15
|
+
export const extractSAMLResponseAttributes = (decodedResponse, validateOpts) => __awaiter(void 0, void 0, void 0, function* () {
|
16
|
+
const attributes = yield saml.validate(decodedResponse, validateOpts);
|
17
|
+
if (attributes && attributes.claims) {
|
18
|
+
// We map claims to our attributes id, email, firstName, lastName where possible. We also map original claims to raw
|
19
|
+
attributes.claims = claims.map(attributes.claims);
|
20
|
+
// Some providers don't return the id in the assertion, we set it to a sha256 hash of the email
|
21
|
+
if (!attributes.claims.id && attributes.claims.email) {
|
22
|
+
attributes.claims.id = crypto.createHash('sha256').update(attributes.claims.email).digest('hex');
|
23
|
+
}
|
24
|
+
}
|
25
|
+
// we'll send a ripemd160 hash of the id, this can be used in the case of email missing it can be used as the local part
|
26
|
+
attributes.claims.idHash = dbutils.keyDigest(attributes.claims.id);
|
27
|
+
return attributes;
|
28
|
+
});
|
29
|
+
//# sourceMappingURL=lib.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"lib.js","sourceRoot":"","sources":["../../../src/saml/lib.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,IAAI,MAAM,gBAAgB,CAAC;AAClC,OAAO,KAAK,OAAO,MAAM,aAAa,CAAC;AACvC,OAAO,MAAM,MAAM,gBAAgB,CAAC;AAEpC,yDAAyD;AACzD,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAC3C,eAAuB,EACvB,YAA4B,EAC5B,EAAE;IACF,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;IAEtE,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;QACpC,oHAAoH;QACpH,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAElD,+FAA+F;QAC/F,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YACrD,UAAU,CAAC,MAAM,CAAC,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnG,CAAC;IACH,CAAC;IAED,wHAAwH;IACxH,UAAU,CAAC,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAEnE,OAAO,UAAU,CAAC;AACpB,CAAC,CAAA,CAAC"}
|
@@ -0,0 +1,9 @@
|
|
1
|
+
import type { JacksonOption, Storable } from '../typings';
|
2
|
+
export declare const init: (store: Storable, opts: JacksonOption) => Promise<{
|
3
|
+
publicKey: string;
|
4
|
+
privateKey: string;
|
5
|
+
}>;
|
6
|
+
export declare const getDefaultCertificate: () => Promise<{
|
7
|
+
publicKey: string;
|
8
|
+
privateKey: string;
|
9
|
+
}>;
|