ACTIVEPIECES/tools/scripts/pieces/update-pieces-metadata.ts
rohit cd823a2d9e
Some checks failed
Crowdin Action / synchronize-with-crowdin (push) Has been cancelled
Release Pieces / Release-Pieces (push) Has been cancelled
automaton layer
2025-07-05 23:59:03 +05:30

68 lines
1.8 KiB
TypeScript

import assert from 'node:assert';
import { PieceMetadata } from '../../../packages/pieces/community/framework/src';
import { StatusCodes } from 'http-status-codes';
import { HttpHeader } from '../../../packages/pieces/community/common/src';
import { AP_CLOUD_API_BASE, findNewPieces, pieceMetadataExists } from '../utils/piece-script-utils';
assert(process.env['AP_CLOUD_API_KEY'], 'API Key is not defined');
const { AP_CLOUD_API_KEY } = process.env;
const insertPieceMetadata = async (
pieceMetadata: PieceMetadata
): Promise<void> => {
const body = JSON.stringify(pieceMetadata);
const headers = {
[HttpHeader.API_KEY]: AP_CLOUD_API_KEY,
[HttpHeader.CONTENT_TYPE]: 'application/json'
};
const cloudResponse = await fetch(`${AP_CLOUD_API_BASE}/admin/pieces`, {
method: 'POST',
headers,
body
});
if (cloudResponse.status !== StatusCodes.OK) {
throw new Error(await cloudResponse.text());
}
};
const insertMetadataIfNotExist = async (pieceMetadata: PieceMetadata) => {
console.info(
`insertMetadataIfNotExist, name: ${pieceMetadata.name}, version: ${pieceMetadata.version}`
);
const metadataAlreadyExist = await pieceMetadataExists(
pieceMetadata.name,
pieceMetadata.version
);
if (metadataAlreadyExist) {
console.info(`insertMetadataIfNotExist, piece metadata already inserted`);
return;
}
await insertPieceMetadata(pieceMetadata);
};
const insertMetadata = async (piecesMetadata: PieceMetadata[]) => {
await Promise.all(piecesMetadata.map(insertMetadataIfNotExist))
};
const main = async () => {
console.log('update pieces metadata: started')
const piecesMetadata = await findNewPieces()
await insertMetadata(piecesMetadata)
console.log('update pieces metadata: completed')
process.exit()
}
main()