The deep properties add properties to the objects created from your stamps. These are default properties of your objects. But unlike regular (shallow) properties these are deeply merged together by stamp .
Copy const AuthServiceToken = stampit.deepProps({
Secrets: {
authServiceToken: process.env.AUTH_SERVICE_TOKEN
}
})
const S3KeyIdAndSecret = stampit.deepProps({
Secrets: {
S3: {
keyId: process.env.AWS_ACCESS_KEY_ID,
secret: process.env.AWS_SECRET_ACCESS_KEY
}
}
})
const DefaultSecrets = stampit(AuthServiceToken, S3KeyIdAndSecret) // composing them together
DefaultSecrets().Secrets.authServiceToken === process.env.AUTH_SERVICE_TOKEN
DefaultSecrets().Secrets.S3.keyId === process.env.AWS_ACCESS_KEY_ID
DefaultSecrets().Secrets.S3.secret === process.env.AWS_SECRET_ACCESS_KEY
Copy S3KeyIdAndSecret().Secrets !== DefaultSecrets().Secrets // NEVER EQUAL! NO MATTER WHAT!
Copy const NullSecrets = stampit.props({
Secrets: null
})
const AuthServiceToken = stampit.deepProps({
Secrets: {
authServiceToken: process.env.AUTH_SERVICE_TOKEN
}
})
const Result = NullSecrets.compose(AuthServiceToken)
Result().Secrets === null // the regular property overwrites deep property while creating an object
Exactly the same stamp can be created in few ways. Here they all are.
Copy const mySecrets = { authServiceToken: process.env.AUTH_SERVICE_TOKEN }
const AuthServiceToken = stampit({
deepProps: {
Secrets: mySecrets
}
})
const HasLog = stampit({
deepProperties: {
Secrets: mySecrets
}
})
const HasLog = stampit.deepProps({
Secrets: mySecrets
})
const HasLog = stampit.deepProperties({
Secrets: mySecrets
})
const HasLog = stampit().deepProps({
Secrets: mySecrets
})
const HasLog = stampit().deepProperties({
Secrets: mySecrets
})