You've already forked factorio-sites
mirror of
https://github.com/barthuijgen/factorio-sites.git
synced 2025-10-08 23:41:56 +02:00
feat: added pulumi infra and fixed thumbnail render function
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@@ -46,3 +46,5 @@ Thumbs.db
|
||||
.local.env
|
||||
.env
|
||||
local.readme.md
|
||||
|
||||
/bin/
|
||||
|
@@ -1,20 +0,0 @@
|
||||
{
|
||||
"name": "blueprint-image-function",
|
||||
"version": "0.0.1",
|
||||
"scripts": {
|
||||
"postinstall": "yarn prisma generate"
|
||||
},
|
||||
"dependencies": {
|
||||
"puppeteer": "7.1.0",
|
||||
"tslib": "2.1.0",
|
||||
"sharp": "0.27.2",
|
||||
"prisma": "2.18.0",
|
||||
"@prisma/client": "2.18.0",
|
||||
"@google-cloud/pubsub": "2.9.0",
|
||||
"@google-cloud/secret-manager": "3.4.0",
|
||||
"@google-cloud/storage": "5.7.4",
|
||||
"cookie": "0.4.1",
|
||||
"pako": "1.0.11",
|
||||
"bcrypt": "5.0.0"
|
||||
}
|
||||
}
|
24
apps/blueprint-image-function/post-build-script.ts
Normal file
24
apps/blueprint-image-function/post-build-script.ts
Normal file
@@ -0,0 +1,24 @@
|
||||
console.log("POST BUILD SCRIPT", __dirname);
|
||||
|
||||
/*
|
||||
|
||||
yarn nx build blueprint-image-function
|
||||
|
||||
1. Add to package.json
|
||||
|
||||
"scripts": {
|
||||
"postinstall": "yarn prisma generate"
|
||||
},
|
||||
|
||||
2. Add to dependencies
|
||||
|
||||
"prisma": "3.6.0",
|
||||
|
||||
2. Replace prisma generate header
|
||||
|
||||
generator client {
|
||||
provider = "prisma-client-js"
|
||||
binaryTargets = ["native", "debian-openssl-1.1.x"]
|
||||
}
|
||||
|
||||
*/
|
83
apps/blueprint-image-function/src/fetch-handlers.ts
Normal file
83
apps/blueprint-image-function/src/fetch-handlers.ts
Normal file
@@ -0,0 +1,83 @@
|
||||
import * as phin from "phin";
|
||||
import {
|
||||
getBlueprintById,
|
||||
hasBlueprintImage,
|
||||
saveBlueprintImage,
|
||||
init,
|
||||
} from "@factorio-sites/database";
|
||||
import { jsonReplaceErrors } from "@factorio-sites/node-utils";
|
||||
import { optimise } from "./image-optimiser";
|
||||
|
||||
// {"blueprintId":"ee9b98eb-313a-4401-8aee-d6e970b76aad"}
|
||||
// ^ image_hash: 6f78c0a93c20fe99076e8defe4e396923f42753b
|
||||
|
||||
/** message body for pubsub triggered function */
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
type Message = Record<string, any>;
|
||||
|
||||
/** context for pubsub triggered function */
|
||||
interface Context {
|
||||
eventId: string;
|
||||
eventType: string;
|
||||
timestamp: string;
|
||||
resource: { service: string; name: string };
|
||||
}
|
||||
|
||||
type PubSubHandler = (
|
||||
message: Message,
|
||||
context: Context,
|
||||
callback: (error?: string) => void
|
||||
) => void;
|
||||
|
||||
export const functionPubSubHandler: PubSubHandler = async (message, _context, callback) => {
|
||||
const error = (message: string, data: Record<string, unknown> = {}) => {
|
||||
console.error(JSON.stringify({ message, ...data }, jsonReplaceErrors));
|
||||
callback(message);
|
||||
};
|
||||
const log = (message: string, data: Record<string, unknown> = {}) => {
|
||||
console.log(JSON.stringify({ message, ...data }));
|
||||
};
|
||||
|
||||
try {
|
||||
const data = message.data
|
||||
? JSON.parse(Buffer.from(message.data, "base64").toString())
|
||||
: message;
|
||||
|
||||
const blueprintId = data.blueprintId;
|
||||
|
||||
if (!blueprintId) {
|
||||
return error("No blueprintId in body");
|
||||
}
|
||||
|
||||
await init();
|
||||
const blueprint = await getBlueprintById(blueprintId);
|
||||
|
||||
if (!blueprint) {
|
||||
return error(`Blueprint ${blueprintId} not found`);
|
||||
}
|
||||
|
||||
if (await hasBlueprintImage(blueprint.image_hash, "300")) {
|
||||
log(`Image already exists ${blueprint.image_hash}`);
|
||||
return callback();
|
||||
}
|
||||
|
||||
console.log(`Fetching https://fbsr.factorio.workers.dev/${blueprint.blueprint_hash}?size=300`);
|
||||
const response = await phin(
|
||||
`https://fbsr.factorio.workers.dev/${blueprint.blueprint_hash}?size=300`
|
||||
);
|
||||
const image = response.body;
|
||||
console.log("Image fetched");
|
||||
|
||||
// Make thumbnail, max size 300px
|
||||
const min_image = await optimise(image, 300);
|
||||
|
||||
await saveBlueprintImage(blueprint.image_hash, min_image, "300");
|
||||
log(`Saved image with image hash ${blueprint.image_hash}`);
|
||||
|
||||
// await saveBlueprintImage(blueprint.image_hash, image, "original");
|
||||
|
||||
callback();
|
||||
} catch (reason) {
|
||||
error(`Error rendering image ${reason}`, { error: reason });
|
||||
}
|
||||
};
|
@@ -58,7 +58,7 @@ export const functionHttpHandler: Handler = async (req, res) => {
|
||||
}
|
||||
|
||||
if (await hasBlueprintImage(blueprint.image_hash, "300")) {
|
||||
return res.status(200).send("Image already exists");
|
||||
return res.status(200).send(`Image already exists ${blueprint.image_hash}`);
|
||||
}
|
||||
|
||||
const blueprint_string = await getBlueprintStringByHash(blueprint.blueprint_hash);
|
||||
@@ -75,7 +75,7 @@ export const functionHttpHandler: Handler = async (req, res) => {
|
||||
await saveBlueprintImage(blueprint.image_hash, min_image, "300");
|
||||
|
||||
res.status(200).send("Done");
|
||||
} catch (reason) {
|
||||
} catch (reason: any) {
|
||||
res.status(500).send(`Error rendering image ${reason.stack || reason}`);
|
||||
}
|
||||
};
|
||||
@@ -100,13 +100,11 @@ export const functionPubSubHandler: PubSubHandler = async (message, _context, ca
|
||||
return error("No blueprintId in body");
|
||||
}
|
||||
|
||||
log(`generating image for ${blueprintId}`);
|
||||
|
||||
await init();
|
||||
const blueprint = await getBlueprintById(blueprintId);
|
||||
|
||||
if (!blueprint) {
|
||||
return error("Blueprint not found");
|
||||
return error(`Blueprint ${blueprintId} not found`);
|
||||
}
|
||||
|
||||
if (await hasBlueprintImage(blueprint.image_hash, "300")) {
|
||||
@@ -114,6 +112,8 @@ export const functionPubSubHandler: PubSubHandler = async (message, _context, ca
|
||||
return callback();
|
||||
}
|
||||
|
||||
log(`generating image for ${blueprintId}`);
|
||||
|
||||
const blueprint_string = await getBlueprintStringByHash(blueprint.blueprint_hash);
|
||||
if (!blueprint_string) {
|
||||
return error("Blueprint string not found");
|
||||
|
@@ -1,11 +1,8 @@
|
||||
import { functionHttpHandler, functionPubSubHandler } from "./function-handler";
|
||||
// import { local_test } from "./local-test";
|
||||
// import { functionHttpHandler, functionPubSubHandler } from "./function-handler";
|
||||
import { functionPubSubHandler } from "./fetch-handlers";
|
||||
// import { rePublishAllBlueprints } from "./republish-pubsub";
|
||||
|
||||
// import { subscribeToPubSub } from "./pubsub-render";
|
||||
// subscribeToPubSub().catch((reason) => console.error("Fatal error:", reason));
|
||||
// rePublishAllBlueprints().catch((reason) => console.error("Fatal error:", reason));
|
||||
|
||||
exports.renderImageHttp = functionHttpHandler;
|
||||
// exports.renderImageHttp = functionHttpHandler;
|
||||
exports.renderImagePubSub = functionPubSubHandler;
|
||||
|
||||
// local_test("8737437e-f15b-459c-8c1d-d0074f3a89ca");
|
||||
// rePublishAllBlueprints();
|
||||
|
@@ -60,7 +60,7 @@ export async function subscribeToPubSub() {
|
||||
await saveBlueprintImage(blueprint.image_hash, min_image, "300");
|
||||
|
||||
return ack("[pubsub] image saved", true);
|
||||
} catch (reason) {
|
||||
} catch (reason: any) {
|
||||
return ack(`[pubsub:error] ${reason.stack || reason}`, false);
|
||||
}
|
||||
};
|
||||
|
@@ -1,22 +1,70 @@
|
||||
// import { getBlueprintImageRequestTopic, getPaginatedBlueprints } from "@factorio-sites/database";
|
||||
import {
|
||||
getBlueprintBookById,
|
||||
getBlueprintById,
|
||||
getBlueprintImageRequestTopic,
|
||||
hasBlueprintImage,
|
||||
init,
|
||||
searchBlueprintPages,
|
||||
} from "@factorio-sites/database";
|
||||
import { getFirstBlueprintFromChildTree } from "@factorio-sites/node-utils";
|
||||
import { BlueprintPage } from "@factorio-sites/types";
|
||||
|
||||
// export async function rePublishAllBlueprints() {
|
||||
// const topic = getBlueprintImageRequestTopic();
|
||||
// const fetchPage = async (page = 1) => {
|
||||
// const blueprints = await getPaginatedBlueprints(page);
|
||||
// if (blueprints.length === 0) {
|
||||
// return console.log("No more blueprints found");
|
||||
// }
|
||||
// console.log(`Publishing page ${page} with ${blueprints.length} blueprints`);
|
||||
const perPage = 10;
|
||||
const pageLimit = 99;
|
||||
|
||||
// await Promise.all(
|
||||
// blueprints.map((blueprint) => {
|
||||
// return topic.publishJSON({ blueprintId: blueprint.id });
|
||||
// })
|
||||
// );
|
||||
// fetchPage(page + 1);
|
||||
// };
|
||||
// await fetchPage();
|
||||
// }
|
||||
async function getBlueprintPageFirstBlueprint(page: BlueprintPage) {
|
||||
if (page.blueprint_id) {
|
||||
return getBlueprintById(page.blueprint_id);
|
||||
} else if (page.blueprint_book_id) {
|
||||
const book = await getBlueprintBookById(page.blueprint_book_id);
|
||||
if (!book) return null;
|
||||
const blueprint = getFirstBlueprintFromChildTree(book.child_tree);
|
||||
return getBlueprintById(blueprint);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
export {};
|
||||
export async function rePublishAllBlueprints() {
|
||||
const topic = getBlueprintImageRequestTopic();
|
||||
if (!topic) throw Error("Topic not found");
|
||||
|
||||
let exists = 0;
|
||||
let published = 0;
|
||||
|
||||
await init();
|
||||
|
||||
const fetchPage = async (page = 1) => {
|
||||
const blueprintPages = await searchBlueprintPages({
|
||||
page,
|
||||
perPage,
|
||||
mode: "AND",
|
||||
order: "date",
|
||||
});
|
||||
|
||||
if (blueprintPages.rows.length === 0) {
|
||||
return console.log("No more blueprints found");
|
||||
}
|
||||
console.log(`Publishing page ${page} with ${blueprintPages.rows.length} blueprints`);
|
||||
|
||||
await Promise.all(
|
||||
blueprintPages.rows.map(async (blueprintPage) => {
|
||||
const blueprint = await getBlueprintPageFirstBlueprint(blueprintPage);
|
||||
if (!blueprint) {
|
||||
console.log(`Error: blueprint not found for page ${blueprintPage.id}`);
|
||||
return;
|
||||
}
|
||||
if (await hasBlueprintImage(blueprint.image_hash, "300")) {
|
||||
exists++;
|
||||
return;
|
||||
}
|
||||
published++;
|
||||
return topic.publishMessage({ json: { blueprintId: blueprint.id } });
|
||||
})
|
||||
);
|
||||
|
||||
if (page < pageLimit) await fetchPage(page + 1);
|
||||
};
|
||||
await fetchPage();
|
||||
|
||||
console.log(`done fetching, ${exists} already existed, ${published} published`);
|
||||
}
|
||||
|
@@ -18,7 +18,7 @@ const mapBlueprintInstanceToEntry = (entity: BlueprintModel): Blueprint => ({
|
||||
created_at: entity.created_at && entity.created_at.getTime() / 1000,
|
||||
updated_at: entity.updated_at && entity.updated_at.getTime() / 1000,
|
||||
game_version: entity.game_version || null,
|
||||
data: (entity.data as unknown) as DbBlueprintData,
|
||||
data: entity.data as unknown as DbBlueprintData,
|
||||
});
|
||||
|
||||
export async function getBlueprintById(id: string): Promise<Blueprint | null> {
|
||||
@@ -31,6 +31,17 @@ export async function getBlueprintByHash(hash: string): Promise<Blueprint | null
|
||||
return result ? mapBlueprintInstanceToEntry(result) : null;
|
||||
}
|
||||
|
||||
export async function getPaginatedBlueprints({
|
||||
skip = 0,
|
||||
take = 30,
|
||||
}: {
|
||||
skip: number;
|
||||
take: number;
|
||||
}): Promise<Blueprint[]> {
|
||||
const results = await prisma.blueprint.findMany({ skip, take });
|
||||
return results.map(mapBlueprintInstanceToEntry);
|
||||
}
|
||||
|
||||
export async function createBlueprint(
|
||||
blueprint: BlueprintData,
|
||||
extraInfo: {
|
||||
|
@@ -119,6 +119,8 @@
|
||||
"ts-node": "10.4.0",
|
||||
"tslint": "6.1.3",
|
||||
"typescript": "4.5.2",
|
||||
"wasm-loader": "1.3.0"
|
||||
"wasm-loader": "1.3.0",
|
||||
"@pulumi/pulumi": "3.0.0",
|
||||
"@pulumi/gcp": "5.0.0"
|
||||
}
|
||||
}
|
||||
|
2
pulumi/Pulumi.dev.yaml
Normal file
2
pulumi/Pulumi.dev.yaml
Normal file
@@ -0,0 +1,2 @@
|
||||
config:
|
||||
gcp:project: factorio-sites-dev
|
2
pulumi/Pulumi.production.yaml
Normal file
2
pulumi/Pulumi.production.yaml
Normal file
@@ -0,0 +1,2 @@
|
||||
config:
|
||||
gcp:project: factorio-sites
|
3
pulumi/Pulumi.yaml
Normal file
3
pulumi/Pulumi.yaml
Normal file
@@ -0,0 +1,3 @@
|
||||
name: factorio-sites
|
||||
runtime: nodejs
|
||||
description: Factorio blueprints mono repo
|
66
pulumi/dev.index.ts
Normal file
66
pulumi/dev.index.ts
Normal file
@@ -0,0 +1,66 @@
|
||||
import * as path from "path";
|
||||
import * as dotenv from "dotenv";
|
||||
import * as pulumi from "@pulumi/pulumi";
|
||||
import * as gcp from "@pulumi/gcp";
|
||||
|
||||
dotenv.config({ path: path.join(__dirname, ".env") });
|
||||
|
||||
const account = new gcp.serviceaccount.Account("factorio-blueprints", {
|
||||
accountId: "factorio-blueprints",
|
||||
displayName: "Factorio blueprints service account",
|
||||
});
|
||||
// Can't get service account roles sorted, manual steps
|
||||
// 1. Add a member in IAM with the same email as the service account
|
||||
// 2. Assign roles to that member in IAM
|
||||
// Roles used: Pub/Sub Editor, Secret Manager Secret Accessor, Storage Object Admin
|
||||
|
||||
const postgresPasswordSecret = new gcp.secretmanager.Secret("prd-postgres-password", {
|
||||
replication: { automatic: true },
|
||||
secretId: "prd-postgres-password",
|
||||
});
|
||||
|
||||
const postgresPasswordSecretVersion = new gcp.secretmanager.SecretVersion(
|
||||
"prd-postgres-password-version",
|
||||
{
|
||||
secret: postgresPasswordSecret.id,
|
||||
secretData: process.env.DATABASE_PASSWORD,
|
||||
}
|
||||
);
|
||||
|
||||
const functionsBucket = new gcp.storage.Bucket("blueprint-thumbnail-render-code", {
|
||||
storageClass: "STANDARD",
|
||||
location: "EUROPE-WEST1",
|
||||
});
|
||||
|
||||
const blueprintImagesBucket = new gcp.storage.Bucket("blueprint-thumbnail-images", {
|
||||
storageClass: "STANDARD",
|
||||
location: "EUROPE-WEST1",
|
||||
});
|
||||
|
||||
const archive = new gcp.storage.BucketObject("archive", {
|
||||
bucket: functionsBucket.name,
|
||||
source: new pulumi.asset.FileArchive("../dist/apps/blueprint-image-function"),
|
||||
});
|
||||
|
||||
const renderTopic = new gcp.pubsub.Topic("blueprint-thumbnail-render");
|
||||
|
||||
new gcp.cloudfunctions.Function("blueprint-image-render", {
|
||||
eventTrigger: {
|
||||
eventType: "google.pubsub.topic.publish",
|
||||
resource: renderTopic.name,
|
||||
},
|
||||
sourceArchiveBucket: functionsBucket.name,
|
||||
sourceArchiveObject: archive.name,
|
||||
entryPoint: "renderImagePubSub",
|
||||
runtime: "nodejs14",
|
||||
region: "europe-west1",
|
||||
timeout: 60,
|
||||
environmentVariables: {
|
||||
POSTGRES_DB: "factorio-blueprints",
|
||||
POSTGRES_USER: "factorio-blueprints",
|
||||
POSTGRES_HOST: process.env.POSTGRES_HOST,
|
||||
POSTGRES_PASSWORD: postgresPasswordSecretVersion.id,
|
||||
GCP_BLUEPRINT_IMAGES_BUCKET: blueprintImagesBucket.id,
|
||||
},
|
||||
serviceAccountEmail: account.email,
|
||||
});
|
66
pulumi/index.ts
Normal file
66
pulumi/index.ts
Normal file
@@ -0,0 +1,66 @@
|
||||
import * as path from "path";
|
||||
import * as dotenv from "dotenv";
|
||||
import * as pulumi from "@pulumi/pulumi";
|
||||
import * as gcp from "@pulumi/gcp";
|
||||
|
||||
dotenv.config({ path: path.join(__dirname, ".env") });
|
||||
|
||||
// const account = new gcp.serviceaccount.Account("factorio-blueprints", {
|
||||
// accountId: "factorio-blueprints",
|
||||
// displayName: "Factorio blueprints service account",
|
||||
// });
|
||||
// Can't get service account roles sorted, manual steps
|
||||
// 1. Add a member in IAM with the same email as the service account
|
||||
// 2. Assign roles to that member in IAM
|
||||
// Roles used: Pub/Sub Editor, Secret Manager Secret Accessor, Storage Object Admin
|
||||
|
||||
// const postgresPasswordSecret = new gcp.secretmanager.Secret("prd-postgres-password", {
|
||||
// replication: { automatic: true },
|
||||
// secretId: "prd-postgres-password",
|
||||
// });
|
||||
|
||||
// const postgresPasswordSecretVersion = new gcp.secretmanager.SecretVersion(
|
||||
// "prd-postgres-password-version",
|
||||
// {
|
||||
// secret: postgresPasswordSecret.id,
|
||||
// secretData: process.env.DATABASE_PASSWORD,
|
||||
// }
|
||||
// );
|
||||
|
||||
const functionsBucket = new gcp.storage.Bucket("blueprint-thumbnail-render-code", {
|
||||
storageClass: "STANDARD",
|
||||
location: "EUROPE-WEST1",
|
||||
});
|
||||
|
||||
// const blueprintImagesBucket = new gcp.storage.Bucket("blueprint-thumbnail-images", {
|
||||
// storageClass: "STANDARD",
|
||||
// location: "EUROPE-WEST1",
|
||||
// });
|
||||
|
||||
const archive = new gcp.storage.BucketObject("archive", {
|
||||
bucket: functionsBucket.name,
|
||||
source: new pulumi.asset.FileArchive("../dist/apps/blueprint-image-function"),
|
||||
});
|
||||
|
||||
// const renderTopic = new gcp.pubsub.Topic("blueprint-thumbnail-render");
|
||||
|
||||
new gcp.cloudfunctions.Function("blueprint-image-render", {
|
||||
eventTrigger: {
|
||||
eventType: "google.pubsub.topic.publish",
|
||||
resource: process.env.IMAGE_RENDER_TOPIC,
|
||||
},
|
||||
sourceArchiveBucket: functionsBucket.name,
|
||||
sourceArchiveObject: archive.name,
|
||||
entryPoint: "renderImagePubSub",
|
||||
runtime: "nodejs14",
|
||||
region: "europe-west1",
|
||||
timeout: 60,
|
||||
environmentVariables: {
|
||||
POSTGRES_DB: "factorio-blueprints",
|
||||
POSTGRES_USER: "factorio-blueprints",
|
||||
POSTGRES_HOST: process.env.POSTGRES_HOST,
|
||||
POSTGRES_PASSWORD: process.env.POSTGRES_PASSWORD,
|
||||
GCP_BLUEPRINT_IMAGES_BUCKET: "blueprint-images",
|
||||
},
|
||||
serviceAccountEmail: process.env.RENDER_FUNCTION_SERVICE_ACCOUNT,
|
||||
});
|
13
pulumi/package.json
Normal file
13
pulumi/package.json
Normal file
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"name": "factorio-sites",
|
||||
"version": "0.0.0",
|
||||
"license": "MIT",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"pulumi:up": "pulumi up"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@pulumi/pulumi": "^3.0.0",
|
||||
"@pulumi/gcp": "^5.0.0"
|
||||
}
|
||||
}
|
@@ -14,7 +14,14 @@
|
||||
"outputPath": "dist/apps/blueprint-image-function",
|
||||
"main": "apps/blueprint-image-function/src/main.ts",
|
||||
"tsConfig": "apps/blueprint-image-function/tsconfig.app.json",
|
||||
"assets": []
|
||||
"assets": [
|
||||
{
|
||||
"input": "apps/blueprints/prisma",
|
||||
"glob": "schema.prisma",
|
||||
"output": "./prisma"
|
||||
}
|
||||
],
|
||||
"generatePackageJson": true
|
||||
},
|
||||
"configurations": {
|
||||
"production": {
|
||||
|
279
yarn.lock
279
yarn.lock
@@ -3026,14 +3026,7 @@
|
||||
stream-events "^1.0.1"
|
||||
xdg-basedir "^4.0.0"
|
||||
|
||||
"@grpc/grpc-js@~1.3.0":
|
||||
version "1.3.8"
|
||||
resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.3.8.tgz#0d7dce9de7aeb20702a28f0704e61b0bf34061c1"
|
||||
integrity sha512-4qJqqn+CU/nBydz9ePJP+oa8dz0U42Ut/GejlbyaQ1xTkynCc+ndNHHnISlNeHawDsv4MOAyP3mV/EnDNUw2zA==
|
||||
dependencies:
|
||||
"@types/node" ">=12.12.47"
|
||||
|
||||
"@grpc/grpc-js@~1.4.0":
|
||||
"@grpc/grpc-js@^1.2.7", "@grpc/grpc-js@~1.4.0":
|
||||
version "1.4.4"
|
||||
resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.4.4.tgz#59336f13d77bc446bbdf2161564a32639288dc5b"
|
||||
integrity sha512-a6222b7Dl6fIlMgzVl7e+NiRoLiZFbpcwvBH2Oli56Bn7W4/3Ld+86hK4ffPn5rx2DlDidmIcvIJiOQXyhv9gA==
|
||||
@@ -3041,6 +3034,13 @@
|
||||
"@grpc/proto-loader" "^0.6.4"
|
||||
"@types/node" ">=12.12.47"
|
||||
|
||||
"@grpc/grpc-js@~1.3.0", "@grpc/grpc-js@~1.3.8":
|
||||
version "1.3.8"
|
||||
resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.3.8.tgz#0d7dce9de7aeb20702a28f0704e61b0bf34061c1"
|
||||
integrity sha512-4qJqqn+CU/nBydz9ePJP+oa8dz0U42Ut/GejlbyaQ1xTkynCc+ndNHHnISlNeHawDsv4MOAyP3mV/EnDNUw2zA==
|
||||
dependencies:
|
||||
"@types/node" ">=12.12.47"
|
||||
|
||||
"@grpc/proto-loader@^0.6.1", "@grpc/proto-loader@^0.6.4":
|
||||
version "0.6.7"
|
||||
resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.6.7.tgz#e62a202f4cf5897bdd0e244dec1dbc80d84bdfa1"
|
||||
@@ -3420,6 +3420,11 @@
|
||||
"@types/yargs" "^16.0.0"
|
||||
chalk "^4.0.0"
|
||||
|
||||
"@logdna/tail-file@^2.0.6":
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@logdna/tail-file/-/tail-file-2.1.0.tgz#7c3d98c3378d15061589e12875ffb7673b0ce82c"
|
||||
integrity sha512-8zYzetB1zfa7WA4c0RS1EU9pNKcj1BqilU2fCsEvmKfWgEdpaphff6hk2Rcn3A0qHwynEdw9lTrlYN4sUw2FpA==
|
||||
|
||||
"@mapbox/node-pre-gyp@^1.0.0":
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.1.tgz#1b23a8decb5e6356b04770d586067d2bff2703dd"
|
||||
@@ -4331,6 +4336,63 @@
|
||||
resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570"
|
||||
integrity sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=
|
||||
|
||||
"@pulumi/gcp@5.0.0":
|
||||
version "5.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@pulumi/gcp/-/gcp-5.0.0.tgz#094ede098d3ae33461cf016ed7219849e0484ee0"
|
||||
integrity sha512-8/d4RRaSDOcG3P92XD0KIgBdLS9yozyiJXqpwvzErhp6c2UMnAAlLqymC5hpVKoa6tHBXPm0ZH3qmsx+3HEE6Q==
|
||||
dependencies:
|
||||
"@pulumi/pulumi" "^3.0.0"
|
||||
"@types/express" "^4.16.0"
|
||||
read-package-json "^2.0.13"
|
||||
|
||||
"@pulumi/pulumi@3.0.0":
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@pulumi/pulumi/-/pulumi-3.0.0.tgz#b1a1a845718b21d3b4975740627f5b25f2c04fcb"
|
||||
integrity sha512-s9pwbdFrMU8vt4F5aIf8cpnDmHSM5Pn5V2Y7T7m0R14pfxTjCqt5ZAuEdKys0SgL+DxDp5L4Kz/53SXC6MFEEw==
|
||||
dependencies:
|
||||
"@grpc/grpc-js" "^1.2.7"
|
||||
"@logdna/tail-file" "^2.0.6"
|
||||
"@pulumi/query" "^0.3.0"
|
||||
google-protobuf "^3.5.0"
|
||||
js-yaml "^3.14.0"
|
||||
minimist "^1.2.0"
|
||||
normalize-package-data "^2.4.0"
|
||||
protobufjs "^6.8.6"
|
||||
read-package-tree "^5.3.1"
|
||||
require-from-string "^2.0.1"
|
||||
semver "^6.1.0"
|
||||
source-map-support "^0.4.16"
|
||||
split2 "^3.2.2"
|
||||
ts-node "^7.0.1"
|
||||
typescript "~3.7.3"
|
||||
upath "^1.1.0"
|
||||
|
||||
"@pulumi/pulumi@^3.0.0":
|
||||
version "3.19.0"
|
||||
resolved "https://registry.yarnpkg.com/@pulumi/pulumi/-/pulumi-3.19.0.tgz#2df5612daca39c906caac939c9c2fe45e9c07578"
|
||||
integrity sha512-e5RJkoS1G38sf18jJJkIC4R24zQSAwEBNypAtOUKUG2f+bwqhrm+eZ3yF+CUjY5c4ZgWCmVftJcV4LGG3rphyQ==
|
||||
dependencies:
|
||||
"@grpc/grpc-js" "~1.3.8"
|
||||
"@logdna/tail-file" "^2.0.6"
|
||||
"@pulumi/query" "^0.3.0"
|
||||
google-protobuf "^3.5.0"
|
||||
js-yaml "^3.14.0"
|
||||
minimist "^1.2.0"
|
||||
normalize-package-data "^2.4.0"
|
||||
protobufjs "^6.8.6"
|
||||
read-package-tree "^5.3.1"
|
||||
require-from-string "^2.0.1"
|
||||
semver "^6.1.0"
|
||||
source-map-support "^0.4.16"
|
||||
ts-node "^7.0.1"
|
||||
typescript "~3.7.3"
|
||||
upath "^1.1.0"
|
||||
|
||||
"@pulumi/query@^0.3.0":
|
||||
version "0.3.0"
|
||||
resolved "https://registry.yarnpkg.com/@pulumi/query/-/query-0.3.0.tgz#f496608e86a18c3dd31b6c533408e2441c29071d"
|
||||
integrity sha512-xfo+yLRM2zVjVEA4p23IjQWzyWl1ZhWOGobsBqRpIarzLvwNH/RAGaoehdxlhx4X92302DrpdIFgTICMN4P38w==
|
||||
|
||||
"@reach/alert@0.13.2":
|
||||
version "0.13.2"
|
||||
resolved "https://registry.yarnpkg.com/@reach/alert/-/alert-0.13.2.tgz#71c4a848d51341f1d6d9eaae060975391c224870"
|
||||
@@ -4671,6 +4733,14 @@
|
||||
dependencies:
|
||||
"@types/node" "*"
|
||||
|
||||
"@types/body-parser@*":
|
||||
version "1.19.2"
|
||||
resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0"
|
||||
integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==
|
||||
dependencies:
|
||||
"@types/connect" "*"
|
||||
"@types/node" "*"
|
||||
|
||||
"@types/codemirror@0.0.109":
|
||||
version "0.0.109"
|
||||
resolved "https://registry.yarnpkg.com/@types/codemirror/-/codemirror-0.0.109.tgz#89d575ff1c7b462c4c3b8654f8bb38e5622e9036"
|
||||
@@ -4678,6 +4748,13 @@
|
||||
dependencies:
|
||||
"@types/tern" "*"
|
||||
|
||||
"@types/connect@*":
|
||||
version "3.4.35"
|
||||
resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1"
|
||||
integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==
|
||||
dependencies:
|
||||
"@types/node" "*"
|
||||
|
||||
"@types/cookie@0.4.1":
|
||||
version "0.4.1"
|
||||
resolved "https://registry.yarnpkg.com/@types/cookie/-/cookie-0.4.1.tgz#bfd02c1f2224567676c1545199f87c3a861d878d"
|
||||
@@ -4738,6 +4815,25 @@
|
||||
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.50.tgz#1e0caa9364d3fccd2931c3ed96fdbeaa5d4cca83"
|
||||
integrity sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==
|
||||
|
||||
"@types/express-serve-static-core@^4.17.18":
|
||||
version "4.17.26"
|
||||
resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.26.tgz#5d9a8eeecb9d5f9d7fc1d85f541512a84638ae88"
|
||||
integrity sha512-zeu3tpouA043RHxW0gzRxwCHchMgftE8GArRsvYT0ByDMbn19olQHx5jLue0LxWY6iYtXb7rXmuVtSkhy9YZvQ==
|
||||
dependencies:
|
||||
"@types/node" "*"
|
||||
"@types/qs" "*"
|
||||
"@types/range-parser" "*"
|
||||
|
||||
"@types/express@^4.16.0":
|
||||
version "4.17.13"
|
||||
resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.13.tgz#a76e2995728999bab51a33fabce1d705a3709034"
|
||||
integrity sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==
|
||||
dependencies:
|
||||
"@types/body-parser" "*"
|
||||
"@types/express-serve-static-core" "^4.17.18"
|
||||
"@types/qs" "*"
|
||||
"@types/serve-static" "*"
|
||||
|
||||
"@types/fs-extra@^8.0.1":
|
||||
version "8.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-8.1.1.tgz#1e49f22d09aa46e19b51c0b013cb63d0d923a068"
|
||||
@@ -4858,6 +4954,11 @@
|
||||
resolved "https://registry.yarnpkg.com/@types/mdurl/-/mdurl-1.0.2.tgz#e2ce9d83a613bacf284c7be7d491945e39e1f8e9"
|
||||
integrity sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==
|
||||
|
||||
"@types/mime@^1":
|
||||
version "1.3.2"
|
||||
resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a"
|
||||
integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==
|
||||
|
||||
"@types/minimatch@*":
|
||||
version "3.0.3"
|
||||
resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d"
|
||||
@@ -4940,6 +5041,16 @@
|
||||
resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.4.tgz#15925414e0ad2cd765bfef58842f7e26a7accb24"
|
||||
integrity sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==
|
||||
|
||||
"@types/qs@*":
|
||||
version "6.9.7"
|
||||
resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb"
|
||||
integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==
|
||||
|
||||
"@types/range-parser@*":
|
||||
version "1.2.4"
|
||||
resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc"
|
||||
integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==
|
||||
|
||||
"@types/react-dom@17.0.11":
|
||||
version "17.0.11"
|
||||
resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-17.0.11.tgz#e1eadc3c5e86bdb5f7684e00274ae228e7bcc466"
|
||||
@@ -4988,6 +5099,14 @@
|
||||
resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.1.tgz#18845205e86ff0038517aab7a18a62a6b9f71275"
|
||||
integrity sha512-EaCxbanVeyxDRTQBkdLb3Bvl/HK7PBK6UJjsSixB0iHKoWxE5uu2Q/DgtpOhPIojN0Zl1whvOd7PoHs2P0s5eA==
|
||||
|
||||
"@types/serve-static@*":
|
||||
version "1.13.10"
|
||||
resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.10.tgz#f5e0ce8797d2d7cc5ebeda48a52c96c4fa47a8d9"
|
||||
integrity sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==
|
||||
dependencies:
|
||||
"@types/mime" "^1"
|
||||
"@types/node" "*"
|
||||
|
||||
"@types/sharp@0.29.4":
|
||||
version "0.29.4"
|
||||
resolved "https://registry.yarnpkg.com/@types/sharp/-/sharp-0.29.4.tgz#e47d8677befc9944d4b9d76ed837452814166de0"
|
||||
@@ -5696,11 +5815,21 @@ array.prototype.flatmap@^1.2.5:
|
||||
define-properties "^1.1.3"
|
||||
es-abstract "^1.19.0"
|
||||
|
||||
arrify@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
|
||||
integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=
|
||||
|
||||
arrify@^2.0.0, arrify@^2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa"
|
||||
integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==
|
||||
|
||||
asap@^2.0.0:
|
||||
version "2.0.6"
|
||||
resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46"
|
||||
integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=
|
||||
|
||||
asn1.js@^5.2.0:
|
||||
version "5.4.1"
|
||||
resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07"
|
||||
@@ -6318,6 +6447,11 @@ buffer-from@^1.0.0:
|
||||
resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
|
||||
integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==
|
||||
|
||||
buffer-from@^1.1.0:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5"
|
||||
integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==
|
||||
|
||||
buffer-from@~0.1.1:
|
||||
version "0.1.2"
|
||||
resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-0.1.2.tgz#15f4b9bcef012044df31142c14333caf6e0260d0"
|
||||
@@ -7441,6 +7575,11 @@ debug@~3.1.0:
|
||||
dependencies:
|
||||
ms "2.0.0"
|
||||
|
||||
debuglog@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492"
|
||||
integrity sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI=
|
||||
|
||||
decamelize@^1.2.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
|
||||
@@ -7608,6 +7747,14 @@ devtools-protocol@0.0.937139:
|
||||
resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.937139.tgz#bdee3751fdfdb81cb701fd3afa94b1065dafafcf"
|
||||
integrity sha512-daj+rzR3QSxsPRy5vjjthn58axO8c11j58uY0lG5vvlJk/EiOdCWOptGdkXDjtuRHr78emKq0udHCXM4trhoDQ==
|
||||
|
||||
dezalgo@^1.0.0:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/dezalgo/-/dezalgo-1.0.3.tgz#7f742de066fc748bc8db820569dddce49bf0d456"
|
||||
integrity sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY=
|
||||
dependencies:
|
||||
asap "^2.0.0"
|
||||
wrappy "1"
|
||||
|
||||
diff-sequences@^27.0.6:
|
||||
version "27.0.6"
|
||||
resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.0.6.tgz#3305cb2e55a033924054695cc66019fd7f8e5723"
|
||||
@@ -7618,6 +7765,11 @@ diff-sequences@^27.4.0:
|
||||
resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.4.0.tgz#d783920ad8d06ec718a060d00196dfef25b132a5"
|
||||
integrity sha512-YqiQzkrsmHMH5uuh8OdQFU9/ZpADnwzml8z0O5HvRNda+5UZsaX/xN+AAxfR2hWq1Y7HZnAzO9J5lJXOuDz2Ww==
|
||||
|
||||
diff@^3.1.0:
|
||||
version "3.5.0"
|
||||
resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12"
|
||||
integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==
|
||||
|
||||
diff@^4.0.1:
|
||||
version "4.0.2"
|
||||
resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d"
|
||||
@@ -9444,6 +9596,11 @@ google-p12-pem@^3.0.3:
|
||||
dependencies:
|
||||
node-forge "^0.10.0"
|
||||
|
||||
google-protobuf@^3.5.0:
|
||||
version "3.19.1"
|
||||
resolved "https://registry.yarnpkg.com/google-protobuf/-/google-protobuf-3.19.1.tgz#5af5390e8206c446d8f49febaffd4b7f4ac28f41"
|
||||
integrity sha512-Isv1RlNC+IzZzilcxnlVSf+JvuhxmY7DaxYCBy+zPS9XVuJRtlTTIXR9hnZ1YL1MMusJn/7eSy2swCzZIomQSg==
|
||||
|
||||
graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4:
|
||||
version "4.2.4"
|
||||
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb"
|
||||
@@ -11282,6 +11439,14 @@ js-yaml@^3.13.1, js-yaml@^3.9.0:
|
||||
argparse "^1.0.7"
|
||||
esprima "^4.0.0"
|
||||
|
||||
js-yaml@^3.14.0:
|
||||
version "3.14.1"
|
||||
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537"
|
||||
integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==
|
||||
dependencies:
|
||||
argparse "^1.0.7"
|
||||
esprima "^4.0.0"
|
||||
|
||||
jsbn@~0.1.0:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
|
||||
@@ -12292,7 +12457,7 @@ mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3:
|
||||
resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113"
|
||||
integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==
|
||||
|
||||
mkdirp@^0.5.3, mkdirp@^0.5.4, mkdirp@^0.5.5, mkdirp@~0.5.1:
|
||||
mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.4, mkdirp@^0.5.5, mkdirp@~0.5.1:
|
||||
version "0.5.5"
|
||||
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def"
|
||||
integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==
|
||||
@@ -12540,7 +12705,7 @@ nopt@^5.0.0:
|
||||
dependencies:
|
||||
abbrev "1"
|
||||
|
||||
normalize-package-data@^2.3.2:
|
||||
normalize-package-data@^2.0.0, normalize-package-data@^2.3.2, normalize-package-data@^2.4.0:
|
||||
version "2.5.0"
|
||||
resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8"
|
||||
integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==
|
||||
@@ -12565,6 +12730,11 @@ normalize-url@^6.0.1:
|
||||
resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a"
|
||||
integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==
|
||||
|
||||
npm-normalize-package-bin@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2"
|
||||
integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==
|
||||
|
||||
npm-run-all@^4.1.5:
|
||||
version "4.1.5"
|
||||
resolved "https://registry.yarnpkg.com/npm-run-all/-/npm-run-all-4.1.5.tgz#04476202a15ee0e2e214080861bff12a51d98fba"
|
||||
@@ -12739,6 +12909,15 @@ object.fromentries@^2.0.5:
|
||||
define-properties "^1.1.3"
|
||||
es-abstract "^1.19.1"
|
||||
|
||||
object.getownpropertydescriptors@^2.0.3:
|
||||
version "2.1.3"
|
||||
resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz#b223cf38e17fefb97a63c10c91df72ccb386df9e"
|
||||
integrity sha512-VdDoCwvJI4QdC6ndjpqFmoL3/+HxffFBbcJzKi5hwLLqqx3mdbedRpfZDdK0SrOSauj8X4GzBvnDZl4vTN7dOw==
|
||||
dependencies:
|
||||
call-bind "^1.0.2"
|
||||
define-properties "^1.1.3"
|
||||
es-abstract "^1.19.1"
|
||||
|
||||
object.getownpropertydescriptors@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649"
|
||||
@@ -13830,7 +14009,7 @@ proto3-json-serializer@^0.1.1, proto3-json-serializer@^0.1.5:
|
||||
dependencies:
|
||||
protobufjs "^6.11.2"
|
||||
|
||||
protobufjs@6.11.2, protobufjs@^6.10.0, protobufjs@^6.11.2:
|
||||
protobufjs@6.11.2, protobufjs@^6.10.0, protobufjs@^6.11.2, protobufjs@^6.8.6:
|
||||
version "6.11.2"
|
||||
resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.11.2.tgz#de39fabd4ed32beaa08e9bb1e30d08544c1edf8b"
|
||||
integrity sha512-4BQJoPooKJl2G9j3XftkIXjoC9C0Av2NOrWmbLWT1vH32GcSUHjM0Arra6UfTsVyfMAuFzaLucXn1sadxJydAw==
|
||||
@@ -14199,6 +14378,25 @@ read-cache@^1.0.0:
|
||||
dependencies:
|
||||
pify "^2.3.0"
|
||||
|
||||
read-package-json@^2.0.0, read-package-json@^2.0.13:
|
||||
version "2.1.2"
|
||||
resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-2.1.2.tgz#6992b2b66c7177259feb8eaac73c3acd28b9222a"
|
||||
integrity sha512-D1KmuLQr6ZSJS0tW8hf3WGpRlwszJOXZ3E8Yd/DNRaM5d+1wVRZdHlpGBLAuovjr28LbWvjpWkBHMxpRGGjzNA==
|
||||
dependencies:
|
||||
glob "^7.1.1"
|
||||
json-parse-even-better-errors "^2.3.0"
|
||||
normalize-package-data "^2.0.0"
|
||||
npm-normalize-package-bin "^1.0.0"
|
||||
|
||||
read-package-tree@^5.3.1:
|
||||
version "5.3.1"
|
||||
resolved "https://registry.yarnpkg.com/read-package-tree/-/read-package-tree-5.3.1.tgz#a32cb64c7f31eb8a6f31ef06f9cedf74068fe636"
|
||||
integrity sha512-mLUDsD5JVtlZxjSlPPx1RETkNjjvQYuweKwNVt1Sn8kP5Jh44pvYuUHCp6xSVDZWbNxVxG5lyZJ921aJH61sTw==
|
||||
dependencies:
|
||||
read-package-json "^2.0.0"
|
||||
readdir-scoped-modules "^1.0.0"
|
||||
util-promisify "^2.1.0"
|
||||
|
||||
read-pkg-up@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be"
|
||||
@@ -14257,6 +14455,16 @@ readable-stream@~1.0.17, readable-stream@~1.0.27-1:
|
||||
isarray "0.0.1"
|
||||
string_decoder "~0.10.x"
|
||||
|
||||
readdir-scoped-modules@^1.0.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz#8d45407b4f870a0dcaebc0e28670d18e74514309"
|
||||
integrity sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==
|
||||
dependencies:
|
||||
debuglog "^1.0.1"
|
||||
dezalgo "^1.0.0"
|
||||
graceful-fs "^4.1.2"
|
||||
once "^1.3.0"
|
||||
|
||||
readdirp@~3.5.0:
|
||||
version "3.5.0"
|
||||
resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e"
|
||||
@@ -14748,7 +14956,7 @@ semver@7.3.4, semver@7.x, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4:
|
||||
dependencies:
|
||||
lru-cache "^6.0.0"
|
||||
|
||||
semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0:
|
||||
semver@^6.0.0, semver@^6.1.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0:
|
||||
version "6.3.0"
|
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
|
||||
integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
|
||||
@@ -15005,6 +15213,13 @@ source-map-support@0.5.19, source-map-support@^0.5.17, source-map-support@^0.5.6
|
||||
buffer-from "^1.0.0"
|
||||
source-map "^0.6.0"
|
||||
|
||||
source-map-support@^0.4.16:
|
||||
version "0.4.18"
|
||||
resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f"
|
||||
integrity sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==
|
||||
dependencies:
|
||||
source-map "^0.5.6"
|
||||
|
||||
source-map-support@~0.5.20:
|
||||
version "0.5.21"
|
||||
resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f"
|
||||
@@ -15025,7 +15240,7 @@ source-map@0.8.0-beta.0:
|
||||
dependencies:
|
||||
whatwg-url "^7.0.0"
|
||||
|
||||
source-map@^0.5.0, source-map@^0.5.7:
|
||||
source-map@^0.5.0, source-map@^0.5.6, source-map@^0.5.7:
|
||||
version "0.5.7"
|
||||
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
|
||||
integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
|
||||
@@ -15106,7 +15321,7 @@ split-array-stream@^2.0.0:
|
||||
dependencies:
|
||||
is-stream-ended "^0.1.4"
|
||||
|
||||
split2@^3.1.1:
|
||||
split2@^3.1.1, split2@^3.2.2:
|
||||
version "3.2.2"
|
||||
resolved "https://registry.yarnpkg.com/split2/-/split2-3.2.2.tgz#bf2cf2a37d838312c249c89206fd7a17dd12365f"
|
||||
integrity sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==
|
||||
@@ -15880,6 +16095,20 @@ ts-node@10.4.0:
|
||||
make-error "^1.1.1"
|
||||
yn "3.1.1"
|
||||
|
||||
ts-node@^7.0.1:
|
||||
version "7.0.1"
|
||||
resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-7.0.1.tgz#9562dc2d1e6d248d24bc55f773e3f614337d9baf"
|
||||
integrity sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==
|
||||
dependencies:
|
||||
arrify "^1.0.0"
|
||||
buffer-from "^1.1.0"
|
||||
diff "^3.1.0"
|
||||
make-error "^1.1.1"
|
||||
minimist "^1.2.0"
|
||||
mkdirp "^0.5.1"
|
||||
source-map-support "^0.5.6"
|
||||
yn "^2.0.0"
|
||||
|
||||
ts-node@^9.1.1, ts-node@~9.1.1:
|
||||
version "9.1.1"
|
||||
resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-9.1.1.tgz#51a9a450a3e959401bda5f004a72d54b936d376d"
|
||||
@@ -16045,6 +16274,11 @@ typescript@4.5.2:
|
||||
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.2.tgz#8ac1fba9f52256fdb06fb89e4122fa6a346c2998"
|
||||
integrity sha512-5BlMof9H1yGt0P8/WF+wPNw6GfctgGjXp5hkblpyT+8rkASSmkUKMXrxR0Xg8ThVCi/JnHQiKXeBaEwCeQwMFw==
|
||||
|
||||
typescript@~3.7.3:
|
||||
version "3.7.7"
|
||||
resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.7.7.tgz#c931733e2ec10dda56b855b379cc488a72a81199"
|
||||
integrity sha512-MmQdgo/XenfZPvVLtKZOq9jQQvzaUAUpcKW8Z43x9B2fOm4S5g//tPtMweZUIP+SoBqrVPEIm+dJeQ9dfO0QdA==
|
||||
|
||||
typo-js@*:
|
||||
version "1.2.1"
|
||||
resolved "https://registry.yarnpkg.com/typo-js/-/typo-js-1.2.1.tgz#334a0d8c3f6c56f2f1e15fdf6c31677793cbbe9b"
|
||||
@@ -16219,6 +16453,11 @@ untildify@^4.0.0:
|
||||
resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b"
|
||||
integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==
|
||||
|
||||
upath@^1.1.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894"
|
||||
integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==
|
||||
|
||||
uri-js@^4.2.2:
|
||||
version "4.4.0"
|
||||
resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.0.tgz#aa714261de793e8a82347a7bcc9ce74e86f28602"
|
||||
@@ -16286,6 +16525,13 @@ util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1:
|
||||
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
|
||||
integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
|
||||
|
||||
util-promisify@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/util-promisify/-/util-promisify-2.1.0.tgz#3c2236476c4d32c5ff3c47002add7c13b9a82a53"
|
||||
integrity sha1-PCI2R2xNMsX/PEcAKt18E7moKlM=
|
||||
dependencies:
|
||||
object.getownpropertydescriptors "^2.0.3"
|
||||
|
||||
util.promisify@~1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee"
|
||||
@@ -16934,6 +17180,11 @@ yn@3.1.1:
|
||||
resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50"
|
||||
integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==
|
||||
|
||||
yn@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/yn/-/yn-2.0.0.tgz#e5adabc8acf408f6385fc76495684c88e6af689a"
|
||||
integrity sha1-5a2ryKz0CPY4X8dklWhMiOavaJo=
|
||||
|
||||
yocto-queue@^0.1.0:
|
||||
version "0.1.0"
|
||||
resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
|
||||
|
Reference in New Issue
Block a user