Created
March 10, 2022 00:21
-
-
Save lannonbr/b63d08bab4d4eeb2ed693a43ec9a5bd1 to your computer and use it in GitHub Desktop.
One off script for ESM Checker to add a description attribute to items in a package table
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require("dotenv").config(); | |
const fetch = require("node-fetch"); | |
const { DynamoDBClient } = require("@aws-sdk/client-dynamodb"); | |
const { | |
DynamoDBDocumentClient, | |
UpdateCommand, | |
ScanCommand, | |
} = require("@aws-sdk/lib-dynamodb"); | |
const ddbClient = new DynamoDBClient(); | |
const docClient = DynamoDBDocumentClient.from(ddbClient); | |
async function run() { | |
const packages = await docClient.send( | |
new ScanCommand({ | |
TableName: process.env.DYNAMO_PACKAGE_TABLE_NAME, | |
AttributesToGet: ["package_name"], | |
}) | |
); | |
let package_names = packages.Items.map((p) => p.package_name); | |
let package_contents = await Promise.all( | |
package_names.map((name) => { | |
return fetch(`https://registry.npmjs.com/${name}`, { | |
headers: { | |
"User-Agent": | |
"esm-checker/0.3.0 (+https://github.com/lannonbr/esm-checker)", | |
}, | |
}).then((res) => res.json()); | |
}) | |
); | |
package_contents = package_contents | |
.filter((p) => typeof p.description !== "undefined") | |
.map((p) => { | |
return { name: p.name, description: p.description }; | |
}); | |
await Promise.all( | |
package_contents.map((package) => { | |
return docClient.send( | |
new UpdateCommand({ | |
TableName: process.env.DYNAMO_PACKAGE_TABLE_NAME, | |
Key: { | |
package_name: package.name, | |
}, | |
UpdateExpression: "SET description = :d", | |
ExpressionAttributeValues: { | |
":d": package.description, | |
}, | |
}) | |
); | |
}) | |
); | |
} | |
run(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment