cloudstructs 0.4.2 → 0.4.6
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/.gitattributes +3 -0
- package/.jsii +121 -4
- package/API.md +43 -0
- package/README.md +3 -0
- package/assets/toolkit-cleaner/clean-images.lambda/index.js +77 -0
- package/assets/toolkit-cleaner/clean-objects.lambda/index.js +85 -0
- package/assets/toolkit-cleaner/docker/Dockerfile +3 -0
- package/assets/toolkit-cleaner/docker/dummy.txt +0 -0
- package/assets/toolkit-cleaner/get-stack-names.lambda/index.js +49 -0
- package/changelog.md +6 -1
- package/lib/codecommit-mirror/index.js +2 -2
- package/lib/ecs-service-roller/index.js +2 -2
- package/lib/email-receiver/receiver.js +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.js +2 -1
- package/lib/saml-identity-provider/index.js +2 -2
- package/lib/slack-app/manifest.js +1 -1
- package/lib/slack-app/slack-app.js +2 -2
- package/lib/slack-events/index.js +1 -1
- package/lib/slack-textract/index.js +1 -1
- package/lib/state-machine-cr-provider/index.js +1 -1
- package/lib/static-website/index.js +7 -3
- package/lib/toolkit-cleaner/clean-images-function.d.ts +13 -0
- package/lib/toolkit-cleaner/clean-images-function.js +22 -0
- package/lib/toolkit-cleaner/clean-images.lambda.d.ts +4 -0
- package/lib/toolkit-cleaner/clean-images.lambda.js +49 -0
- package/lib/toolkit-cleaner/clean-objects-function.d.ts +13 -0
- package/lib/toolkit-cleaner/clean-objects-function.js +22 -0
- package/lib/toolkit-cleaner/clean-objects.lambda.d.ts +4 -0
- package/lib/toolkit-cleaner/clean-objects.lambda.js +52 -0
- package/lib/toolkit-cleaner/get-stack-names-function.d.ts +13 -0
- package/lib/toolkit-cleaner/get-stack-names-function.js +22 -0
- package/lib/toolkit-cleaner/get-stack-names.lambda.d.ts +1 -0
- package/lib/toolkit-cleaner/get-stack-names.lambda.js +22 -0
- package/lib/toolkit-cleaner/index.d.ts +41 -0
- package/lib/toolkit-cleaner/index.js +118 -0
- package/lib/url-shortener/index.js +1 -1
- package/node_modules/@sindresorhus/is/dist/index.d.ts +4 -2
- package/node_modules/@sindresorhus/is/dist/index.js +3 -1
- package/node_modules/@sindresorhus/is/package.json +1 -1
- package/node_modules/@sindresorhus/is/readme.md +23 -0
- package/node_modules/@slack/logger/node_modules/@types/node/README.md +2 -2
- package/node_modules/@slack/logger/node_modules/@types/node/assert.d.ts +1 -1
- package/node_modules/@slack/logger/node_modules/@types/node/async_hooks.d.ts +7 -3
- package/node_modules/@slack/logger/node_modules/@types/node/buffer.d.ts +9 -9
- package/node_modules/@slack/logger/node_modules/@types/node/child_process.d.ts +1 -1
- package/node_modules/@slack/logger/node_modules/@types/node/cluster.d.ts +1 -1
- package/node_modules/@slack/logger/node_modules/@types/node/console.d.ts +1 -1
- package/node_modules/@slack/logger/node_modules/@types/node/crypto.d.ts +2 -2
- package/node_modules/@slack/logger/node_modules/@types/node/dgram.d.ts +2 -2
- package/node_modules/@slack/logger/node_modules/@types/node/diagnostics_channel.d.ts +1 -1
- package/node_modules/@slack/logger/node_modules/@types/node/dns/promises.d.ts +12 -10
- package/node_modules/@slack/logger/node_modules/@types/node/dns.d.ts +17 -12
- package/node_modules/@slack/logger/node_modules/@types/node/domain.d.ts +1 -1
- package/node_modules/@slack/logger/node_modules/@types/node/events.d.ts +2 -2
- package/node_modules/@slack/logger/node_modules/@types/node/fs/promises.d.ts +5 -5
- package/node_modules/@slack/logger/node_modules/@types/node/fs.d.ts +62 -11
- package/node_modules/@slack/logger/node_modules/@types/node/globals.d.ts +3 -3
- package/node_modules/@slack/logger/node_modules/@types/node/http.d.ts +31 -4
- package/node_modules/@slack/logger/node_modules/@types/node/http2.d.ts +6 -6
- package/node_modules/@slack/logger/node_modules/@types/node/https.d.ts +1 -1
- package/node_modules/@slack/logger/node_modules/@types/node/index.d.ts +1 -2
- package/node_modules/@slack/logger/node_modules/@types/node/inspector.d.ts +4 -5
- package/node_modules/@slack/logger/node_modules/@types/node/net.d.ts +15 -14
- package/node_modules/@slack/logger/node_modules/@types/node/os.d.ts +1 -1
- package/node_modules/@slack/logger/node_modules/@types/node/package.json +2 -7
- package/node_modules/@slack/logger/node_modules/@types/node/path.d.ts +9 -1
- package/node_modules/@slack/logger/node_modules/@types/node/perf_hooks.d.ts +6 -4
- package/node_modules/@slack/logger/node_modules/@types/node/process.d.ts +1 -1
- package/node_modules/@slack/logger/node_modules/@types/node/punycode.d.ts +1 -1
- package/node_modules/@slack/logger/node_modules/@types/node/querystring.d.ts +1 -1
- package/node_modules/@slack/logger/node_modules/@types/node/readline.d.ts +121 -14
- package/node_modules/@slack/logger/node_modules/@types/node/repl.d.ts +1 -1
- package/node_modules/@slack/logger/node_modules/@types/node/stream/web.d.ts +3 -65
- package/node_modules/@slack/logger/node_modules/@types/node/stream.d.ts +10 -10
- package/node_modules/@slack/logger/node_modules/@types/node/string_decoder.d.ts +1 -1
- package/node_modules/@slack/logger/node_modules/@types/node/timers.d.ts +1 -1
- package/node_modules/@slack/logger/node_modules/@types/node/tls.d.ts +3 -2
- package/node_modules/@slack/logger/node_modules/@types/node/trace_events.d.ts +1 -1
- package/node_modules/@slack/logger/node_modules/@types/node/tty.d.ts +1 -1
- package/node_modules/@slack/logger/node_modules/@types/node/url.d.ts +58 -18
- package/node_modules/@slack/logger/node_modules/@types/node/util.d.ts +3 -3
- package/node_modules/@slack/logger/node_modules/@types/node/v8.d.ts +3 -3
- package/node_modules/@slack/logger/node_modules/@types/node/vm.d.ts +1 -1
- package/node_modules/@slack/logger/node_modules/@types/node/wasi.d.ts +1 -1
- package/node_modules/@slack/logger/node_modules/@types/node/worker_threads.d.ts +4 -4
- package/node_modules/@slack/logger/node_modules/@types/node/zlib.d.ts +1 -1
- package/node_modules/@slack/web-api/node_modules/@types/node/README.md +2 -2
- package/node_modules/@slack/web-api/node_modules/@types/node/assert.d.ts +1 -1
- package/node_modules/@slack/web-api/node_modules/@types/node/async_hooks.d.ts +7 -3
- package/node_modules/@slack/web-api/node_modules/@types/node/buffer.d.ts +9 -9
- package/node_modules/@slack/web-api/node_modules/@types/node/child_process.d.ts +1 -1
- package/node_modules/@slack/web-api/node_modules/@types/node/cluster.d.ts +1 -1
- package/node_modules/@slack/web-api/node_modules/@types/node/console.d.ts +1 -1
- package/node_modules/@slack/web-api/node_modules/@types/node/crypto.d.ts +2 -2
- package/node_modules/@slack/web-api/node_modules/@types/node/dgram.d.ts +2 -2
- package/node_modules/@slack/web-api/node_modules/@types/node/diagnostics_channel.d.ts +1 -1
- package/node_modules/@slack/web-api/node_modules/@types/node/dns/promises.d.ts +12 -10
- package/node_modules/@slack/web-api/node_modules/@types/node/dns.d.ts +17 -12
- package/node_modules/@slack/web-api/node_modules/@types/node/domain.d.ts +1 -1
- package/node_modules/@slack/web-api/node_modules/@types/node/events.d.ts +2 -2
- package/node_modules/@slack/web-api/node_modules/@types/node/fs/promises.d.ts +5 -5
- package/node_modules/@slack/web-api/node_modules/@types/node/fs.d.ts +62 -11
- package/node_modules/@slack/web-api/node_modules/@types/node/globals.d.ts +3 -3
- package/node_modules/@slack/web-api/node_modules/@types/node/http.d.ts +31 -4
- package/node_modules/@slack/web-api/node_modules/@types/node/http2.d.ts +6 -6
- package/node_modules/@slack/web-api/node_modules/@types/node/https.d.ts +1 -1
- package/node_modules/@slack/web-api/node_modules/@types/node/index.d.ts +1 -2
- package/node_modules/@slack/web-api/node_modules/@types/node/inspector.d.ts +4 -5
- package/node_modules/@slack/web-api/node_modules/@types/node/net.d.ts +15 -14
- package/node_modules/@slack/web-api/node_modules/@types/node/os.d.ts +1 -1
- package/node_modules/@slack/web-api/node_modules/@types/node/package.json +2 -7
- package/node_modules/@slack/web-api/node_modules/@types/node/path.d.ts +9 -1
- package/node_modules/@slack/web-api/node_modules/@types/node/perf_hooks.d.ts +6 -4
- package/node_modules/@slack/web-api/node_modules/@types/node/process.d.ts +1 -1
- package/node_modules/@slack/web-api/node_modules/@types/node/punycode.d.ts +1 -1
- package/node_modules/@slack/web-api/node_modules/@types/node/querystring.d.ts +1 -1
- package/node_modules/@slack/web-api/node_modules/@types/node/readline.d.ts +121 -14
- package/node_modules/@slack/web-api/node_modules/@types/node/repl.d.ts +1 -1
- package/node_modules/@slack/web-api/node_modules/@types/node/stream/web.d.ts +3 -65
- package/node_modules/@slack/web-api/node_modules/@types/node/stream.d.ts +10 -10
- package/node_modules/@slack/web-api/node_modules/@types/node/string_decoder.d.ts +1 -1
- package/node_modules/@slack/web-api/node_modules/@types/node/timers.d.ts +1 -1
- package/node_modules/@slack/web-api/node_modules/@types/node/tls.d.ts +3 -2
- package/node_modules/@slack/web-api/node_modules/@types/node/trace_events.d.ts +1 -1
- package/node_modules/@slack/web-api/node_modules/@types/node/tty.d.ts +1 -1
- package/node_modules/@slack/web-api/node_modules/@types/node/url.d.ts +58 -18
- package/node_modules/@slack/web-api/node_modules/@types/node/util.d.ts +3 -3
- package/node_modules/@slack/web-api/node_modules/@types/node/v8.d.ts +3 -3
- package/node_modules/@slack/web-api/node_modules/@types/node/vm.d.ts +1 -1
- package/node_modules/@slack/web-api/node_modules/@types/node/wasi.d.ts +1 -1
- package/node_modules/@slack/web-api/node_modules/@types/node/worker_threads.d.ts +4 -4
- package/node_modules/@slack/web-api/node_modules/@types/node/zlib.d.ts +1 -1
- package/node_modules/@types/cacheable-request/node_modules/@types/node/README.md +2 -2
- package/node_modules/@types/cacheable-request/node_modules/@types/node/index.d.ts +0 -1
- package/node_modules/@types/cacheable-request/node_modules/@types/node/package.json +2 -7
- package/node_modules/@types/is-stream/node_modules/@types/node/README.md +2 -2
- package/node_modules/@types/is-stream/node_modules/@types/node/index.d.ts +0 -1
- package/node_modules/@types/is-stream/node_modules/@types/node/package.json +2 -7
- package/node_modules/@types/keyv/node_modules/@types/node/README.md +2 -2
- package/node_modules/@types/keyv/node_modules/@types/node/index.d.ts +0 -1
- package/node_modules/@types/keyv/node_modules/@types/node/package.json +2 -7
- package/node_modules/@types/responselike/node_modules/@types/node/README.md +2 -2
- package/node_modules/@types/responselike/node_modules/@types/node/index.d.ts +0 -1
- package/node_modules/@types/responselike/node_modules/@types/node/package.json +2 -7
- package/node_modules/follow-redirects/index.js +2 -2
- package/node_modules/follow-redirects/package.json +1 -1
- package/node_modules/keyv/.nyc_output/37411020-4142-4b08-b825-343ba2427bf7.json +1 -0
- package/node_modules/keyv/.nyc_output/cd79f2de-c8b8-4493-bc15-b2bde28efa4b.json +1 -0
- package/node_modules/keyv/.nyc_output/processinfo/37411020-4142-4b08-b825-343ba2427bf7.json +1 -0
- package/node_modules/keyv/.nyc_output/processinfo/cd79f2de-c8b8-4493-bc15-b2bde28efa4b.json +1 -0
- package/node_modules/keyv/.nyc_output/processinfo/index.json +1 -0
- package/node_modules/keyv/README.md +9 -8
- package/node_modules/keyv/package.json +5 -7
- package/node_modules/keyv/test/test.js +132 -0
- package/node_modules/keyv/test/testdb.sqlite +0 -0
- package/package.json +24 -11
- package/releasetag.txt +1 -1
- package/version.txt +1 -1
- package/node_modules/keyv/LICENSE +0 -21
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _a;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.ToolkitCleaner = void 0;
|
|
5
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
|
+
const path = require("path");
|
|
7
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
8
|
+
const aws_ecr_assets_1 = require("aws-cdk-lib/aws-ecr-assets");
|
|
9
|
+
const aws_events_1 = require("aws-cdk-lib/aws-events");
|
|
10
|
+
const aws_events_targets_1 = require("aws-cdk-lib/aws-events-targets");
|
|
11
|
+
const aws_iam_1 = require("aws-cdk-lib/aws-iam");
|
|
12
|
+
const aws_s3_assets_1 = require("aws-cdk-lib/aws-s3-assets");
|
|
13
|
+
const sfn = require("aws-cdk-lib/aws-stepfunctions");
|
|
14
|
+
const tasks = require("aws-cdk-lib/aws-stepfunctions-tasks");
|
|
15
|
+
const constructs_1 = require("constructs");
|
|
16
|
+
const clean_images_function_1 = require("./clean-images-function");
|
|
17
|
+
const clean_objects_function_1 = require("./clean-objects-function");
|
|
18
|
+
const get_stack_names_function_1 = require("./get-stack-names-function");
|
|
19
|
+
/**
|
|
20
|
+
* Clean unused S3 and ECR assets from your CDK Toolkit.
|
|
21
|
+
*
|
|
22
|
+
* @stability stable
|
|
23
|
+
*/
|
|
24
|
+
class ToolkitCleaner extends constructs_1.Construct {
|
|
25
|
+
/**
|
|
26
|
+
* @stability stable
|
|
27
|
+
*/
|
|
28
|
+
constructor(scope, id, props = {}) {
|
|
29
|
+
var _b;
|
|
30
|
+
super(scope, id);
|
|
31
|
+
// Dummy assets to reference S3 bucket and ECR repository
|
|
32
|
+
const fileAsset = new aws_s3_assets_1.Asset(this, 'FileAsset', {
|
|
33
|
+
path: path.join(__dirname, '..', '..', 'assets', 'toolkit-cleaner', 'docker', 'dummy.txt'),
|
|
34
|
+
});
|
|
35
|
+
const dockerImageAsset = new aws_ecr_assets_1.DockerImageAsset(this, 'DockerImageAsset', {
|
|
36
|
+
directory: path.join(__dirname, '..', '..', 'assets', 'toolkit-cleaner', 'docker'),
|
|
37
|
+
});
|
|
38
|
+
const getStackNamesFunction = new get_stack_names_function_1.GetStackNamesFunction(this, 'GetStackNamesFunction');
|
|
39
|
+
getStackNamesFunction.addToRolePolicy(new aws_iam_1.PolicyStatement({
|
|
40
|
+
actions: ['cloudformation:DescribeStacks'],
|
|
41
|
+
resources: ['*'],
|
|
42
|
+
}));
|
|
43
|
+
const getStackNames = new tasks.LambdaInvoke(this, 'GetStackNames', {
|
|
44
|
+
lambdaFunction: getStackNamesFunction,
|
|
45
|
+
payloadResponseOnly: true,
|
|
46
|
+
});
|
|
47
|
+
const stacksMap = new sfn.Map(this, 'StacksMap', {
|
|
48
|
+
maxConcurrency: 1,
|
|
49
|
+
resultSelector: {
|
|
50
|
+
AssetHashes: sfn.JsonPath.stringAt('$'),
|
|
51
|
+
},
|
|
52
|
+
});
|
|
53
|
+
const getTemplate = new tasks.CallAwsService(this, 'GetTemplate', {
|
|
54
|
+
service: 'cloudformation',
|
|
55
|
+
action: 'getTemplate',
|
|
56
|
+
parameters: {
|
|
57
|
+
StackName: sfn.JsonPath.stringAt('$'),
|
|
58
|
+
},
|
|
59
|
+
iamResources: ['*'],
|
|
60
|
+
}).addRetry({
|
|
61
|
+
errors: ['CloudFormation.CloudFormationException'],
|
|
62
|
+
});
|
|
63
|
+
const extractHashes = new tasks.EvaluateExpression(this, 'ExtractHashes', {
|
|
64
|
+
expression: '[...new Set(($.TemplateBody).match(/[a-f0-9]{64}/g))]',
|
|
65
|
+
});
|
|
66
|
+
const flattenHashes = new tasks.EvaluateExpression(this, 'FlattenHashes', {
|
|
67
|
+
expression: '[...new Set(($.AssetHashes).flat())]',
|
|
68
|
+
});
|
|
69
|
+
const cleanObjectsFunction = new clean_objects_function_1.CleanObjectsFunction(this, 'CleanObjectsFunction', {
|
|
70
|
+
timeout: aws_cdk_lib_1.Duration.minutes(5),
|
|
71
|
+
});
|
|
72
|
+
cleanObjectsFunction.addEnvironment('BUCKET_NAME', fileAsset.bucket.bucketName);
|
|
73
|
+
fileAsset.bucket.grantRead(cleanObjectsFunction);
|
|
74
|
+
fileAsset.bucket.grantDelete(cleanObjectsFunction);
|
|
75
|
+
const cleanObjects = new tasks.LambdaInvoke(this, 'CleanObjects', {
|
|
76
|
+
lambdaFunction: cleanObjectsFunction,
|
|
77
|
+
payloadResponseOnly: true,
|
|
78
|
+
});
|
|
79
|
+
const cleanImagesFunction = new clean_images_function_1.CleanImagesFunction(this, 'CleanImagesFunction', {
|
|
80
|
+
timeout: aws_cdk_lib_1.Duration.minutes(5),
|
|
81
|
+
});
|
|
82
|
+
cleanImagesFunction.addEnvironment('REPOSITORY_NAME', dockerImageAsset.repository.repositoryName);
|
|
83
|
+
dockerImageAsset.repository.grant(cleanImagesFunction, 'ecr:DescribeImages', 'ecr:BatchDeleteImage');
|
|
84
|
+
const cleanImages = new tasks.LambdaInvoke(this, 'CleanImages', {
|
|
85
|
+
lambdaFunction: cleanImagesFunction,
|
|
86
|
+
payloadResponseOnly: true,
|
|
87
|
+
});
|
|
88
|
+
if (!props.dryRun) {
|
|
89
|
+
cleanObjectsFunction.addEnvironment('RUN', 'true');
|
|
90
|
+
cleanImagesFunction.addEnvironment('RUN', 'true');
|
|
91
|
+
}
|
|
92
|
+
if (props.retainAssetsNewerThan) {
|
|
93
|
+
const retainMilliseconds = props.retainAssetsNewerThan.toMilliseconds().toString();
|
|
94
|
+
cleanObjectsFunction.addEnvironment('RETAIN_MILLISECONDS', retainMilliseconds);
|
|
95
|
+
cleanImagesFunction.addEnvironment('RETAIN_MILLISECONDS', retainMilliseconds);
|
|
96
|
+
}
|
|
97
|
+
const sumReclaimed = new tasks.EvaluateExpression(this, 'SumReclaimed', {
|
|
98
|
+
expression: '({ Deleted: $[0].Deleted + $[1].Deleted, Reclaimed: $[0].Reclaimed + $[1].Reclaimed })',
|
|
99
|
+
});
|
|
100
|
+
const stateMachine = new sfn.StateMachine(this, 'Resource', {
|
|
101
|
+
definition: getStackNames
|
|
102
|
+
.next(stacksMap.iterator(getTemplate.next(extractHashes)))
|
|
103
|
+
.next(flattenHashes)
|
|
104
|
+
.next(new sfn.Parallel(this, 'Clean')
|
|
105
|
+
.branch(cleanObjects)
|
|
106
|
+
.branch(cleanImages))
|
|
107
|
+
.next(sumReclaimed),
|
|
108
|
+
});
|
|
109
|
+
const rule = new aws_events_1.Rule(this, 'Rule', {
|
|
110
|
+
schedule: (_b = props.schedule) !== null && _b !== void 0 ? _b : aws_events_1.Schedule.rate(aws_cdk_lib_1.Duration.days(1)),
|
|
111
|
+
});
|
|
112
|
+
rule.addTarget(new aws_events_targets_1.SfnStateMachine(stateMachine));
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
exports.ToolkitCleaner = ToolkitCleaner;
|
|
116
|
+
_a = JSII_RTTI_SYMBOL_1;
|
|
117
|
+
ToolkitCleaner[_a] = { fqn: "cloudstructs.ToolkitCleaner", version: "0.4.6" };
|
|
118
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdG9vbGtpdC1jbGVhbmVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkJBQTZCO0FBQzdCLDZDQUF1QztBQUN2QywrREFBOEQ7QUFDOUQsdURBQXdEO0FBQ3hELHVFQUFpRTtBQUNqRSxpREFBc0Q7QUFDdEQsNkRBQWtEO0FBQ2xELHFEQUFxRDtBQUNyRCw2REFBNkQ7QUFDN0QsMkNBQXVDO0FBQ3ZDLG1FQUE4RDtBQUM5RCxxRUFBZ0U7QUFDaEUseUVBQW1FOzs7Ozs7QUFlbkUsTUFBYSxjQUFlLFNBQVEsc0JBQVM7Ozs7SUFDM0MsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxRQUE2QixFQUFFOztRQUN2RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLHlEQUF5RDtRQUN6RCxNQUFNLFNBQVMsR0FBRyxJQUFJLHFCQUFLLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRTtZQUM3QyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLFdBQVcsQ0FBQztTQUMzRixDQUFDLENBQUM7UUFDSCxNQUFNLGdCQUFnQixHQUFHLElBQUksaUNBQWdCLENBQUMsSUFBSSxFQUFFLGtCQUFrQixFQUFFO1lBQ3RFLFNBQVMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxRQUFRLENBQUM7U0FDbkYsQ0FBQyxDQUFDO1FBRUgsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLGdEQUFxQixDQUFDLElBQUksRUFBRSx1QkFBdUIsQ0FBQyxDQUFDO1FBQ3ZGLHFCQUFxQixDQUFDLGVBQWUsQ0FBQyxJQUFJLHlCQUFlLENBQUM7WUFDeEQsT0FB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LENBQUM7U0FDNUQsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLG9DQUFlLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztJQUNwRCxDQUFDOztBQS9GSCx3Q0FnR0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgRHVyYXRpb24gfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBEb2NrZXJJbWFnZUFzc2V0IH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjci1hc3NldHMnO1xuaW1wb3J0IHsgUnVsZSwgU2NoZWR1bGUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZXZlbnRzJztcbmltcG9ydCB7IFNmblN0YXRlTWFjaGluZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1ldmVudHMtdGFyZ2V0cyc7XG5pbXBvcnQgeyBQb2xpY3lTdGF0ZW1lbnQgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IEFzc2V0IH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzLWFzc2V0cyc7XG5pbXBvcnQgKiBhcyBzZm4gZnJvbSAnYXdzLWNkay1saWIvYXdzLXN0ZXBmdW5jdGlvbnMnO1xuaW1wb3J0ICogYXMgdGFza3MgZnJvbSAnYXdzLWNkay1saWIvYXdzLXN0ZXBmdW5jdGlvbnMtdGFza3MnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBDbGVhbkltYWdlc0Z1bmN0aW9uIH0gZnJvbSAnLi9jbGVhbi1pbWFnZXMtZnVuY3Rpb24nO1xuaW1wb3J0IHsgQ2xlYW5PYmplY3RzRnVuY3Rpb24gfSBmcm9tICcuL2NsZWFuLW9iamVjdHMtZnVuY3Rpb24nO1xuaW1wb3J0IHsgR2V0U3RhY2tOYW1lc0Z1bmN0aW9uIH0gZnJvbSAnLi9nZXQtc3RhY2stbmFtZXMtZnVuY3Rpb24nO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmV4cG9ydCBpbnRlcmZhY2UgVG9vbGtpdENsZWFuZXJQcm9wcyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHNjaGVkdWxlPzogU2NoZWR1bGU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGRyeVJ1bj86IGJvb2xlYW47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgcmV0YWluQXNzZXRzTmV3ZXJUaGFuPzogRHVyYXRpb247XG59XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmV4cG9ydCBjbGFzcyBUb29sa2l0Q2xlYW5lciBleHRlbmRzIENvbnN0cnVjdCB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBUb29sa2l0Q2xlYW5lclByb3BzID0ge30pIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgLy8gRHVtbXkgYXNzZXRzIHRvIHJlZmVyZW5jZSBTMyBidWNrZXQgYW5kIEVDUiByZXBvc2l0b3J5XG4gICAgY29uc3QgZmlsZUFzc2V0ID0gbmV3IEFzc2V0KHRoaXMsICdGaWxlQXNzZXQnLCB7XG4gICAgICBwYXRoOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4nLCAnLi4nLCAnYXNzZXRzJywgJ3Rvb2xraXQtY2xlYW5lcicsICdkb2NrZXInLCAnZHVtbXkudHh0JyksXG4gICAgfSk7XG4gICAgY29uc3QgZG9ja2VySW1hZ2VBc3NldCA9IG5ldyBEb2NrZXJJbWFnZUFzc2V0KHRoaXMsICdEb2NrZXJJbWFnZUFzc2V0Jywge1xuICAgICAgZGlyZWN0b3J5OiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4nLCAnLi4nLCAnYXNzZXRzJywgJ3Rvb2xraXQtY2xlYW5lcicsICdkb2NrZXInKSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGdldFN0YWNrTmFtZXNGdW5jdGlvbiA9IG5ldyBHZXRTdGFja05hbWVzRnVuY3Rpb24odGhpcywgJ0dldFN0YWNrTmFtZXNGdW5jdGlvbicpO1xuICAgIGdldFN0YWNrTmFtZXNGdW5jdGlvbi5hZGRUb1JvbGVQb2xpY3kobmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICBhY3Rpb25zOiBbJ2Nsb3VkZm9ybWF0aW9uOkRlc2NyaWJlU3RhY2tzJ10sXG4gICAgICByZXNvdXJjZXM6IFsnKiddLFxuICAgIH0pKTtcbiAgICBjb25zdCBnZXRTdGFja05hbWVzID0gbmV3IHRhc2tzLkxhbWJkYUludm9rZSh0aGlzLCAnR2V0U3RhY2tOYW1lcycsIHtcbiAgICAgIGxhbWJkYUZ1bmN0aW9uOiBnZXRTdGFja05hbWVzRnVuY3Rpb24sXG4gICAgICBwYXlsb2FkUmVzcG9uc2VPbmx5OiB0cnVlLFxuICAgIH0pO1xuXG4gICAgY29uc3Qgc3RhY2tzTWFwID0gbmV3IHNmbi5NYXAodGhpcywgJ1N0YWNrc01hcCcsIHtcbiAgICAgIG1heENvbmN1cnJlbmN5OiAxLCAvLyBBdm9pZCBcIlJhdGUgZXhjZWVkZWRcIiBlcnJvciBmcm9tIENsb3VkRm9ybWF0aW9uXG4gICAgICByZXN1bHRTZWxlY3Rvcjoge1xuICAgICAgICBBc3NldEhhc2hlczogc2ZuLkpzb25QYXRoLnN0cmluZ0F0KCckJyksXG4gICAgICB9LFxuICAgIH0pO1xuICAgIGNvbnN0IGdldFRlbXBsYXRlID0gbmV3IHRhc2tzLkNhbGxBd3NTZXJ2aWNlKHRoaXMsICdHZXRUZW1wbGF0ZScsIHtcbiAgICAgIHNlcnZpY2U6ICdjbG91ZGZvcm1hdGlvbicsXG4gICAgICBhY3Rpb246ICdnZXRUZW1wbGF0ZScsXG4gICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgIFN0YWNrTmFtZTogc2ZuLkpzb25QYXRoLnN0cmluZ0F0KCckJyksXG4gICAgICB9LFxuICAgICAgaWFtUmVzb3VyY2VzOiBbJyonXSxcbiAgICB9KS5hZGRSZXRyeSh7IC8vIEF2b2lkIFwiUmF0ZSBleGNlZWRlZFwiIGVycm9yIGZyb20gQ2xvdWRGb3JtYXRpb25cbiAgICAgIGVycm9yczogWydDbG91ZEZvcm1hdGlvbi5DbG91ZEZvcm1hdGlvbkV4Y2VwdGlvbiddLFxuICAgIH0pO1xuICAgIGNvbnN0IGV4dHJhY3RIYXNoZXMgPSBuZXcgdGFza3MuRXZhbHVhdGVFeHByZXNzaW9uKHRoaXMsICdFeHRyYWN0SGFzaGVzJywge1xuICAgICAgZXhwcmVzc2lvbjogJ1suLi5uZXcgU2V0KCgkLlRlbXBsYXRlQm9keSkubWF0Y2goL1thLWYwLTldezY0fS9nKSldJyxcbiAgICB9KTtcbiAgICBjb25zdCBmbGF0dGVuSGFzaGVzID0gbmV3IHRhc2tzLkV2YWx1YXRlRXhwcmVzc2lvbih0aGlzLCAnRmxhdHRlbkhhc2hlcycsIHtcbiAgICAgIGV4cHJlc3Npb246ICdbLi4ubmV3IFNldCgoJC5Bc3NldEhhc2hlcykuZmxhdCgpKV0nLFxuICAgIH0pO1xuXG4gICAgY29uc3QgY2xlYW5PYmplY3RzRnVuY3Rpb24gPSBuZXcgQ2xlYW5PYmplY3RzRnVuY3Rpb24odGhpcywgJ0NsZWFuT2JqZWN0c0Z1bmN0aW9uJywge1xuICAgICAgdGltZW91dDogRHVyYXRpb24ubWludXRlcyg1KSxcbiAgICB9KTtcbiAgICBjbGVhbk9iamVjdHNGdW5jdGlvbi5hZGRFbnZpcm9ubWVudCgnQlVDS0VUX05BTUUnLCBmaWxlQXNzZXQuYnVja2V0LmJ1Y2tldE5hbWUpO1xuICAgIGZpbGVBc3NldC5idWNrZXQuZ3JhbnRSZWFkKGNsZWFuT2JqZWN0c0Z1bmN0aW9uKTtcbiAgICBmaWxlQXNzZXQuYnVja2V0LmdyYW50RGVsZXRlKGNsZWFuT2JqZWN0c0Z1bmN0aW9uKTtcbiAgICBjb25zdCBjbGVhbk9iamVjdHMgPSBuZXcgdGFza3MuTGFtYmRhSW52b2tlKHRoaXMsICdDbGVhbk9iamVjdHMnLCB7XG4gICAgICBsYW1iZGFGdW5jdGlvbjogY2xlYW5PYmplY3RzRnVuY3Rpb24sXG4gICAgICBwYXlsb2FkUmVzcG9uc2VPbmx5OiB0cnVlLFxuICAgIH0pO1xuXG4gICAgY29uc3QgY2xlYW5JbWFnZXNGdW5jdGlvbiA9IG5ldyBDbGVhbkltYWdlc0Z1bmN0aW9uKHRoaXMsICdDbGVhbkltYWdlc0Z1bmN0aW9uJywge1xuICAgICAgdGltZW91dDogRHVyYXRpb24ubWludXRlcyg1KSxcbiAgICB9KTtcbiAgICBjbGVhbkltYWdlc0Z1bmN0aW9uLmFkZEVudmlyb25tZW50KCdSRVBPU0lUT1JZX05BTUUnLCBkb2NrZXJJbWFnZUFzc2V0LnJlcG9zaXRvcnkucmVwb3NpdG9yeU5hbWUpO1xuICAgIGRvY2tlckltYWdlQXNzZXQucmVwb3NpdG9yeS5ncmFudChjbGVhbkltYWdlc0Z1bmN0aW9uLCAnZWNyOkRlc2NyaWJlSW1hZ2VzJywgJ2VjcjpCYXRjaERlbGV0ZUltYWdlJyk7XG4gICAgY29uc3QgY2xlYW5JbWFnZXMgPSBuZXcgdGFza3MuTGFtYmRhSW52b2tlKHRoaXMsICdDbGVhbkltYWdlcycsIHtcbiAgICAgIGxhbWJkYUZ1bmN0aW9uOiBjbGVhbkltYWdlc0Z1bmN0aW9uLFxuICAgICAgcGF5bG9hZFJlc3BvbnNlT25seTogdHJ1ZSxcbiAgICB9KTtcblxuICAgIGlmICghcHJvcHMuZHJ5UnVuKSB7XG4gICAgICBjbGVhbk9iamVjdHNGdW5jdGlvbi5hZGRFbnZpcm9ubWVudCgnUlVOJywgJ3RydWUnKTtcbiAgICAgIGNsZWFuSW1hZ2VzRnVuY3Rpb24uYWRkRW52aXJvbm1lbnQoJ1JVTicsICd0cnVlJyk7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLnJldGFpbkFzc2V0c05ld2VyVGhhbikge1xuICAgICAgY29uc3QgcmV0YWluTWlsbGlzZWNvbmRzID0gcHJvcHMucmV0YWluQXNzZXRzTmV3ZXJUaGFuLnRvTWlsbGlzZWNvbmRzKCkudG9TdHJpbmcoKTtcbiAgICAgIGNsZWFuT2JqZWN0c0Z1bmN0aW9uLmFkZEVudmlyb25tZW50KCdSRVRBSU5fTUlMTElTRUNPTkRTJywgcmV0YWluTWlsbGlzZWNvbmRzKTtcbiAgICAgIGNsZWFuSW1hZ2VzRnVuY3Rpb24uYWRkRW52aXJvbm1lbnQoJ1JFVEFJTl9NSUxMSVNFQ09ORFMnLCByZXRhaW5NaWxsaXNlY29uZHMpO1xuICAgIH1cblxuICAgIGNvbnN0IHN1bVJlY2xhaW1lZCA9IG5ldyB0YXNrcy5FdmFsdWF0ZUV4cHJlc3Npb24odGhpcywgJ1N1bVJlY2xhaW1lZCcsIHtcbiAgICAgIGV4cHJlc3Npb246ICcoeyBEZWxldGVkOiAkWzBdLkRlbGV0ZWQgKyAkWzFdLkRlbGV0ZWQsIFJlY2xhaW1lZDogJFswXS5SZWNsYWltZWQgKyAkWzFdLlJlY2xhaW1lZCB9KScsXG4gICAgfSk7XG5cbiAgICBjb25zdCBzdGF0ZU1hY2hpbmUgPSBuZXcgc2ZuLlN0YXRlTWFjaGluZSh0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBkZWZpbml0aW9uOiBnZXRTdGFja05hbWVzXG4gICAgICAgIC5uZXh0KHN0YWNrc01hcC5pdGVyYXRvcihnZXRUZW1wbGF0ZS5uZXh0KGV4dHJhY3RIYXNoZXMpKSlcbiAgICAgICAgLm5leHQoZmxhdHRlbkhhc2hlcylcbiAgICAgICAgLm5leHQobmV3IHNmbi5QYXJhbGxlbCh0aGlzLCAnQ2xlYW4nKVxuICAgICAgICAgIC5icmFuY2goY2xlYW5PYmplY3RzKVxuICAgICAgICAgIC5icmFuY2goY2xlYW5JbWFnZXMpKVxuICAgICAgICAubmV4dChzdW1SZWNsYWltZWQpLFxuICAgIH0pO1xuXG4gICAgY29uc3QgcnVsZSA9IG5ldyBSdWxlKHRoaXMsICdSdWxlJywge1xuICAgICAgc2NoZWR1bGU6IHByb3BzLnNjaGVkdWxlID8/IFNjaGVkdWxlLnJhdGUoRHVyYXRpb24uZGF5cygxKSksXG4gICAgfSk7XG4gICAgcnVsZS5hZGRUYXJnZXQobmV3IFNmblN0YXRlTWFjaGluZShzdGF0ZU1hY2hpbmUpKTtcbiAgfVxufVxuIl19
|
|
@@ -99,5 +99,5 @@ class UrlShortener extends constructs_1.Construct {
|
|
|
99
99
|
}
|
|
100
100
|
exports.UrlShortener = UrlShortener;
|
|
101
101
|
_a = JSII_RTTI_SYMBOL_1;
|
|
102
|
-
UrlShortener[_a] = { fqn: "cloudstructs.UrlShortener", version: "0.4.
|
|
102
|
+
UrlShortener[_a] = { fqn: "cloudstructs.UrlShortener", version: "0.4.6" };
|
|
103
103
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXJsLXNob3J0ZW5lci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZDQUEyQztBQUMzQyx5REFBeUQ7QUFDekQsMERBQTBEO0FBQzFELHlEQUF5RDtBQUN6RCw4REFBOEQ7QUFDOUQscURBQXFEO0FBRXJELDJDQUEyQztBQUMzQyx3REFBd0Q7QUFDeEQsNkNBQTZDO0FBQzdDLG1EQUFtRDtBQUNuRCwyREFBMkQ7QUFDM0QseUNBQXlDO0FBQ3pDLDJDQUF1Qzs7Ozs7O0FBZXZDLE1BQWEsWUFBYSxTQUFRLHNCQUFTOzs7O0lBT3pDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBd0I7O1FBQ2hFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsMEJBQTBCO1FBQzFCLE1BQU0sS0FBSyxHQUFHLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFO1lBQzlDLFlBQVksRUFBRTtnQkFDWixJQUFJLEVBQUUsS0FBSztnQkFDWCxJQUFJLEVBQUUsUUFBUSxDQUFDLGFBQWEsQ0FBQyxNQUFNO2FBQ3BDO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsMkJBQTJCO1FBQzNCLE1BQU0sTUFBTSxHQUFHLElBQUksRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFO1lBQzNDLGNBQWMsRUFBRSxDQUFDO29CQUNmLFVBQVUsUUFBRSxLQUFLLENBQUMsVUFBVSxtQ0FBSSxzQkFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7aUJBQ25ELENBQUM7WUFDRixvQkFBb0IsRUFBRSxZQUFZO1NBQ25DLENBQUMsQ0FBQztRQUVILDBCQUEwQjtRQUMxQixNQUFNLFdBQVcsR0FBRyxJQUFJLEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLEVBQUUsYUFBYSxFQUFFO1lBQ3ZFLFVBQVUsRUFBRSxLQUFL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OztBQW5GSCxvQ0FvRkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEdXJhdGlvbiwgRm4gfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgKiBhcyBhcGlnYXRld2F5IGZyb20gJ2F3cy1jZGstbGliL2F3cy1hcGlnYXRld2F5JztcbmltcG9ydCAqIGFzIGFjbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY2VydGlmaWNhdGVtYW5hZ2VyJztcbmltcG9ydCAqIGFzIGNsb3VkZnJvbnQgZnJvbSAnYXdzLWNkay1saWIvYXdzLWNsb3VkZnJvbnQnO1xuaW1wb3J0ICogYXMgb3JpZ2lucyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY2xvdWRmcm9udC1vcmlnaW5zJztcbmltcG9ydCAqIGFzIGR5bmFtb2RiIGZyb20gJ2F3cy1jZGstbGliL2F3cy1keW5hbW9kYic7XG5pbXBvcnQgKiBhcyBlYzIgZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjMic7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgKiBhcyBub2RlanMgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYS1ub2RlanMnO1xuaW1wb3J0ICogYXMgbG9ncyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbG9ncyc7XG5pbXBvcnQgKiBhcyByb3V0ZTUzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1yb3V0ZTUzJztcbmltcG9ydCAqIGFzIHRhcmdldHMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXJvdXRlNTMtdGFyZ2V0cyc7XG5pbXBvcnQgKiBhcyBzMyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmV4cG9ydCBpbnRlcmZhY2UgVXJsU2hvcnRlbmVyUHJvcHMge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBob3N0ZWRab25lOiByb3V0ZTUzLklIb3N0ZWRab25lO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgZXhwaXJhdGlvbj86IER1cmF0aW9uO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGFwaUdhdGV3YXlFbmRwb2ludD86IGVjMi5JSW50ZXJmYWNlVnBjRW5kcG9pbnQ7XG59XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGNsYXNzIFVybFNob3J0ZW5lciBleHRlbmRzIENvbnN0cnVjdCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIHJlYWRvbmx5IGFwaUVuZHBvaW50OiBzdHJpbmc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIHJlYWRvbmx5IGFwaTogYXBpZ2F0ZXdheS5MYW1iZGFSZXN0QXBpO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBVcmxTaG9ydGVuZXJQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICAvLyBUYWJsZSB0byBzYXZlIGEgY291bnRlclxuICAgIGNvbnN0IHRhYmxlID0gbmV3IGR5bmFtb2RiLlRhYmxlKHRoaXMsICdUYWJsZScsIHtcbiAgICAgIHBhcnRpdGlvbktleToge1xuICAgICAgICBuYW1lOiAna2V5JyxcbiAgICAgICAgdHlwZTogZHluYW1vZGIuQXR0cmlidXRlVHlwZS5TVFJJTkcsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgLy8gQnVja2V0IHRvIHNhdmUgcmVkaXJlY3RzXG4gICAgY29uc3QgYnVja2V0ID0gbmV3IHMzLkJ1Y2tldCh0aGlzLCAnQnVja2V0Jywge1xuICAgICAgbGlmZWN5Y2xlUnVsZXM6IFt7XG4gICAgICAgIGV4cGlyYXRpb246IHByb3BzLmV4cGlyYXRpb24gPz8gRHVyYXRpb24uZGF5cygzNjUpLFxuICAgICAgfV0sXG4gICAgICB3ZWJzaXRlSW5kZXhEb2N1bWVudDogJ2luZGV4Lmh0bWwnLFxuICAgIH0pO1xuXG4gICAgLy8gQ2xvdWRGcm9udCBkaXN0cmlidXRpb25cbiAgICBjb25zdCBjZXJ0aWZpY2F0ZSA9IG5ldyBhY20uRG5zVmFsaWRhdGVkQ2VydGlmaWNhdGUodGhpcywgJ0NlcnRpZmljYXRlJywge1xuICAgICAgZG9tYWluTmFtZTogcHJvcHMuaG9zdGVkWm9uZS56b25lTmFtZSxcbiAgICAgIGhvc3RlZFpvbmU6IHByb3BzLmhvc3RlZFpvbmUsXG4gICAgfSk7XG4gICAgY29uc3QgZGlzdHJpYnV0aW9uID0gbmV3IGNsb3VkZnJvbnQuRGlzdHJpYnV0aW9uKHRoaXMsICdEaXN0cmlidXRpb24nLCB7XG4gICAgICBkZWZhdWx0QmVoYXZpb3I6IHtcbiAgICAgICAgb3JpZ2luOiBuZXcgb3JpZ2lucy5TM09yaWdpbihidWNrZXQpLFxuICAgICAgfSxcbiAgICAgIGNlcnRpZmljYXRlLFxuICAgICAgZG9tYWluTmFtZXM6IFtwcm9wcy5ob3N0ZWRab25lLnpvbmVOYW1lXSxcbiAgICB9KTtcblxuICAgIC8vIFJvdXRlNTMgcmVjb3Jkc1xuICAgIG5ldyByb3V0ZTUzLkFSZWNvcmQodGhpcywgJ0FSZWNvcmQnLCB7XG4gICAgICB6b25lOiBwcm9wcy5ob3N0ZWRab25lLFxuICAgICAgdGFyZ2V0OiByb3V0ZTUzLlJlY29yZFRhcmdldC5mcm9tQWxpYXMobmV3IHRhcmdldHMuQ2xvdWRGcm9udFRhcmdldChkaXN0cmlidXRpb24pKSxcbiAgICB9KTtcbiAgICBuZXcgcm91dGU1My5BYWFhUmVjb3JkKHRoaXMsICdBYWFhUmVjb3JkJywge1xuICAgICAgem9uZTogcHJvcHMuaG9zdGVkWm9uZSxcbiAgICAgIHRhcmdldDogcm91dGU1My5SZWNvcmRUYXJnZXQuZnJvbUFsaWFzKG5ldyB0YXJnZXRzLkNsb3VkRnJvbnRUYXJnZXQoZGlzdHJpYnV0aW9uKSksXG4gICAgfSk7XG5cbiAgICAvLyBMYW1iZGEgZnVuY3Rpb24gdG8gaW5jcmVtZW50IGNvdW50ZXIgYW5kIHdyaXRlIHJlZGlyZWN0IGluIGJ1Y2tldFxuICAgIGNvbnN0IGhhbmRsZXIgPSBuZXcgbm9kZWpzLk5vZGVqc0Z1bmN0aW9uKHRoaXMsICdoYW5kbGVyJywge1xuICAgICAgbG9nUmV0ZW50aW9uOiBsb2dzLlJldGVudGlvbkRheXMuT05FX01PTlRILFxuICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgRE9NQUlOX05BTUU6IHByb3BzLmhvc3RlZFpvbmUuem9uZU5hbWUsXG4gICAgICAgIEJVQ0tFVF9OQU1FOiBidWNrZXQuYnVja2V0TmFtZSxcbiAgICAgICAgVEFCTEVfTkFNRTogdGFibGUudGFibGVOYW1lLFxuICAgICAgfSxcbiAgICB9KTtcbiAgICBidWNrZXQuZ3JhbnRQdXQoaGFuZGxlcik7XG4gICAgdGFibGUuZ3JhbnQoaGFuZGxlciwgJ2R5bmFtb2RiOlVwZGF0ZUl0ZW0nKTtcblxuICAgIC8vIEFQSVxuICAgIHRoaXMuYXBpID0gbmV3IGFwaWdhdGV3YXkuTGFtYmRhUmVzdEFwaSh0aGlzLCBgVXJsU2hvcnRlbmVyJHtwcm9wcy5ob3N0ZWRab25lLnpvbmVOYW1lfWAsIHtcbiAgICAgIGhhbmRsZXIsXG4gICAgICBlbmRwb2ludFR5cGVzOiBwcm9wcy5hcGlHYXRld2F5RW5kcG9pbnQgPyBbYXBpZ2F0ZXdheS5FbmRwb2ludFR5cGUuUFJJVkFURV0gOiB1bmRlZmluZWQsXG4gICAgICBwb2xpY3k6IHByb3BzLmFwaUdhdGV3YXlFbmRwb2ludFxuICAgICAgICA/IG5ldyBpYW0uUG9saWN5RG9jdW1lbnQoe1xuICAgICAgICAgIHN0YXRlbWVudHM6IFtcbiAgICAgICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgICAgZWZmZWN0OiBpYW0uRWZmZWN0LkFMTE9XLFxuICAgICAgICAgICAgICBhY3Rpb25zOiBbJ2V4ZWN1dGUtYXBpOkludm9rZSddLFxuICAgICAgICAgICAgICBwcmluY2lwYWxzOiBbbmV3IGlhbS5BbnlQcmluY2lwYWwoKV0sXG4gICAgICAgICAgICAgIHJlc291cmNlczogW0ZuLmpvaW4oJycsIFsnZXhlY3V0ZS1hcGk6LycsICcqJ10pXSxcbiAgICAgICAgICAgICAgY29uZGl0aW9uczoge1xuICAgICAgICAgICAgICAgIFN0cmluZ0VxdWFsczogeyAnYXdzOlNvdXJjZVZwY2UnOiBwcm9wcy5hcGlHYXRld2F5RW5kcG9pbnQudnBjRW5kcG9pbnRJZCB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgXSxcbiAgICAgICAgfSlcbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgfSk7XG5cbiAgICB0aGlzLmFwaUVuZHBvaW50ID0gdGhpcy5hcGkudXJsO1xuICB9XG59XG4iXX0=
|
|
@@ -23,8 +23,8 @@ declare namespace is {
|
|
|
23
23
|
var buffer: (value: unknown) => value is Buffer;
|
|
24
24
|
var nullOrUndefined: (value: unknown) => value is null | undefined;
|
|
25
25
|
var object: (value: unknown) => value is object;
|
|
26
|
-
var iterable: <T = unknown>(value: unknown) => value is
|
|
27
|
-
var asyncIterable: <T = unknown>(value: unknown) => value is
|
|
26
|
+
var iterable: <T = unknown>(value: unknown) => value is Iterable<T>;
|
|
27
|
+
var asyncIterable: <T = unknown>(value: unknown) => value is AsyncIterable<T>;
|
|
28
28
|
var generator: (value: unknown) => value is Generator<unknown, any, unknown>;
|
|
29
29
|
var asyncGenerator: (value: unknown) => value is AsyncGenerator<unknown, any, unknown>;
|
|
30
30
|
var nativePromise: <T = unknown>(value: unknown) => value is Promise<T>;
|
|
@@ -54,6 +54,7 @@ declare namespace is {
|
|
|
54
54
|
var arrayBuffer: (value: unknown) => value is ArrayBuffer;
|
|
55
55
|
var sharedArrayBuffer: (value: unknown) => value is SharedArrayBuffer;
|
|
56
56
|
var dataView: (value: unknown) => value is DataView;
|
|
57
|
+
var enumCase: <T = unknown>(value: unknown, targetEnum: T) => boolean;
|
|
57
58
|
var directInstanceOf: <T>(instance: unknown, class_: Class<T, any[]>) => instance is T;
|
|
58
59
|
var urlInstance: (value: unknown) => value is URL;
|
|
59
60
|
var urlString: (value: unknown) => value is string;
|
|
@@ -184,6 +185,7 @@ interface Assert {
|
|
|
184
185
|
arrayBuffer: (value: unknown) => asserts value is ArrayBuffer;
|
|
185
186
|
sharedArrayBuffer: (value: unknown) => asserts value is SharedArrayBuffer;
|
|
186
187
|
dataView: (value: unknown) => asserts value is DataView;
|
|
188
|
+
enumCase: <T = unknown>(value: unknown, targetEnum: T) => asserts value is T[keyof T];
|
|
187
189
|
urlInstance: (value: unknown) => asserts value is URL;
|
|
188
190
|
urlString: (value: unknown) => asserts value is string;
|
|
189
191
|
truthy: (value: unknown) => asserts value is unknown;
|
|
@@ -143,7 +143,7 @@ is.nullOrUndefined = (value) => is.null_(value) || is.undefined(value);
|
|
|
143
143
|
is.object = (value) => !is.null_(value) && (typeof value === 'object' || is.function_(value));
|
|
144
144
|
is.iterable = (value) => { var _a; return is.function_((_a = value) === null || _a === void 0 ? void 0 : _a[Symbol.iterator]); };
|
|
145
145
|
is.asyncIterable = (value) => { var _a; return is.function_((_a = value) === null || _a === void 0 ? void 0 : _a[Symbol.asyncIterator]); };
|
|
146
|
-
is.generator = (value) => is.iterable(value) && is.function_(value.next) && is.function_(value.throw);
|
|
146
|
+
is.generator = (value) => { var _a, _b; return is.iterable(value) && is.function_((_a = value) === null || _a === void 0 ? void 0 : _a.next) && is.function_((_b = value) === null || _b === void 0 ? void 0 : _b.throw); };
|
|
147
147
|
is.asyncGenerator = (value) => is.asyncIterable(value) && is.function_(value.next) && is.function_(value.throw);
|
|
148
148
|
is.nativePromise = (value) => isObjectOfType('Promise')(value);
|
|
149
149
|
const hasPromiseAPI = (value) => {
|
|
@@ -178,6 +178,7 @@ is.bigUint64Array = isObjectOfType('BigUint64Array');
|
|
|
178
178
|
is.arrayBuffer = isObjectOfType('ArrayBuffer');
|
|
179
179
|
is.sharedArrayBuffer = isObjectOfType('SharedArrayBuffer');
|
|
180
180
|
is.dataView = isObjectOfType('DataView');
|
|
181
|
+
is.enumCase = (value, targetEnum) => Object.values(targetEnum).includes(value);
|
|
181
182
|
is.directInstanceOf = (instance, class_) => Object.getPrototypeOf(instance) === class_.prototype;
|
|
182
183
|
is.urlInstance = (value) => isObjectOfType('URL')(value);
|
|
183
184
|
is.urlString = (value) => {
|
|
@@ -355,6 +356,7 @@ exports.assert = {
|
|
|
355
356
|
arrayBuffer: (value) => assertType(is.arrayBuffer(value), 'ArrayBuffer', value),
|
|
356
357
|
sharedArrayBuffer: (value) => assertType(is.sharedArrayBuffer(value), 'SharedArrayBuffer', value),
|
|
357
358
|
dataView: (value) => assertType(is.dataView(value), 'DataView', value),
|
|
359
|
+
enumCase: (value, targetEnum) => assertType(is.enumCase(value, targetEnum), 'EnumCase', value),
|
|
358
360
|
urlInstance: (value) => assertType(is.urlInstance(value), 'URL', value),
|
|
359
361
|
urlString: (value) => assertType(is.urlString(value), "string with a URL" /* urlString */, value),
|
|
360
362
|
truthy: (value) => assertType(is.truthy(value), "truthy" /* truthy */, value),
|
|
@@ -212,6 +212,25 @@ is.boundFunction(function () {});
|
|
|
212
212
|
##### .sharedArrayBuffer(value)
|
|
213
213
|
##### .dataView(value)
|
|
214
214
|
|
|
215
|
+
##### .enumCase(value, enum)
|
|
216
|
+
|
|
217
|
+
**TypeScript-only**
|
|
218
|
+
|
|
219
|
+
Returns `true` if `value` is a member of `enum`.
|
|
220
|
+
|
|
221
|
+
```ts
|
|
222
|
+
enum Direction {
|
|
223
|
+
Ascending = 'ascending',
|
|
224
|
+
Descending = 'descending'
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
is.enumCase('ascending', Direction);
|
|
228
|
+
//=> true
|
|
229
|
+
|
|
230
|
+
is.enumCase('other', Direction);
|
|
231
|
+
//=> false
|
|
232
|
+
```
|
|
233
|
+
|
|
215
234
|
#### Emptiness
|
|
216
235
|
|
|
217
236
|
##### .emptyString(value)
|
|
@@ -602,6 +621,10 @@ For the ones I found, pick 3 of these.
|
|
|
602
621
|
|
|
603
622
|
The most common mistakes I noticed in these modules was using `instanceof` for type checking, forgetting that functions are objects, and omitting `symbol` as a primitive.
|
|
604
623
|
|
|
624
|
+
### Why not just use `instanceof` instead of this package?
|
|
625
|
+
|
|
626
|
+
`instanceof` does not work correctly for all types and it does not work across [realms](https://stackoverflow.com/a/49832343/64949). Examples of realms are iframes, windows, web workers, and the `vm` module in Node.js.
|
|
627
|
+
|
|
605
628
|
## For enterprise
|
|
606
629
|
|
|
607
630
|
Available as part of the Tidelift Subscription.
|
|
@@ -8,9 +8,9 @@ This package contains type definitions for Node.js (https://nodejs.org/).
|
|
|
8
8
|
Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node.
|
|
9
9
|
|
|
10
10
|
### Additional Details
|
|
11
|
-
* Last updated: Tue,
|
|
11
|
+
* Last updated: Tue, 18 Jan 2022 18:31:37 GMT
|
|
12
12
|
* Dependencies: none
|
|
13
13
|
* Global values: `AbortController`, `AbortSignal`, `__dirname`, `__filename`, `console`, `exports`, `gc`, `global`, `module`, `process`, `require`
|
|
14
14
|
|
|
15
15
|
# Credits
|
|
16
|
-
These definitions were written by [Microsoft TypeScript](https://github.com/Microsoft), [DefinitelyTyped](https://github.com/DefinitelyTyped), [Alberto Schiabel](https://github.com/jkomyno), [Alvis HT Tang](https://github.com/alvis), [Andrew Makarov](https://github.com/r3nya), [Benjamin Toueg](https://github.com/btoueg), [Chigozirim C.](https://github.com/smac89), [David Junger](https://github.com/touffy), [Deividas Bakanas](https://github.com/DeividasBakanas), [Eugene Y. Q. Shen](https://github.com/eyqs), [Hannes Magnusson](https://github.com/Hannes-Magnusson-CK), [Huw](https://github.com/hoo29), [Kelvin Jin](https://github.com/kjin), [Klaus Meinhardt](https://github.com/ajafff), [Lishude](https://github.com/islishude), [Mariusz Wiktorczyk](https://github.com/mwiktorczyk), [Mohsen Azimi](https://github.com/mohsen1), [Nicolas Even](https://github.com/n-e), [Nikita Galkin](https://github.com/galkin), [Parambir Singh](https://github.com/parambirs), [Sebastian Silbermann](https://github.com/eps1lon), [Seth Westphal](https://github.com/westy92), [Simon Schick](https://github.com/SimonSchick), [Thomas den Hollander](https://github.com/ThomasdenH), [Wilco Bakker](https://github.com/WilcoBakker), [wwwy3y3](https://github.com/wwwy3y3), [Samuel Ainsworth](https://github.com/samuela), [Kyle Uehlein](https://github.com/kuehlein), [Thanik Bhongbhibhat](https://github.com/bhongy), [Marcin Kopacz](https://github.com/chyzwar), [Trivikram Kamat](https://github.com/trivikr), [Junxiao Shi](https://github.com/yoursunny), [Ilia Baryshnikov](https://github.com/qwelias), [ExE Boss](https://github.com/ExE-Boss), [
|
|
16
|
+
These definitions were written by [Microsoft TypeScript](https://github.com/Microsoft), [DefinitelyTyped](https://github.com/DefinitelyTyped), [Alberto Schiabel](https://github.com/jkomyno), [Alvis HT Tang](https://github.com/alvis), [Andrew Makarov](https://github.com/r3nya), [Benjamin Toueg](https://github.com/btoueg), [Chigozirim C.](https://github.com/smac89), [David Junger](https://github.com/touffy), [Deividas Bakanas](https://github.com/DeividasBakanas), [Eugene Y. Q. Shen](https://github.com/eyqs), [Hannes Magnusson](https://github.com/Hannes-Magnusson-CK), [Huw](https://github.com/hoo29), [Kelvin Jin](https://github.com/kjin), [Klaus Meinhardt](https://github.com/ajafff), [Lishude](https://github.com/islishude), [Mariusz Wiktorczyk](https://github.com/mwiktorczyk), [Mohsen Azimi](https://github.com/mohsen1), [Nicolas Even](https://github.com/n-e), [Nikita Galkin](https://github.com/galkin), [Parambir Singh](https://github.com/parambirs), [Sebastian Silbermann](https://github.com/eps1lon), [Seth Westphal](https://github.com/westy92), [Simon Schick](https://github.com/SimonSchick), [Thomas den Hollander](https://github.com/ThomasdenH), [Wilco Bakker](https://github.com/WilcoBakker), [wwwy3y3](https://github.com/wwwy3y3), [Samuel Ainsworth](https://github.com/samuela), [Kyle Uehlein](https://github.com/kuehlein), [Thanik Bhongbhibhat](https://github.com/bhongy), [Marcin Kopacz](https://github.com/chyzwar), [Trivikram Kamat](https://github.com/trivikr), [Junxiao Shi](https://github.com/yoursunny), [Ilia Baryshnikov](https://github.com/qwelias), [ExE Boss](https://github.com/ExE-Boss), [Piotr Błażejewicz](https://github.com/peterblazejewicz), [Anna Henningsen](https://github.com/addaleax), [Victor Perin](https://github.com/victorperin), [Yongsheng Zhang](https://github.com/ZYSzys), [NodeJS Contributors](https://github.com/NodeJS), [Linus Unnebäck](https://github.com/LinusU), and [wafuwafu13](https://github.com/wafuwafu13).
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The `assert` module provides a set of assertion functions for verifying
|
|
3
3
|
* invariants.
|
|
4
|
-
* @see [source](https://github.com/nodejs/node/blob/
|
|
4
|
+
* @see [source](https://github.com/nodejs/node/blob/v17.0.0/lib/assert.js)
|
|
5
5
|
*/
|
|
6
6
|
declare module 'assert' {
|
|
7
7
|
/**
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* import async_hooks from 'async_hooks';
|
|
7
7
|
* ```
|
|
8
8
|
* @experimental
|
|
9
|
-
* @see [source](https://github.com/nodejs/node/blob/
|
|
9
|
+
* @see [source](https://github.com/nodejs/node/blob/v17.0.0/lib/async_hooks.js)
|
|
10
10
|
*/
|
|
11
11
|
declare module 'async_hooks' {
|
|
12
12
|
/**
|
|
@@ -395,8 +395,9 @@ declare module 'async_hooks' {
|
|
|
395
395
|
getStore(): T | undefined;
|
|
396
396
|
/**
|
|
397
397
|
* Runs a function synchronously within a context and returns its
|
|
398
|
-
* return value. The store is not accessible outside of the callback function
|
|
399
|
-
*
|
|
398
|
+
* return value. The store is not accessible outside of the callback function.
|
|
399
|
+
* The store is accessible to any asynchronous operations created within the
|
|
400
|
+
* callback.
|
|
400
401
|
*
|
|
401
402
|
* The optional `args` are passed to the callback function.
|
|
402
403
|
*
|
|
@@ -410,6 +411,9 @@ declare module 'async_hooks' {
|
|
|
410
411
|
* try {
|
|
411
412
|
* asyncLocalStorage.run(store, () => {
|
|
412
413
|
* asyncLocalStorage.getStore(); // Returns the store object
|
|
414
|
+
* setTimeout(() => {
|
|
415
|
+
* asyncLocalStorage.getStore(); // Returns the store object
|
|
416
|
+
* }, 200);
|
|
413
417
|
* throw new Error();
|
|
414
418
|
* });
|
|
415
419
|
* } catch (e) {
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
* // Creates a Buffer containing the Latin-1 bytes [0x74, 0xe9, 0x73, 0x74].
|
|
42
42
|
* const buf7 = Buffer.from('tést', 'latin1');
|
|
43
43
|
* ```
|
|
44
|
-
* @see [source](https://github.com/nodejs/node/blob/
|
|
44
|
+
* @see [source](https://github.com/nodejs/node/blob/v17.0.0/lib/buffer.js)
|
|
45
45
|
*/
|
|
46
46
|
declare module 'buffer' {
|
|
47
47
|
import { BinaryLike } from 'node:crypto';
|
|
@@ -113,18 +113,18 @@ declare module 'buffer' {
|
|
|
113
113
|
/**
|
|
114
114
|
* A [`Blob`](https://developer.mozilla.org/en-US/docs/Web/API/Blob) encapsulates immutable, raw data that can be safely shared across
|
|
115
115
|
* multiple worker threads.
|
|
116
|
-
* @since v15.7.0
|
|
116
|
+
* @since v15.7.0, v14.18.0
|
|
117
117
|
* @experimental
|
|
118
118
|
*/
|
|
119
119
|
export class Blob {
|
|
120
120
|
/**
|
|
121
121
|
* The total size of the `Blob` in bytes.
|
|
122
|
-
* @since v15.7.0
|
|
122
|
+
* @since v15.7.0, v14.18.0
|
|
123
123
|
*/
|
|
124
124
|
readonly size: number;
|
|
125
125
|
/**
|
|
126
126
|
* The content-type of the `Blob`.
|
|
127
|
-
* @since v15.7.0
|
|
127
|
+
* @since v15.7.0, v14.18.0
|
|
128
128
|
*/
|
|
129
129
|
readonly type: string;
|
|
130
130
|
/**
|
|
@@ -139,13 +139,13 @@ declare module 'buffer' {
|
|
|
139
139
|
/**
|
|
140
140
|
* Returns a promise that fulfills with an [ArrayBuffer](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer) containing a copy of
|
|
141
141
|
* the `Blob` data.
|
|
142
|
-
* @since v15.7.0
|
|
142
|
+
* @since v15.7.0, v14.18.0
|
|
143
143
|
*/
|
|
144
144
|
arrayBuffer(): Promise<ArrayBuffer>;
|
|
145
145
|
/**
|
|
146
146
|
* Creates and returns a new `Blob` containing a subset of this `Blob` objects
|
|
147
147
|
* data. The original `Blob` is not altered.
|
|
148
|
-
* @since v15.7.0
|
|
148
|
+
* @since v15.7.0, v14.18.0
|
|
149
149
|
* @param start The starting index.
|
|
150
150
|
* @param end The ending index.
|
|
151
151
|
* @param type The content-type for the new `Blob`
|
|
@@ -154,7 +154,7 @@ declare module 'buffer' {
|
|
|
154
154
|
/**
|
|
155
155
|
* Returns a promise that fulfills with the contents of the `Blob` decoded as a
|
|
156
156
|
* UTF-8 string.
|
|
157
|
-
* @since v15.7.0
|
|
157
|
+
* @since v15.7.0, v14.18.0
|
|
158
158
|
*/
|
|
159
159
|
text(): Promise<string>;
|
|
160
160
|
/**
|
|
@@ -2114,7 +2114,7 @@ declare module 'buffer' {
|
|
|
2114
2114
|
* **binary data and predate the introduction of typed arrays in JavaScript.**
|
|
2115
2115
|
* **For code running using Node.js APIs, converting between base64-encoded strings**
|
|
2116
2116
|
* **and binary data should be performed using `Buffer.from(str, 'base64')` and`buf.toString('base64')`.**
|
|
2117
|
-
* @since v15.13.0
|
|
2117
|
+
* @since v15.13.0, v14.17.0
|
|
2118
2118
|
* @deprecated Use `Buffer.from(data, 'base64')` instead.
|
|
2119
2119
|
* @param data The Base64-encoded input string.
|
|
2120
2120
|
*/
|
|
@@ -2130,7 +2130,7 @@ declare module 'buffer' {
|
|
|
2130
2130
|
* **binary data and predate the introduction of typed arrays in JavaScript.**
|
|
2131
2131
|
* **For code running using Node.js APIs, converting between base64-encoded strings**
|
|
2132
2132
|
* **and binary data should be performed using `Buffer.from(str, 'base64')` and`buf.toString('base64')`.**
|
|
2133
|
-
* @since v15.13.0
|
|
2133
|
+
* @since v15.13.0, v14.17.0
|
|
2134
2134
|
* @deprecated Use `buf.toString('base64')` instead.
|
|
2135
2135
|
* @param data An ASCII (Latin1) string.
|
|
2136
2136
|
*/
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
* For certain use cases, such as automating shell scripts, the `synchronous counterparts` may be more convenient. In many cases, however,
|
|
61
61
|
* the synchronous methods can have significant impact on performance due to
|
|
62
62
|
* stalling the event loop while spawned processes complete.
|
|
63
|
-
* @see [source](https://github.com/nodejs/node/blob/
|
|
63
|
+
* @see [source](https://github.com/nodejs/node/blob/v17.0.0/lib/child_process.js)
|
|
64
64
|
*/
|
|
65
65
|
declare module 'child_process' {
|
|
66
66
|
import { ObjectEncodingOptions } from 'node:fs';
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
* ```
|
|
50
50
|
*
|
|
51
51
|
* On Windows, it is not yet possible to set up a named pipe server in a worker.
|
|
52
|
-
* @see [source](https://github.com/nodejs/node/blob/
|
|
52
|
+
* @see [source](https://github.com/nodejs/node/blob/v17.0.0/lib/cluster.js)
|
|
53
53
|
*/
|
|
54
54
|
declare module 'cluster' {
|
|
55
55
|
import * as child from 'node:child_process';
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
* myConsole.warn(`Danger ${name}! Danger!`);
|
|
54
54
|
* // Prints: Danger Will Robinson! Danger!, to err
|
|
55
55
|
* ```
|
|
56
|
-
* @see [source](https://github.com/nodejs/node/blob/
|
|
56
|
+
* @see [source](https://github.com/nodejs/node/blob/v17.0.0/lib/console.js)
|
|
57
57
|
*/
|
|
58
58
|
declare module 'console' {
|
|
59
59
|
import console = require('node:console');
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* // Prints:
|
|
14
14
|
* // c0fa1bc00531bd78ef38c628449c5102aeabd49b5dc3a2a516ea6ea959d6658e
|
|
15
15
|
* ```
|
|
16
|
-
* @see [source](https://github.com/nodejs/node/blob/
|
|
16
|
+
* @see [source](https://github.com/nodejs/node/blob/v17.0.0/lib/crypto.js)
|
|
17
17
|
*/
|
|
18
18
|
declare module 'crypto' {
|
|
19
19
|
import * as stream from 'node:stream';
|
|
@@ -3030,7 +3030,7 @@ declare module 'crypto' {
|
|
|
3030
3030
|
/**
|
|
3031
3031
|
* Generates a random [RFC 4122](https://www.rfc-editor.org/rfc/rfc4122.txt) version 4 UUID. The UUID is generated using a
|
|
3032
3032
|
* cryptographic pseudorandom number generator.
|
|
3033
|
-
* @since v15.6.0
|
|
3033
|
+
* @since v15.6.0, v14.17.0
|
|
3034
3034
|
*/
|
|
3035
3035
|
function randomUUID(options?: RandomUUIDOptions): string;
|
|
3036
3036
|
interface X509CheckOptions {
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
* server.bind(41234);
|
|
24
24
|
* // Prints: server listening 0.0.0.0:41234
|
|
25
25
|
* ```
|
|
26
|
-
* @see [source](https://github.com/nodejs/node/blob/
|
|
26
|
+
* @see [source](https://github.com/nodejs/node/blob/v17.0.0/lib/dgram.js)
|
|
27
27
|
*/
|
|
28
28
|
declare module 'dgram' {
|
|
29
29
|
import { AddressInfo } from 'node:net';
|
|
@@ -260,7 +260,7 @@ declare module 'dgram' {
|
|
|
260
260
|
*
|
|
261
261
|
* The `address` argument is a string. If the value of `address` is a host name,
|
|
262
262
|
* DNS will be used to resolve the address of the host. If `address` is not
|
|
263
|
-
* provided or otherwise
|
|
263
|
+
* provided or otherwise nullish, `'127.0.0.1'` (for `udp4` sockets) or `'::1'`(for `udp6` sockets) will be used by default.
|
|
264
264
|
*
|
|
265
265
|
* If the socket has not been previously bound with a call to `bind`, the socket
|
|
266
266
|
* is assigned a random port number and is bound to the "all interfaces" address
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
* should generally include the module name to avoid collisions with data from
|
|
21
21
|
* other modules.
|
|
22
22
|
* @experimental
|
|
23
|
-
* @see [source](https://github.com/nodejs/node/blob/
|
|
23
|
+
* @see [source](https://github.com/nodejs/node/blob/v17.0.0/lib/diagnostics_channel.js)
|
|
24
24
|
*/
|
|
25
25
|
declare module 'diagnostics_channel' {
|
|
26
26
|
/**
|
|
@@ -119,7 +119,7 @@ declare module 'dns/promises' {
|
|
|
119
119
|
*
|
|
120
120
|
* <omitted>
|
|
121
121
|
*
|
|
122
|
-
* On error, the `Promise` is rejected with an `Error` object, where `err.code`is one of the
|
|
122
|
+
* On error, the `Promise` is rejected with an `Error` object, where `err.code`is one of the DNS error codes.
|
|
123
123
|
* @since v10.6.0
|
|
124
124
|
* @param hostname Host name to resolve.
|
|
125
125
|
* @param [rrtype='A'] Resource record type.
|
|
@@ -189,7 +189,7 @@ declare module 'dns/promises' {
|
|
|
189
189
|
* Uses the DNS protocol to resolve `CAA` records for the `hostname`. On success,
|
|
190
190
|
* the `Promise` is resolved with an array of objects containing available
|
|
191
191
|
* certification authority authorization records available for the `hostname`(e.g. `[{critical: 0, iodef: 'mailto:pki@example.com'},{critical: 128, issue: 'pki.example.com'}]`).
|
|
192
|
-
* @since v15.0.0
|
|
192
|
+
* @since v15.0.0, v14.17.0
|
|
193
193
|
*/
|
|
194
194
|
function resolveCaa(hostname: string): Promise<CaaRecord[]>;
|
|
195
195
|
/**
|
|
@@ -300,7 +300,7 @@ declare module 'dns/promises' {
|
|
|
300
300
|
* Performs a reverse DNS query that resolves an IPv4 or IPv6 address to an
|
|
301
301
|
* array of host names.
|
|
302
302
|
*
|
|
303
|
-
* On error, the `Promise` is rejected with an `Error` object, where `err.code`is one of the
|
|
303
|
+
* On error, the `Promise` is rejected with an `Error` object, where `err.code`is one of the DNS error codes.
|
|
304
304
|
* @since v10.6.0
|
|
305
305
|
*/
|
|
306
306
|
function reverse(ip: string): Promise<string[]>;
|
|
@@ -332,14 +332,16 @@ declare module 'dns/promises' {
|
|
|
332
332
|
*/
|
|
333
333
|
function setServers(servers: ReadonlyArray<string>): void;
|
|
334
334
|
/**
|
|
335
|
-
* Set the default value of `verbatim` in
|
|
336
|
-
* - `ipv4first`: sets default `verbatim` `false`.
|
|
337
|
-
* - `verbatim`: sets default `verbatim` `true`.
|
|
335
|
+
* Set the default value of `verbatim` in `dns.lookup()` and `dnsPromises.lookup()`. The value could be:
|
|
338
336
|
*
|
|
339
|
-
*
|
|
340
|
-
*
|
|
341
|
-
*
|
|
342
|
-
*
|
|
337
|
+
* * `ipv4first`: sets default `verbatim` `false`.
|
|
338
|
+
* * `verbatim`: sets default `verbatim` `true`.
|
|
339
|
+
*
|
|
340
|
+
* The default is `ipv4first` and `dnsPromises.setDefaultResultOrder()` have
|
|
341
|
+
* higher priority than `--dns-result-order`. When using `worker threads`,`dnsPromises.setDefaultResultOrder()` from the main thread won't affect the
|
|
342
|
+
* default dns orders in workers.
|
|
343
|
+
* @since v16.4.0, v14.18.0
|
|
344
|
+
* @param order must be `'ipv4first'` or `'verbatim'`.
|
|
343
345
|
*/
|
|
344
346
|
function setDefaultResultOrder(order: 'ipv4first' | 'verbatim'): void;
|
|
345
347
|
class Resolver {
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
* ```
|
|
43
43
|
*
|
|
44
44
|
* See the `Implementation considerations section` for more information.
|
|
45
|
-
* @see [source](https://github.com/nodejs/node/blob/
|
|
45
|
+
* @see [source](https://github.com/nodejs/node/blob/v17.0.0/lib/dns.js)
|
|
46
46
|
*/
|
|
47
47
|
declare module 'dns' {
|
|
48
48
|
import * as dnsPromises from 'node:dns/promises';
|
|
@@ -58,6 +58,9 @@ declare module 'dns' {
|
|
|
58
58
|
family?: number | undefined;
|
|
59
59
|
hints?: number | undefined;
|
|
60
60
|
all?: boolean | undefined;
|
|
61
|
+
/**
|
|
62
|
+
* @default true
|
|
63
|
+
*/
|
|
61
64
|
verbatim?: boolean | undefined;
|
|
62
65
|
}
|
|
63
66
|
export interface LookupOneOptions extends LookupOptions {
|
|
@@ -241,7 +244,7 @@ declare module 'dns' {
|
|
|
241
244
|
*
|
|
242
245
|
* <omitted>
|
|
243
246
|
*
|
|
244
|
-
* On error, `err` is an `Error` object, where `err.code` is one of
|
|
247
|
+
* On error, `err` is an `Error` object, where `err.code` is one of theDNS error codes.
|
|
245
248
|
* @since v0.1.27
|
|
246
249
|
* @param hostname Host name to resolve.
|
|
247
250
|
* @param [rrtype='A'] Resource record type.
|
|
@@ -314,7 +317,7 @@ declare module 'dns' {
|
|
|
314
317
|
* Uses the DNS protocol to resolve `CAA` records for the `hostname`. The`addresses` argument passed to the `callback` function
|
|
315
318
|
* will contain an array of certification authority authorization records
|
|
316
319
|
* available for the `hostname` (e.g. `[{critical: 0, iodef: 'mailto:pki@example.com'}, {critical: 128, issue: 'pki.example.com'}]`).
|
|
317
|
-
* @since v15.0.0
|
|
320
|
+
* @since v15.0.0, v14.17.0
|
|
318
321
|
*/
|
|
319
322
|
export function resolveCaa(hostname: string, callback: (err: NodeJS.ErrnoException | null, records: CaaRecord[]) => void): void;
|
|
320
323
|
export namespace resolveCaa {
|
|
@@ -527,14 +530,16 @@ declare module 'dns' {
|
|
|
527
530
|
*/
|
|
528
531
|
export function getServers(): string[];
|
|
529
532
|
/**
|
|
530
|
-
* Set the default value of `verbatim` in {@link lookup}. The value could be:
|
|
531
|
-
*
|
|
532
|
-
*
|
|
533
|
-
*
|
|
534
|
-
*
|
|
535
|
-
*
|
|
536
|
-
* @
|
|
537
|
-
*
|
|
533
|
+
* Set the default value of `verbatim` in {@link lookup} and `dnsPromises.lookup()`. The value could be:
|
|
534
|
+
*
|
|
535
|
+
* * `ipv4first`: sets default `verbatim` `false`.
|
|
536
|
+
* * `verbatim`: sets default `verbatim` `true`.
|
|
537
|
+
*
|
|
538
|
+
* The default is `ipv4first` and {@link setDefaultResultOrder} have higher
|
|
539
|
+
* priority than `--dns-result-order`. When using `worker threads`,{@link setDefaultResultOrder} from the main thread won't affect the default
|
|
540
|
+
* dns orders in workers.
|
|
541
|
+
* @since v16.4.0, v14.18.0
|
|
542
|
+
* @param order must be `'ipv4first'` or `'verbatim'`.
|
|
538
543
|
*/
|
|
539
544
|
export function setDefaultResultOrder(order: 'ipv4first' | 'verbatim'): void;
|
|
540
545
|
// Error codes
|
|
@@ -640,7 +645,7 @@ declare module 'dns' {
|
|
|
640
645
|
* The resolver will use the v4 local address when making requests to IPv4 DNS
|
|
641
646
|
* servers, and the v6 local address when making requests to IPv6 DNS servers.
|
|
642
647
|
* The `rrtype` of resolution requests has no impact on the local address used.
|
|
643
|
-
* @since v15.1.0
|
|
648
|
+
* @since v15.1.0, v14.17.0
|
|
644
649
|
* @param [ipv4='0.0.0.0'] A string representation of an IPv4 address.
|
|
645
650
|
* @param [ipv6='::0'] A string representation of an IPv6 address.
|
|
646
651
|
*/
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* will be notified, rather than losing the context of the error in the`process.on('uncaughtException')` handler, or causing the program to
|
|
12
12
|
* exit immediately with an error code.
|
|
13
13
|
* @deprecated Since v1.4.2 - Deprecated
|
|
14
|
-
* @see [source](https://github.com/nodejs/node/blob/
|
|
14
|
+
* @see [source](https://github.com/nodejs/node/blob/v17.0.0/lib/domain.js)
|
|
15
15
|
*/
|
|
16
16
|
declare module 'domain' {
|
|
17
17
|
import EventEmitter = require('node:events');
|