@intlayer/backend 7.0.9-canary.0 → 7.0.9-canary.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -1
- package/dist/assets/utils/AI/askDocQuestion/embeddings/docs/en/packages/intlayer/getLocalizedUrl.json +6146 -5120
- package/dist/assets/utils/AI/askDocQuestion/embeddings/docs/en/packages/intlayer/getMultilingualUrls.json +5124 -3072
- package/dist/assets/utils/AI/askDocQuestion/embeddings/docs/en/packages/intlayer/getPrefix.json +4106 -0
- package/dist/cjs/controllers/dictionary.controller.cjs +64 -41
- package/dist/cjs/controllers/dictionary.controller.cjs.map +1 -1
- package/dist/cjs/emails/MagicLinkEmail.cjs +242 -0
- package/dist/cjs/emails/MagicLinkEmail.cjs.map +1 -0
- package/dist/cjs/index.cjs +1 -1
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/node_modules/@authenio/xml-encryption/lib/index.cjs +16 -0
- package/dist/cjs/node_modules/@authenio/xml-encryption/lib/index.cjs.map +1 -0
- package/dist/cjs/node_modules/@authenio/xml-encryption/lib/templates/encrypted-key.tpl.xml.cjs +25 -0
- package/dist/cjs/node_modules/@authenio/xml-encryption/lib/templates/encrypted-key.tpl.xml.cjs.map +1 -0
- package/dist/cjs/node_modules/@authenio/xml-encryption/lib/templates/keyinfo.tpl.xml.cjs +31 -0
- package/dist/cjs/node_modules/@authenio/xml-encryption/lib/templates/keyinfo.tpl.xml.cjs.map +1 -0
- package/dist/cjs/node_modules/@authenio/xml-encryption/lib/utils.cjs +38 -0
- package/dist/cjs/node_modules/@authenio/xml-encryption/lib/utils.cjs.map +1 -0
- package/dist/cjs/node_modules/@authenio/xml-encryption/lib/xmlenc.cjs +231 -0
- package/dist/cjs/node_modules/@authenio/xml-encryption/lib/xmlenc.cjs.map +1 -0
- package/dist/cjs/node_modules/@better-auth/sso/dist/index.cjs +1210 -0
- package/dist/cjs/node_modules/@better-auth/sso/dist/index.cjs.map +1 -0
- package/dist/cjs/node_modules/@better-fetch/fetch/dist/index.cjs +362 -0
- package/dist/cjs/node_modules/@better-fetch/fetch/dist/index.cjs.map +1 -0
- package/dist/cjs/node_modules/@xmldom/is-dom-node/dist/index.cjs +89 -0
- package/dist/cjs/node_modules/@xmldom/is-dom-node/dist/index.cjs.map +1 -0
- package/dist/cjs/node_modules/@xmldom/xmldom/lib/conventions.cjs +110 -0
- package/dist/cjs/node_modules/@xmldom/xmldom/lib/conventions.cjs.map +1 -0
- package/dist/cjs/node_modules/@xmldom/xmldom/lib/dom-parser.cjs +248 -0
- package/dist/cjs/node_modules/@xmldom/xmldom/lib/dom-parser.cjs.map +1 -0
- package/dist/cjs/node_modules/@xmldom/xmldom/lib/dom.cjs +1309 -0
- package/dist/cjs/node_modules/@xmldom/xmldom/lib/dom.cjs.map +1 -0
- package/dist/cjs/node_modules/@xmldom/xmldom/lib/entities.cjs +2176 -0
- package/dist/cjs/node_modules/@xmldom/xmldom/lib/entities.cjs.map +1 -0
- package/dist/cjs/node_modules/@xmldom/xmldom/lib/index.cjs +20 -0
- package/dist/cjs/node_modules/@xmldom/xmldom/lib/index.cjs.map +1 -0
- package/dist/cjs/node_modules/@xmldom/xmldom/lib/sax.cjs +499 -0
- package/dist/cjs/node_modules/@xmldom/xmldom/lib/sax.cjs.map +1 -0
- package/dist/cjs/node_modules/asn1/lib/ber/errors.cjs +20 -0
- package/dist/cjs/node_modules/asn1/lib/ber/errors.cjs.map +1 -0
- package/dist/cjs/node_modules/asn1/lib/ber/index.cjs +28 -0
- package/dist/cjs/node_modules/asn1/lib/ber/index.cjs.map +1 -0
- package/dist/cjs/node_modules/asn1/lib/ber/reader.cjs +167 -0
- package/dist/cjs/node_modules/asn1/lib/ber/reader.cjs.map +1 -0
- package/dist/cjs/node_modules/asn1/lib/ber/types.cjs +47 -0
- package/dist/cjs/node_modules/asn1/lib/ber/types.cjs.map +1 -0
- package/dist/cjs/node_modules/asn1/lib/ber/writer.cjs +223 -0
- package/dist/cjs/node_modules/asn1/lib/ber/writer.cjs.map +1 -0
- package/dist/cjs/node_modules/asn1/lib/index.cjs +21 -0
- package/dist/cjs/node_modules/asn1/lib/index.cjs.map +1 -0
- package/dist/cjs/node_modules/camelcase/index.cjs +78 -0
- package/dist/cjs/node_modules/camelcase/index.cjs.map +1 -0
- package/dist/cjs/node_modules/escape-html/index.cjs +71 -0
- package/dist/cjs/node_modules/escape-html/index.cjs.map +1 -0
- package/dist/cjs/node_modules/fast-xml-parser/src/fxp.cjs +9 -0
- package/dist/cjs/node_modules/fast-xml-parser/src/fxp.cjs.map +1 -0
- package/dist/cjs/node_modules/fast-xml-parser/src/util.cjs +29 -0
- package/dist/cjs/node_modules/fast-xml-parser/src/util.cjs.map +1 -0
- package/dist/cjs/node_modules/fast-xml-parser/src/validator.cjs +244 -0
- package/dist/cjs/node_modules/fast-xml-parser/src/validator.cjs.map +1 -0
- package/dist/cjs/node_modules/jose/dist/webapi/lib/base64.cjs +14 -0
- package/dist/cjs/node_modules/jose/dist/webapi/lib/base64.cjs.map +1 -0
- package/dist/cjs/node_modules/jose/dist/webapi/lib/buffer_utils.cjs +10 -0
- package/dist/cjs/node_modules/jose/dist/webapi/lib/buffer_utils.cjs.map +1 -0
- package/dist/cjs/node_modules/jose/dist/webapi/lib/is_object.cjs +17 -0
- package/dist/cjs/node_modules/jose/dist/webapi/lib/is_object.cjs.map +1 -0
- package/dist/cjs/node_modules/jose/dist/webapi/util/base64url.cjs +20 -0
- package/dist/cjs/node_modules/jose/dist/webapi/util/base64url.cjs.map +1 -0
- package/dist/cjs/node_modules/jose/dist/webapi/util/decode_jwt.cjs +32 -0
- package/dist/cjs/node_modules/jose/dist/webapi/util/decode_jwt.cjs.map +1 -0
- package/dist/cjs/node_modules/jose/dist/webapi/util/errors.cjs +28 -0
- package/dist/cjs/node_modules/jose/dist/webapi/util/errors.cjs.map +1 -0
- package/dist/cjs/node_modules/node-forge/lib/aes.cjs +604 -0
- package/dist/cjs/node_modules/node-forge/lib/aes.cjs.map +1 -0
- package/dist/cjs/node_modules/node-forge/lib/aesCipherSuites.cjs +202 -0
- package/dist/cjs/node_modules/node-forge/lib/aesCipherSuites.cjs.map +1 -0
- package/dist/cjs/node_modules/node-forge/lib/asn1-validator.cjs +83 -0
- package/dist/cjs/node_modules/node-forge/lib/asn1-validator.cjs.map +1 -0
- package/dist/cjs/node_modules/node-forge/lib/asn1.cjs +945 -0
- package/dist/cjs/node_modules/node-forge/lib/asn1.cjs.map +1 -0
- package/dist/cjs/node_modules/node-forge/lib/baseN.cjs +144 -0
- package/dist/cjs/node_modules/node-forge/lib/baseN.cjs.map +1 -0
- package/dist/cjs/node_modules/node-forge/lib/cipher.cjs +193 -0
- package/dist/cjs/node_modules/node-forge/lib/cipher.cjs.map +1 -0
- package/dist/cjs/node_modules/node-forge/lib/cipherModes.cjs +604 -0
- package/dist/cjs/node_modules/node-forge/lib/cipherModes.cjs.map +1 -0
- package/dist/cjs/node_modules/node-forge/lib/des.cjs +1194 -0
- package/dist/cjs/node_modules/node-forge/lib/des.cjs.map +1 -0
- package/dist/cjs/node_modules/node-forge/lib/ed25519.cjs +1027 -0
- package/dist/cjs/node_modules/node-forge/lib/ed25519.cjs.map +1 -0
- package/dist/cjs/node_modules/node-forge/lib/forge.cjs +22 -0
- package/dist/cjs/node_modules/node-forge/lib/forge.cjs.map +1 -0
- package/dist/cjs/node_modules/node-forge/lib/hmac.cjs +114 -0
- package/dist/cjs/node_modules/node-forge/lib/hmac.cjs.map +1 -0
- package/dist/cjs/node_modules/node-forge/lib/index.cjs +73 -0
- package/dist/cjs/node_modules/node-forge/lib/index.cjs.map +1 -0
- package/dist/cjs/node_modules/node-forge/lib/jsbn.cjs +1263 -0
- package/dist/cjs/node_modules/node-forge/lib/jsbn.cjs.map +1 -0
- package/dist/cjs/node_modules/node-forge/lib/kem.cjs +153 -0
- package/dist/cjs/node_modules/node-forge/lib/kem.cjs.map +1 -0
- package/dist/cjs/node_modules/node-forge/lib/log.cjs +248 -0
- package/dist/cjs/node_modules/node-forge/lib/log.cjs.map +1 -0
- package/dist/cjs/node_modules/node-forge/lib/md.all.cjs +31 -0
- package/dist/cjs/node_modules/node-forge/lib/md.all.cjs.map +1 -0
- package/dist/cjs/node_modules/node-forge/lib/md.cjs +25 -0
- package/dist/cjs/node_modules/node-forge/lib/md.cjs.map +1 -0
- package/dist/cjs/node_modules/node-forge/lib/md5.cjs +331 -0
- package/dist/cjs/node_modules/node-forge/lib/md5.cjs.map +1 -0
- package/dist/cjs/node_modules/node-forge/lib/mgf.cjs +27 -0
- package/dist/cjs/node_modules/node-forge/lib/mgf.cjs.map +1 -0
- package/dist/cjs/node_modules/node-forge/lib/mgf1.cjs +51 -0
- package/dist/cjs/node_modules/node-forge/lib/mgf1.cjs.map +1 -0
- package/dist/cjs/node_modules/node-forge/lib/oids.cjs +160 -0
- package/dist/cjs/node_modules/node-forge/lib/oids.cjs.map +1 -0
- package/dist/cjs/node_modules/node-forge/lib/pbe.cjs +822 -0
- package/dist/cjs/node_modules/node-forge/lib/pbe.cjs.map +1 -0
- package/dist/cjs/node_modules/node-forge/lib/pbkdf2.cjs +132 -0
- package/dist/cjs/node_modules/node-forge/lib/pbkdf2.cjs.map +1 -0
- package/dist/cjs/node_modules/node-forge/lib/pem.cjs +182 -0
- package/dist/cjs/node_modules/node-forge/lib/pem.cjs.map +1 -0
- package/dist/cjs/node_modules/node-forge/lib/pkcs1.cjs +207 -0
- package/dist/cjs/node_modules/node-forge/lib/pkcs1.cjs.map +1 -0
- package/dist/cjs/node_modules/node-forge/lib/pkcs12.cjs +730 -0
- package/dist/cjs/node_modules/node-forge/lib/pkcs12.cjs.map +1 -0
- package/dist/cjs/node_modules/node-forge/lib/pkcs7.cjs +648 -0
- package/dist/cjs/node_modules/node-forge/lib/pkcs7.cjs.map +1 -0
- package/dist/cjs/node_modules/node-forge/lib/pkcs7asn1.cjs +412 -0
- package/dist/cjs/node_modules/node-forge/lib/pkcs7asn1.cjs.map +1 -0
- package/dist/cjs/node_modules/node-forge/lib/pki.cjs +108 -0
- package/dist/cjs/node_modules/node-forge/lib/pki.cjs.map +1 -0
- package/dist/cjs/node_modules/node-forge/lib/prime.cjs +200 -0
- package/dist/cjs/node_modules/node-forge/lib/prime.cjs.map +1 -0
- package/dist/cjs/node_modules/node-forge/lib/prng.cjs +297 -0
- package/dist/cjs/node_modules/node-forge/lib/prng.cjs.map +1 -0
- package/dist/cjs/node_modules/node-forge/lib/pss.cjs +148 -0
- package/dist/cjs/node_modules/node-forge/lib/pss.cjs.map +1 -0
- package/dist/cjs/node_modules/node-forge/lib/random.cjs +148 -0
- package/dist/cjs/node_modules/node-forge/lib/random.cjs.map +1 -0
- package/dist/cjs/node_modules/node-forge/lib/rc2.cjs +545 -0
- package/dist/cjs/node_modules/node-forge/lib/rc2.cjs.map +1 -0
- package/dist/cjs/node_modules/node-forge/lib/rsa.cjs +1306 -0
- package/dist/cjs/node_modules/node-forge/lib/rsa.cjs.map +1 -0
- package/dist/cjs/node_modules/node-forge/lib/sha1.cjs +237 -0
- package/dist/cjs/node_modules/node-forge/lib/sha1.cjs.map +1 -0
- package/dist/cjs/node_modules/node-forge/lib/sha256.cjs +274 -0
- package/dist/cjs/node_modules/node-forge/lib/sha256.cjs.map +1 -0
- package/dist/cjs/node_modules/node-forge/lib/sha512.cjs +420 -0
- package/dist/cjs/node_modules/node-forge/lib/sha512.cjs.map +1 -0
- package/dist/cjs/node_modules/node-forge/lib/ssh.cjs +201 -0
- package/dist/cjs/node_modules/node-forge/lib/ssh.cjs.map +1 -0
- package/dist/cjs/node_modules/node-forge/lib/tls.cjs +3662 -0
- package/dist/cjs/node_modules/node-forge/lib/tls.cjs.map +1 -0
- package/dist/cjs/node_modules/node-forge/lib/util.cjs +2124 -0
- package/dist/cjs/node_modules/node-forge/lib/util.cjs.map +1 -0
- package/dist/cjs/node_modules/node-forge/lib/x509.cjs +2171 -0
- package/dist/cjs/node_modules/node-forge/lib/x509.cjs.map +1 -0
- package/dist/cjs/node_modules/node-rsa/src/NodeRSA.cjs +341 -0
- package/dist/cjs/node_modules/node-rsa/src/NodeRSA.cjs.map +1 -0
- package/dist/cjs/node_modules/node-rsa/src/encryptEngines/encryptEngines.cjs +26 -0
- package/dist/cjs/node_modules/node-rsa/src/encryptEngines/encryptEngines.cjs.map +1 -0
- package/dist/cjs/node_modules/node-rsa/src/encryptEngines/io.cjs +65 -0
- package/dist/cjs/node_modules/node-rsa/src/encryptEngines/io.cjs.map +1 -0
- package/dist/cjs/node_modules/node-rsa/src/encryptEngines/js.cjs +44 -0
- package/dist/cjs/node_modules/node-rsa/src/encryptEngines/js.cjs.map +1 -0
- package/dist/cjs/node_modules/node-rsa/src/encryptEngines/node12.cjs +49 -0
- package/dist/cjs/node_modules/node-rsa/src/encryptEngines/node12.cjs.map +1 -0
- package/dist/cjs/node_modules/node-rsa/src/formats/components.cjs +55 -0
- package/dist/cjs/node_modules/node-rsa/src/formats/components.cjs.map +1 -0
- package/dist/cjs/node_modules/node-rsa/src/formats/formats.cjs +86 -0
- package/dist/cjs/node_modules/node-rsa/src/formats/formats.cjs.map +1 -0
- package/dist/cjs/node_modules/node-rsa/src/formats/openssh.cjs +177 -0
- package/dist/cjs/node_modules/node-rsa/src/formats/openssh.cjs.map +1 -0
- package/dist/cjs/node_modules/node-rsa/src/formats/pkcs1.cjs +104 -0
- package/dist/cjs/node_modules/node-rsa/src/formats/pkcs1.cjs.map +1 -0
- package/dist/cjs/node_modules/node-rsa/src/formats/pkcs8.cjs +131 -0
- package/dist/cjs/node_modules/node-rsa/src/formats/pkcs8.cjs.map +1 -0
- package/dist/cjs/node_modules/node-rsa/src/libs/jsbn.cjs +1347 -0
- package/dist/cjs/node_modules/node-rsa/src/libs/jsbn.cjs.map +1 -0
- package/dist/cjs/node_modules/node-rsa/src/libs/rsa.cjs +231 -0
- package/dist/cjs/node_modules/node-rsa/src/libs/rsa.cjs.map +1 -0
- package/dist/cjs/node_modules/node-rsa/src/schemes/oaep.cjs +123 -0
- package/dist/cjs/node_modules/node-rsa/src/schemes/oaep.cjs.map +1 -0
- package/dist/cjs/node_modules/node-rsa/src/schemes/pkcs1.cjs +175 -0
- package/dist/cjs/node_modules/node-rsa/src/schemes/pkcs1.cjs.map +1 -0
- package/dist/cjs/node_modules/node-rsa/src/schemes/pss.cjs +123 -0
- package/dist/cjs/node_modules/node-rsa/src/schemes/pss.cjs.map +1 -0
- package/dist/cjs/node_modules/node-rsa/src/schemes/schemes.cjs +28 -0
- package/dist/cjs/node_modules/node-rsa/src/schemes/schemes.cjs.map +1 -0
- package/dist/cjs/node_modules/node-rsa/src/utils.cjs +84 -0
- package/dist/cjs/node_modules/node-rsa/src/utils.cjs.map +1 -0
- package/dist/cjs/node_modules/pako/index.cjs +25 -0
- package/dist/cjs/node_modules/pako/index.cjs.map +1 -0
- package/dist/cjs/node_modules/pako/lib/deflate.cjs +311 -0
- package/dist/cjs/node_modules/pako/lib/deflate.cjs.map +1 -0
- package/dist/cjs/node_modules/pako/lib/inflate.cjs +317 -0
- package/dist/cjs/node_modules/pako/lib/inflate.cjs.map +1 -0
- package/dist/cjs/node_modules/pako/lib/utils/common.cjs +77 -0
- package/dist/cjs/node_modules/pako/lib/utils/common.cjs.map +1 -0
- package/dist/cjs/node_modules/pako/lib/utils/strings.cjs +131 -0
- package/dist/cjs/node_modules/pako/lib/utils/strings.cjs.map +1 -0
- package/dist/cjs/node_modules/pako/lib/zlib/adler32.cjs +29 -0
- package/dist/cjs/node_modules/pako/lib/zlib/adler32.cjs.map +1 -0
- package/dist/cjs/node_modules/pako/lib/zlib/constants.cjs +43 -0
- package/dist/cjs/node_modules/pako/lib/zlib/constants.cjs.map +1 -0
- package/dist/cjs/node_modules/pako/lib/zlib/crc32.cjs +31 -0
- package/dist/cjs/node_modules/pako/lib/zlib/crc32.cjs.map +1 -0
- package/dist/cjs/node_modules/pako/lib/zlib/deflate.cjs +889 -0
- package/dist/cjs/node_modules/pako/lib/zlib/deflate.cjs.map +1 -0
- package/dist/cjs/node_modules/pako/lib/zlib/gzheader.cjs +27 -0
- package/dist/cjs/node_modules/pako/lib/zlib/gzheader.cjs.map +1 -0
- package/dist/cjs/node_modules/pako/lib/zlib/inffast.cjs +227 -0
- package/dist/cjs/node_modules/pako/lib/zlib/inffast.cjs.map +1 -0
- package/dist/cjs/node_modules/pako/lib/zlib/inflate.cjs +1038 -0
- package/dist/cjs/node_modules/pako/lib/zlib/inflate.cjs.map +1 -0
- package/dist/cjs/node_modules/pako/lib/zlib/inftrees.cjs +278 -0
- package/dist/cjs/node_modules/pako/lib/zlib/inftrees.cjs.map +1 -0
- package/dist/cjs/node_modules/pako/lib/zlib/messages.cjs +25 -0
- package/dist/cjs/node_modules/pako/lib/zlib/messages.cjs.map +1 -0
- package/dist/cjs/node_modules/pako/lib/zlib/trees.cjs +626 -0
- package/dist/cjs/node_modules/pako/lib/zlib/trees.cjs.map +1 -0
- package/dist/cjs/node_modules/pako/lib/zlib/zstream.cjs +29 -0
- package/dist/cjs/node_modules/pako/lib/zlib/zstream.cjs.map +1 -0
- package/dist/cjs/node_modules/safer-buffer/safer.cjs +52 -0
- package/dist/cjs/node_modules/safer-buffer/safer.cjs.map +1 -0
- package/dist/cjs/node_modules/samlify/build/index.cjs +120 -0
- package/dist/cjs/node_modules/samlify/build/index.cjs.map +1 -0
- package/dist/cjs/node_modules/samlify/build/src/api.cjs +36 -0
- package/dist/cjs/node_modules/samlify/build/src/api.cjs.map +1 -0
- package/dist/cjs/node_modules/samlify/build/src/binding-post.cjs +507 -0
- package/dist/cjs/node_modules/samlify/build/src/binding-post.cjs.map +1 -0
- package/dist/cjs/node_modules/samlify/build/src/binding-redirect.cjs +342 -0
- package/dist/cjs/node_modules/samlify/build/src/binding-redirect.cjs.map +1 -0
- package/dist/cjs/node_modules/samlify/build/src/binding-simplesign.cjs +361 -0
- package/dist/cjs/node_modules/samlify/build/src/binding-simplesign.cjs.map +1 -0
- package/dist/cjs/node_modules/samlify/build/src/entity-idp.cjs +282 -0
- package/dist/cjs/node_modules/samlify/build/src/entity-idp.cjs.map +1 -0
- package/dist/cjs/node_modules/samlify/build/src/entity-sp.cjs +145 -0
- package/dist/cjs/node_modules/samlify/build/src/entity-sp.cjs.map +1 -0
- package/dist/cjs/node_modules/samlify/build/src/entity.cjs +256 -0
- package/dist/cjs/node_modules/samlify/build/src/entity.cjs.map +1 -0
- package/dist/cjs/node_modules/samlify/build/src/extractor.cjs +355 -0
- package/dist/cjs/node_modules/samlify/build/src/extractor.cjs.map +1 -0
- package/dist/cjs/node_modules/samlify/build/src/flow.cjs +392 -0
- package/dist/cjs/node_modules/samlify/build/src/flow.cjs.map +1 -0
- package/dist/cjs/node_modules/samlify/build/src/libsaml.cjs +547 -0
- package/dist/cjs/node_modules/samlify/build/src/libsaml.cjs.map +1 -0
- package/dist/cjs/node_modules/samlify/build/src/metadata-idp.cjs +174 -0
- package/dist/cjs/node_modules/samlify/build/src/metadata-idp.cjs.map +1 -0
- package/dist/cjs/node_modules/samlify/build/src/metadata-sp.cjs +217 -0
- package/dist/cjs/node_modules/samlify/build/src/metadata-sp.cjs.map +1 -0
- package/dist/cjs/node_modules/samlify/build/src/metadata.cjs +203 -0
- package/dist/cjs/node_modules/samlify/build/src/metadata.cjs.map +1 -0
- package/dist/cjs/node_modules/samlify/build/src/urn.cjs +228 -0
- package/dist/cjs/node_modules/samlify/build/src/urn.cjs.map +1 -0
- package/dist/cjs/node_modules/samlify/build/src/utility.cjs +280 -0
- package/dist/cjs/node_modules/samlify/build/src/utility.cjs.map +1 -0
- package/dist/cjs/node_modules/samlify/build/src/validator.cjs +56 -0
- package/dist/cjs/node_modules/samlify/build/src/validator.cjs.map +1 -0
- package/dist/cjs/node_modules/samlify/node_modules/uuid/dist/esm-node/index.cjs +50 -0
- package/dist/cjs/node_modules/samlify/node_modules/uuid/dist/esm-node/index.cjs.map +1 -0
- package/dist/cjs/node_modules/samlify/node_modules/uuid/dist/esm-node/md5.cjs +25 -0
- package/dist/cjs/node_modules/samlify/node_modules/uuid/dist/esm-node/md5.cjs.map +1 -0
- package/dist/cjs/node_modules/samlify/node_modules/uuid/dist/esm-node/nil.cjs +18 -0
- package/dist/cjs/node_modules/samlify/node_modules/uuid/dist/esm-node/nil.cjs.map +1 -0
- package/dist/cjs/node_modules/samlify/node_modules/uuid/dist/esm-node/parse.cjs +42 -0
- package/dist/cjs/node_modules/samlify/node_modules/uuid/dist/esm-node/parse.cjs.map +1 -0
- package/dist/cjs/node_modules/samlify/node_modules/uuid/dist/esm-node/regex.cjs +18 -0
- package/dist/cjs/node_modules/samlify/node_modules/uuid/dist/esm-node/regex.cjs.map +1 -0
- package/dist/cjs/node_modules/samlify/node_modules/uuid/dist/esm-node/rng.cjs +28 -0
- package/dist/cjs/node_modules/samlify/node_modules/uuid/dist/esm-node/rng.cjs.map +1 -0
- package/dist/cjs/node_modules/samlify/node_modules/uuid/dist/esm-node/sha1.cjs +25 -0
- package/dist/cjs/node_modules/samlify/node_modules/uuid/dist/esm-node/sha1.cjs.map +1 -0
- package/dist/cjs/node_modules/samlify/node_modules/uuid/dist/esm-node/stringify.cjs +27 -0
- package/dist/cjs/node_modules/samlify/node_modules/uuid/dist/esm-node/stringify.cjs.map +1 -0
- package/dist/cjs/node_modules/samlify/node_modules/uuid/dist/esm-node/v1.cjs +69 -0
- package/dist/cjs/node_modules/samlify/node_modules/uuid/dist/esm-node/v1.cjs.map +1 -0
- package/dist/cjs/node_modules/samlify/node_modules/uuid/dist/esm-node/v3.cjs +23 -0
- package/dist/cjs/node_modules/samlify/node_modules/uuid/dist/esm-node/v3.cjs.map +1 -0
- package/dist/cjs/node_modules/samlify/node_modules/uuid/dist/esm-node/v35.cjs +54 -0
- package/dist/cjs/node_modules/samlify/node_modules/uuid/dist/esm-node/v35.cjs.map +1 -0
- package/dist/cjs/node_modules/samlify/node_modules/uuid/dist/esm-node/v4.cjs +34 -0
- package/dist/cjs/node_modules/samlify/node_modules/uuid/dist/esm-node/v4.cjs.map +1 -0
- package/dist/cjs/node_modules/samlify/node_modules/uuid/dist/esm-node/v5.cjs +23 -0
- package/dist/cjs/node_modules/samlify/node_modules/uuid/dist/esm-node/v5.cjs.map +1 -0
- package/dist/cjs/node_modules/samlify/node_modules/uuid/dist/esm-node/validate.cjs +23 -0
- package/dist/cjs/node_modules/samlify/node_modules/uuid/dist/esm-node/validate.cjs.map +1 -0
- package/dist/cjs/node_modules/samlify/node_modules/uuid/dist/esm-node/version.cjs +24 -0
- package/dist/cjs/node_modules/samlify/node_modules/uuid/dist/esm-node/version.cjs.map +1 -0
- package/dist/cjs/node_modules/xml/lib/escapeForXML.cjs +27 -0
- package/dist/cjs/node_modules/xml/lib/escapeForXML.cjs.map +1 -0
- package/dist/cjs/node_modules/xml/lib/xml.cjs +186 -0
- package/dist/cjs/node_modules/xml/lib/xml.cjs.map +1 -0
- package/dist/cjs/node_modules/xml-crypto/lib/c14n-canonicalization.cjs +202 -0
- package/dist/cjs/node_modules/xml-crypto/lib/c14n-canonicalization.cjs.map +1 -0
- package/dist/cjs/node_modules/xml-crypto/lib/enveloped-signature.cjs +52 -0
- package/dist/cjs/node_modules/xml-crypto/lib/enveloped-signature.cjs.map +1 -0
- package/dist/cjs/node_modules/xml-crypto/lib/exclusive-canonicalization.cjs +223 -0
- package/dist/cjs/node_modules/xml-crypto/lib/exclusive-canonicalization.cjs.map +1 -0
- package/dist/cjs/node_modules/xml-crypto/lib/hash-algorithms.cjs +56 -0
- package/dist/cjs/node_modules/xml-crypto/lib/hash-algorithms.cjs.map +1 -0
- package/dist/cjs/node_modules/xml-crypto/lib/index.cjs +73 -0
- package/dist/cjs/node_modules/xml-crypto/lib/index.cjs.map +1 -0
- package/dist/cjs/node_modules/xml-crypto/lib/signature-algorithms.cjs +91 -0
- package/dist/cjs/node_modules/xml-crypto/lib/signature-algorithms.cjs.map +1 -0
- package/dist/cjs/node_modules/xml-crypto/lib/signed-xml.cjs +695 -0
- package/dist/cjs/node_modules/xml-crypto/lib/signed-xml.cjs.map +1 -0
- package/dist/cjs/node_modules/xml-crypto/lib/types.cjs +58 -0
- package/dist/cjs/node_modules/xml-crypto/lib/types.cjs.map +1 -0
- package/dist/cjs/node_modules/xml-crypto/lib/utils.cjs +213 -0
- package/dist/cjs/node_modules/xml-crypto/lib/utils.cjs.map +1 -0
- package/dist/cjs/node_modules/xml-crypto/node_modules/xpath/xpath.cjs +3445 -0
- package/dist/cjs/node_modules/xml-crypto/node_modules/xpath/xpath.cjs.map +1 -0
- package/dist/cjs/node_modules/xml-escape/index.cjs +30 -0
- package/dist/cjs/node_modules/xml-escape/index.cjs.map +1 -0
- package/dist/cjs/node_modules/xpath/xpath.cjs +3410 -0
- package/dist/cjs/node_modules/xpath/xpath.cjs.map +1 -0
- package/dist/cjs/node_modules/zod/v4/classic/errors.cjs +31 -0
- package/dist/cjs/node_modules/zod/v4/classic/errors.cjs.map +1 -0
- package/dist/cjs/node_modules/zod/v4/classic/iso.cjs +42 -0
- package/dist/cjs/node_modules/zod/v4/classic/iso.cjs.map +1 -0
- package/dist/cjs/node_modules/zod/v4/classic/parse.cjs +32 -0
- package/dist/cjs/node_modules/zod/v4/classic/parse.cjs.map +1 -0
- package/dist/cjs/node_modules/zod/v4/classic/schemas.cjs +527 -0
- package/dist/cjs/node_modules/zod/v4/classic/schemas.cjs.map +1 -0
- package/dist/cjs/node_modules/zod/v4/core/api.cjs +443 -0
- package/dist/cjs/node_modules/zod/v4/core/api.cjs.map +1 -0
- package/dist/cjs/node_modules/zod/v4/core/checks.cjs +238 -0
- package/dist/cjs/node_modules/zod/v4/core/checks.cjs.map +1 -0
- package/dist/cjs/node_modules/zod/v4/core/core.cjs +63 -0
- package/dist/cjs/node_modules/zod/v4/core/core.cjs.map +1 -0
- package/dist/cjs/node_modules/zod/v4/core/doc.cjs +36 -0
- package/dist/cjs/node_modules/zod/v4/core/doc.cjs.map +1 -0
- package/dist/cjs/node_modules/zod/v4/core/errors.cjs +67 -0
- package/dist/cjs/node_modules/zod/v4/core/errors.cjs.map +1 -0
- package/dist/cjs/node_modules/zod/v4/core/parse.cjs +124 -0
- package/dist/cjs/node_modules/zod/v4/core/parse.cjs.map +1 -0
- package/dist/cjs/node_modules/zod/v4/core/regexes.cjs +87 -0
- package/dist/cjs/node_modules/zod/v4/core/regexes.cjs.map +1 -0
- package/dist/cjs/node_modules/zod/v4/core/registries.cjs +55 -0
- package/dist/cjs/node_modules/zod/v4/core/registries.cjs.map +1 -0
- package/dist/cjs/node_modules/zod/v4/core/schemas.cjs +1115 -0
- package/dist/cjs/node_modules/zod/v4/core/schemas.cjs.map +1 -0
- package/dist/cjs/node_modules/zod/v4/core/util.cjs +333 -0
- package/dist/cjs/node_modules/zod/v4/core/util.cjs.map +1 -0
- package/dist/cjs/node_modules/zod/v4/core/versions.cjs +12 -0
- package/dist/cjs/node_modules/zod/v4/core/versions.cjs.map +1 -0
- package/dist/cjs/schemas/user.schema.cjs +17 -0
- package/dist/cjs/schemas/user.schema.cjs.map +1 -1
- package/dist/cjs/services/dictionary.service.cjs +7 -31
- package/dist/cjs/services/dictionary.service.cjs.map +1 -1
- package/dist/cjs/services/email.service.cjs +13 -0
- package/dist/cjs/services/email.service.cjs.map +1 -1
- package/dist/cjs/types/user.types.cjs.map +1 -1
- package/dist/cjs/utils/auth/getAuth.cjs +60 -26
- package/dist/cjs/utils/auth/getAuth.cjs.map +1 -1
- package/dist/cjs/utils/mongoDB/connectDB.cjs.map +1 -1
- package/dist/esm/_virtual/rolldown_runtime.mjs +43 -0
- package/dist/esm/controllers/dictionary.controller.mjs +65 -42
- package/dist/esm/controllers/dictionary.controller.mjs.map +1 -1
- package/dist/esm/emails/MagicLinkEmail.mjs +239 -0
- package/dist/esm/emails/MagicLinkEmail.mjs.map +1 -0
- package/dist/esm/index.mjs +1 -1
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/node_modules/@authenio/xml-encryption/lib/index.mjs +13 -0
- package/dist/esm/node_modules/@authenio/xml-encryption/lib/index.mjs.map +1 -0
- package/dist/esm/node_modules/@authenio/xml-encryption/lib/templates/encrypted-key.tpl.xml.mjs +22 -0
- package/dist/esm/node_modules/@authenio/xml-encryption/lib/templates/encrypted-key.tpl.xml.mjs.map +1 -0
- package/dist/esm/node_modules/@authenio/xml-encryption/lib/templates/keyinfo.tpl.xml.mjs +28 -0
- package/dist/esm/node_modules/@authenio/xml-encryption/lib/templates/keyinfo.tpl.xml.mjs.map +1 -0
- package/dist/esm/node_modules/@authenio/xml-encryption/lib/utils.mjs +35 -0
- package/dist/esm/node_modules/@authenio/xml-encryption/lib/utils.mjs.map +1 -0
- package/dist/esm/node_modules/@authenio/xml-encryption/lib/xmlenc.mjs +228 -0
- package/dist/esm/node_modules/@authenio/xml-encryption/lib/xmlenc.mjs.map +1 -0
- package/dist/esm/node_modules/@better-auth/sso/dist/index.mjs +1210 -0
- package/dist/esm/node_modules/@better-auth/sso/dist/index.mjs.map +1 -0
- package/dist/esm/node_modules/@better-fetch/fetch/dist/index.mjs +359 -0
- package/dist/esm/node_modules/@better-fetch/fetch/dist/index.mjs.map +1 -0
- package/dist/esm/node_modules/@xmldom/is-dom-node/dist/index.mjs +86 -0
- package/dist/esm/node_modules/@xmldom/is-dom-node/dist/index.mjs.map +1 -0
- package/dist/esm/node_modules/@xmldom/xmldom/lib/conventions.mjs +107 -0
- package/dist/esm/node_modules/@xmldom/xmldom/lib/conventions.mjs.map +1 -0
- package/dist/esm/node_modules/@xmldom/xmldom/lib/dom-parser.mjs +245 -0
- package/dist/esm/node_modules/@xmldom/xmldom/lib/dom-parser.mjs.map +1 -0
- package/dist/esm/node_modules/@xmldom/xmldom/lib/dom.mjs +1306 -0
- package/dist/esm/node_modules/@xmldom/xmldom/lib/dom.mjs.map +1 -0
- package/dist/esm/node_modules/@xmldom/xmldom/lib/entities.mjs +2173 -0
- package/dist/esm/node_modules/@xmldom/xmldom/lib/entities.mjs.map +1 -0
- package/dist/esm/node_modules/@xmldom/xmldom/lib/index.mjs +17 -0
- package/dist/esm/node_modules/@xmldom/xmldom/lib/index.mjs.map +1 -0
- package/dist/esm/node_modules/@xmldom/xmldom/lib/sax.mjs +496 -0
- package/dist/esm/node_modules/@xmldom/xmldom/lib/sax.mjs.map +1 -0
- package/dist/esm/node_modules/asn1/lib/ber/errors.mjs +17 -0
- package/dist/esm/node_modules/asn1/lib/ber/errors.mjs.map +1 -0
- package/dist/esm/node_modules/asn1/lib/ber/index.mjs +25 -0
- package/dist/esm/node_modules/asn1/lib/ber/index.mjs.map +1 -0
- package/dist/esm/node_modules/asn1/lib/ber/reader.mjs +164 -0
- package/dist/esm/node_modules/asn1/lib/ber/reader.mjs.map +1 -0
- package/dist/esm/node_modules/asn1/lib/ber/types.mjs +44 -0
- package/dist/esm/node_modules/asn1/lib/ber/types.mjs.map +1 -0
- package/dist/esm/node_modules/asn1/lib/ber/writer.mjs +220 -0
- package/dist/esm/node_modules/asn1/lib/ber/writer.mjs.map +1 -0
- package/dist/esm/node_modules/asn1/lib/index.mjs +18 -0
- package/dist/esm/node_modules/asn1/lib/index.mjs.map +1 -0
- package/dist/esm/node_modules/available-typed-arrays/index.mjs +20 -0
- package/dist/esm/node_modules/available-typed-arrays/index.mjs.map +1 -0
- package/dist/esm/node_modules/base64-js/index.mjs +95 -0
- package/dist/esm/node_modules/base64-js/index.mjs.map +1 -0
- package/dist/esm/node_modules/buffer/index.mjs +1114 -0
- package/dist/esm/node_modules/buffer/index.mjs.map +1 -0
- package/dist/esm/node_modules/call-bind/index.mjs +26 -0
- package/dist/esm/node_modules/call-bind/index.mjs.map +1 -0
- package/dist/esm/node_modules/call-bind-apply-helpers/actualApply.mjs +21 -0
- package/dist/esm/node_modules/call-bind-apply-helpers/actualApply.mjs.map +1 -0
- package/dist/esm/node_modules/call-bind-apply-helpers/applyBind.mjs +21 -0
- package/dist/esm/node_modules/call-bind-apply-helpers/applyBind.mjs.map +1 -0
- package/dist/esm/node_modules/call-bind-apply-helpers/functionApply.mjs +13 -0
- package/dist/esm/node_modules/call-bind-apply-helpers/functionApply.mjs.map +1 -0
- package/dist/esm/node_modules/call-bind-apply-helpers/functionCall.mjs +13 -0
- package/dist/esm/node_modules/call-bind-apply-helpers/functionCall.mjs.map +1 -0
- package/dist/esm/node_modules/call-bind-apply-helpers/index.mjs +24 -0
- package/dist/esm/node_modules/call-bind-apply-helpers/index.mjs.map +1 -0
- package/dist/esm/node_modules/call-bind-apply-helpers/reflectApply.mjs +13 -0
- package/dist/esm/node_modules/call-bind-apply-helpers/reflectApply.mjs.map +1 -0
- package/dist/esm/node_modules/call-bound/index.mjs +23 -0
- package/dist/esm/node_modules/call-bound/index.mjs.map +1 -0
- package/dist/esm/node_modules/camelcase/index.mjs +75 -0
- package/dist/esm/node_modules/camelcase/index.mjs.map +1 -0
- package/dist/esm/node_modules/define-data-property/index.mjs +41 -0
- package/dist/esm/node_modules/define-data-property/index.mjs.map +1 -0
- package/dist/esm/node_modules/dunder-proto/get.mjs +28 -0
- package/dist/esm/node_modules/dunder-proto/get.mjs.map +1 -0
- package/dist/esm/node_modules/es-define-property/index.mjs +19 -0
- package/dist/esm/node_modules/es-define-property/index.mjs.map +1 -0
- package/dist/esm/node_modules/es-errors/eval.mjs +13 -0
- package/dist/esm/node_modules/es-errors/eval.mjs.map +1 -0
- package/dist/esm/node_modules/es-errors/index.mjs +13 -0
- package/dist/esm/node_modules/es-errors/index.mjs.map +1 -0
- package/dist/esm/node_modules/es-errors/range.mjs +13 -0
- package/dist/esm/node_modules/es-errors/range.mjs.map +1 -0
- package/dist/esm/node_modules/es-errors/ref.mjs +13 -0
- package/dist/esm/node_modules/es-errors/ref.mjs.map +1 -0
- package/dist/esm/node_modules/es-errors/syntax.mjs +13 -0
- package/dist/esm/node_modules/es-errors/syntax.mjs.map +1 -0
- package/dist/esm/node_modules/es-errors/type.mjs +13 -0
- package/dist/esm/node_modules/es-errors/type.mjs.map +1 -0
- package/dist/esm/node_modules/es-errors/uri.mjs +13 -0
- package/dist/esm/node_modules/es-errors/uri.mjs.map +1 -0
- package/dist/esm/node_modules/es-object-atoms/index.mjs +13 -0
- package/dist/esm/node_modules/es-object-atoms/index.mjs.map +1 -0
- package/dist/esm/node_modules/escape-html/index.mjs +68 -0
- package/dist/esm/node_modules/escape-html/index.mjs.map +1 -0
- package/dist/esm/node_modules/fast-xml-parser/src/fxp.mjs +8 -0
- package/dist/esm/node_modules/fast-xml-parser/src/fxp.mjs.map +1 -0
- package/dist/esm/node_modules/fast-xml-parser/src/util.mjs +26 -0
- package/dist/esm/node_modules/fast-xml-parser/src/util.mjs.map +1 -0
- package/dist/esm/node_modules/fast-xml-parser/src/validator.mjs +243 -0
- package/dist/esm/node_modules/fast-xml-parser/src/validator.mjs.map +1 -0
- package/dist/esm/node_modules/for-each/index.mjs +43 -0
- package/dist/esm/node_modules/for-each/index.mjs.map +1 -0
- package/dist/esm/node_modules/function-bind/implementation.mjs +59 -0
- package/dist/esm/node_modules/function-bind/implementation.mjs.map +1 -0
- package/dist/esm/node_modules/function-bind/index.mjs +14 -0
- package/dist/esm/node_modules/function-bind/index.mjs.map +1 -0
- package/dist/esm/node_modules/generator-function/index.mjs +14 -0
- package/dist/esm/node_modules/generator-function/index.mjs.map +1 -0
- package/dist/esm/node_modules/get-intrinsic/index.mjs +358 -0
- package/dist/esm/node_modules/get-intrinsic/index.mjs.map +1 -0
- package/dist/esm/node_modules/get-proto/Object.getPrototypeOf.mjs +15 -0
- package/dist/esm/node_modules/get-proto/Object.getPrototypeOf.mjs.map +1 -0
- package/dist/esm/node_modules/get-proto/Reflect.getPrototypeOf.mjs +13 -0
- package/dist/esm/node_modules/get-proto/Reflect.getPrototypeOf.mjs.map +1 -0
- package/dist/esm/node_modules/get-proto/index.mjs +26 -0
- package/dist/esm/node_modules/get-proto/index.mjs.map +1 -0
- package/dist/esm/node_modules/gopd/gOPD.mjs +13 -0
- package/dist/esm/node_modules/gopd/gOPD.mjs.map +1 -0
- package/dist/esm/node_modules/gopd/index.mjs +20 -0
- package/dist/esm/node_modules/gopd/index.mjs.map +1 -0
- package/dist/esm/node_modules/has-property-descriptors/index.mjs +25 -0
- package/dist/esm/node_modules/has-property-descriptors/index.mjs.map +1 -0
- package/dist/esm/node_modules/has-symbols/index.mjs +22 -0
- package/dist/esm/node_modules/has-symbols/index.mjs.map +1 -0
- package/dist/esm/node_modules/has-symbols/shams.mjs +36 -0
- package/dist/esm/node_modules/has-symbols/shams.mjs.map +1 -0
- package/dist/esm/node_modules/has-tostringtag/shams.mjs +17 -0
- package/dist/esm/node_modules/has-tostringtag/shams.mjs.map +1 -0
- package/dist/esm/node_modules/hasown/index.mjs +17 -0
- package/dist/esm/node_modules/hasown/index.mjs.map +1 -0
- package/dist/esm/node_modules/ieee754/index.mjs +80 -0
- package/dist/esm/node_modules/ieee754/index.mjs.map +1 -0
- package/dist/esm/node_modules/inherits/inherits_browser.mjs +31 -0
- package/dist/esm/node_modules/inherits/inherits_browser.mjs.map +1 -0
- package/dist/esm/node_modules/is-arguments/index.mjs +31 -0
- package/dist/esm/node_modules/is-arguments/index.mjs.map +1 -0
- package/dist/esm/node_modules/is-callable/index.mjs +87 -0
- package/dist/esm/node_modules/is-callable/index.mjs.map +1 -0
- package/dist/esm/node_modules/is-generator-function/index.mjs +32 -0
- package/dist/esm/node_modules/is-generator-function/index.mjs.map +1 -0
- package/dist/esm/node_modules/is-regex/index.mjs +58 -0
- package/dist/esm/node_modules/is-regex/index.mjs.map +1 -0
- package/dist/esm/node_modules/is-typed-array/index.mjs +17 -0
- package/dist/esm/node_modules/is-typed-array/index.mjs.map +1 -0
- package/dist/esm/node_modules/jose/dist/webapi/lib/base64.mjs +12 -0
- package/dist/esm/node_modules/jose/dist/webapi/lib/base64.mjs.map +1 -0
- package/dist/esm/node_modules/jose/dist/webapi/lib/buffer_utils.mjs +8 -0
- package/dist/esm/node_modules/jose/dist/webapi/lib/buffer_utils.mjs.map +1 -0
- package/dist/esm/node_modules/jose/dist/webapi/lib/is_object.mjs +15 -0
- package/dist/esm/node_modules/jose/dist/webapi/lib/is_object.mjs.map +1 -0
- package/dist/esm/node_modules/jose/dist/webapi/util/base64url.mjs +19 -0
- package/dist/esm/node_modules/jose/dist/webapi/util/base64url.mjs.map +1 -0
- package/dist/esm/node_modules/jose/dist/webapi/util/decode_jwt.mjs +31 -0
- package/dist/esm/node_modules/jose/dist/webapi/util/decode_jwt.mjs.map +1 -0
- package/dist/esm/node_modules/jose/dist/webapi/util/errors.mjs +26 -0
- package/dist/esm/node_modules/jose/dist/webapi/util/errors.mjs.map +1 -0
- package/dist/esm/node_modules/math-intrinsics/abs.mjs +13 -0
- package/dist/esm/node_modules/math-intrinsics/abs.mjs.map +1 -0
- package/dist/esm/node_modules/math-intrinsics/floor.mjs +13 -0
- package/dist/esm/node_modules/math-intrinsics/floor.mjs.map +1 -0
- package/dist/esm/node_modules/math-intrinsics/isNaN.mjs +15 -0
- package/dist/esm/node_modules/math-intrinsics/isNaN.mjs.map +1 -0
- package/dist/esm/node_modules/math-intrinsics/max.mjs +13 -0
- package/dist/esm/node_modules/math-intrinsics/max.mjs.map +1 -0
- package/dist/esm/node_modules/math-intrinsics/min.mjs +13 -0
- package/dist/esm/node_modules/math-intrinsics/min.mjs.map +1 -0
- package/dist/esm/node_modules/math-intrinsics/pow.mjs +13 -0
- package/dist/esm/node_modules/math-intrinsics/pow.mjs.map +1 -0
- package/dist/esm/node_modules/math-intrinsics/round.mjs +13 -0
- package/dist/esm/node_modules/math-intrinsics/round.mjs.map +1 -0
- package/dist/esm/node_modules/math-intrinsics/sign.mjs +18 -0
- package/dist/esm/node_modules/math-intrinsics/sign.mjs.map +1 -0
- package/dist/esm/node_modules/node-forge/lib/aes.mjs +601 -0
- package/dist/esm/node_modules/node-forge/lib/aes.mjs.map +1 -0
- package/dist/esm/node_modules/node-forge/lib/aesCipherSuites.mjs +199 -0
- package/dist/esm/node_modules/node-forge/lib/aesCipherSuites.mjs.map +1 -0
- package/dist/esm/node_modules/node-forge/lib/asn1-validator.mjs +80 -0
- package/dist/esm/node_modules/node-forge/lib/asn1-validator.mjs.map +1 -0
- package/dist/esm/node_modules/node-forge/lib/asn1.mjs +942 -0
- package/dist/esm/node_modules/node-forge/lib/asn1.mjs.map +1 -0
- package/dist/esm/node_modules/node-forge/lib/baseN.mjs +141 -0
- package/dist/esm/node_modules/node-forge/lib/baseN.mjs.map +1 -0
- package/dist/esm/node_modules/node-forge/lib/cipher.mjs +190 -0
- package/dist/esm/node_modules/node-forge/lib/cipher.mjs.map +1 -0
- package/dist/esm/node_modules/node-forge/lib/cipherModes.mjs +601 -0
- package/dist/esm/node_modules/node-forge/lib/cipherModes.mjs.map +1 -0
- package/dist/esm/node_modules/node-forge/lib/des.mjs +1191 -0
- package/dist/esm/node_modules/node-forge/lib/des.mjs.map +1 -0
- package/dist/esm/node_modules/node-forge/lib/ed25519.mjs +1024 -0
- package/dist/esm/node_modules/node-forge/lib/ed25519.mjs.map +1 -0
- package/dist/esm/node_modules/node-forge/lib/forge.mjs +19 -0
- package/dist/esm/node_modules/node-forge/lib/forge.mjs.map +1 -0
- package/dist/esm/node_modules/node-forge/lib/hmac.mjs +111 -0
- package/dist/esm/node_modules/node-forge/lib/hmac.mjs.map +1 -0
- package/dist/esm/node_modules/node-forge/lib/index.mjs +70 -0
- package/dist/esm/node_modules/node-forge/lib/index.mjs.map +1 -0
- package/dist/esm/node_modules/node-forge/lib/jsbn.mjs +1260 -0
- package/dist/esm/node_modules/node-forge/lib/jsbn.mjs.map +1 -0
- package/dist/esm/node_modules/node-forge/lib/kem.mjs +150 -0
- package/dist/esm/node_modules/node-forge/lib/kem.mjs.map +1 -0
- package/dist/esm/node_modules/node-forge/lib/log.mjs +245 -0
- package/dist/esm/node_modules/node-forge/lib/log.mjs.map +1 -0
- package/dist/esm/node_modules/node-forge/lib/md.all.mjs +28 -0
- package/dist/esm/node_modules/node-forge/lib/md.all.mjs.map +1 -0
- package/dist/esm/node_modules/node-forge/lib/md.mjs +22 -0
- package/dist/esm/node_modules/node-forge/lib/md.mjs.map +1 -0
- package/dist/esm/node_modules/node-forge/lib/md5.mjs +328 -0
- package/dist/esm/node_modules/node-forge/lib/md5.mjs.map +1 -0
- package/dist/esm/node_modules/node-forge/lib/mgf.mjs +24 -0
- package/dist/esm/node_modules/node-forge/lib/mgf.mjs.map +1 -0
- package/dist/esm/node_modules/node-forge/lib/mgf1.mjs +48 -0
- package/dist/esm/node_modules/node-forge/lib/mgf1.mjs.map +1 -0
- package/dist/esm/node_modules/node-forge/lib/oids.mjs +157 -0
- package/dist/esm/node_modules/node-forge/lib/oids.mjs.map +1 -0
- package/dist/esm/node_modules/node-forge/lib/pbe.mjs +819 -0
- package/dist/esm/node_modules/node-forge/lib/pbe.mjs.map +1 -0
- package/dist/esm/node_modules/node-forge/lib/pbkdf2.mjs +130 -0
- package/dist/esm/node_modules/node-forge/lib/pbkdf2.mjs.map +1 -0
- package/dist/esm/node_modules/node-forge/lib/pem.mjs +179 -0
- package/dist/esm/node_modules/node-forge/lib/pem.mjs.map +1 -0
- package/dist/esm/node_modules/node-forge/lib/pkcs1.mjs +204 -0
- package/dist/esm/node_modules/node-forge/lib/pkcs1.mjs.map +1 -0
- package/dist/esm/node_modules/node-forge/lib/pkcs12.mjs +727 -0
- package/dist/esm/node_modules/node-forge/lib/pkcs12.mjs.map +1 -0
- package/dist/esm/node_modules/node-forge/lib/pkcs7.mjs +645 -0
- package/dist/esm/node_modules/node-forge/lib/pkcs7.mjs.map +1 -0
- package/dist/esm/node_modules/node-forge/lib/pkcs7asn1.mjs +409 -0
- package/dist/esm/node_modules/node-forge/lib/pkcs7asn1.mjs.map +1 -0
- package/dist/esm/node_modules/node-forge/lib/pki.mjs +105 -0
- package/dist/esm/node_modules/node-forge/lib/pki.mjs.map +1 -0
- package/dist/esm/node_modules/node-forge/lib/prime.mjs +197 -0
- package/dist/esm/node_modules/node-forge/lib/prime.mjs.map +1 -0
- package/dist/esm/node_modules/node-forge/lib/prng.mjs +295 -0
- package/dist/esm/node_modules/node-forge/lib/prng.mjs.map +1 -0
- package/dist/esm/node_modules/node-forge/lib/pss.mjs +145 -0
- package/dist/esm/node_modules/node-forge/lib/pss.mjs.map +1 -0
- package/dist/esm/node_modules/node-forge/lib/random.mjs +145 -0
- package/dist/esm/node_modules/node-forge/lib/random.mjs.map +1 -0
- package/dist/esm/node_modules/node-forge/lib/rc2.mjs +542 -0
- package/dist/esm/node_modules/node-forge/lib/rc2.mjs.map +1 -0
- package/dist/esm/node_modules/node-forge/lib/rsa.mjs +1304 -0
- package/dist/esm/node_modules/node-forge/lib/rsa.mjs.map +1 -0
- package/dist/esm/node_modules/node-forge/lib/sha1.mjs +234 -0
- package/dist/esm/node_modules/node-forge/lib/sha1.mjs.map +1 -0
- package/dist/esm/node_modules/node-forge/lib/sha256.mjs +271 -0
- package/dist/esm/node_modules/node-forge/lib/sha256.mjs.map +1 -0
- package/dist/esm/node_modules/node-forge/lib/sha512.mjs +417 -0
- package/dist/esm/node_modules/node-forge/lib/sha512.mjs.map +1 -0
- package/dist/esm/node_modules/node-forge/lib/ssh.mjs +198 -0
- package/dist/esm/node_modules/node-forge/lib/ssh.mjs.map +1 -0
- package/dist/esm/node_modules/node-forge/lib/tls.mjs +3659 -0
- package/dist/esm/node_modules/node-forge/lib/tls.mjs.map +1 -0
- package/dist/esm/node_modules/node-forge/lib/util.mjs +2121 -0
- package/dist/esm/node_modules/node-forge/lib/util.mjs.map +1 -0
- package/dist/esm/node_modules/node-forge/lib/x509.mjs +2168 -0
- package/dist/esm/node_modules/node-forge/lib/x509.mjs.map +1 -0
- package/dist/esm/node_modules/node-forge/lib.mjs +10 -0
- package/dist/esm/node_modules/node-forge/lib.mjs.map +1 -0
- package/dist/esm/node_modules/node-rsa/src/NodeRSA.mjs +338 -0
- package/dist/esm/node_modules/node-rsa/src/NodeRSA.mjs.map +1 -0
- package/dist/esm/node_modules/node-rsa/src/encryptEngines/encryptEngines.mjs +23 -0
- package/dist/esm/node_modules/node-rsa/src/encryptEngines/encryptEngines.mjs.map +1 -0
- package/dist/esm/node_modules/node-rsa/src/encryptEngines/io.mjs +62 -0
- package/dist/esm/node_modules/node-rsa/src/encryptEngines/io.mjs.map +1 -0
- package/dist/esm/node_modules/node-rsa/src/encryptEngines/js.mjs +41 -0
- package/dist/esm/node_modules/node-rsa/src/encryptEngines/js.mjs.map +1 -0
- package/dist/esm/node_modules/node-rsa/src/encryptEngines/node12.mjs +46 -0
- package/dist/esm/node_modules/node-rsa/src/encryptEngines/node12.mjs.map +1 -0
- package/dist/esm/node_modules/node-rsa/src/formats/components.mjs +52 -0
- package/dist/esm/node_modules/node-rsa/src/formats/components.mjs.map +1 -0
- package/dist/esm/node_modules/node-rsa/src/formats/formats.mjs +83 -0
- package/dist/esm/node_modules/node-rsa/src/formats/formats.mjs.map +1 -0
- package/dist/esm/node_modules/node-rsa/src/formats/openssh.mjs +174 -0
- package/dist/esm/node_modules/node-rsa/src/formats/openssh.mjs.map +1 -0
- package/dist/esm/node_modules/node-rsa/src/formats/pkcs1.mjs +101 -0
- package/dist/esm/node_modules/node-rsa/src/formats/pkcs1.mjs.map +1 -0
- package/dist/esm/node_modules/node-rsa/src/formats/pkcs8.mjs +128 -0
- package/dist/esm/node_modules/node-rsa/src/formats/pkcs8.mjs.map +1 -0
- package/dist/esm/node_modules/node-rsa/src/libs/jsbn.mjs +1344 -0
- package/dist/esm/node_modules/node-rsa/src/libs/jsbn.mjs.map +1 -0
- package/dist/esm/node_modules/node-rsa/src/libs/rsa.mjs +228 -0
- package/dist/esm/node_modules/node-rsa/src/libs/rsa.mjs.map +1 -0
- package/dist/esm/node_modules/node-rsa/src/schemes/oaep.mjs +120 -0
- package/dist/esm/node_modules/node-rsa/src/schemes/oaep.mjs.map +1 -0
- package/dist/esm/node_modules/node-rsa/src/schemes/pkcs1.mjs +172 -0
- package/dist/esm/node_modules/node-rsa/src/schemes/pkcs1.mjs.map +1 -0
- package/dist/esm/node_modules/node-rsa/src/schemes/pss.mjs +120 -0
- package/dist/esm/node_modules/node-rsa/src/schemes/pss.mjs.map +1 -0
- package/dist/esm/node_modules/node-rsa/src/schemes/schemes.mjs +25 -0
- package/dist/esm/node_modules/node-rsa/src/schemes/schemes.mjs.map +1 -0
- package/dist/esm/node_modules/node-rsa/src/utils.mjs +81 -0
- package/dist/esm/node_modules/node-rsa/src/utils.mjs.map +1 -0
- package/dist/esm/node_modules/pako/index.mjs +22 -0
- package/dist/esm/node_modules/pako/index.mjs.map +1 -0
- package/dist/esm/node_modules/pako/lib/deflate.mjs +308 -0
- package/dist/esm/node_modules/pako/lib/deflate.mjs.map +1 -0
- package/dist/esm/node_modules/pako/lib/inflate.mjs +314 -0
- package/dist/esm/node_modules/pako/lib/inflate.mjs.map +1 -0
- package/dist/esm/node_modules/pako/lib/utils/common.mjs +74 -0
- package/dist/esm/node_modules/pako/lib/utils/common.mjs.map +1 -0
- package/dist/esm/node_modules/pako/lib/utils/strings.mjs +128 -0
- package/dist/esm/node_modules/pako/lib/utils/strings.mjs.map +1 -0
- package/dist/esm/node_modules/pako/lib/zlib/adler32.mjs +26 -0
- package/dist/esm/node_modules/pako/lib/zlib/adler32.mjs.map +1 -0
- package/dist/esm/node_modules/pako/lib/zlib/constants.mjs +40 -0
- package/dist/esm/node_modules/pako/lib/zlib/constants.mjs.map +1 -0
- package/dist/esm/node_modules/pako/lib/zlib/crc32.mjs +28 -0
- package/dist/esm/node_modules/pako/lib/zlib/crc32.mjs.map +1 -0
- package/dist/esm/node_modules/pako/lib/zlib/deflate.mjs +886 -0
- package/dist/esm/node_modules/pako/lib/zlib/deflate.mjs.map +1 -0
- package/dist/esm/node_modules/pako/lib/zlib/gzheader.mjs +24 -0
- package/dist/esm/node_modules/pako/lib/zlib/gzheader.mjs.map +1 -0
- package/dist/esm/node_modules/pako/lib/zlib/inffast.mjs +224 -0
- package/dist/esm/node_modules/pako/lib/zlib/inffast.mjs.map +1 -0
- package/dist/esm/node_modules/pako/lib/zlib/inflate.mjs +1035 -0
- package/dist/esm/node_modules/pako/lib/zlib/inflate.mjs.map +1 -0
- package/dist/esm/node_modules/pako/lib/zlib/inftrees.mjs +275 -0
- package/dist/esm/node_modules/pako/lib/zlib/inftrees.mjs.map +1 -0
- package/dist/esm/node_modules/pako/lib/zlib/messages.mjs +22 -0
- package/dist/esm/node_modules/pako/lib/zlib/messages.mjs.map +1 -0
- package/dist/esm/node_modules/pako/lib/zlib/trees.mjs +623 -0
- package/dist/esm/node_modules/pako/lib/zlib/trees.mjs.map +1 -0
- package/dist/esm/node_modules/pako/lib/zlib/zstream.mjs +26 -0
- package/dist/esm/node_modules/pako/lib/zlib/zstream.mjs.map +1 -0
- package/dist/esm/node_modules/possible-typed-array-names/index.mjs +26 -0
- package/dist/esm/node_modules/possible-typed-array-names/index.mjs.map +1 -0
- package/dist/esm/node_modules/safe-regex-test/index.mjs +25 -0
- package/dist/esm/node_modules/safe-regex-test/index.mjs.map +1 -0
- package/dist/esm/node_modules/safer-buffer/safer.mjs +50 -0
- package/dist/esm/node_modules/safer-buffer/safer.mjs.map +1 -0
- package/dist/esm/node_modules/samlify/build/index.mjs +117 -0
- package/dist/esm/node_modules/samlify/build/index.mjs.map +1 -0
- package/dist/esm/node_modules/samlify/build/src/api.mjs +33 -0
- package/dist/esm/node_modules/samlify/build/src/api.mjs.map +1 -0
- package/dist/esm/node_modules/samlify/build/src/binding-post.mjs +504 -0
- package/dist/esm/node_modules/samlify/build/src/binding-post.mjs.map +1 -0
- package/dist/esm/node_modules/samlify/build/src/binding-redirect.mjs +339 -0
- package/dist/esm/node_modules/samlify/build/src/binding-redirect.mjs.map +1 -0
- package/dist/esm/node_modules/samlify/build/src/binding-simplesign.mjs +358 -0
- package/dist/esm/node_modules/samlify/build/src/binding-simplesign.mjs.map +1 -0
- package/dist/esm/node_modules/samlify/build/src/entity-idp.mjs +279 -0
- package/dist/esm/node_modules/samlify/build/src/entity-idp.mjs.map +1 -0
- package/dist/esm/node_modules/samlify/build/src/entity-sp.mjs +142 -0
- package/dist/esm/node_modules/samlify/build/src/entity-sp.mjs.map +1 -0
- package/dist/esm/node_modules/samlify/build/src/entity.mjs +253 -0
- package/dist/esm/node_modules/samlify/build/src/entity.mjs.map +1 -0
- package/dist/esm/node_modules/samlify/build/src/extractor.mjs +352 -0
- package/dist/esm/node_modules/samlify/build/src/extractor.mjs.map +1 -0
- package/dist/esm/node_modules/samlify/build/src/flow.mjs +389 -0
- package/dist/esm/node_modules/samlify/build/src/flow.mjs.map +1 -0
- package/dist/esm/node_modules/samlify/build/src/libsaml.mjs +544 -0
- package/dist/esm/node_modules/samlify/build/src/libsaml.mjs.map +1 -0
- package/dist/esm/node_modules/samlify/build/src/metadata-idp.mjs +171 -0
- package/dist/esm/node_modules/samlify/build/src/metadata-idp.mjs.map +1 -0
- package/dist/esm/node_modules/samlify/build/src/metadata-sp.mjs +214 -0
- package/dist/esm/node_modules/samlify/build/src/metadata-sp.mjs.map +1 -0
- package/dist/esm/node_modules/samlify/build/src/metadata.mjs +200 -0
- package/dist/esm/node_modules/samlify/build/src/metadata.mjs.map +1 -0
- package/dist/esm/node_modules/samlify/build/src/urn.mjs +225 -0
- package/dist/esm/node_modules/samlify/build/src/urn.mjs.map +1 -0
- package/dist/esm/node_modules/samlify/build/src/utility.mjs +277 -0
- package/dist/esm/node_modules/samlify/build/src/utility.mjs.map +1 -0
- package/dist/esm/node_modules/samlify/build/src/validator.mjs +53 -0
- package/dist/esm/node_modules/samlify/build/src/validator.mjs.map +1 -0
- package/dist/esm/node_modules/samlify/node_modules/uuid/dist/esm-browser/index.mjs +39 -0
- package/dist/esm/node_modules/samlify/node_modules/uuid/dist/esm-browser/index.mjs.map +1 -0
- package/dist/esm/node_modules/samlify/node_modules/uuid/dist/esm-browser/md5.mjs +154 -0
- package/dist/esm/node_modules/samlify/node_modules/uuid/dist/esm-browser/md5.mjs.map +1 -0
- package/dist/esm/node_modules/samlify/node_modules/uuid/dist/esm-browser/nil.mjs +12 -0
- package/dist/esm/node_modules/samlify/node_modules/uuid/dist/esm-browser/nil.mjs.map +1 -0
- package/dist/esm/node_modules/samlify/node_modules/uuid/dist/esm-browser/parse.mjs +36 -0
- package/dist/esm/node_modules/samlify/node_modules/uuid/dist/esm-browser/parse.mjs.map +1 -0
- package/dist/esm/node_modules/samlify/node_modules/uuid/dist/esm-browser/regex.mjs +12 -0
- package/dist/esm/node_modules/samlify/node_modules/uuid/dist/esm-browser/regex.mjs.map +1 -0
- package/dist/esm/node_modules/samlify/node_modules/uuid/dist/esm-browser/rng.mjs +20 -0
- package/dist/esm/node_modules/samlify/node_modules/uuid/dist/esm-browser/rng.mjs.map +1 -0
- package/dist/esm/node_modules/samlify/node_modules/uuid/dist/esm-browser/sha1.mjs +101 -0
- package/dist/esm/node_modules/samlify/node_modules/uuid/dist/esm-browser/sha1.mjs.map +1 -0
- package/dist/esm/node_modules/samlify/node_modules/uuid/dist/esm-browser/stringify.mjs +22 -0
- package/dist/esm/node_modules/samlify/node_modules/uuid/dist/esm-browser/stringify.mjs.map +1 -0
- package/dist/esm/node_modules/samlify/node_modules/uuid/dist/esm-browser/v1.mjs +63 -0
- package/dist/esm/node_modules/samlify/node_modules/uuid/dist/esm-browser/v1.mjs.map +1 -0
- package/dist/esm/node_modules/samlify/node_modules/uuid/dist/esm-browser/v3.mjs +17 -0
- package/dist/esm/node_modules/samlify/node_modules/uuid/dist/esm-browser/v3.mjs.map +1 -0
- package/dist/esm/node_modules/samlify/node_modules/uuid/dist/esm-browser/v35.mjs +48 -0
- package/dist/esm/node_modules/samlify/node_modules/uuid/dist/esm-browser/v35.mjs.map +1 -0
- package/dist/esm/node_modules/samlify/node_modules/uuid/dist/esm-browser/v4.mjs +28 -0
- package/dist/esm/node_modules/samlify/node_modules/uuid/dist/esm-browser/v4.mjs.map +1 -0
- package/dist/esm/node_modules/samlify/node_modules/uuid/dist/esm-browser/v5.mjs +17 -0
- package/dist/esm/node_modules/samlify/node_modules/uuid/dist/esm-browser/v5.mjs.map +1 -0
- package/dist/esm/node_modules/samlify/node_modules/uuid/dist/esm-browser/validate.mjs +17 -0
- package/dist/esm/node_modules/samlify/node_modules/uuid/dist/esm-browser/validate.mjs.map +1 -0
- package/dist/esm/node_modules/samlify/node_modules/uuid/dist/esm-browser/version.mjs +18 -0
- package/dist/esm/node_modules/samlify/node_modules/uuid/dist/esm-browser/version.mjs.map +1 -0
- package/dist/esm/node_modules/set-function-length/index.mjs +38 -0
- package/dist/esm/node_modules/set-function-length/index.mjs.map +1 -0
- package/dist/esm/node_modules/util/support/isBufferBrowser.mjs +14 -0
- package/dist/esm/node_modules/util/support/isBufferBrowser.mjs.map +1 -0
- package/dist/esm/node_modules/util/support/types.mjs +218 -0
- package/dist/esm/node_modules/util/support/types.mjs.map +1 -0
- package/dist/esm/node_modules/util/util.mjs +443 -0
- package/dist/esm/node_modules/util/util.mjs.map +1 -0
- package/dist/esm/node_modules/which-typed-array/index.mjs +93 -0
- package/dist/esm/node_modules/which-typed-array/index.mjs.map +1 -0
- package/dist/esm/node_modules/xml/lib/escapeForXML.mjs +24 -0
- package/dist/esm/node_modules/xml/lib/escapeForXML.mjs.map +1 -0
- package/dist/esm/node_modules/xml/lib/xml.mjs +183 -0
- package/dist/esm/node_modules/xml/lib/xml.mjs.map +1 -0
- package/dist/esm/node_modules/xml-crypto/lib/c14n-canonicalization.mjs +199 -0
- package/dist/esm/node_modules/xml-crypto/lib/c14n-canonicalization.mjs.map +1 -0
- package/dist/esm/node_modules/xml-crypto/lib/enveloped-signature.mjs +49 -0
- package/dist/esm/node_modules/xml-crypto/lib/enveloped-signature.mjs.map +1 -0
- package/dist/esm/node_modules/xml-crypto/lib/exclusive-canonicalization.mjs +220 -0
- package/dist/esm/node_modules/xml-crypto/lib/exclusive-canonicalization.mjs.map +1 -0
- package/dist/esm/node_modules/xml-crypto/lib/hash-algorithms.mjs +53 -0
- package/dist/esm/node_modules/xml-crypto/lib/hash-algorithms.mjs.map +1 -0
- package/dist/esm/node_modules/xml-crypto/lib/index.mjs +70 -0
- package/dist/esm/node_modules/xml-crypto/lib/index.mjs.map +1 -0
- package/dist/esm/node_modules/xml-crypto/lib/signature-algorithms.mjs +88 -0
- package/dist/esm/node_modules/xml-crypto/lib/signature-algorithms.mjs.map +1 -0
- package/dist/esm/node_modules/xml-crypto/lib/signed-xml.mjs +693 -0
- package/dist/esm/node_modules/xml-crypto/lib/signed-xml.mjs.map +1 -0
- package/dist/esm/node_modules/xml-crypto/lib/types.mjs +55 -0
- package/dist/esm/node_modules/xml-crypto/lib/types.mjs.map +1 -0
- package/dist/esm/node_modules/xml-crypto/lib/utils.mjs +210 -0
- package/dist/esm/node_modules/xml-crypto/lib/utils.mjs.map +1 -0
- package/dist/esm/node_modules/xml-crypto/node_modules/xpath/xpath.mjs +3442 -0
- package/dist/esm/node_modules/xml-crypto/node_modules/xpath/xpath.mjs.map +1 -0
- package/dist/esm/node_modules/xml-escape/index.mjs +27 -0
- package/dist/esm/node_modules/xml-escape/index.mjs.map +1 -0
- package/dist/esm/node_modules/xpath/xpath.mjs +3407 -0
- package/dist/esm/node_modules/xpath/xpath.mjs.map +1 -0
- package/dist/esm/node_modules/zod/v4/classic/errors.mjs +30 -0
- package/dist/esm/node_modules/zod/v4/classic/errors.mjs.map +1 -0
- package/dist/esm/node_modules/zod/v4/classic/iso.mjs +38 -0
- package/dist/esm/node_modules/zod/v4/classic/iso.mjs.map +1 -0
- package/dist/esm/node_modules/zod/v4/classic/parse.mjs +20 -0
- package/dist/esm/node_modules/zod/v4/classic/parse.mjs.map +1 -0
- package/dist/esm/node_modules/zod/v4/classic/schemas.mjs +519 -0
- package/dist/esm/node_modules/zod/v4/classic/schemas.mjs.map +1 -0
- package/dist/esm/node_modules/zod/v4/core/api.mjs +395 -0
- package/dist/esm/node_modules/zod/v4/core/api.mjs.map +1 -0
- package/dist/esm/node_modules/zod/v4/core/checks.mjs +226 -0
- package/dist/esm/node_modules/zod/v4/core/checks.mjs.map +1 -0
- package/dist/esm/node_modules/zod/v4/core/core.mjs +57 -0
- package/dist/esm/node_modules/zod/v4/core/core.mjs.map +1 -0
- package/dist/esm/node_modules/zod/v4/core/doc.mjs +34 -0
- package/dist/esm/node_modules/zod/v4/core/doc.mjs.map +1 -0
- package/dist/esm/node_modules/zod/v4/core/errors.mjs +63 -0
- package/dist/esm/node_modules/zod/v4/core/errors.mjs.map +1 -0
- package/dist/esm/node_modules/zod/v4/core/parse.mjs +110 -0
- package/dist/esm/node_modules/zod/v4/core/parse.mjs.map +1 -0
- package/dist/esm/node_modules/zod/v4/core/regexes.mjs +60 -0
- package/dist/esm/node_modules/zod/v4/core/regexes.mjs.map +1 -0
- package/dist/esm/node_modules/zod/v4/core/registries.mjs +53 -0
- package/dist/esm/node_modules/zod/v4/core/registries.mjs.map +1 -0
- package/dist/esm/node_modules/zod/v4/core/schemas.mjs +1069 -0
- package/dist/esm/node_modules/zod/v4/core/schemas.mjs.map +1 -0
- package/dist/esm/node_modules/zod/v4/core/util.mjs +302 -0
- package/dist/esm/node_modules/zod/v4/core/util.mjs.map +1 -0
- package/dist/esm/node_modules/zod/v4/core/versions.mjs +10 -0
- package/dist/esm/node_modules/zod/v4/core/versions.mjs.map +1 -0
- package/dist/esm/schemas/user.schema.mjs +17 -0
- package/dist/esm/schemas/user.schema.mjs.map +1 -1
- package/dist/esm/services/dictionary.service.mjs +8 -31
- package/dist/esm/services/dictionary.service.mjs.map +1 -1
- package/dist/esm/services/email.service.mjs +13 -0
- package/dist/esm/services/email.service.mjs.map +1 -1
- package/dist/esm/types/user.types.mjs.map +1 -1
- package/dist/esm/utils/auth/getAuth.mjs +61 -27
- package/dist/esm/utils/auth/getAuth.mjs.map +1 -1
- package/dist/esm/utils/mongoDB/connectDB.mjs.map +1 -1
- package/dist/types/MagicLinkEmail.d.ts +8 -0
- package/dist/types/MagicLinkEmail.d.ts.map +1 -0
- package/dist/types/controllers/ai.controller.d.ts.map +1 -1
- package/dist/types/controllers/dictionary.controller.d.ts +18 -5
- package/dist/types/controllers/dictionary.controller.d.ts.map +1 -1
- package/dist/types/controllers/projectAccessKey.controller.d.ts.map +1 -1
- package/dist/types/controllers/stripe.controller.d.ts.map +1 -1
- package/dist/types/emails/InviteUserEmail.d.ts +4 -4
- package/dist/types/emails/MagicLinkEmail.d.ts +31 -0
- package/dist/types/emails/MagicLinkEmail.d.ts.map +1 -0
- package/dist/types/emails/OAuthTokenCreatedEmail.d.ts +4 -4
- package/dist/types/emails/OAuthTokenCreatedEmail.d.ts.map +1 -1
- package/dist/types/emails/PasswordChangeConfirmation.d.ts +4 -4
- package/dist/types/emails/PasswordChangeConfirmation.d.ts.map +1 -1
- package/dist/types/emails/ResetUserPassword.d.ts +4 -4
- package/dist/types/emails/SubscriptionPaymentCancellation.d.ts +4 -4
- package/dist/types/emails/SubscriptionPaymentCancellation.d.ts.map +1 -1
- package/dist/types/emails/SubscriptionPaymentError.d.ts +4 -4
- package/dist/types/emails/SubscriptionPaymentError.d.ts.map +1 -1
- package/dist/types/emails/SubscriptionPaymentSuccess.d.ts +4 -4
- package/dist/types/emails/ValidateUserEmail.d.ts +4 -4
- package/dist/types/emails/Welcome.d.ts +4 -4
- package/dist/types/export.d.ts +1 -3
- package/dist/types/models/dictionary.model.d.ts +4 -4
- package/dist/types/models/dictionary.model.d.ts.map +1 -1
- package/dist/types/models/discussion.model.d.ts +2 -2
- package/dist/types/models/discussion.model.d.ts.map +1 -1
- package/dist/types/models/oAuth2.model.d.ts +3 -3
- package/dist/types/models/oAuth2.model.d.ts.map +1 -1
- package/dist/types/routes/ai.routes.d.ts.map +1 -1
- package/dist/types/routes/newsletter.routes.d.ts.map +1 -1
- package/dist/types/schemas/dictionary.schema.d.ts +6 -6
- package/dist/types/schemas/discussion.schema.d.ts +6 -6
- package/dist/types/schemas/discussion.schema.d.ts.map +1 -1
- package/dist/types/schemas/oAuth2.schema.d.ts +5 -5
- package/dist/types/schemas/oAuth2.schema.d.ts.map +1 -1
- package/dist/types/schemas/organization.schema.d.ts +6 -6
- package/dist/types/schemas/session.schema.d.ts +6 -6
- package/dist/types/schemas/tag.schema.d.ts +6 -6
- package/dist/types/schemas/user.schema.d.ts +6 -6
- package/dist/types/schemas/user.schema.d.ts.map +1 -1
- package/dist/types/services/dictionary.service.d.ts +1 -12
- package/dist/types/services/dictionary.service.d.ts.map +1 -1
- package/dist/types/services/email.service.d.ts +21 -10
- package/dist/types/services/email.service.d.ts.map +1 -1
- package/dist/types/types/dictionary.types.d.ts +1 -0
- package/dist/types/types/dictionary.types.d.ts.map +1 -1
- package/dist/types/types/user.types.d.ts +1 -0
- package/dist/types/types/user.types.d.ts.map +1 -1
- package/dist/types/utils/auth/getAuth.d.ts.map +1 -1
- package/dist/types/utils/filtersAndPagination/getDictionaryFiltersAndPagination.d.ts +2 -2
- package/dist/types/utils/filtersAndPagination/getDiscussionFiltersAndPagination.d.ts +2 -2
- package/dist/types/utils/filtersAndPagination/getOrganizationFiltersAndPagination.d.ts +2 -2
- package/dist/types/utils/filtersAndPagination/getProjectFiltersAndPagination.d.ts +2 -2
- package/dist/types/utils/filtersAndPagination/getTagFiltersAndPagination.d.ts +2 -2
- package/dist/types/utils/mongoDB/connectDB.d.ts +2 -2
- package/dist/types/utils/mongoDB/connectDB.d.ts.map +1 -1
- package/package.json +38 -33
- package/dist/assets/controllers/test.json +0 -4
- package/dist/cjs/routes/audit.routes.cjs +0 -35
- package/dist/cjs/routes/audit.routes.cjs.map +0 -1
- package/dist/cjs/schemas/audit.schema.cjs +0 -65
- package/dist/cjs/schemas/audit.schema.cjs.map +0 -1
- package/dist/cjs/services/audit.service.cjs +0 -49
- package/dist/cjs/services/audit.service.cjs.map +0 -1
- package/dist/cjs/types/audit.types.cjs +0 -0
- package/dist/esm/routes/audit.routes.mjs +0 -31
- package/dist/esm/routes/audit.routes.mjs.map +0 -1
- package/dist/esm/schemas/audit.schema.mjs +0 -63
- package/dist/esm/schemas/audit.schema.mjs.map +0 -1
- package/dist/esm/services/audit.service.mjs +0 -46
- package/dist/esm/services/audit.service.mjs.map +0 -1
- package/dist/esm/types/audit.types.mjs +0 -0
- package/dist/types/emails/index.d.ts.map +0 -1
- package/dist/types/export.d.ts.map +0 -1
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/routes/audit.routes.d.ts +0 -29
- package/dist/types/routes/audit.routes.d.ts.map +0 -1
- package/dist/types/schemas/audit.schema.d.ts +0 -19
- package/dist/types/schemas/audit.schema.d.ts.map +0 -1
- package/dist/types/services/audit.service.d.ts +0 -36
- package/dist/types/services/audit.service.d.ts.map +0 -1
- package/dist/types/types/audit.types.d.ts +0 -29
- package/dist/types/types/audit.types.d.ts.map +0 -1
- package/dist/types/utils/access.d.ts.map +0 -1
- package/dist/types/utils/errors/index.d.ts.map +0 -1
|
@@ -37,6 +37,23 @@ const userSchema = new Schema({
|
|
|
37
37
|
enum: ["admin", "user"],
|
|
38
38
|
default: "user",
|
|
39
39
|
required: false
|
|
40
|
+
},
|
|
41
|
+
lastLoginMethod: {
|
|
42
|
+
type: String,
|
|
43
|
+
enum: [
|
|
44
|
+
"email",
|
|
45
|
+
"google",
|
|
46
|
+
"github"
|
|
47
|
+
],
|
|
48
|
+
required: false
|
|
49
|
+
},
|
|
50
|
+
lang: {
|
|
51
|
+
type: String,
|
|
52
|
+
required: false
|
|
53
|
+
},
|
|
54
|
+
dateOfBirth: {
|
|
55
|
+
type: Date,
|
|
56
|
+
required: false
|
|
40
57
|
}
|
|
41
58
|
}, {
|
|
42
59
|
timestamps: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user.schema.mjs","names":[],"sources":["../../../src/schemas/user.schema.ts"],"sourcesContent":["import {\n NAMES_MAX_LENGTH,\n NAMES_MIN_LENGTH,\n} from '@utils/validation/validateUser';\nimport { Schema } from 'mongoose';\nimport validator from 'validator';\nimport type { UserSchema } from '@/types/user.types';\n\nexport const userSchema = new Schema<UserSchema>(\n {\n email: {\n type: String,\n required: true,\n unique: true,\n validate: [validator.isEmail, 'Please fill a valid email address'],\n lowercase: true,\n trim: true,\n },\n name: {\n type: String,\n maxlength: NAMES_MAX_LENGTH,\n minlength: NAMES_MIN_LENGTH,\n },\n phone: {\n type: String,\n maxlength: 20,\n },\n\n customerId: {\n type: String,\n required: false,\n },\n\n emailsList: {\n type: {\n newsLetter: {\n type: Boolean,\n default: false,\n },\n },\n required: false,\n },\n role: {\n type: String,\n enum: ['admin', 'user'],\n default: 'user',\n required: false,\n },\n },\n {\n timestamps: true,\n\n toJSON: {\n virtuals: true, // keep the automatic `id` getter\n versionKey: false, // drop __v\n transform(_doc, ret: any) {\n const { _id, ...rest } = ret;\n return {\n ...rest,\n id: _id.toString(),\n };\n },\n },\n toObject: {\n virtuals: true,\n transform(_doc, ret: any) {\n const { _id, ...rest } = ret;\n return {\n ...rest,\n id: _id,\n };\n },\n },\n }\n);\n"],"mappings":";;;;;AAQA,MAAa,aAAa,IAAI,OAC5B;CACE,OAAO;EACL,MAAM;EACN,UAAU;EACV,QAAQ;EACR,UAAU,CAAC,UAAU,SAAS,oCAAoC;EAClE,WAAW;EACX,MAAM;EACP;CACD,MAAM;EACJ,MAAM;EACN,WAAW;EACX,WAAW;EACZ;CACD,OAAO;EACL,MAAM;EACN,WAAW;EACZ;CAED,YAAY;EACV,MAAM;EACN,UAAU;EACX;CAED,YAAY;EACV,MAAM,EACJ,YAAY;GACV,MAAM;GACN,SAAS;GACV,EACF;EACD,UAAU;EACX;CACD,MAAM;EACJ,MAAM;EACN,MAAM,CAAC,SAAS,OAAO;EACvB,SAAS;EACT,UAAU;EACX;CACF,EACD;CACE,YAAY;CAEZ,QAAQ;EACN,UAAU;EACV,YAAY;EACZ,UAAU,MAAM,KAAU;GACxB,MAAM,EAAE,IAAK,GAAG,SAAS;AACzB,UAAO;IACL,GAAG;IACH,IAAI,IAAI,UAAU;IACnB;;EAEJ;CACD,UAAU;EACR,UAAU;EACV,UAAU,MAAM,KAAU;GACxB,MAAM,EAAE,IAAK,GAAG,SAAS;AACzB,UAAO;IACL,GAAG;IACH,IAAI;IACL;;EAEJ;CACF,CACF"}
|
|
1
|
+
{"version":3,"file":"user.schema.mjs","names":[],"sources":["../../../src/schemas/user.schema.ts"],"sourcesContent":["import {\n NAMES_MAX_LENGTH,\n NAMES_MIN_LENGTH,\n} from '@utils/validation/validateUser';\nimport { Schema } from 'mongoose';\nimport validator from 'validator';\nimport type { UserSchema } from '@/types/user.types';\n\nexport const userSchema = new Schema<UserSchema>(\n {\n email: {\n type: String,\n required: true,\n unique: true,\n validate: [validator.isEmail, 'Please fill a valid email address'],\n lowercase: true,\n trim: true,\n },\n name: {\n type: String,\n maxlength: NAMES_MAX_LENGTH,\n minlength: NAMES_MIN_LENGTH,\n },\n phone: {\n type: String,\n maxlength: 20,\n },\n\n customerId: {\n type: String,\n required: false,\n },\n\n emailsList: {\n type: {\n newsLetter: {\n type: Boolean,\n default: false,\n },\n },\n required: false,\n },\n role: {\n type: String,\n enum: ['admin', 'user'],\n default: 'user',\n required: false,\n },\n lastLoginMethod: {\n type: String,\n enum: ['email', 'google', 'github'],\n required: false,\n },\n lang: {\n type: String,\n required: false,\n },\n dateOfBirth: {\n type: Date,\n required: false,\n },\n },\n {\n timestamps: true,\n\n toJSON: {\n virtuals: true, // keep the automatic `id` getter\n versionKey: false, // drop __v\n transform(_doc, ret: any) {\n const { _id, ...rest } = ret;\n return {\n ...rest,\n id: _id.toString(),\n };\n },\n },\n toObject: {\n virtuals: true,\n transform(_doc, ret: any) {\n const { _id, ...rest } = ret;\n return {\n ...rest,\n id: _id,\n };\n },\n },\n }\n);\n"],"mappings":";;;;;AAQA,MAAa,aAAa,IAAI,OAC5B;CACE,OAAO;EACL,MAAM;EACN,UAAU;EACV,QAAQ;EACR,UAAU,CAAC,UAAU,SAAS,oCAAoC;EAClE,WAAW;EACX,MAAM;EACP;CACD,MAAM;EACJ,MAAM;EACN,WAAW;EACX,WAAW;EACZ;CACD,OAAO;EACL,MAAM;EACN,WAAW;EACZ;CAED,YAAY;EACV,MAAM;EACN,UAAU;EACX;CAED,YAAY;EACV,MAAM,EACJ,YAAY;GACV,MAAM;GACN,SAAS;GACV,EACF;EACD,UAAU;EACX;CACD,MAAM;EACJ,MAAM;EACN,MAAM,CAAC,SAAS,OAAO;EACvB,SAAS;EACT,UAAU;EACX;CACD,iBAAiB;EACf,MAAM;EACN,MAAM;GAAC;GAAS;GAAU;GAAS;EACnC,UAAU;EACX;CACD,MAAM;EACJ,MAAM;EACN,UAAU;EACX;CACD,aAAa;EACX,MAAM;EACN,UAAU;EACX;CACF,EACD;CACE,YAAY;CAEZ,QAAQ;EACN,UAAU;EACV,YAAY;EACZ,UAAU,MAAM,KAAU;GACxB,MAAM,EAAE,IAAK,GAAG,SAAS;AACzB,UAAO;IACL,GAAG;IACH,IAAI,IAAI,UAAU;IACnB;;EAEJ;CACD,UAAU;EACR,UAAU;EACV,UAAU,MAAM,KAAU;GACxB,MAAM,EAAE,IAAK,GAAG,SAAS;AACzB,UAAO;IACL,GAAG;IACH,IAAI;IACL;;EAEJ;CACF,CACF"}
|
|
@@ -100,26 +100,6 @@ const createDictionary = async (dictionary) => {
|
|
|
100
100
|
return await DictionaryModel.create(dictionary);
|
|
101
101
|
};
|
|
102
102
|
/**
|
|
103
|
-
* Gets the existing dictionaries from the provided list of keys.
|
|
104
|
-
* @param dictionariesKeys - List of dictionary keys to check.
|
|
105
|
-
* @param projectId - The ID of the project to check the dictionaries against.
|
|
106
|
-
* @returns The existing dictionaries and the new dictionaries.
|
|
107
|
-
*/
|
|
108
|
-
const getExistingDictionaryKey = async (dictionariesKeys, projectId) => {
|
|
109
|
-
const existingDictionaries = await DictionaryModel.find({
|
|
110
|
-
key: { $in: dictionariesKeys },
|
|
111
|
-
projectIds: projectId
|
|
112
|
-
});
|
|
113
|
-
const existingDictionariesKey = [];
|
|
114
|
-
const newDictionariesKey = [];
|
|
115
|
-
for (const key of dictionariesKeys) if (existingDictionaries.some((dictionary) => dictionary.key === key)) existingDictionariesKey.push(key);
|
|
116
|
-
else newDictionariesKey.push(key);
|
|
117
|
-
return {
|
|
118
|
-
existingDictionariesKey,
|
|
119
|
-
newDictionariesKey
|
|
120
|
-
};
|
|
121
|
-
};
|
|
122
|
-
/**
|
|
123
103
|
* Updates an existing dictionary in the database by its ID.
|
|
124
104
|
* @param dictionaryId - The ID of the dictionary to update.
|
|
125
105
|
* @param dictionary - The updated dictionary data.
|
|
@@ -142,18 +122,15 @@ const updateDictionaryById = async (dictionaryId, dictionary) => {
|
|
|
142
122
|
* @returns The updated dictionary.
|
|
143
123
|
*/
|
|
144
124
|
const updateDictionaryByKey = async (dictionaryKey, dictionary, projectId) => {
|
|
145
|
-
const
|
|
146
|
-
const errors = await validateDictionary(dictionaryToUpdate, Object.keys(dictionaryToUpdate));
|
|
147
|
-
if (Object.keys(errors).length > 0) throw new GenericError("DICTIONARY_INVALID_FIELDS", {
|
|
148
|
-
dictionaryKey,
|
|
149
|
-
projectId,
|
|
150
|
-
errors
|
|
151
|
-
});
|
|
152
|
-
if ((await DictionaryModel.updateOne({
|
|
125
|
+
const existing = await DictionaryModel.findOne({
|
|
153
126
|
key: dictionaryKey,
|
|
154
127
|
projectIds: projectId
|
|
155
|
-
}
|
|
156
|
-
|
|
128
|
+
});
|
|
129
|
+
if (!existing) throw new GenericError("DICTIONARY_UPDATE_FAILED", { dictionaryKey });
|
|
130
|
+
const dictionaryToUpdate = removeObjectKeys(ensureMongoDocumentToObject(dictionary), ["id"]);
|
|
131
|
+
Object.assign(existing, dictionaryToUpdate);
|
|
132
|
+
await existing.save();
|
|
133
|
+
return existing;
|
|
157
134
|
};
|
|
158
135
|
/**
|
|
159
136
|
* Deletes a dictionary from the database by its ID.
|
|
@@ -184,5 +161,5 @@ const incrementVersion = (dictionary) => {
|
|
|
184
161
|
};
|
|
185
162
|
|
|
186
163
|
//#endregion
|
|
187
|
-
export { countDictionaries, createDictionary, deleteDictionaryById, findDictionaries, getDictionariesByKeys, getDictionariesByTags, getDictionaryById, getDictionaryByKey,
|
|
164
|
+
export { countDictionaries, createDictionary, deleteDictionaryById, findDictionaries, getDictionariesByKeys, getDictionariesByTags, getDictionaryById, getDictionaryByKey, incrementVersion, updateDictionaryById, updateDictionaryByKey };
|
|
188
165
|
//# sourceMappingURL=dictionary.service.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dictionary.service.mjs","names":["existingDictionariesKey: string[]","newDictionariesKey: string[]"],"sources":["../../../src/services/dictionary.service.ts"],"sourcesContent":["import { DictionaryModel } from '@models/dictionary.model';\nimport { ensureMongoDocumentToObject } from '@utils/ensureMongoDocumentToObject';\nimport { GenericError } from '@utils/errors';\nimport type { DictionaryFilters } from '@utils/filtersAndPagination/getDictionaryFiltersAndPagination';\nimport { removeObjectKeys } from '@utils/removeObjectKeys';\nimport {\n type DictionaryFields,\n validateDictionary,\n} from '@utils/validation/validateDictionary';\nimport { Types } from 'mongoose';\nimport type {\n Dictionary,\n DictionaryData,\n DictionaryDocument,\n} from '@/types/dictionary.types';\nimport type { Project } from '@/types/project.types';\n\n/**\n * Finds dictionaries based on filters and pagination options.\n * @param filters - MongoDB filter query.\n * @param skip - Number of documents to skip.\n * @param limit - Number of documents to limit.\n * @returns List of dictionaries matching the filters.\n */\nexport const findDictionaries = async (\n filters: DictionaryFilters,\n skip = 0,\n limit = 100,\n sortOptions?: Record<string, 1 | -1>\n): Promise<DictionaryDocument[]> => {\n try {\n const dictionaries = await DictionaryModel.aggregate<DictionaryDocument>([\n // Stage 1: Match the filters\n { $match: filters },\n\n // Stage 2: Sort if provided (default handled in filter builder)\n ...(sortOptions && Object.keys(sortOptions).length > 0\n ? [{ $sort: sortOptions }]\n : []),\n\n // Stage 3: Skip for pagination\n { $skip: skip },\n\n // Stage 4: Limit the number of documents\n { $limit: limit },\n ]);\n\n const formattedResults = dictionaries.map(\n (result) => new DictionaryModel(result)\n );\n\n return formattedResults;\n } catch (error) {\n console.error('Error fetching dictionaries:', error);\n throw error;\n }\n};\n\n/**\n * Finds a dictionary by its ID.\n * @param dictionaryId - The ID of the dictionary to find.\n * @returns The dictionary matching the ID.\n */\n/**\n * Finds a dictionary by its ID and includes the 'versions' field.\n * @param dictionaryId - The ID of the dictionary to find.\n * @returns The dictionary matching the ID with available versions.\n */\nexport const getDictionaryById = async (\n dictionaryId: string | Types.ObjectId\n): Promise<DictionaryDocument> => {\n const id = Types.ObjectId.isValid(dictionaryId as string)\n ? new Types.ObjectId(dictionaryId as string)\n : dictionaryId;\n\n const dictionaries = await DictionaryModel.aggregate<DictionaryDocument>([\n // Stage 1: Match the document by ID\n { $match: { _id: id } },\n\n // Stage 2: Add the 'versions' field\n {\n $addFields: {\n versions: {\n $map: {\n input: { $objectToArray: '$content' },\n as: 'version',\n in: '$$version.k',\n },\n },\n },\n },\n ]);\n\n if (!dictionaries.length) {\n throw new GenericError('DICTIONARY_NOT_FOUND', { dictionaryId });\n }\n\n return new DictionaryModel(dictionaries[0]);\n};\n\n/**\n * Finds a dictionary by its ID.\n * @param dictionaryKey - The ID of the dictionary to find.\n * @returns The dictionary matching the ID.\n */\nexport const getDictionaryByKey = async (\n dictionaryKey: string,\n projectId: string | Types.ObjectId\n): Promise<DictionaryDocument> => {\n const dictionaries = await getDictionariesByKeys([dictionaryKey], projectId);\n\n return dictionaries[0];\n};\n\nexport const getDictionariesByKeys = async (\n dictionaryKeys: string[],\n projectId: string | Types.ObjectId\n): Promise<DictionaryDocument[]> => {\n const dictionaries = await DictionaryModel.aggregate<DictionaryDocument>([\n // Stage 1: Match the document by key\n { $match: { key: { $in: dictionaryKeys }, projectIds: projectId } },\n\n // Stage 2: Add the 'versions' field\n {\n $addFields: {\n versions: {\n $map: {\n input: { $objectToArray: '$content' },\n as: 'version',\n in: '$$version.k',\n },\n },\n },\n },\n ]);\n\n if (!dictionaries) {\n throw new GenericError('DICTIONARY_NOT_FOUND', {\n dictionaryKeys,\n projectId,\n });\n }\n\n const formattedResults = dictionaries.map(\n (result) => new DictionaryModel(result)\n );\n\n return formattedResults;\n};\n\nexport const getDictionariesByTags = async (\n tags: string[],\n projectId: string | Project['id']\n): Promise<DictionaryDocument[]> => {\n const dictionaries = await DictionaryModel.aggregate<DictionaryDocument>([\n // Stage 1: Match the document by tags\n {\n $match: {\n tags: { $in: tags },\n projectIds: projectId,\n },\n },\n\n // Stage 2: Add the 'versions' field\n {\n $addFields: {\n versions: {\n $map: {\n input: { $objectToArray: '$content' },\n as: 'version',\n in: '$$version.k',\n },\n },\n },\n },\n ]);\n\n const formattedResults = dictionaries.map(\n (result) => new DictionaryModel(result)\n );\n\n return formattedResults;\n};\n\n/**\n * Counts the total number of dictionaries that match the filters.\n * @param filters - MongoDB filter query.\n * @returns Total number of dictionaries.\n */\nexport const countDictionaries = async (\n filters: DictionaryFilters\n): Promise<number> => {\n const result = await DictionaryModel.countDocuments(filters);\n\n if (typeof result === 'undefined') {\n throw new GenericError('DICTIONARY_COUNT_FAILED', { filters });\n }\n\n return result;\n};\n\n/**\n * Creates a new dictionary in the database.\n * @param dictionary - The dictionary data to create.\n * @returns The created dictionary.\n */\nexport const createDictionary = async (\n dictionary: DictionaryData\n): Promise<DictionaryDocument> => {\n const errors = await validateDictionary(dictionary);\n\n if (Object.keys(errors).length > 0) {\n throw new GenericError('DICTIONARY_INVALID_FIELDS', {\n errors,\n });\n }\n\n return await DictionaryModel.create(dictionary);\n};\n\ntype GetExistingDictionaryResult = {\n existingDictionariesKey: string[];\n newDictionariesKey: string[];\n};\n\n/**\n * Gets the existing dictionaries from the provided list of keys.\n * @param dictionariesKeys - List of dictionary keys to check.\n * @param projectId - The ID of the project to check the dictionaries against.\n * @returns The existing dictionaries and the new dictionaries.\n */\nexport const getExistingDictionaryKey = async (\n dictionariesKeys: string[],\n projectId: string | Types.ObjectId\n): Promise<GetExistingDictionaryResult> => {\n // Fetch dictionaries from the database where the key is in the provided list\n const existingDictionaries = await DictionaryModel.find({\n key: { $in: dictionariesKeys },\n projectIds: projectId,\n });\n\n // Map existing dictionaries to a LocalDictionary object\n const existingDictionariesKey: string[] = [];\n const newDictionariesKey: string[] = [];\n\n for (const key of dictionariesKeys) {\n const isDictionaryExist = existingDictionaries.some(\n (dictionary) => dictionary.key === key\n );\n\n if (isDictionaryExist) {\n existingDictionariesKey.push(key);\n } else {\n newDictionariesKey.push(key);\n }\n }\n\n return { existingDictionariesKey, newDictionariesKey };\n};\n\n/**\n * Updates an existing dictionary in the database by its ID.\n * @param dictionaryId - The ID of the dictionary to update.\n * @param dictionary - The updated dictionary data.\n * @returns The updated dictionary.\n */\nexport const updateDictionaryById = async (\n dictionaryId: string | Types.ObjectId,\n dictionary: Partial<Dictionary>\n): Promise<DictionaryDocument> => {\n const dictionaryObject = ensureMongoDocumentToObject(dictionary);\n const dictionaryToUpdate = removeObjectKeys(dictionaryObject, [\n 'id',\n ]) as unknown as Partial<Dictionary>;\n\n const updatedKeys = Object.keys(dictionaryToUpdate) as DictionaryFields;\n const errors = await validateDictionary(dictionaryToUpdate, updatedKeys);\n\n if (Object.keys(errors).length > 0) {\n throw new GenericError('DICTIONARY_INVALID_FIELDS', {\n dictionaryId,\n errors,\n });\n }\n\n const result = await DictionaryModel.updateOne(\n { _id: dictionaryId },\n dictionaryToUpdate\n );\n\n if (result.matchedCount === 0) {\n throw new GenericError('DICTIONARY_UPDATE_FAILED', { dictionaryId });\n }\n\n const updatedDictionary = await getDictionaryById(dictionaryId);\n\n return updatedDictionary;\n};\n\n/**\n * Updates an existing dictionary in the database by its key.\n * @param dictionaryKey - The ID of the dictionary to update.\n * @param dictionary - The updated dictionary data.\n * @returns The updated dictionary.\n */\nexport const updateDictionaryByKey = async (\n dictionaryKey: string,\n dictionary: Partial<Dictionary>,\n projectId: string | Types.ObjectId\n): Promise<DictionaryDocument> => {\n const dictionaryObject = ensureMongoDocumentToObject(dictionary);\n const dictionaryToUpdate = removeObjectKeys(dictionaryObject, [\n 'id',\n ]) as unknown as Partial<Dictionary>;\n\n const updatedKeys = Object.keys(dictionaryToUpdate) as DictionaryFields;\n const errors = await validateDictionary(dictionaryToUpdate, updatedKeys);\n\n if (Object.keys(errors).length > 0) {\n throw new GenericError('DICTIONARY_INVALID_FIELDS', {\n dictionaryKey,\n projectId,\n errors,\n });\n }\n\n const result = await DictionaryModel.updateOne(\n { key: dictionaryKey, projectIds: projectId },\n dictionaryToUpdate\n );\n\n if (result.matchedCount === 0) {\n throw new GenericError('DICTIONARY_UPDATE_FAILED', { dictionaryKey });\n }\n\n const updatedDictionary = await getDictionaryByKey(dictionaryKey, projectId);\n\n return updatedDictionary;\n};\n\n/**\n * Deletes a dictionary from the database by its ID.\n * @param dictionaryId - The ID of the dictionary to delete.\n * @returns The result of the deletion operation.\n */\nexport const deleteDictionaryById = async (\n dictionaryId: string\n): Promise<DictionaryDocument> => {\n const dictionary = await DictionaryModel.findByIdAndDelete(dictionaryId);\n\n if (!dictionary) {\n throw new GenericError('DICTIONARY_NOT_FOUND', { dictionaryId });\n }\n\n return dictionary;\n};\n\n// Function to extract the numeric part of the version\nconst getVersionNumber = (version: string): number => {\n const match = version.match(/^v(\\d+)$/);\n if (!match) {\n throw new Error(`Invalid version format: ${version}`);\n }\n return parseInt(match[1], 10);\n};\n\nexport const incrementVersion = (dictionary: Dictionary): string => {\n const VERSION_PREFIX = 'v';\n\n const versions = [...(dictionary.content.keys() ?? [])];\n const lastVersion = versions[versions.length - 1];\n\n // Start with the next version number\n let newNumber = getVersionNumber(lastVersion) + 1;\n let newVersion = `${VERSION_PREFIX}${newNumber}`;\n\n // Loop until a unique version is found\n while (versions.includes(newVersion)) {\n newNumber += 1;\n newVersion = `${VERSION_PREFIX}${newNumber}`;\n }\n\n return newVersion;\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dictionary.service.mjs","names":[],"sources":["../../../src/services/dictionary.service.ts"],"sourcesContent":["import { DictionaryModel } from '@models/dictionary.model';\nimport { ensureMongoDocumentToObject } from '@utils/ensureMongoDocumentToObject';\nimport { GenericError } from '@utils/errors';\nimport type { DictionaryFilters } from '@utils/filtersAndPagination/getDictionaryFiltersAndPagination';\nimport { removeObjectKeys } from '@utils/removeObjectKeys';\nimport {\n type DictionaryFields,\n validateDictionary,\n} from '@utils/validation/validateDictionary';\nimport { Types } from 'mongoose';\nimport type {\n Dictionary,\n DictionaryData,\n DictionaryDocument,\n} from '@/types/dictionary.types';\nimport type { Project } from '@/types/project.types';\n\n/**\n * Finds dictionaries based on filters and pagination options.\n * @param filters - MongoDB filter query.\n * @param skip - Number of documents to skip.\n * @param limit - Number of documents to limit.\n * @returns List of dictionaries matching the filters.\n */\nexport const findDictionaries = async (\n filters: DictionaryFilters,\n skip = 0,\n limit = 100,\n sortOptions?: Record<string, 1 | -1>\n): Promise<DictionaryDocument[]> => {\n try {\n const dictionaries = await DictionaryModel.aggregate<DictionaryDocument>([\n // Stage 1: Match the filters\n { $match: filters },\n\n // Stage 2: Sort if provided (default handled in filter builder)\n ...(sortOptions && Object.keys(sortOptions).length > 0\n ? [{ $sort: sortOptions }]\n : []),\n\n // Stage 3: Skip for pagination\n { $skip: skip },\n\n // Stage 4: Limit the number of documents\n { $limit: limit },\n ]);\n\n const formattedResults = dictionaries.map(\n (result) => new DictionaryModel(result)\n );\n\n return formattedResults;\n } catch (error) {\n console.error('Error fetching dictionaries:', error);\n throw error;\n }\n};\n\n/**\n * Finds a dictionary by its ID.\n * @param dictionaryId - The ID of the dictionary to find.\n * @returns The dictionary matching the ID.\n */\n/**\n * Finds a dictionary by its ID and includes the 'versions' field.\n * @param dictionaryId - The ID of the dictionary to find.\n * @returns The dictionary matching the ID with available versions.\n */\nexport const getDictionaryById = async (\n dictionaryId: string | Types.ObjectId\n): Promise<DictionaryDocument> => {\n const id = Types.ObjectId.isValid(dictionaryId as string)\n ? new Types.ObjectId(dictionaryId as string)\n : dictionaryId;\n\n const dictionaries = await DictionaryModel.aggregate<DictionaryDocument>([\n // Stage 1: Match the document by ID\n { $match: { _id: id } },\n\n // Stage 2: Add the 'versions' field\n {\n $addFields: {\n versions: {\n $map: {\n input: { $objectToArray: '$content' },\n as: 'version',\n in: '$$version.k',\n },\n },\n },\n },\n ]);\n\n if (!dictionaries.length) {\n throw new GenericError('DICTIONARY_NOT_FOUND', { dictionaryId });\n }\n\n return new DictionaryModel(dictionaries[0]);\n};\n\n/**\n * Finds a dictionary by its ID.\n * @param dictionaryKey - The ID of the dictionary to find.\n * @returns The dictionary matching the ID.\n */\nexport const getDictionaryByKey = async (\n dictionaryKey: string,\n projectId: string | Types.ObjectId\n): Promise<DictionaryDocument> => {\n const dictionaries = await getDictionariesByKeys([dictionaryKey], projectId);\n\n return dictionaries[0];\n};\n\nexport const getDictionariesByKeys = async (\n dictionaryKeys: string[],\n projectId: string | Types.ObjectId\n): Promise<DictionaryDocument[]> => {\n const dictionaries = await DictionaryModel.aggregate<DictionaryDocument>([\n // Stage 1: Match the document by key\n { $match: { key: { $in: dictionaryKeys }, projectIds: projectId } },\n\n // Stage 2: Add the 'versions' field\n {\n $addFields: {\n versions: {\n $map: {\n input: { $objectToArray: '$content' },\n as: 'version',\n in: '$$version.k',\n },\n },\n },\n },\n ]);\n\n if (!dictionaries) {\n throw new GenericError('DICTIONARY_NOT_FOUND', {\n dictionaryKeys,\n projectId,\n });\n }\n\n const formattedResults = dictionaries.map(\n (result) => new DictionaryModel(result)\n );\n\n return formattedResults;\n};\n\nexport const getDictionariesByTags = async (\n tags: string[],\n projectId: string | Project['id']\n): Promise<DictionaryDocument[]> => {\n const dictionaries = await DictionaryModel.aggregate<DictionaryDocument>([\n // Stage 1: Match the document by tags\n {\n $match: {\n tags: { $in: tags },\n projectIds: projectId,\n },\n },\n\n // Stage 2: Add the 'versions' field\n {\n $addFields: {\n versions: {\n $map: {\n input: { $objectToArray: '$content' },\n as: 'version',\n in: '$$version.k',\n },\n },\n },\n },\n ]);\n\n const formattedResults = dictionaries.map(\n (result) => new DictionaryModel(result)\n );\n\n return formattedResults;\n};\n\n/**\n * Counts the total number of dictionaries that match the filters.\n * @param filters - MongoDB filter query.\n * @returns Total number of dictionaries.\n */\nexport const countDictionaries = async (\n filters: DictionaryFilters\n): Promise<number> => {\n const result = await DictionaryModel.countDocuments(filters);\n\n if (typeof result === 'undefined') {\n throw new GenericError('DICTIONARY_COUNT_FAILED', { filters });\n }\n\n return result;\n};\n\n/**\n * Creates a new dictionary in the database.\n * @param dictionary - The dictionary data to create.\n * @returns The created dictionary.\n */\nexport const createDictionary = async (\n dictionary: DictionaryData\n): Promise<DictionaryDocument> => {\n const errors = await validateDictionary(dictionary);\n\n if (Object.keys(errors).length > 0) {\n throw new GenericError('DICTIONARY_INVALID_FIELDS', {\n errors,\n });\n }\n\n return await DictionaryModel.create(dictionary);\n};\n\n/**\n * Updates an existing dictionary in the database by its ID.\n * @param dictionaryId - The ID of the dictionary to update.\n * @param dictionary - The updated dictionary data.\n * @returns The updated dictionary.\n */\nexport const updateDictionaryById = async (\n dictionaryId: string | Types.ObjectId,\n dictionary: Partial<Dictionary>\n): Promise<DictionaryDocument> => {\n const dictionaryObject = ensureMongoDocumentToObject(dictionary);\n const dictionaryToUpdate = removeObjectKeys(dictionaryObject, [\n 'id',\n ]) as unknown as Partial<Dictionary>;\n\n const updatedKeys = Object.keys(dictionaryToUpdate) as DictionaryFields;\n const errors = await validateDictionary(dictionaryToUpdate, updatedKeys);\n\n if (Object.keys(errors).length > 0) {\n throw new GenericError('DICTIONARY_INVALID_FIELDS', {\n dictionaryId,\n errors,\n });\n }\n\n const result = await DictionaryModel.updateOne(\n { _id: dictionaryId },\n dictionaryToUpdate\n );\n\n if (result.matchedCount === 0) {\n throw new GenericError('DICTIONARY_UPDATE_FAILED', { dictionaryId });\n }\n\n const updatedDictionary = await getDictionaryById(dictionaryId);\n\n return updatedDictionary;\n};\n\n/**\n * Updates an existing dictionary in the database by its key.\n * @param dictionaryKey - The ID of the dictionary to update.\n * @param dictionary - The updated dictionary data.\n * @returns The updated dictionary.\n */\nexport const updateDictionaryByKey = async (\n dictionaryKey: string,\n dictionary: Partial<Dictionary>,\n projectId: string | Types.ObjectId\n): Promise<DictionaryDocument> => {\n const existing = await DictionaryModel.findOne({\n key: dictionaryKey,\n projectIds: projectId,\n });\n\n if (!existing) {\n throw new GenericError('DICTIONARY_UPDATE_FAILED', { dictionaryKey });\n }\n\n const dictionaryObject = ensureMongoDocumentToObject(dictionary);\n const dictionaryToUpdate = removeObjectKeys(dictionaryObject, [\n 'id',\n ]) as Partial<Dictionary>;\n\n // Optional: run your validateDictionary on dictionaryToUpdate here\n\n // Apply updated fields onto the existing doc\n Object.assign(existing, dictionaryToUpdate);\n\n // Save – this will trigger timestamps on parent + subdocs\n await existing.save();\n\n return existing;\n};\n\n/**\n * Deletes a dictionary from the database by its ID.\n * @param dictionaryId - The ID of the dictionary to delete.\n * @returns The result of the deletion operation.\n */\nexport const deleteDictionaryById = async (\n dictionaryId: string\n): Promise<DictionaryDocument> => {\n const dictionary = await DictionaryModel.findByIdAndDelete(dictionaryId);\n\n if (!dictionary) {\n throw new GenericError('DICTIONARY_NOT_FOUND', { dictionaryId });\n }\n\n return dictionary;\n};\n\n// Function to extract the numeric part of the version\nconst getVersionNumber = (version: string): number => {\n const match = version.match(/^v(\\d+)$/);\n if (!match) {\n throw new Error(`Invalid version format: ${version}`);\n }\n return parseInt(match[1], 10);\n};\n\nexport const incrementVersion = (dictionary: Dictionary): string => {\n const VERSION_PREFIX = 'v';\n\n const versions = [...(dictionary.content.keys() ?? [])];\n const lastVersion = versions[versions.length - 1];\n\n // Start with the next version number\n let newNumber = getVersionNumber(lastVersion) + 1;\n let newVersion = `${VERSION_PREFIX}${newNumber}`;\n\n // Loop until a unique version is found\n while (versions.includes(newVersion)) {\n newNumber += 1;\n newVersion = `${VERSION_PREFIX}${newNumber}`;\n }\n\n return newVersion;\n};\n"],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { logger } from "../logger/index.mjs";
|
|
2
2
|
import { InviteUserEmailEN, InviteUserEmailES, InviteUserEmailFR } from "../emails/InviteUserEmail.mjs";
|
|
3
|
+
import { MagicLinkEmailEN, MagicLinkEmailES, MagicLinkEmailFR } from "../emails/MagicLinkEmail.mjs";
|
|
3
4
|
import { OAuthTokenCreatedEmailEN, OAuthTokenCreatedEmailES, OAuthTokenCreatedEmailFR } from "../emails/OAuthTokenCreatedEmail.mjs";
|
|
4
5
|
import { PasswordChangeConfirmationEmailEN, PasswordChangeConfirmationEmailES, PasswordChangeConfirmationEmailFR } from "../emails/PasswordChangeConfirmation.mjs";
|
|
5
6
|
import { ResetPasswordEmailEN, ResetPasswordEmailES, ResetPasswordEmailFR } from "../emails/ResetUserPassword.mjs";
|
|
@@ -62,6 +63,18 @@ const getEmailComponents = (locale) => ({
|
|
|
62
63
|
es: "¡Bienvenido a Intlayer!"
|
|
63
64
|
}, locale)
|
|
64
65
|
},
|
|
66
|
+
magicLink: {
|
|
67
|
+
template: t({
|
|
68
|
+
en: MagicLinkEmailEN,
|
|
69
|
+
fr: MagicLinkEmailFR,
|
|
70
|
+
es: MagicLinkEmailES
|
|
71
|
+
}, locale),
|
|
72
|
+
subject: t({
|
|
73
|
+
en: "Sign in to Intlayer",
|
|
74
|
+
fr: "Connectez-vous à Intlayer",
|
|
75
|
+
es: "Inicia sesión en Intlayer"
|
|
76
|
+
}, locale)
|
|
77
|
+
},
|
|
65
78
|
passwordChangeConfirmation: {
|
|
66
79
|
template: t({
|
|
67
80
|
en: PasswordChangeConfirmationEmailEN,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email.service.mjs","names":[],"sources":["../../../src/services/email.service.tsx"],"sourcesContent":["import {\n InviteUserEmailEN,\n InviteUserEmailES,\n InviteUserEmailFR,\n} from '@emails/InviteUserEmail';\nimport {\n OAuthTokenCreatedEmailEN,\n OAuthTokenCreatedEmailES,\n OAuthTokenCreatedEmailFR,\n} from '@emails/OAuthTokenCreatedEmail';\nimport {\n PasswordChangeConfirmationEmailEN,\n PasswordChangeConfirmationEmailES,\n PasswordChangeConfirmationEmailFR,\n} from '@emails/PasswordChangeConfirmation';\nimport {\n ResetPasswordEmailEN,\n ResetPasswordEmailES,\n ResetPasswordEmailFR,\n} from '@emails/ResetUserPassword';\n\nimport {\n SubscriptionPaymentCancellationEN,\n SubscriptionPaymentCancellationES,\n SubscriptionPaymentCancellationFR,\n} from '@emails/SubscriptionPaymentCancellation';\nimport {\n SubscriptionPaymentErrorEN,\n SubscriptionPaymentErrorES,\n SubscriptionPaymentErrorFR,\n} from '@emails/SubscriptionPaymentError';\nimport {\n SubscriptionPaymentSuccessEN,\n SubscriptionPaymentSuccessES,\n SubscriptionPaymentSuccessFR,\n} from '@emails/SubscriptionPaymentSuccess';\nimport {\n ValidateUserEmailEN,\n ValidateUserEmailES,\n ValidateUserEmailFR,\n} from '@emails/ValidateUserEmail';\nimport {\n WelcomeEmailEN,\n WelcomeEmailES,\n WelcomeEmailFR,\n} from '@emails/Welcome';\nimport type { Locale } from '@intlayer/types';\nimport { logger } from '@logger';\nimport { t } from 'express-intlayer';\nimport type { ComponentProps, JSX } from 'react';\nimport { Resend } from 'resend';\n\ntype EmailComponentsType = (...props: any) => JSX.Element;\ntype EmailComponents = {\n [key: string]: {\n template: EmailComponentsType;\n subject: string;\n };\n};\n\nconst getEmailComponents = (locale?: Locale) =>\n ({\n invite: {\n template: t(\n {\n en: InviteUserEmailEN,\n fr: InviteUserEmailFR,\n es: InviteUserEmailES,\n },\n locale\n ),\n subject: t(\n {\n en: 'You have been invited to join Intlayer',\n fr: 'Vous êtes invité à rejoindre Intlayer',\n es: 'Has sido invitado a unirte a Intlayer',\n },\n locale\n ),\n },\n validate: {\n template: t(\n {\n en: ValidateUserEmailEN,\n fr: ValidateUserEmailFR,\n es: ValidateUserEmailES,\n },\n locale\n ),\n subject: t(\n {\n en: 'Validate your email for Intlayer',\n fr: 'Validez votre email pour Intlayer',\n es: 'Valida tu correo electrónico para Intlayer',\n },\n locale\n ),\n },\n resetPassword: {\n template: t(\n {\n en: ResetPasswordEmailEN,\n fr: ResetPasswordEmailFR,\n es: ResetPasswordEmailES,\n },\n locale\n ),\n subject: t(\n {\n en: 'Reset your password for Intlayer',\n fr: 'Réinitialisez votre mot de passe pour Intlayer',\n es: 'Restablece tu contraseña para Intlayer',\n },\n locale\n ),\n },\n welcome: {\n template: t(\n {\n en: WelcomeEmailEN,\n fr: WelcomeEmailFR,\n es: WelcomeEmailES,\n },\n locale\n ),\n subject: t(\n {\n en: 'Welcome to Intlayer!',\n fr: 'Bienvenue chez Intlayer!',\n es: '¡Bienvenido a Intlayer!',\n },\n locale\n ),\n },\n passwordChangeConfirmation: {\n template: t(\n {\n en: PasswordChangeConfirmationEmailEN,\n fr: PasswordChangeConfirmationEmailFR,\n es: PasswordChangeConfirmationEmailES,\n },\n locale\n ),\n subject: t(\n {\n en: 'Your Intlayer password has been changed',\n fr: 'Votre mot de passe Intlayer a été modifié',\n es: 'Tu contraseña de Intlayer ha sido cambiada',\n },\n locale\n ),\n },\n subscriptionPaymentSuccess: {\n template: t({\n en: SubscriptionPaymentSuccessEN,\n fr: SubscriptionPaymentSuccessFR,\n es: SubscriptionPaymentSuccessES,\n }),\n subject: t({\n en: 'Your payment for Intlayer subscription is confirmed',\n fr: \"Votre paiement pour l'abonnement Intlayer est confirmé\",\n es: 'Tu pago por la suscripción de Intlayer ha sido confirmado',\n }),\n },\n subscriptionPaymentCancellation: {\n template: t({\n en: SubscriptionPaymentCancellationEN,\n fr: SubscriptionPaymentCancellationFR,\n es: SubscriptionPaymentCancellationES,\n }),\n subject: t({\n en: 'Your Intlayer subscription has been canceled',\n fr: 'Votre abonnement Intlayer a été annulé',\n es: 'Tu suscripción de Intlayer ha sido cancelada',\n }),\n },\n subscriptionPaymentError: {\n template: t({\n en: SubscriptionPaymentErrorEN,\n fr: SubscriptionPaymentErrorFR,\n es: SubscriptionPaymentErrorES,\n }),\n subject: t({\n en: 'There was an issue with your Intlayer subscription payment',\n fr: \"Un problème est survenu avec votre paiement pour l'abonnement Intlayer\",\n es: 'Hubo un problema con el pago de tu suscripción de Intlayer',\n }),\n },\n oAuthTokenCreated: {\n template: t({\n en: OAuthTokenCreatedEmailEN,\n fr: OAuthTokenCreatedEmailFR,\n es: OAuthTokenCreatedEmailES,\n }),\n subject: t({\n en: 'A third-party OAuth application has been added to your Intlayer account',\n fr: 'Une application OAuth tierce a été ajoutée à votre compte Intlayer',\n es: 'Una aplicación OAuth de terceros ha sido añadida a tu cuenta de Intlayer',\n }),\n },\n }) satisfies EmailComponents;\n\ntype EmailType = keyof ReturnType<typeof getEmailComponents>;\n\nexport type SendEmailProps<T extends EmailType> = {\n type: T;\n to: string;\n subject?: string;\n locale?: Locale;\n} & ComponentProps<ReturnType<typeof getEmailComponents>[T]['template']>;\n\nexport const sendEmail = async <T extends EmailType>({\n type,\n to,\n subject,\n locale,\n ...props\n}: SendEmailProps<T>) => {\n const resend = new Resend(process.env.RESEND_API_KEY);\n\n const emailComponents = getEmailComponents(locale);\n\n const { template, subject: baseSubject } = emailComponents[type];\n\n type EmailComponentType = (typeof emailComponents)[T]['template'];\n\n const EmailComponent: EmailComponentType = template;\n\n const react = <EmailComponent {...(props as any)} />;\n\n await resend.emails\n .send({\n from: 'Intlayer <no-reply@intlayer.org>',\n to,\n subject: subject ?? baseSubject,\n react,\n })\n .catch((err) => logger.error(err));\n\n logger.info(`Email sent ${type} to ${to}`);\n};\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"email.service.mjs","names":[],"sources":["../../../src/services/email.service.tsx"],"sourcesContent":["import {\n InviteUserEmailEN,\n InviteUserEmailES,\n InviteUserEmailFR,\n} from '@emails/InviteUserEmail';\nimport {\n MagicLinkEmailEN,\n MagicLinkEmailES,\n MagicLinkEmailFR,\n} from '@emails/MagicLinkEmail';\nimport {\n OAuthTokenCreatedEmailEN,\n OAuthTokenCreatedEmailES,\n OAuthTokenCreatedEmailFR,\n} from '@emails/OAuthTokenCreatedEmail';\nimport {\n PasswordChangeConfirmationEmailEN,\n PasswordChangeConfirmationEmailES,\n PasswordChangeConfirmationEmailFR,\n} from '@emails/PasswordChangeConfirmation';\nimport {\n ResetPasswordEmailEN,\n ResetPasswordEmailES,\n ResetPasswordEmailFR,\n} from '@emails/ResetUserPassword';\n\nimport {\n SubscriptionPaymentCancellationEN,\n SubscriptionPaymentCancellationES,\n SubscriptionPaymentCancellationFR,\n} from '@emails/SubscriptionPaymentCancellation';\nimport {\n SubscriptionPaymentErrorEN,\n SubscriptionPaymentErrorES,\n SubscriptionPaymentErrorFR,\n} from '@emails/SubscriptionPaymentError';\nimport {\n SubscriptionPaymentSuccessEN,\n SubscriptionPaymentSuccessES,\n SubscriptionPaymentSuccessFR,\n} from '@emails/SubscriptionPaymentSuccess';\nimport {\n ValidateUserEmailEN,\n ValidateUserEmailES,\n ValidateUserEmailFR,\n} from '@emails/ValidateUserEmail';\nimport {\n WelcomeEmailEN,\n WelcomeEmailES,\n WelcomeEmailFR,\n} from '@emails/Welcome';\nimport type { Locale } from '@intlayer/types';\nimport { logger } from '@logger';\nimport { t } from 'express-intlayer';\nimport type { ComponentProps, JSX } from 'react';\nimport { Resend } from 'resend';\n\ntype EmailComponentsType = (...props: any) => JSX.Element;\ntype EmailComponents = {\n [key: string]: {\n template: EmailComponentsType;\n subject: string;\n };\n};\n\nconst getEmailComponents = (locale?: Locale) =>\n ({\n invite: {\n template: t(\n {\n en: InviteUserEmailEN,\n fr: InviteUserEmailFR,\n es: InviteUserEmailES,\n },\n locale\n ),\n subject: t(\n {\n en: 'You have been invited to join Intlayer',\n fr: 'Vous êtes invité à rejoindre Intlayer',\n es: 'Has sido invitado a unirte a Intlayer',\n },\n locale\n ),\n },\n validate: {\n template: t(\n {\n en: ValidateUserEmailEN,\n fr: ValidateUserEmailFR,\n es: ValidateUserEmailES,\n },\n locale\n ),\n subject: t(\n {\n en: 'Validate your email for Intlayer',\n fr: 'Validez votre email pour Intlayer',\n es: 'Valida tu correo electrónico para Intlayer',\n },\n locale\n ),\n },\n resetPassword: {\n template: t(\n {\n en: ResetPasswordEmailEN,\n fr: ResetPasswordEmailFR,\n es: ResetPasswordEmailES,\n },\n locale\n ),\n subject: t(\n {\n en: 'Reset your password for Intlayer',\n fr: 'Réinitialisez votre mot de passe pour Intlayer',\n es: 'Restablece tu contraseña para Intlayer',\n },\n locale\n ),\n },\n welcome: {\n template: t(\n {\n en: WelcomeEmailEN,\n fr: WelcomeEmailFR,\n es: WelcomeEmailES,\n },\n locale\n ),\n subject: t(\n {\n en: 'Welcome to Intlayer!',\n fr: 'Bienvenue chez Intlayer!',\n es: '¡Bienvenido a Intlayer!',\n },\n locale\n ),\n },\n magicLink: {\n template: t(\n {\n en: MagicLinkEmailEN,\n fr: MagicLinkEmailFR,\n es: MagicLinkEmailES,\n },\n locale\n ),\n subject: t(\n {\n en: 'Sign in to Intlayer',\n fr: 'Connectez-vous à Intlayer',\n es: 'Inicia sesión en Intlayer',\n },\n locale\n ),\n },\n passwordChangeConfirmation: {\n template: t(\n {\n en: PasswordChangeConfirmationEmailEN,\n fr: PasswordChangeConfirmationEmailFR,\n es: PasswordChangeConfirmationEmailES,\n },\n locale\n ),\n subject: t(\n {\n en: 'Your Intlayer password has been changed',\n fr: 'Votre mot de passe Intlayer a été modifié',\n es: 'Tu contraseña de Intlayer ha sido cambiada',\n },\n locale\n ),\n },\n subscriptionPaymentSuccess: {\n template: t({\n en: SubscriptionPaymentSuccessEN,\n fr: SubscriptionPaymentSuccessFR,\n es: SubscriptionPaymentSuccessES,\n }),\n subject: t({\n en: 'Your payment for Intlayer subscription is confirmed',\n fr: \"Votre paiement pour l'abonnement Intlayer est confirmé\",\n es: 'Tu pago por la suscripción de Intlayer ha sido confirmado',\n }),\n },\n subscriptionPaymentCancellation: {\n template: t({\n en: SubscriptionPaymentCancellationEN,\n fr: SubscriptionPaymentCancellationFR,\n es: SubscriptionPaymentCancellationES,\n }),\n subject: t({\n en: 'Your Intlayer subscription has been canceled',\n fr: 'Votre abonnement Intlayer a été annulé',\n es: 'Tu suscripción de Intlayer ha sido cancelada',\n }),\n },\n subscriptionPaymentError: {\n template: t({\n en: SubscriptionPaymentErrorEN,\n fr: SubscriptionPaymentErrorFR,\n es: SubscriptionPaymentErrorES,\n }),\n subject: t({\n en: 'There was an issue with your Intlayer subscription payment',\n fr: \"Un problème est survenu avec votre paiement pour l'abonnement Intlayer\",\n es: 'Hubo un problema con el pago de tu suscripción de Intlayer',\n }),\n },\n oAuthTokenCreated: {\n template: t({\n en: OAuthTokenCreatedEmailEN,\n fr: OAuthTokenCreatedEmailFR,\n es: OAuthTokenCreatedEmailES,\n }),\n subject: t({\n en: 'A third-party OAuth application has been added to your Intlayer account',\n fr: 'Une application OAuth tierce a été ajoutée à votre compte Intlayer',\n es: 'Una aplicación OAuth de terceros ha sido añadida a tu cuenta de Intlayer',\n }),\n },\n }) satisfies EmailComponents;\n\ntype EmailType = keyof ReturnType<typeof getEmailComponents>;\n\nexport type SendEmailProps<T extends EmailType> = {\n type: T;\n to: string;\n subject?: string;\n locale?: Locale;\n} & ComponentProps<ReturnType<typeof getEmailComponents>[T]['template']>;\n\nexport const sendEmail = async <T extends EmailType>({\n type,\n to,\n subject,\n locale,\n ...props\n}: SendEmailProps<T>) => {\n const resend = new Resend(process.env.RESEND_API_KEY);\n\n const emailComponents = getEmailComponents(locale);\n\n const { template, subject: baseSubject } = emailComponents[type];\n\n type EmailComponentType = (typeof emailComponents)[T]['template'];\n\n const EmailComponent: EmailComponentType = template;\n\n const react = <EmailComponent {...(props as any)} />;\n\n await resend.emails\n .send({\n from: 'Intlayer <no-reply@intlayer.org>',\n to,\n subject: subject ?? baseSubject,\n react,\n })\n .catch((err) => logger.error(err));\n\n logger.info(`Email sent ${type} to ${to}`);\n};\n"],"mappings":";;;;;;;;;;;;;;;;AAiEA,MAAM,sBAAsB,YACzB;CACC,QAAQ;EACN,UAAU,EACR;GACE,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,EACD,OACD;EACD,SAAS,EACP;GACE,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,EACD,OACD;EACF;CACD,UAAU;EACR,UAAU,EACR;GACE,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,EACD,OACD;EACD,SAAS,EACP;GACE,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,EACD,OACD;EACF;CACD,eAAe;EACb,UAAU,EACR;GACE,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,EACD,OACD;EACD,SAAS,EACP;GACE,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,EACD,OACD;EACF;CACD,SAAS;EACP,UAAU,EACR;GACE,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,EACD,OACD;EACD,SAAS,EACP;GACE,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,EACD,OACD;EACF;CACD,WAAW;EACT,UAAU,EACR;GACE,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,EACD,OACD;EACD,SAAS,EACP;GACE,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,EACD,OACD;EACF;CACD,4BAA4B;EAC1B,UAAU,EACR;GACE,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,EACD,OACD;EACD,SAAS,EACP;GACE,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,EACD,OACD;EACF;CACD,4BAA4B;EAC1B,UAAU,EAAE;GACV,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,CAAC;EACF,SAAS,EAAE;GACT,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,CAAC;EACH;CACD,iCAAiC;EAC/B,UAAU,EAAE;GACV,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,CAAC;EACF,SAAS,EAAE;GACT,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,CAAC;EACH;CACD,0BAA0B;EACxB,UAAU,EAAE;GACV,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,CAAC;EACF,SAAS,EAAE;GACT,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,CAAC;EACH;CACD,mBAAmB;EACjB,UAAU,EAAE;GACV,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,CAAC;EACF,SAAS,EAAE;GACT,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,CAAC;EACH;CACF;AAWH,MAAa,YAAY,OAA4B,EACnD,MACA,IACA,SACA,OACA,GAAG,YACoB;CACvB,MAAM,SAAS,IAAI,OAAO,QAAQ,IAAI,eAAe;CAIrD,MAAM,EAAE,UAAU,SAAS,gBAFH,mBAAmB,OAAO,CAES;CAM3D,MAAM,QAAQ,oBAF6B,YAEb,GAAK,QAAiB;AAEpD,OAAM,OAAO,OACV,KAAK;EACJ,MAAM;EACN;EACA,SAAS,WAAW;EACpB;EACD,CAAC,CACD,OAAO,QAAQ,OAAO,MAAM,IAAI,CAAC;AAEpC,QAAO,KAAK,cAAc,KAAK,MAAM,KAAK"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user.types.mjs","names":[],"sources":["../../../src/types/user.types.ts"],"sourcesContent":["import type { RenameId } from '@utils/mongoDB/types';\nimport type { User as BetterAuthUser, OmitId } from 'better-auth';\nimport type { Document, Model, ObjectIdToString, Types } from 'mongoose';\n\nexport interface UserData {\n email: string;\n name: string;\n phone?: string;\n dateOfBirth?: Date;\n}\n\nexport enum EmailsList {\n NEWS_LETTER = 'newsLetter',\n}\n\nexport type User = OmitId<UserData & BetterAuthUser> & {\n id: Types.ObjectId;\n emailsList?: {\n [key in EmailsList]: boolean;\n };\n customerId?: string; // Stripe customer ID\n role?: string;\n lang?: string;\n createdAt: Date;\n updatedAt: Date;\n};\n\nexport type UserAPI = ObjectIdToString<Omit<User, 'provider' | 'session'>>;\n\nexport type UserSchema = RenameId<User>;\nexport type UserModelType = Model<User>;\nexport type UserDocument = Document<unknown, {}, User> & User;\n"],"mappings":";AAWA,IAAY,oDAAL;AACL"}
|
|
1
|
+
{"version":3,"file":"user.types.mjs","names":[],"sources":["../../../src/types/user.types.ts"],"sourcesContent":["import type { RenameId } from '@utils/mongoDB/types';\nimport type { User as BetterAuthUser, OmitId } from 'better-auth';\nimport type { Document, Model, ObjectIdToString, Types } from 'mongoose';\n\nexport interface UserData {\n email: string;\n name: string;\n phone?: string;\n dateOfBirth?: Date;\n}\n\nexport enum EmailsList {\n NEWS_LETTER = 'newsLetter',\n}\n\nexport type User = OmitId<UserData & BetterAuthUser> & {\n id: Types.ObjectId;\n emailsList?: {\n [key in EmailsList]: boolean;\n };\n customerId?: string; // Stripe customer ID\n role?: string;\n lastLoginMethod?: 'email' | 'google' | 'github' | 'passkey';\n lang?: string;\n createdAt: Date;\n updatedAt: Date;\n};\n\nexport type UserAPI = ObjectIdToString<Omit<User, 'provider' | 'session'>>;\n\nexport type UserSchema = RenameId<User>;\nexport type UserModelType = Model<User>;\nexport type UserDocument = Document<unknown, {}, User> & User;\n"],"mappings":";AAWA,IAAY,oDAAL;AACL"}
|
|
@@ -12,7 +12,9 @@ import { mapSessionToAPI } from "../mapper/session.mjs";
|
|
|
12
12
|
import { betterAuth } from "better-auth";
|
|
13
13
|
import { mongodbAdapter } from "better-auth/adapters/mongodb";
|
|
14
14
|
import { createAuthMiddleware } from "better-auth/api";
|
|
15
|
-
import { customSession } from "better-auth/plugins";
|
|
15
|
+
import { customSession, lastLoginMethod, twoFactor } from "better-auth/plugins";
|
|
16
|
+
import { magicLink } from "better-auth/plugins/magic-link";
|
|
17
|
+
import { passkey } from "better-auth/plugins/passkey";
|
|
16
18
|
|
|
17
19
|
//#region src/utils/auth/getAuth.ts
|
|
18
20
|
const formatSession = (session) => {
|
|
@@ -89,31 +91,55 @@ const getAuth = (dbClient) => {
|
|
|
89
91
|
}
|
|
90
92
|
}
|
|
91
93
|
},
|
|
92
|
-
plugins: [
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
94
|
+
plugins: [
|
|
95
|
+
customSession(async ({ session }) => {
|
|
96
|
+
const typedSession = session;
|
|
97
|
+
let userAPI = null;
|
|
98
|
+
let organizationAPI = null;
|
|
99
|
+
let projectAPI = null;
|
|
100
|
+
if (typedSession.userId) {
|
|
101
|
+
const userData = await getUserById(typedSession.userId);
|
|
102
|
+
if (userData) userAPI = mapUserToAPI(userData);
|
|
103
|
+
}
|
|
104
|
+
if (typedSession.activeOrganizationId) {
|
|
105
|
+
const orgData = await getOrganizationById(typedSession.activeOrganizationId);
|
|
106
|
+
if (orgData) organizationAPI = mapOrganizationToAPI(orgData);
|
|
107
|
+
}
|
|
108
|
+
if (typedSession.activeProjectId) {
|
|
109
|
+
const projectData = await getProjectById(typedSession.activeProjectId);
|
|
110
|
+
if (projectData) projectAPI = mapProjectToAPI(projectData);
|
|
111
|
+
}
|
|
112
|
+
return mapSessionToAPI(formatSession({
|
|
113
|
+
session: typedSession,
|
|
114
|
+
user: userAPI,
|
|
115
|
+
organization: organizationAPI ?? null,
|
|
116
|
+
project: projectAPI ?? null,
|
|
117
|
+
authType: "session"
|
|
118
|
+
}));
|
|
119
|
+
}),
|
|
120
|
+
lastLoginMethod({
|
|
121
|
+
storeInDatabase: true,
|
|
122
|
+
schema: { user: { lastLoginMethod: "lastLoginMethod" } },
|
|
123
|
+
customResolveMethod: (context) => {
|
|
124
|
+
if (context.path === "/magic-link/verify") return "magic-link";
|
|
125
|
+
return null;
|
|
126
|
+
}
|
|
127
|
+
}),
|
|
128
|
+
passkey(),
|
|
129
|
+
twoFactor(),
|
|
130
|
+
magicLink({ sendMagicLink: async ({ email, url }) => {
|
|
131
|
+
logger.info("sending magic link", {
|
|
132
|
+
email,
|
|
133
|
+
url
|
|
134
|
+
});
|
|
135
|
+
await sendEmail({
|
|
136
|
+
type: "magicLink",
|
|
137
|
+
to: email,
|
|
138
|
+
username: email.split("@")[0],
|
|
139
|
+
magicLink: url
|
|
140
|
+
});
|
|
141
|
+
} })
|
|
142
|
+
],
|
|
117
143
|
emailAndPassword: {
|
|
118
144
|
enabled: true,
|
|
119
145
|
disableSignUp: false,
|
|
@@ -134,7 +160,11 @@ const getAuth = (dbClient) => {
|
|
|
134
160
|
},
|
|
135
161
|
accountLinking: {
|
|
136
162
|
enabled: true,
|
|
137
|
-
trustedProviders: [
|
|
163
|
+
trustedProviders: [
|
|
164
|
+
"google",
|
|
165
|
+
"github",
|
|
166
|
+
"linkedin"
|
|
167
|
+
]
|
|
138
168
|
},
|
|
139
169
|
emailVerification: {
|
|
140
170
|
autoSignInAfterVerification: true,
|
|
@@ -171,6 +201,10 @@ const getAuth = (dbClient) => {
|
|
|
171
201
|
github: {
|
|
172
202
|
clientId: process.env.GITHUB_CLIENT_ID,
|
|
173
203
|
clientSecret: process.env.GITHUB_CLIENT_SECRET
|
|
204
|
+
},
|
|
205
|
+
linkedin: {
|
|
206
|
+
clientId: process.env.LINKEDIN_CLIENT_ID,
|
|
207
|
+
clientSecret: process.env.LINKEDIN_CLIENT_SECRET
|
|
174
208
|
}
|
|
175
209
|
},
|
|
176
210
|
logger: { log: (level, message, ...args) => logger[level](message, ...args) }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getAuth.mjs","names":["userAPI: UserAPI | null","organizationAPI: OrganizationAPI | null","projectAPI: ProjectAPI | null"],"sources":["../../../../src/utils/auth/getAuth.ts"],"sourcesContent":["import { sendVerificationUpdate } from '@controllers/user.controller';\nimport { logger } from '@logger';\nimport { sendEmail } from '@services/email.service';\nimport { getOrganizationById } from '@services/organization.service';\nimport { getProjectById } from '@services/project.service';\nimport { getUserById } from '@services/user.service';\nimport { mapOrganizationToAPI } from '@utils/mapper/organization';\nimport { mapProjectToAPI } from '@utils/mapper/project';\nimport { mapSessionToAPI } from '@utils/mapper/session';\nimport { mapUserToAPI } from '@utils/mapper/user';\nimport {\n computeEffectivePermission,\n getSessionRoles,\n intersectPermissions,\n} from '@utils/permissions';\nimport { betterAuth, type OmitId } from 'better-auth';\nimport { mongodbAdapter } from 'better-auth/adapters/mongodb';\nimport { createAuthMiddleware } from 'better-auth/api';\nimport { customSession } from 'better-auth/plugins';\nimport type { MongoClient } from 'mongodb';\nimport type { OrganizationAPI } from '@/types/organization.types';\nimport type { ProjectAPI } from '@/types/project.types';\nimport type {\n Session,\n SessionContext,\n SessionDataApi,\n} from '@/types/session.types';\nimport type { User, UserAPI } from '@/types/user.types';\n\nexport type Auth = ReturnType<typeof betterAuth>;\n\nexport const formatSession = (session: SessionContext): OmitId<Session> => {\n const roles = getSessionRoles(session);\n let permissions = computeEffectivePermission(roles);\n\n // Intersect in the case a Access Token try to override the permissions\n if (session.permissions) {\n permissions = intersectPermissions(permissions, session.permissions);\n }\n\n const resultSession = {\n session: session.session,\n user: session.user,\n organization: session.organization,\n project: session.project,\n authType: 'session',\n permissions,\n roles,\n } as OmitId<Session>;\n\n return resultSession;\n};\n\nexport const getAuth = (dbClient: MongoClient): Auth => {\n if (!dbClient) {\n throw new Error('MongoDB connection not established');\n }\n\n const auth = betterAuth({\n appName: 'Intlayer',\n\n database: mongodbAdapter(dbClient.db()),\n\n /**\n * User model\n */\n user: {\n modelName: 'users',\n },\n\n databaseHooks: {\n user: {\n create: {\n // Runs once, immediately after the INSERT\n after: async (user) => {\n if (!user?.emailVerified) return;\n\n await sendEmail({\n type: 'welcome',\n to: user.email,\n username: user.name ?? user.email.split('@')[0],\n loginLink: `${process.env.CLIENT_URL}/auth/login`,\n locale: (user as any).lang,\n });\n logger.info('Welcome e‑mail delivered', {\n email: user.email,\n });\n },\n },\n },\n },\n\n hooks: {\n after: createAuthMiddleware(async (ctx) => {\n const { path, context } = ctx;\n\n const newUser = context.newSession?.user;\n const existingUser = context.session?.user;\n const user = newUser ?? existingUser;\n\n if (!user) return;\n\n if (['/verify-email'].includes(path)) {\n sendVerificationUpdate(user as unknown as User);\n logger.info('SSE verification update sent', {\n email: user.email,\n userId: user.id,\n });\n\n await sendEmail({\n type: 'welcome',\n to: user.email,\n username: user.name ?? user.email.split('@')[0],\n loginLink: `${process.env.CLIENT_URL}/auth/login`,\n locale: (user as any).lang,\n });\n logger.info('Welcome e‑mail delivered', {\n email: user.email,\n });\n }\n }),\n },\n\n advanced: {\n // 1️⃣ Change or drop the global prefix\n // cookiePrefix: \"intlayer\", // => intlayer.session_token\n cookiePrefix: 'intlayer', // => session_token (no prefix)\n\n // 2️⃣ Override just the session‑token cookie\n cookies: {\n session_token: {\n // name: 'intlayer_session_token', // final name depends on the prefix above\n // attributes: { sameSite: \"lax\", maxAge: 60 * 60 * 24 } // optional\n },\n },\n\n // 3️⃣ (optional) turn off the automatic __Secure‑ prefix in non‑prod\n // useSecureCookies: false,\n },\n\n secret: process.env.AUTH_SECRET as string,\n session: {\n modelName: 'sessions',\n id: 'id',\n\n additionalFields: {\n activeOrganizationId: { type: 'string', nullable: true, input: false },\n activeProjectId: { type: 'string', nullable: true, input: false },\n },\n },\n\n plugins: [\n customSession(async ({ session }) => {\n const typedSession = session as unknown as SessionDataApi;\n\n let userAPI: UserAPI | null = null;\n let organizationAPI: OrganizationAPI | null = null;\n let projectAPI: ProjectAPI | null = null;\n\n if (typedSession.userId) {\n const userData = await getUserById(typedSession.userId);\n\n if (userData) {\n userAPI = mapUserToAPI(userData);\n }\n }\n\n if (typedSession.activeOrganizationId) {\n const orgData = await getOrganizationById(\n typedSession.activeOrganizationId\n );\n\n if (orgData) {\n organizationAPI = mapOrganizationToAPI(orgData);\n }\n }\n if (typedSession.activeProjectId) {\n const projectData = await getProjectById(\n typedSession.activeProjectId\n );\n\n if (projectData) {\n projectAPI = mapProjectToAPI(projectData);\n }\n }\n\n const sessionWithNoPermission: SessionContext = {\n session: typedSession,\n user: userAPI!,\n organization: organizationAPI ?? null,\n project: projectAPI ?? null,\n authType: 'session',\n };\n\n const formattedSession = formatSession(sessionWithNoPermission);\n\n return mapSessionToAPI(formattedSession);\n }),\n ],\n\n emailAndPassword: {\n enabled: true,\n disableSignUp: false,\n requireEmailVerification: true,\n minPasswordLength: 8,\n maxPasswordLength: 128,\n autoSignIn: true,\n sendResetPassword: async ({ user, token }) => {\n logger.info('sending reset password email', { email: user.email });\n await sendEmail({\n type: 'resetPassword',\n to: user.email,\n username: user.name ?? user.email.split('@')[0],\n resetLink: `${process.env.CLIENT_URL}/auth/password/reset?token=${token}`,\n });\n },\n resetPasswordTokenExpiresIn: 3600,\n },\n accountLinking: {\n enabled: true, // allow linking in general\n trustedProviders: ['google', 'github'], // optional: auto‑link when Google verifies the e‑mail\n },\n emailVerification: {\n autoSignInAfterVerification: true,\n sendOnSignIn: true,\n sendVerificationEmail: async ({ user, url }) => {\n logger.info('sending verification email', { email: user.email });\n await sendEmail({\n type: 'validate',\n to: user.email,\n username: user.name ?? user.email.split('@')[0],\n validationLink: url,\n });\n },\n },\n\n crossSubDomainCookies: {\n enabled: true,\n additionalCookies: ['session_token'],\n domain: process.env.CLIENT_URL as string,\n },\n cookiePrefix: 'intlayer',\n cookies: {\n session_token: {\n name: 'session_token',\n attributes: {\n httpOnly: true,\n secure: true,\n },\n },\n },\n\n trustedOrigins: [process.env.CLIENT_URL as string],\n\n socialProviders: {\n google: {\n clientId: process.env.GOOGLE_CLIENT_ID as string,\n clientSecret: process.env.GOOGLE_CLIENT_SECRET as string,\n },\n github: {\n clientId: process.env.GITHUB_CLIENT_ID as string,\n clientSecret: process.env.GITHUB_CLIENT_SECRET as string,\n },\n },\n\n logger: {\n log: (level, message, ...args) => logger[level](message, ...args),\n },\n });\n\n return auth;\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"getAuth.mjs","names":["userAPI: UserAPI | null","organizationAPI: OrganizationAPI | null","projectAPI: ProjectAPI | null"],"sources":["../../../../src/utils/auth/getAuth.ts"],"sourcesContent":["// import { sso } from '@better-auth/sso';\nimport { sendVerificationUpdate } from '@controllers/user.controller';\nimport { logger } from '@logger';\nimport { sendEmail } from '@services/email.service';\nimport { getOrganizationById } from '@services/organization.service';\nimport { getProjectById } from '@services/project.service';\nimport { getUserById } from '@services/user.service';\nimport { mapOrganizationToAPI } from '@utils/mapper/organization';\nimport { mapProjectToAPI } from '@utils/mapper/project';\nimport { mapSessionToAPI } from '@utils/mapper/session';\nimport { mapUserToAPI } from '@utils/mapper/user';\nimport {\n computeEffectivePermission,\n getSessionRoles,\n intersectPermissions,\n} from '@utils/permissions';\nimport { betterAuth, type OmitId } from 'better-auth';\nimport { mongodbAdapter } from 'better-auth/adapters/mongodb';\nimport { createAuthMiddleware } from 'better-auth/api';\nimport { customSession, lastLoginMethod, twoFactor } from 'better-auth/plugins';\nimport { magicLink } from 'better-auth/plugins/magic-link';\nimport { passkey } from 'better-auth/plugins/passkey';\nimport type { MongoClient } from 'mongodb';\nimport type { OrganizationAPI } from '@/types/organization.types';\nimport type { ProjectAPI } from '@/types/project.types';\nimport type {\n Session,\n SessionContext,\n SessionDataApi,\n} from '@/types/session.types';\nimport type { User, UserAPI } from '@/types/user.types';\n\nexport type Auth = ReturnType<typeof betterAuth>;\n\nexport const formatSession = (session: SessionContext): OmitId<Session> => {\n const roles = getSessionRoles(session);\n let permissions = computeEffectivePermission(roles);\n\n // Intersect in the case a Access Token try to override the permissions\n if (session.permissions) {\n permissions = intersectPermissions(permissions, session.permissions);\n }\n\n const resultSession = {\n session: session.session,\n user: session.user,\n organization: session.organization,\n project: session.project,\n authType: 'session',\n permissions,\n roles,\n } as OmitId<Session>;\n\n return resultSession;\n};\n\nexport const getAuth = (dbClient: MongoClient): Auth => {\n if (!dbClient) {\n throw new Error('MongoDB connection not established');\n }\n\n const auth = betterAuth({\n appName: 'Intlayer',\n\n database: mongodbAdapter(dbClient.db()),\n\n /**\n * User model\n */\n user: {\n modelName: 'users',\n },\n\n databaseHooks: {\n user: {\n create: {\n // Runs once, immediately after the INSERT\n after: async (user) => {\n if (!user?.emailVerified) return;\n\n await sendEmail({\n type: 'welcome',\n to: user.email,\n username: user.name ?? user.email.split('@')[0],\n loginLink: `${process.env.CLIENT_URL}/auth/login`,\n locale: (user as any).lang,\n });\n logger.info('Welcome e‑mail delivered', {\n email: user.email,\n });\n },\n },\n },\n },\n\n hooks: {\n after: createAuthMiddleware(async (ctx) => {\n const { path, context } = ctx;\n\n const newUser = context.newSession?.user;\n const existingUser = context.session?.user;\n const user = newUser ?? existingUser;\n\n if (!user) return;\n\n if (['/verify-email'].includes(path)) {\n sendVerificationUpdate(user as unknown as User);\n logger.info('SSE verification update sent', {\n email: user.email,\n userId: user.id,\n });\n\n await sendEmail({\n type: 'welcome',\n to: user.email,\n username: user.name ?? user.email.split('@')[0],\n loginLink: `${process.env.CLIENT_URL}/auth/login`,\n locale: (user as any).lang,\n });\n logger.info('Welcome e‑mail delivered', {\n email: user.email,\n });\n }\n }),\n },\n\n advanced: {\n // 1️⃣ Change or drop the global prefix\n // cookiePrefix: \"intlayer\", // => intlayer.session_token\n cookiePrefix: 'intlayer', // => session_token (no prefix)\n\n // 2️⃣ Override just the session‑token cookie\n cookies: {\n session_token: {\n // name: 'intlayer_session_token', // final name depends on the prefix above\n // attributes: { sameSite: \"lax\", maxAge: 60 * 60 * 24 } // optional\n },\n },\n\n // 3️⃣ (optional) turn off the automatic __Secure‑ prefix in non‑prod\n // useSecureCookies: false,\n },\n\n secret: process.env.AUTH_SECRET as string,\n session: {\n modelName: 'sessions',\n id: 'id',\n\n additionalFields: {\n activeOrganizationId: { type: 'string', nullable: true, input: false },\n activeProjectId: { type: 'string', nullable: true, input: false },\n },\n },\n\n plugins: [\n customSession(async ({ session }) => {\n const typedSession = session as unknown as SessionDataApi;\n\n let userAPI: UserAPI | null = null;\n let organizationAPI: OrganizationAPI | null = null;\n let projectAPI: ProjectAPI | null = null;\n\n if (typedSession.userId) {\n const userData = await getUserById(typedSession.userId);\n\n if (userData) {\n userAPI = mapUserToAPI(userData);\n }\n }\n\n if (typedSession.activeOrganizationId) {\n const orgData = await getOrganizationById(\n typedSession.activeOrganizationId\n );\n\n if (orgData) {\n organizationAPI = mapOrganizationToAPI(orgData);\n }\n }\n if (typedSession.activeProjectId) {\n const projectData = await getProjectById(\n typedSession.activeProjectId\n );\n\n if (projectData) {\n projectAPI = mapProjectToAPI(projectData);\n }\n }\n\n const sessionWithNoPermission: SessionContext = {\n session: typedSession,\n user: userAPI!,\n organization: organizationAPI ?? null,\n project: projectAPI ?? null,\n authType: 'session',\n };\n\n const formattedSession = formatSession(sessionWithNoPermission);\n\n return mapSessionToAPI(formattedSession);\n }),\n lastLoginMethod({\n storeInDatabase: true, // adds user.lastLoginMethod in DB and session\n schema: {\n user: {\n lastLoginMethod: 'lastLoginMethod', // Custom field name\n },\n },\n customResolveMethod: (context) => {\n // When user clicks the magic link\n if (context.path === '/magic-link/verify') {\n return 'magic-link';\n }\n\n // Fallback to default behavior for everything else\n return null;\n },\n }),\n passkey(),\n twoFactor(),\n magicLink({\n sendMagicLink: async ({ email, url }) => {\n logger.info('sending magic link', { email, url });\n await sendEmail({\n type: 'magicLink',\n to: email,\n username: email.split('@')[0],\n magicLink: url,\n });\n },\n }),\n // sso(),\n ],\n\n emailAndPassword: {\n enabled: true,\n disableSignUp: false,\n requireEmailVerification: true,\n minPasswordLength: 8,\n maxPasswordLength: 128,\n autoSignIn: true,\n sendResetPassword: async ({ user, token }) => {\n logger.info('sending reset password email', { email: user.email });\n await sendEmail({\n type: 'resetPassword',\n to: user.email,\n username: user.name ?? user.email.split('@')[0],\n resetLink: `${process.env.CLIENT_URL}/auth/password/reset?token=${token}`,\n });\n },\n resetPasswordTokenExpiresIn: 3600,\n },\n accountLinking: {\n enabled: true, // allow linking in general\n trustedProviders: ['google', 'github', 'linkedin'], // optional: auto‑link when Google verifies the e‑mail\n },\n emailVerification: {\n autoSignInAfterVerification: true,\n sendOnSignIn: true,\n sendVerificationEmail: async ({ user, url }) => {\n logger.info('sending verification email', { email: user.email });\n await sendEmail({\n type: 'validate',\n to: user.email,\n username: user.name ?? user.email.split('@')[0],\n validationLink: url,\n });\n },\n },\n\n crossSubDomainCookies: {\n enabled: true,\n additionalCookies: ['session_token'],\n domain: process.env.CLIENT_URL as string,\n },\n cookiePrefix: 'intlayer',\n cookies: {\n session_token: {\n name: 'session_token',\n attributes: {\n httpOnly: true,\n secure: true,\n },\n },\n },\n\n trustedOrigins: [process.env.CLIENT_URL as string],\n\n socialProviders: {\n google: {\n clientId: process.env.GOOGLE_CLIENT_ID as string,\n clientSecret: process.env.GOOGLE_CLIENT_SECRET as string,\n },\n github: {\n clientId: process.env.GITHUB_CLIENT_ID as string,\n clientSecret: process.env.GITHUB_CLIENT_SECRET as string,\n },\n linkedin: {\n clientId: process.env.LINKEDIN_CLIENT_ID as string,\n clientSecret: process.env.LINKEDIN_CLIENT_SECRET as string,\n },\n // socialProviders: {\n // apple: {\n // clientId: process.env.APPLE_CLIENT_ID as string,\n // clientSecret: process.env.APPLE_CLIENT_SECRET as string,\n // // Optional\n // appBundleIdentifier: process.env\n // .APPLE_APP_BUNDLE_IDENTIFIER as string,\n // },\n // },\n // // Add appleid.apple.com to trustedOrigins for Sign In with Apple flows\n // trustedOrigins: ['https://appleid.apple.com'],\n },\n\n logger: {\n log: (level, message, ...args) => logger[level](message, ...args),\n },\n });\n\n return auth;\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAkCA,MAAa,iBAAiB,YAA6C;CACzE,MAAM,QAAQ,gBAAgB,QAAQ;CACtC,IAAI,cAAc,2BAA2B,MAAM;AAGnD,KAAI,QAAQ,YACV,eAAc,qBAAqB,aAAa,QAAQ,YAAY;AAatE,QAVsB;EACpB,SAAS,QAAQ;EACjB,MAAM,QAAQ;EACd,cAAc,QAAQ;EACtB,SAAS,QAAQ;EACjB,UAAU;EACV;EACA;EACD;;AAKH,MAAa,WAAW,aAAgC;AACtD,KAAI,CAAC,SACH,OAAM,IAAI,MAAM,qCAAqC;AAqQvD,QAlQa,WAAW;EACtB,SAAS;EAET,UAAU,eAAe,SAAS,IAAI,CAAC;EAKvC,MAAM,EACJ,WAAW,SACZ;EAED,eAAe,EACb,MAAM,EACJ,QAAQ,EAEN,OAAO,OAAO,SAAS;AACrB,OAAI,CAAC,MAAM,cAAe;AAE1B,SAAM,UAAU;IACd,MAAM;IACN,IAAI,KAAK;IACT,UAAU,KAAK,QAAQ,KAAK,MAAM,MAAM,IAAI,CAAC;IAC7C,WAAW,GAAG,QAAQ,IAAI,WAAW;IACrC,QAAS,KAAa;IACvB,CAAC;AACF,UAAO,KAAK,4BAA4B,EACtC,OAAO,KAAK,OACb,CAAC;KAEL,EACF,EACF;EAED,OAAO,EACL,OAAO,qBAAqB,OAAO,QAAQ;GACzC,MAAM,EAAE,MAAM,YAAY;GAE1B,MAAM,UAAU,QAAQ,YAAY;GACpC,MAAM,eAAe,QAAQ,SAAS;GACtC,MAAM,OAAO,WAAW;AAExB,OAAI,CAAC,KAAM;AAEX,OAAI,CAAC,gBAAgB,CAAC,SAAS,KAAK,EAAE;AACpC,2BAAuB,KAAwB;AAC/C,WAAO,KAAK,gCAAgC;KAC1C,OAAO,KAAK;KACZ,QAAQ,KAAK;KACd,CAAC;AAEF,UAAM,UAAU;KACd,MAAM;KACN,IAAI,KAAK;KACT,UAAU,KAAK,QAAQ,KAAK,MAAM,MAAM,IAAI,CAAC;KAC7C,WAAW,GAAG,QAAQ,IAAI,WAAW;KACrC,QAAS,KAAa;KACvB,CAAC;AACF,WAAO,KAAK,4BAA4B,EACtC,OAAO,KAAK,OACb,CAAC;;IAEJ,EACH;EAED,UAAU;GAGR,cAAc;GAGd,SAAS,EACP,eAAe,EAGd,EACF;GAIF;EAED,QAAQ,QAAQ,IAAI;EACpB,SAAS;GACP,WAAW;GACX,IAAI;GAEJ,kBAAkB;IAChB,sBAAsB;KAAE,MAAM;KAAU,UAAU;KAAM,OAAO;KAAO;IACtE,iBAAiB;KAAE,MAAM;KAAU,UAAU;KAAM,OAAO;KAAO;IAClE;GACF;EAED,SAAS;GACP,cAAc,OAAO,EAAE,cAAc;IACnC,MAAM,eAAe;IAErB,IAAIA,UAA0B;IAC9B,IAAIC,kBAA0C;IAC9C,IAAIC,aAAgC;AAEpC,QAAI,aAAa,QAAQ;KACvB,MAAM,WAAW,MAAM,YAAY,aAAa,OAAO;AAEvD,SAAI,SACF,WAAU,aAAa,SAAS;;AAIpC,QAAI,aAAa,sBAAsB;KACrC,MAAM,UAAU,MAAM,oBACpB,aAAa,qBACd;AAED,SAAI,QACF,mBAAkB,qBAAqB,QAAQ;;AAGnD,QAAI,aAAa,iBAAiB;KAChC,MAAM,cAAc,MAAM,eACxB,aAAa,gBACd;AAED,SAAI,YACF,cAAa,gBAAgB,YAAY;;AAc7C,WAAO,gBAFkB,cARuB;KAC9C,SAAS;KACT,MAAM;KACN,cAAc,mBAAmB;KACjC,SAAS,cAAc;KACvB,UAAU;KACX,CAE8D,CAEvB;KACxC;GACF,gBAAgB;IACd,iBAAiB;IACjB,QAAQ,EACN,MAAM,EACJ,iBAAiB,mBAClB,EACF;IACD,sBAAsB,YAAY;AAEhC,SAAI,QAAQ,SAAS,qBACnB,QAAO;AAIT,YAAO;;IAEV,CAAC;GACF,SAAS;GACT,WAAW;GACX,UAAU,EACR,eAAe,OAAO,EAAE,OAAO,UAAU;AACvC,WAAO,KAAK,sBAAsB;KAAE;KAAO;KAAK,CAAC;AACjD,UAAM,UAAU;KACd,MAAM;KACN,IAAI;KACJ,UAAU,MAAM,MAAM,IAAI,CAAC;KAC3B,WAAW;KACZ,CAAC;MAEL,CAAC;GAEH;EAED,kBAAkB;GAChB,SAAS;GACT,eAAe;GACf,0BAA0B;GAC1B,mBAAmB;GACnB,mBAAmB;GACnB,YAAY;GACZ,mBAAmB,OAAO,EAAE,MAAM,YAAY;AAC5C,WAAO,KAAK,gCAAgC,EAAE,OAAO,KAAK,OAAO,CAAC;AAClE,UAAM,UAAU;KACd,MAAM;KACN,IAAI,KAAK;KACT,UAAU,KAAK,QAAQ,KAAK,MAAM,MAAM,IAAI,CAAC;KAC7C,WAAW,GAAG,QAAQ,IAAI,WAAW,6BAA6B;KACnE,CAAC;;GAEJ,6BAA6B;GAC9B;EACD,gBAAgB;GACd,SAAS;GACT,kBAAkB;IAAC;IAAU;IAAU;IAAW;GACnD;EACD,mBAAmB;GACjB,6BAA6B;GAC7B,cAAc;GACd,uBAAuB,OAAO,EAAE,MAAM,UAAU;AAC9C,WAAO,KAAK,8BAA8B,EAAE,OAAO,KAAK,OAAO,CAAC;AAChE,UAAM,UAAU;KACd,MAAM;KACN,IAAI,KAAK;KACT,UAAU,KAAK,QAAQ,KAAK,MAAM,MAAM,IAAI,CAAC;KAC7C,gBAAgB;KACjB,CAAC;;GAEL;EAED,uBAAuB;GACrB,SAAS;GACT,mBAAmB,CAAC,gBAAgB;GACpC,QAAQ,QAAQ,IAAI;GACrB;EACD,cAAc;EACd,SAAS,EACP,eAAe;GACb,MAAM;GACN,YAAY;IACV,UAAU;IACV,QAAQ;IACT;GACF,EACF;EAED,gBAAgB,CAAC,QAAQ,IAAI,WAAqB;EAElD,iBAAiB;GACf,QAAQ;IACN,UAAU,QAAQ,IAAI;IACtB,cAAc,QAAQ,IAAI;IAC3B;GACD,QAAQ;IACN,UAAU,QAAQ,IAAI;IACtB,cAAc,QAAQ,IAAI;IAC3B;GACD,UAAU;IACR,UAAU,QAAQ,IAAI;IACtB,cAAc,QAAQ,IAAI;IAC3B;GAYF;EAED,QAAQ,EACN,MAAM,OAAO,SAAS,GAAG,SAAS,OAAO,OAAO,SAAS,GAAG,KAAK,EAClE;EACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connectDB.mjs","names":[],"sources":["../../../../src/utils/mongoDB/connectDB.ts"],"sourcesContent":["import { logger } from '@logger';\nimport { DictionaryModel } from '@models/dictionary.model';\nimport { OAuth2AccessTokenModel } from '@models/oAuth2.model';\nimport { OrganizationModel } from '@models/organization.model';\nimport { ProjectModel } from '@models/project.model';\nimport { TagModel } from '@models/tag.model';\nimport { UserModel } from '@models/user.model';\nimport { connect } from 'mongoose';\n\nexport const connectDB = async () => {\n try {\n const client = await connect(\n `mongodb+srv://${process.env.DB_ID}:${process.env.DB_MDP}@${process.env.DB_CLUSTER}/?retryWrites=true&w=majority&appName=Cluster0`\n );\n\n logger.info('MongoDB connected');\n\n // Recreate indexes for models\n await ProjectModel.syncIndexes();\n await UserModel.createIndexes();\n await OAuth2AccessTokenModel.createIndexes();\n await TagModel.createIndexes();\n await DictionaryModel.createIndexes();\n await OrganizationModel.createIndexes();\n\n // Return the underlying MongoDB client for better-auth\n return client.connection.getClient();\n } catch (error) {\n const errorMessage = `MongoDB connection error - ${(error as Error).message}`;\n\n logger.error(errorMessage);\n throw new Error(errorMessage);\n }\n};\n"],"mappings":";;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"connectDB.mjs","names":[],"sources":["../../../../src/utils/mongoDB/connectDB.ts"],"sourcesContent":["import { logger } from '@logger';\nimport { DictionaryModel } from '@models/dictionary.model';\nimport { OAuth2AccessTokenModel } from '@models/oAuth2.model';\nimport { OrganizationModel } from '@models/organization.model';\nimport { ProjectModel } from '@models/project.model';\nimport { TagModel } from '@models/tag.model';\nimport { UserModel } from '@models/user.model';\nimport type { MongoClient } from 'mongodb';\nimport { connect } from 'mongoose';\n\nexport const connectDB = async (): Promise<MongoClient> => {\n try {\n const client = await connect(\n `mongodb+srv://${process.env.DB_ID}:${process.env.DB_MDP}@${process.env.DB_CLUSTER}/?retryWrites=true&w=majority&appName=Cluster0`\n );\n\n logger.info('MongoDB connected');\n\n // Recreate indexes for models\n await ProjectModel.syncIndexes();\n await UserModel.createIndexes();\n await OAuth2AccessTokenModel.createIndexes();\n await TagModel.createIndexes();\n await DictionaryModel.createIndexes();\n await OrganizationModel.createIndexes();\n\n // Return the underlying MongoDB client for better-auth\n return client.connection.getClient();\n } catch (error) {\n const errorMessage = `MongoDB connection error - ${(error as Error).message}`;\n\n logger.error(errorMessage);\n throw new Error(errorMessage);\n }\n};\n"],"mappings":";;;;;;;;;;AAUA,MAAa,YAAY,YAAkC;AACzD,KAAI;EACF,MAAM,SAAS,MAAM,QACnB,iBAAiB,QAAQ,IAAI,MAAM,GAAG,QAAQ,IAAI,OAAO,GAAG,QAAQ,IAAI,WAAW,gDACpF;AAED,SAAO,KAAK,oBAAoB;AAGhC,QAAM,aAAa,aAAa;AAChC,QAAM,UAAU,eAAe;AAC/B,QAAM,uBAAuB,eAAe;AAC5C,QAAM,SAAS,eAAe;AAC9B,QAAM,gBAAgB,eAAe;AACrC,QAAM,kBAAkB,eAAe;AAGvC,SAAO,OAAO,WAAW,WAAW;UAC7B,OAAO;EACd,MAAM,eAAe,8BAA+B,MAAgB;AAEpE,SAAO,MAAM,aAAa;AAC1B,QAAM,IAAI,MAAM,aAAa"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MagicLinkEmail.d.ts","names":[],"sources":["../../src/emails/MagicLinkEmail.tsx"],"sourcesContent":[],"mappings":";KAgBY,mBAAA;EAAA,QAAA,EAAA,MAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai.controller.d.ts","names":[],"sources":["../../../src/controllers/ai.controller.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;;;;;;KAoCK,8BAA8B,KAAK;cAC1B;AAHuC,CAAA;AAEb,KAI5B,eAAA,GACV,wBALsC,CAKb,kBALa,CAAA,GAAA;EAAL,QAAA,CAAA,EAAA,MAAA,EAAA;EACrB,kBAAA,CAAA,EAAA,MAAA;CAAS;AAGX,KAKA,iBAAA,GACV,YALyB,CAKZ,qBALW,CAAA;AAId,cAGC,WAHgB,EAAA,
|
|
1
|
+
{"version":3,"file":"ai.controller.d.ts","names":[],"sources":["../../../src/controllers/ai.controller.ts"],"sourcesContent":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ import { ResponseWithSession } from "../middlewares/sessionAuth.middleware.js";
|
|
|
3
3
|
import { FiltersAndPagination } from "../utils/filtersAndPagination/getFiltersAndPaginationFromBody.js";
|
|
4
4
|
import { PaginatedResponse, ResponseData } from "../utils/responseData.js";
|
|
5
5
|
import { DictionaryFiltersParams } from "../utils/filtersAndPagination/getDictionaryFiltersAndPagination.js";
|
|
6
|
-
import { Dictionary } from "@intlayer/types";
|
|
6
|
+
import { Dictionary, DictionaryId, LocalDictionaryId } from "@intlayer/types";
|
|
7
7
|
import { NextFunction, Request } from "express";
|
|
8
8
|
|
|
9
9
|
//#region src/controllers/dictionary.controller.d.ts
|
|
@@ -18,7 +18,10 @@ type GetDictionariesKeysResult = ResponseData<string[]>;
|
|
|
18
18
|
* Retrieves a list of dictionaries keys based on filters and pagination.
|
|
19
19
|
*/
|
|
20
20
|
declare const getDictionariesKeys: (_req: Request, res: ResponseWithSession<GetDictionariesKeysResult>, _next: NextFunction) => Promise<void>;
|
|
21
|
-
type GetDictionariesUpdateTimestampResult = ResponseData<Record<
|
|
21
|
+
type GetDictionariesUpdateTimestampResult = ResponseData<Record<DictionaryId, {
|
|
22
|
+
key: string;
|
|
23
|
+
updatedAt: number;
|
|
24
|
+
}>>;
|
|
22
25
|
/**
|
|
23
26
|
* Retrieves a list of dictionaries keys based on filters and pagination.
|
|
24
27
|
*/
|
|
@@ -46,10 +49,20 @@ type PushDictionariesBody = {
|
|
|
46
49
|
dictionaries: Dictionary[];
|
|
47
50
|
};
|
|
48
51
|
type PushDictionariesResultData = {
|
|
49
|
-
newDictionaries:
|
|
50
|
-
|
|
52
|
+
newDictionaries: {
|
|
53
|
+
key: string;
|
|
54
|
+
localId: LocalDictionaryId;
|
|
55
|
+
id: string | undefined;
|
|
56
|
+
}[];
|
|
57
|
+
updatedDictionaries: {
|
|
58
|
+
key: string;
|
|
59
|
+
localId: LocalDictionaryId;
|
|
60
|
+
id: string | undefined;
|
|
61
|
+
}[];
|
|
51
62
|
error: {
|
|
52
|
-
|
|
63
|
+
id: string | undefined;
|
|
64
|
+
key: string;
|
|
65
|
+
localId: LocalDictionaryId | undefined;
|
|
53
66
|
message: string;
|
|
54
67
|
}[];
|
|
55
68
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dictionary.controller.d.ts","names":[],"sources":["../../../src/controllers/dictionary.controller.ts"],"sourcesContent":[],"mappings":";;;;;;;;;
|
|
1
|
+
{"version":3,"file":"dictionary.controller.d.ts","names":[],"sources":["../../../src/controllers/dictionary.controller.ts"],"sourcesContent":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projectAccessKey.controller.d.ts","names":[],"sources":["../../../src/controllers/projectAccessKey.controller.ts"],"sourcesContent":[],"mappings":";;;;;;KAUY,mBAAA,GAAsB;KACtB,uBAAA,GAA0B,aAAa;AADnD;AACA;AAKA;AACe,cADF,eACE,EAAA,CAAA,GAAA,EAAR,OAAQ,CAAA,mBAAA,CAAA,EAAA,GAAA,EACR,mBADQ,CACY,uBADZ,CAAA,EAAA,KAAA,EAEN,YAFM,EAAA,GAGZ,OAHY,CAAA,IAAA,CAAA;AAAR,KA6EK,mBAAA,GA7EL;EACoB,QAAA,EAAA,MAAA;CAApB;AACE,KA4EG,uBAAA,GAA0B,YA5E7B,CAAA,IAAA,CAAA;;;AA2ET;AACY,cAKC,eALsB,EAAA,CAAA,
|
|
1
|
+
{"version":3,"file":"projectAccessKey.controller.d.ts","names":[],"sources":["../../../src/controllers/projectAccessKey.controller.ts"],"sourcesContent":[],"mappings":";;;;;;KAUY,mBAAA,GAAsB;KACtB,uBAAA,GAA0B,aAAa;AADnD;AACA;AAKA;AACe,cADF,eACE,EAAA,CAAA,GAAA,EAAR,OAAQ,CAAA,mBAAA,CAAA,EAAA,GAAA,EACR,mBADQ,CACY,uBADZ,CAAA,EAAA,KAAA,EAEN,YAFM,EAAA,GAGZ,OAHY,CAAA,IAAA,CAAA;AAAR,KA6EK,mBAAA,GA7EL;EACoB,QAAA,EAAA,MAAA;CAApB;AACE,KA4EG,uBAAA,GAA0B,YA5E7B,CAAA,IAAA,CAAA;;;AA2ET;AACY,cAKC,eALsB,EAAA,CAAA,GAAA,EAM5B,OAN+B,EAAA,GAAY,EAO3C,mBAP2C,CAOvB,uBAPuB,CAAA,EAAA,KAAA,EAQzC,YARyC,EAAA,GAS/C,OAT+C,CAAA,IAAA,CAAA;AAKrC,KAwED,oBAAA,GAFX;EArEM,QAAA,EAAA,MAAA;CACoB;AAApB,KAuEK,wBAAA,GAA2B,YAvEhC,CAuE6C,YAvE7C,CAAA;;;;AAsEK,cAMC,gBANmB,EAAA,CAAA,GAAA,EAOzB,OAPyB,CAOjB,oBAPiB,CAAA,EAAA,GAAA,EAQzB,mBARyB,CAQL,wBARK,CAAA,EAAA,KAAA,EASvB,YATuB,EAAA,GAU7B,OAV6B,CAAA,IAAA,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stripe.controller.d.ts","names":[],"sources":["../../../src/controllers/stripe.controller.ts"],"sourcesContent":[],"mappings":";;;;;;;;KAYY,cAAA;;EAAA,SAAA,CAAA,EAAA,MAAc;AAK1B,CAAA;AAQa,KARD,gBAAA,GAAmB,YAyB9B,CAzB2C,aAyB3C,CAAA;;;;;;;AAEW,cAnBC,UAmBqB,EAAA,CAAA,GAAA,EAlB3B,OAkB2B,CAAA,SAAA,EAAA,SAAA,EAlBG,cAkBH,CAAA,EAAA,GAAA,EAjB3B,mBAiB2B,CAjBP,gBAiBO,CAAA,EAAA,GAjBU,OAiBV,CAAA,IAAA,CAAA;AAKtB,KALA,sBAAA,GAKwB;EACJ,OAAO,EAAA,MAAA;EAAvB,SAAO,CAAA,EAAA,MAAA;CADgB;AAAY,KAAvC,wBAAA,GAA2B,YAAY,CAAA;EAUtC,YAAA,EATG,MAAA,CAAO,QAoItB,CApI+B,MAAA,CAAO,YAoItC,CAAA;EA1HoC,YAAA,EAAA,MAAA;CAA9B,CAAA;;;;;AA0HL;AAIG,cA/HQ,eA+HgB,EAAA,CAAA,
|
|
1
|
+
{"version":3,"file":"stripe.controller.d.ts","names":[],"sources":["../../../src/controllers/stripe.controller.ts"],"sourcesContent":[],"mappings":";;;;;;;;KAYY,cAAA;;EAAA,SAAA,CAAA,EAAA,MAAc;AAK1B,CAAA;AAQa,KARD,gBAAA,GAAmB,YAyB9B,CAzB2C,aAyB3C,CAAA;;;;;;;AAEW,cAnBC,UAmBqB,EAAA,CAAA,GAAA,EAlB3B,OAkB2B,CAAA,SAAA,EAAA,SAAA,EAlBG,cAkBH,CAAA,EAAA,GAAA,EAjB3B,mBAiB2B,CAjBP,gBAiBO,CAAA,EAAA,GAjBU,OAiBV,CAAA,IAAA,CAAA;AAKtB,KALA,sBAAA,GAKwB;EACJ,OAAO,EAAA,MAAA;EAAvB,SAAO,CAAA,EAAA,MAAA;CADgB;AAAY,KAAvC,wBAAA,GAA2B,YAAY,CAAA;EAUtC,YAAA,EATG,MAAA,CAAO,QAoItB,CApI+B,MAAA,CAAO,YAoItC,CAAA;EA1HoC,YAAA,EAAA,MAAA;CAA9B,CAAA;;;;;AA0HL;AAIG,cA/HQ,eA+HgB,EAAA,CAAA,GAAgB,EA9HtC,OA8HsC,CAAA,SAAA,EAAA,SAAb,EA9HK,sBA8HO,CAAA,EAAA,GAAA,EA7HrC,mBA6HqC,CA7HjB,wBA6HiB,CAAA,EAAA,GA5HzC,OA4HyC,CAAA,IAAA,CAAA;AAO5C,KATK,sBAAA,GAAyB,YA2F7B,CAAA,MAAA,CAAA;KAzFI,wBAAA,GAA2B,YAQxB,CARqC,sBAQrC,CAAA;;;;;;cADK,2BACL,cACD,oBAAoB,8BACxB"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as react_jsx_runtime5 from "react/jsx-runtime";
|
|
2
2
|
|
|
3
3
|
//#region src/emails/InviteUserEmail.d.ts
|
|
4
4
|
type InviteUserEmailProps = {
|
|
@@ -19,7 +19,7 @@ declare const InviteUserEmailEN: {
|
|
|
19
19
|
inviteLink,
|
|
20
20
|
inviteFromIp,
|
|
21
21
|
inviteFromLocation
|
|
22
|
-
}: InviteUserEmailProps):
|
|
22
|
+
}: InviteUserEmailProps): react_jsx_runtime5.JSX.Element;
|
|
23
23
|
PreviewProps: InviteUserEmailProps;
|
|
24
24
|
};
|
|
25
25
|
declare const InviteUserEmailFR: {
|
|
@@ -31,7 +31,7 @@ declare const InviteUserEmailFR: {
|
|
|
31
31
|
inviteLink,
|
|
32
32
|
inviteFromIp,
|
|
33
33
|
inviteFromLocation
|
|
34
|
-
}: InviteUserEmailProps):
|
|
34
|
+
}: InviteUserEmailProps): react_jsx_runtime5.JSX.Element;
|
|
35
35
|
PreviewProps: InviteUserEmailProps;
|
|
36
36
|
};
|
|
37
37
|
declare const InviteUserEmailES: {
|
|
@@ -43,7 +43,7 @@ declare const InviteUserEmailES: {
|
|
|
43
43
|
inviteLink,
|
|
44
44
|
inviteFromIp,
|
|
45
45
|
inviteFromLocation
|
|
46
|
-
}: InviteUserEmailProps):
|
|
46
|
+
}: InviteUserEmailProps): react_jsx_runtime5.JSX.Element;
|
|
47
47
|
PreviewProps: InviteUserEmailProps;
|
|
48
48
|
};
|
|
49
49
|
//#endregion
|