Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add exports #189

Merged
merged 1 commit into from
Feb 18, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
85 changes: 83 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -99,93 +99,174 @@
},
"exports": {
".": "./dist/index.js",
"./proto/*": "./dist/generated/yandex/cloud/*.js",
"./ai-assistants-v1": "./dist/clients/ai-assistants-v1/index.js",
"./ai-assistants-v1/*": "./dist/generated/yandex/cloud/ai/assistants/v1/*.js",
"./ai-dataset-v1": "./dist/clients/ai-dataset-v1/index.js",
"./ai-dataset-v1/*": "./dist/generated/yandex/cloud/ai/dataset/v1/*.js",
"./ai-files-v1": "./dist/clients/ai-files-v1/index.js",
"./ai-files-v1/*": "./dist/generated/yandex/cloud/ai/files/v1/*.js",
"./ai-foundation_models-v1": "./dist/clients/ai-foundation_models-v1/index.js",
"./ai-foundation_models-v1/*": "./dist/generated/yandex/cloud/ai/foundation_models/v1/*.js",
"./ai-llm-v1alpha": "./dist/clients/ai-llm-v1alpha/index.js",
"./ai-llm-v1alpha/*": "./dist/generated/yandex/cloud/ai/llm/v1alpha/*.js",
"./ai-ocr-v1": "./dist/clients/ai-ocr-v1/index.js",
"./ai-ocr-v1/*": "./dist/generated/yandex/cloud/ai/ocr/v1/*.js",
"./ai-stt-v2": "./dist/clients/ai-stt-v2/index.js",
"./ai-stt-v2/*": "./dist/generated/yandex/cloud/ai/stt/v2/*.js",
"./ai-stt-v3": "./dist/clients/ai-stt-v3/index.js",
"./ai-stt-v3/*": "./dist/generated/yandex/cloud/ai/stt/v3/*.js",
"./ai-translate-v2": "./dist/clients/ai-translate-v2/index.js",
"./ai-translate-v2/*": "./dist/generated/yandex/cloud/ai/translate/v2/*.js",
"./ai-tts-v3": "./dist/clients/ai-tts-v3/index.js",
"./ai-tts-v3/*": "./dist/generated/yandex/cloud/ai/tts/v3/*.js",
"./ai-tuning-v1": "./dist/clients/ai-tuning-v1/index.js",
"./ai-tuning-v1/*": "./dist/generated/yandex/cloud/ai/tuning/v1/*.js",
"./ai-vision-v1": "./dist/clients/ai-vision-v1/index.js",
"./ai-vision-v1/*": "./dist/generated/yandex/cloud/ai/vision/v1/*.js",
"./ai-vision-v2": "./dist/clients/ai-vision-v2/index.js",
"./ai-vision-v2/*": "./dist/generated/yandex/cloud/ai/vision/v2/*.js",
"./airflow-v1": "./dist/clients/airflow-v1/index.js",
"./airflow-v1/*": "./dist/generated/yandex/cloud/airflow/v1/*.js",
"./apploadbalancer-v1": "./dist/clients/apploadbalancer-v1/index.js",
"./apploadbalancer-v1/*": "./dist/generated/yandex/cloud/apploadbalancer/v1/*.js",
"./audittrails-v1": "./dist/clients/audittrails-v1/index.js",
"./audittrails-v1/*": "./dist/generated/yandex/cloud/audittrails/v1/*.js",
"./backup-v1": "./dist/clients/backup-v1/index.js",
"./backup-v1/*": "./dist/generated/yandex/cloud/backup/v1/*.js",
"./billing-v1": "./dist/clients/billing-v1/index.js",
"./billing-v1/*": "./dist/generated/yandex/cloud/billing/v1/*.js",
"./cdn-v1": "./dist/clients/cdn-v1/index.js",
"./cdn-v1/*": "./dist/generated/yandex/cloud/cdn/v1/*.js",
"./certificatemanager-v1": "./dist/clients/certificatemanager-v1/index.js",
"./certificatemanager-v1/*": "./dist/generated/yandex/cloud/certificatemanager/v1/*.js",
"./cic-v1": "./dist/clients/cic-v1/index.js",
"./cic-v1/*": "./dist/generated/yandex/cloud/cic/v1/*.js",
"./cloudapps-workload-v1": "./dist/clients/cloudapps-workload-v1/index.js",
"./cloudapps-workload-v1/*": "./dist/generated/yandex/cloud/cloudapps/workload/v1/*.js",
"./cloudregistry-v1": "./dist/clients/cloudregistry-v1/index.js",
"./cloudregistry-v1/*": "./dist/generated/yandex/cloud/cloudregistry/v1/*.js",
"./cloudrouter-v1": "./dist/clients/cloudrouter-v1/index.js",
"./cloudrouter-v1/*": "./dist/generated/yandex/cloud/cloudrouter/v1/*.js",
"./compute-v1": "./dist/clients/compute-v1/index.js",
"./compute-v1/*": "./dist/generated/yandex/cloud/compute/v1/*.js",
"./containerregistry-v1": "./dist/clients/containerregistry-v1/index.js",
"./containerregistry-v1/*": "./dist/generated/yandex/cloud/containerregistry/v1/*.js",
"./dataproc-manager-v1": "./dist/clients/dataproc-manager-v1/index.js",
"./dataproc-manager-v1/*": "./dist/generated/yandex/cloud/dataproc/manager/v1/*.js",
"./dataproc-v1": "./dist/clients/dataproc-v1/index.js",
"./dataproc-v1/*": "./dist/generated/yandex/cloud/dataproc/v1/*.js",
"./datasphere-v1": "./dist/clients/datasphere-v1/index.js",
"./datasphere-v1/*": "./dist/generated/yandex/cloud/datasphere/v1/*.js",
"./datasphere-v2": "./dist/clients/datasphere-v2/index.js",
"./datasphere-v2/*": "./dist/generated/yandex/cloud/datasphere/v2/*.js",
"./datatransfer-v1": "./dist/clients/datatransfer-v1/index.js",
"./datatransfer-v1/*": "./dist/generated/yandex/cloud/datatransfer/v1/*.js",
"./dist/*": "./dist/*.js",
"./dns-v1": "./dist/clients/dns-v1/index.js",
"./dns-v1/*": "./dist/generated/yandex/cloud/dns/v1/*.js",
"./endpoint": "./dist/clients/endpoint/index.js",
"./endpoint/*": "./dist/generated/yandex/cloud/endpoint/*.js",
"./google/*": "./dist/generated/google/*.js",
"./iam-v1": "./dist/clients/iam-v1/index.js",
"./iam-v1/*": "./dist/generated/yandex/cloud/iam/v1/*.js",
"./iot-broker-v1": "./dist/clients/iot-broker-v1/index.js",
"./iot-broker-v1/*": "./dist/generated/yandex/cloud/iot/broker/v1/*.js",
"./iot-devices-v1": "./dist/clients/iot-devices-v1/index.js",
"./iot-devices-v1/*": "./dist/generated/yandex/cloud/iot/devices/v1/*.js",
"./k8s-marketplace-v1": "./dist/clients/k8s-marketplace-v1/index.js",
"./k8s-marketplace-v1/*": "./dist/generated/yandex/cloud/k8s/marketplace/v1/*.js",
"./k8s-v1": "./dist/clients/k8s-v1/index.js",
"./k8s-v1/*": "./dist/generated/yandex/cloud/k8s/v1/*.js",
"./kms-v1": "./dist/clients/kms-v1/index.js",
"./kms-v1/*": "./dist/generated/yandex/cloud/kms/v1/*.js",
"./loadbalancer-v1": "./dist/clients/loadbalancer-v1/index.js",
"./loadbalancer-v1/*": "./dist/generated/yandex/cloud/loadbalancer/v1/*.js",
"./loadtesting-agent-v1": "./dist/clients/loadtesting-agent-v1/index.js",
"./loadtesting-agent-v1/*": "./dist/generated/yandex/cloud/loadtesting/agent/v1/*.js",
"./loadtesting-api-v1": "./dist/clients/loadtesting-api-v1/index.js",
"./loadtesting-api-v1/*": "./dist/generated/yandex/cloud/loadtesting/api/v1/*.js",
"./lockbox-v1": "./dist/clients/lockbox-v1/index.js",
"./lockbox-v1/*": "./dist/generated/yandex/cloud/lockbox/v1/*.js",
"./logging-v1": "./dist/clients/logging-v1/index.js",
"./logging-v1/*": "./dist/generated/yandex/cloud/logging/v1/*.js",
"./marketplace-licensemanager-saas-v1": "./dist/clients/marketplace-licensemanager-saas-v1/index.js",
"./marketplace-licensemanager-saas-v1/*": "./dist/generated/yandex/cloud/marketplace/licensemanager/saas/v1/*.js",
"./marketplace-licensemanager-v1": "./dist/clients/marketplace-licensemanager-v1/index.js",
"./marketplace-licensemanager-v1/*": "./dist/generated/yandex/cloud/marketplace/licensemanager/v1/*.js",
"./marketplace-metering-v1": "./dist/clients/marketplace-metering-v1/index.js",
"./marketplace-metering-v1/*": "./dist/generated/yandex/cloud/marketplace/metering/v1/*.js",
"./marketplace-pim-v1": "./dist/clients/marketplace-pim-v1/index.js",
"./marketplace-pim-v1/*": "./dist/generated/yandex/cloud/marketplace/pim/v1/*.js",
"./marketplace-v1": "./dist/clients/marketplace-v1/index.js",
"./marketplace-v1/*": "./dist/generated/yandex/cloud/marketplace/v1/*.js",
"./mdb-clickhouse-v1": "./dist/clients/mdb-clickhouse-v1/index.js",
"./mdb-clickhouse-v1/*": "./dist/generated/yandex/cloud/mdb/clickhouse/v1/*.js",
"./mdb-elasticsearch-v1": "./dist/clients/mdb-elasticsearch-v1/index.js",
"./mdb-elasticsearch-v1/*": "./dist/generated/yandex/cloud/mdb/elasticsearch/v1/*.js",
"./mdb-greenplum-v1": "./dist/clients/mdb-greenplum-v1/index.js",
"./mdb-greenplum-v1/*": "./dist/generated/yandex/cloud/mdb/greenplum/v1/*.js",
"./mdb-kafka-v1": "./dist/clients/mdb-kafka-v1/index.js",
"./mdb-kafka-v1/*": "./dist/generated/yandex/cloud/mdb/kafka/v1/*.js",
"./mdb-mongodb-v1": "./dist/clients/mdb-mongodb-v1/index.js",
"./mdb-mongodb-v1/*": "./dist/generated/yandex/cloud/mdb/mongodb/v1/*.js",
"./mdb-mysql-v1": "./dist/clients/mdb-mysql-v1/index.js",
"./mdb-mysql-v1/*": "./dist/generated/yandex/cloud/mdb/mysql/v1/*.js",
"./mdb-mysql-v1alpha": "./dist/clients/mdb-mysql-v1alpha/index.js",
"./mdb-mysql-v1alpha/*": "./dist/generated/yandex/cloud/mdb/mysql/v1alpha/*.js",
"./mdb-opensearch-v1": "./dist/clients/mdb-opensearch-v1/index.js",
"./mdb-opensearch-v1/*": "./dist/generated/yandex/cloud/mdb/opensearch/v1/*.js",
"./mdb-postgresql-v1": "./dist/clients/mdb-postgresql-v1/index.js",
"./mdb-postgresql-v1/*": "./dist/generated/yandex/cloud/mdb/postgresql/v1/*.js",
"./mdb-redis-v1": "./dist/clients/mdb-redis-v1/index.js",
"./mdb-redis-v1/*": "./dist/generated/yandex/cloud/mdb/redis/v1/*.js",
"./mdb-sqlserver-v1": "./dist/clients/mdb-sqlserver-v1/index.js",
"./mdb-sqlserver-v1/*": "./dist/generated/yandex/cloud/mdb/sqlserver/v1/*.js",
"./monitoring-v3": "./dist/clients/monitoring-v3/index.js",
"./monitoring-v3/*": "./dist/generated/yandex/cloud/monitoring/v3/*.js",
"./operation": "./dist/clients/operation/index.js",
"./operation/*": "./dist/generated/yandex/cloud/operation/*.js",
"./organizationmanager-v1": "./dist/clients/organizationmanager-v1/index.js",
"./organizationmanager-v1/*": "./dist/generated/yandex/cloud/organizationmanager/v1/*.js",
"./proto/*": "./dist/generated/yandex/cloud/*.js",
"./quotamanager-v1": "./dist/clients/quotamanager-v1/index.js",
"./quotamanager-v1/*": "./dist/generated/yandex/cloud/quotamanager/v1/*.js",
"./resourcemanager-v1": "./dist/clients/resourcemanager-v1/index.js",
"./resourcemanager-v1/*": "./dist/generated/yandex/cloud/resourcemanager/v1/*.js",
"./sdk/ai-assistants-v1": "./dist/sdk/ai-assistants-v1/index.js",
"./sdk/ai-files-v1": "./dist/sdk/ai-files-v1/index.js",
"./sdk/ai-foundation_models-v1": "./dist/sdk/ai-foundation_models-v1/index.js",
"./sdk/operation": "./dist/sdk/operation/index.js",
"./searchapi-v2": "./dist/clients/searchapi-v2/index.js",
"./searchapi-v2/*": "./dist/generated/yandex/cloud/searchapi/v2/*.js",
"./serverless-apigateway-v1": "./dist/clients/serverless-apigateway-v1/index.js",
"./serverless-apigateway-v1/*": "./dist/generated/yandex/cloud/serverless/apigateway/v1/*.js",
"./serverless-apigateway-websocket-v1": "./dist/clients/serverless-apigateway-websocket-v1/index.js",
"./serverless-apigateway-websocket-v1/*": "./dist/generated/yandex/cloud/serverless/apigateway/websocket/v1/*.js",
"./serverless-containers-v1": "./dist/clients/serverless-containers-v1/index.js",
"./serverless-containers-v1/*": "./dist/generated/yandex/cloud/serverless/containers/v1/*.js",
"./serverless-eventrouter-v1": "./dist/clients/serverless-eventrouter-v1/index.js",
"./serverless-eventrouter-v1/*": "./dist/generated/yandex/cloud/serverless/eventrouter/v1/*.js",
"./serverless-functions-v1": "./dist/clients/serverless-functions-v1/index.js",
"./serverless-functions-v1/*": "./dist/generated/yandex/cloud/serverless/functions/v1/*.js",
"./serverless-mdbproxy-v1": "./dist/clients/serverless-mdbproxy-v1/index.js",
"./serverless-mdbproxy-v1/*": "./dist/generated/yandex/cloud/serverless/mdbproxy/v1/*.js",
"./serverless-triggers-v1": "./dist/clients/serverless-triggers-v1/index.js",
"./serverless-triggers-v1/*": "./dist/generated/yandex/cloud/serverless/triggers/v1/*.js",
"./serverless-workflows-v1": "./dist/clients/serverless-workflows-v1/index.js",
"./serverless-workflows-v1/*": "./dist/generated/yandex/cloud/serverless/workflows/v1/*.js",
"./smartcaptcha-v1": "./dist/clients/smartcaptcha-v1/index.js",
"./smartcaptcha-v1/*": "./dist/generated/yandex/cloud/smartcaptcha/v1/*.js",
"./smartwebsecurity-v1": "./dist/clients/smartwebsecurity-v1/index.js",
"./smartwebsecurity-v1/*": "./dist/generated/yandex/cloud/smartwebsecurity/v1/*.js",
"./speechsense-v1": "./dist/clients/speechsense-v1/index.js",
"./speechsense-v1/*": "./dist/generated/yandex/cloud/speechsense/v1/*.js",
"./storage-v1": "./dist/clients/storage-v1/index.js",
"./storage-v1/*": "./dist/generated/yandex/cloud/storage/v1/*.js",
"./video-v1": "./dist/clients/video-v1/index.js",
"./video-v1/*": "./dist/generated/yandex/cloud/video/v1/*.js",
"./vpc-v1": "./dist/clients/vpc-v1/index.js",
"./ydb-v1": "./dist/clients/ydb-v1/index.js"
"./vpc-v1/*": "./dist/generated/yandex/cloud/vpc/v1/*.js",
"./ydb-v1": "./dist/clients/ydb-v1/index.js",
"./ydb-v1/*": "./dist/generated/yandex/cloud/ydb/v1/*.js"
}
}
20 changes: 10 additions & 10 deletions scripts/generate_services/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -103,9 +103,7 @@ const generateClient = async (dir: string) => {

const serviceProtoFiles = fg.sync('**/*.proto', { cwd: target, absolute: true });

const serviceName = generateServiceName(dir);

const serviceDir = PATH.join(CLIENTS_DIR, serviceName);
const serviceDir = PATH.join(CLIENTS_DIR, generateServiceName(dir));
if (!fs.existsSync(serviceDir)) {
fs.mkdirSync(serviceDir, { recursive: true });
}
Expand All @@ -116,18 +114,20 @@ const generateClient = async (dir: string) => {

await addReExports(serviceDir, dir, relativeProtoPathList);

return serviceName;
return dir;
};

const modifyPackageJSON = async (serviceList: string[]) => {
const modifyPackageJSON = async (serviceDirList: string[]) => {
const path = PATH.resolve('package.json');
const data = fs.readFileSync(path, 'utf8');
const jsonData = JSON.parse(data);

jsonData.exports = jsonData.exports || {};

serviceList.forEach((serviceName) => {
serviceDirList.forEach((serviceDir) => {
const serviceName = generateServiceName(serviceDir);
jsonData.exports[`./${serviceName}`] = `./dist/clients/${serviceName}/index.js`;
jsonData.exports[`./${serviceName}/*`] = `./dist/generated/yandex/cloud/${serviceDir}/*.js`;
});

// eslint-disable-next-line @typescript-eslint/no-explicit-any
Expand All @@ -153,11 +153,11 @@ const main = async () => {

await generateCloudApi();

const serviceList = await Promise.all(Object.keys(serviceMap).map(generateClient));

serviceList.sort();
const clientPromiseList = Object.keys(serviceMap).map(generateClient);
const serviceDirList = await Promise.all(clientPromiseList);
serviceDirList.sort();

await modifyPackageJSON(serviceList);
await modifyPackageJSON(serviceDirList);

await exec('npm run prettier:fix:clients');
};
Expand Down
Loading