@pulumi/awsx
Version:
[](https://github.com/pulumi/pulumi-awsx/actions) [](https://slack.pulumi.com) [;
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
var ownKeys = function(o) {
ownKeys = Object.getOwnPropertyNames || function (o) {
var ar = [];
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
return ar;
};
return ownKeys(o);
};
return function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
__setModuleDefault(result, mod);
return result;
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
exports.Capture = Capture;
exports.sha1hash = sha1hash;
exports.combineArrays = combineArrays;
exports.ifUndefined = ifUndefined;
exports.checkCompat = checkCompat;
exports.mergeTags = mergeTags;
exports.isInstance = isInstance;
exports.hasTrueBooleanMember = hasTrueBooleanMember;
exports.getRegionFromOpts = getRegionFromOpts;
exports.getRegion = getRegion;
const aws = __importStar(require("@pulumi/aws"));
const pulumi = __importStar(require("@pulumi/pulumi"));
const crypto = __importStar(require("crypto"));
/** @internal */
function Capture(t) {
return t;
}
// sha1hash returns a partial SHA1 hash of the input string.
/** @internal */
function sha1hash(s) {
const shasum = crypto.createHash("sha1");
shasum.update(s);
// TODO[pulumi/pulumi#377] Workaround for issue with long names not generating per-deplioyment randomness, leading
// to collisions. For now, limit the size of hashes to ensure we generate shorter/ resource names.
return shasum.digest("hex").substring(0, 8);
}
/** @internal */
function combineArrays(e1, e2) {
const result = pulumi.all([e1, e2]).apply(([e1, e2]) => {
e1 = e1 || [];
e2 = e2 || [];
return [...e1, ...e2];
});
return result;
}
/** @internal */
function ifUndefined(input, value) {
return pulumi.all([input, value])
.apply(([input, value]) => input !== undefined ? input : value);
}
/** @internal */
function checkCompat() {
return undefined;
}
/** @internal */
function mergeTags(tags1, tags2) {
return pulumi.all([tags1, tags2]).apply(([tags1, tags2]) => ({
...(tags1 || {}),
...(tags2 || {}),
}));
}
/**
* Common code for doing RTTI typechecks. RTTI is done by having a boolean property on an object
* with a special name (like "__resource" or "__asset"). This function checks that the object
* exists, has a **boolean** property with that name, and that that boolean property has the value
* of 'true'. Checking that property is 'boolean' helps ensure that this test works even on proxies
* that synthesize properties dynamically (like Output). Checking that the property has the 'true'
* value isn't strictly necessary, but works to make sure that the impls are following a common
* pattern.
*/
/** @internal */
function isInstance(obj, name) {
return hasTrueBooleanMember(obj, name);
}
/** @internal */
function hasTrueBooleanMember(obj, memberName) {
if (obj === undefined || obj === null) {
return false;
}
const val = obj[memberName];
if (typeof val !== "boolean") {
return false;
}
return val === true;
}
/** @internal */
function getRegionFromOpts(opts) {
if (opts.parent) {
return getRegion(opts.parent);
}
return getRegionFromProvider(opts.provider);
}
/** @internal */
function getRegion(res) {
// A little strange, but all we're doing is passing a fake type-token simply to get
// the AWS provider from this resource.
const provider = res.getProvider ? res.getProvider("aws::") : undefined;
return getRegionFromProvider(provider);
}
function getRegionFromProvider(provider) {
const region = provider ? provider.region : undefined;
return region || aws.config.region;
}
//# sourceMappingURL=utils.js.map