Skip to content

Commit da1fb94

Browse files
authored
Merge pull request #182 from yandex-cloud/package-exports
Packages exports
2 parents 1efc71d + 61017f9 commit da1fb94

File tree

2 files changed

+197
-3
lines changed

2 files changed

+197
-3
lines changed

package.json

Lines changed: 172 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,5 +176,177 @@
176176
},
177177
"publishConfig": {
178178
"access": "public"
179+
},
180+
"exports": {
181+
".": "./dist/index.js",
182+
"./ai-assistants-v1": "./ai-assistants-v1/index.js",
183+
"./ai-assistants-v1/*": "./ai-assistants-v1/*.js",
184+
"./ai-dataset-v1": "./ai-dataset-v1/index.js",
185+
"./ai-dataset-v1/*": "./ai-dataset-v1/*.js",
186+
"./ai-files-v1": "./ai-files-v1/index.js",
187+
"./ai-files-v1/*": "./ai-files-v1/*.js",
188+
"./ai-foundation_models-v1": "./ai-foundation_models-v1/index.js",
189+
"./ai-foundation_models-v1/*": "./ai-foundation_models-v1/*.js",
190+
"./ai-llm-v1alpha": "./ai-llm-v1alpha/index.js",
191+
"./ai-llm-v1alpha/*": "./ai-llm-v1alpha/*.js",
192+
"./ai-ocr-v1": "./ai-ocr-v1/index.js",
193+
"./ai-ocr-v1/*": "./ai-ocr-v1/*.js",
194+
"./ai-stt-v2": "./ai-stt-v2/index.js",
195+
"./ai-stt-v2/*": "./ai-stt-v2/*.js",
196+
"./ai-stt-v3": "./ai-stt-v3/index.js",
197+
"./ai-stt-v3/*": "./ai-stt-v3/*.js",
198+
"./ai-translate-v2": "./ai-translate-v2/index.js",
199+
"./ai-translate-v2/*": "./ai-translate-v2/*.js",
200+
"./ai-tts-v3": "./ai-tts-v3/index.js",
201+
"./ai-tts-v3/*": "./ai-tts-v3/*.js",
202+
"./ai-tuning-v1": "./ai-tuning-v1/index.js",
203+
"./ai-tuning-v1/*": "./ai-tuning-v1/*.js",
204+
"./ai-vision-v1": "./ai-vision-v1/index.js",
205+
"./ai-vision-v1/*": "./ai-vision-v1/*.js",
206+
"./ai-vision-v2": "./ai-vision-v2/index.js",
207+
"./ai-vision-v2/*": "./ai-vision-v2/*.js",
208+
"./airflow-v1": "./airflow-v1/index.js",
209+
"./airflow-v1/*": "./airflow-v1/*.js",
210+
"./apploadbalancer-v1": "./apploadbalancer-v1/index.js",
211+
"./apploadbalancer-v1/*": "./apploadbalancer-v1/*.js",
212+
"./audittrails-v1": "./audittrails-v1/index.js",
213+
"./audittrails-v1/*": "./audittrails-v1/*.js",
214+
"./backup-v1": "./backup-v1/index.js",
215+
"./backup-v1/*": "./backup-v1/*.js",
216+
"./billing-v1": "./billing-v1/index.js",
217+
"./billing-v1/*": "./billing-v1/*.js",
218+
"./cdn-v1": "./cdn-v1/index.js",
219+
"./cdn-v1/*": "./cdn-v1/*.js",
220+
"./certificatemanager-v1": "./certificatemanager-v1/index.js",
221+
"./certificatemanager-v1/*": "./certificatemanager-v1/*.js",
222+
"./cic-v1": "./cic-v1/index.js",
223+
"./cic-v1/*": "./cic-v1/*.js",
224+
"./cloudapps-workload-v1": "./cloudapps-workload-v1/index.js",
225+
"./cloudapps-workload-v1/*": "./cloudapps-workload-v1/*.js",
226+
"./cloudregistry-v1": "./cloudregistry-v1/index.js",
227+
"./cloudregistry-v1/*": "./cloudregistry-v1/*.js",
228+
"./cloudrouter-v1": "./cloudrouter-v1/index.js",
229+
"./cloudrouter-v1/*": "./cloudrouter-v1/*.js",
230+
"./compute-v1": "./compute-v1/index.js",
231+
"./compute-v1/*": "./compute-v1/*.js",
232+
"./containerregistry-v1": "./containerregistry-v1/index.js",
233+
"./containerregistry-v1/*": "./containerregistry-v1/*.js",
234+
"./dataproc-manager-v1": "./dataproc-manager-v1/index.js",
235+
"./dataproc-manager-v1/*": "./dataproc-manager-v1/*.js",
236+
"./dataproc-v1": "./dataproc-v1/index.js",
237+
"./dataproc-v1/*": "./dataproc-v1/*.js",
238+
"./datasphere-v1": "./datasphere-v1/index.js",
239+
"./datasphere-v1/*": "./datasphere-v1/*.js",
240+
"./datasphere-v2": "./datasphere-v2/index.js",
241+
"./datasphere-v2/*": "./datasphere-v2/*.js",
242+
"./datatransfer-v1": "./datatransfer-v1/index.js",
243+
"./datatransfer-v1/*": "./datatransfer-v1/*.js",
244+
"./dist/*": "./dist/*.js",
245+
"./dist/sdk/ai-assistants-v1": "./dist/sdk/ai-assistants-v1/index.js",
246+
"./dist/sdk/ai-assistants-v1/*": "./dist/sdk/ai-assistants-v1/*.js",
247+
"./dist/sdk/ai-files-v1": "./dist/sdk/ai-files-v1/index.js",
248+
"./dist/sdk/ai-files-v1/*": "./dist/sdk/ai-files-v1/*.js",
249+
"./dist/sdk/ai-foundation_models-v1": "./dist/sdk/ai-foundation_models-v1/index.js",
250+
"./dist/sdk/ai-foundation_models-v1/*": "./dist/sdk/ai-foundation_models-v1/*.js",
251+
"./dist/sdk/operation": "./dist/sdk/operation/index.js",
252+
"./dist/sdk/operation/*": "./dist/sdk/operation/*.js",
253+
"./dns-v1": "./dns-v1/index.js",
254+
"./dns-v1/*": "./dns-v1/*.js",
255+
"./endpoint": "./endpoint/index.js",
256+
"./endpoint/*": "./endpoint/*.js",
257+
"./iam-v1": "./iam-v1/index.js",
258+
"./iam-v1/*": "./iam-v1/*.js",
259+
"./iot-broker-v1": "./iot-broker-v1/index.js",
260+
"./iot-broker-v1/*": "./iot-broker-v1/*.js",
261+
"./iot-devices-v1": "./iot-devices-v1/index.js",
262+
"./iot-devices-v1/*": "./iot-devices-v1/*.js",
263+
"./k8s-marketplace-v1": "./k8s-marketplace-v1/index.js",
264+
"./k8s-marketplace-v1/*": "./k8s-marketplace-v1/*.js",
265+
"./k8s-v1": "./k8s-v1/index.js",
266+
"./k8s-v1/*": "./k8s-v1/*.js",
267+
"./kms-v1": "./kms-v1/index.js",
268+
"./kms-v1/*": "./kms-v1/*.js",
269+
"./loadbalancer-v1": "./loadbalancer-v1/index.js",
270+
"./loadbalancer-v1/*": "./loadbalancer-v1/*.js",
271+
"./loadtesting-agent-v1": "./loadtesting-agent-v1/index.js",
272+
"./loadtesting-agent-v1/*": "./loadtesting-agent-v1/*.js",
273+
"./loadtesting-api-v1": "./loadtesting-api-v1/index.js",
274+
"./loadtesting-api-v1/*": "./loadtesting-api-v1/*.js",
275+
"./lockbox-v1": "./lockbox-v1/index.js",
276+
"./lockbox-v1/*": "./lockbox-v1/*.js",
277+
"./logging-v1": "./logging-v1/index.js",
278+
"./logging-v1/*": "./logging-v1/*.js",
279+
"./marketplace-licensemanager-saas-v1": "./marketplace-licensemanager-saas-v1/index.js",
280+
"./marketplace-licensemanager-saas-v1/*": "./marketplace-licensemanager-saas-v1/*.js",
281+
"./marketplace-licensemanager-v1": "./marketplace-licensemanager-v1/index.js",
282+
"./marketplace-licensemanager-v1/*": "./marketplace-licensemanager-v1/*.js",
283+
"./marketplace-metering-v1": "./marketplace-metering-v1/index.js",
284+
"./marketplace-metering-v1/*": "./marketplace-metering-v1/*.js",
285+
"./marketplace-pim-v1": "./marketplace-pim-v1/index.js",
286+
"./marketplace-pim-v1/*": "./marketplace-pim-v1/*.js",
287+
"./marketplace-v1": "./marketplace-v1/index.js",
288+
"./marketplace-v1/*": "./marketplace-v1/*.js",
289+
"./mdb-clickhouse-v1": "./mdb-clickhouse-v1/index.js",
290+
"./mdb-clickhouse-v1/*": "./mdb-clickhouse-v1/*.js",
291+
"./mdb-elasticsearch-v1": "./mdb-elasticsearch-v1/index.js",
292+
"./mdb-elasticsearch-v1/*": "./mdb-elasticsearch-v1/*.js",
293+
"./mdb-greenplum-v1": "./mdb-greenplum-v1/index.js",
294+
"./mdb-greenplum-v1/*": "./mdb-greenplum-v1/*.js",
295+
"./mdb-kafka-v1": "./mdb-kafka-v1/index.js",
296+
"./mdb-kafka-v1/*": "./mdb-kafka-v1/*.js",
297+
"./mdb-mongodb-v1": "./mdb-mongodb-v1/index.js",
298+
"./mdb-mongodb-v1/*": "./mdb-mongodb-v1/*.js",
299+
"./mdb-mysql-v1": "./mdb-mysql-v1/index.js",
300+
"./mdb-mysql-v1/*": "./mdb-mysql-v1/*.js",
301+
"./mdb-mysql-v1alpha": "./mdb-mysql-v1alpha/index.js",
302+
"./mdb-mysql-v1alpha/*": "./mdb-mysql-v1alpha/*.js",
303+
"./mdb-opensearch-v1": "./mdb-opensearch-v1/index.js",
304+
"./mdb-opensearch-v1/*": "./mdb-opensearch-v1/*.js",
305+
"./mdb-postgresql-v1": "./mdb-postgresql-v1/index.js",
306+
"./mdb-postgresql-v1/*": "./mdb-postgresql-v1/*.js",
307+
"./mdb-redis-v1": "./mdb-redis-v1/index.js",
308+
"./mdb-redis-v1/*": "./mdb-redis-v1/*.js",
309+
"./mdb-sqlserver-v1": "./mdb-sqlserver-v1/index.js",
310+
"./mdb-sqlserver-v1/*": "./mdb-sqlserver-v1/*.js",
311+
"./monitoring-v3": "./monitoring-v3/index.js",
312+
"./monitoring-v3/*": "./monitoring-v3/*.js",
313+
"./operation": "./operation/index.js",
314+
"./operation/*": "./operation/*.js",
315+
"./organizationmanager-v1": "./organizationmanager-v1/index.js",
316+
"./organizationmanager-v1/*": "./organizationmanager-v1/*.js",
317+
"./resourcemanager-v1": "./resourcemanager-v1/index.js",
318+
"./resourcemanager-v1/*": "./resourcemanager-v1/*.js",
319+
"./searchapi-v2": "./searchapi-v2/index.js",
320+
"./searchapi-v2/*": "./searchapi-v2/*.js",
321+
"./serverless-apigateway-v1": "./serverless-apigateway-v1/index.js",
322+
"./serverless-apigateway-v1/*": "./serverless-apigateway-v1/*.js",
323+
"./serverless-apigateway-websocket-v1": "./serverless-apigateway-websocket-v1/index.js",
324+
"./serverless-apigateway-websocket-v1/*": "./serverless-apigateway-websocket-v1/*.js",
325+
"./serverless-containers-v1": "./serverless-containers-v1/index.js",
326+
"./serverless-containers-v1/*": "./serverless-containers-v1/*.js",
327+
"./serverless-eventrouter-v1": "./serverless-eventrouter-v1/index.js",
328+
"./serverless-eventrouter-v1/*": "./serverless-eventrouter-v1/*.js",
329+
"./serverless-functions-v1": "./serverless-functions-v1/index.js",
330+
"./serverless-functions-v1/*": "./serverless-functions-v1/*.js",
331+
"./serverless-mdbproxy-v1": "./serverless-mdbproxy-v1/index.js",
332+
"./serverless-mdbproxy-v1/*": "./serverless-mdbproxy-v1/*.js",
333+
"./serverless-triggers-v1": "./serverless-triggers-v1/index.js",
334+
"./serverless-triggers-v1/*": "./serverless-triggers-v1/*.js",
335+
"./serverless-workflows-v1": "./serverless-workflows-v1/index.js",
336+
"./serverless-workflows-v1/*": "./serverless-workflows-v1/*.js",
337+
"./smartcaptcha-v1": "./smartcaptcha-v1/index.js",
338+
"./smartcaptcha-v1/*": "./smartcaptcha-v1/*.js",
339+
"./smartwebsecurity-v1": "./smartwebsecurity-v1/index.js",
340+
"./smartwebsecurity-v1/*": "./smartwebsecurity-v1/*.js",
341+
"./speechsense-v1": "./speechsense-v1/index.js",
342+
"./speechsense-v1/*": "./speechsense-v1/*.js",
343+
"./storage-v1": "./storage-v1/index.js",
344+
"./storage-v1/*": "./storage-v1/*.js",
345+
"./video-v1": "./video-v1/index.js",
346+
"./video-v1/*": "./video-v1/*.js",
347+
"./vpc-v1": "./vpc-v1/index.js",
348+
"./vpc-v1/*": "./vpc-v1/*.js",
349+
"./ydb-v1": "./ydb-v1/index.js",
350+
"./ydb-v1/*": "./ydb-v1/*.js"
179351
}
180352
}

scripts/generate_services/index.ts

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { detectRootServices, writeToFile } from '../detect_services';
55

66
import { promisify } from 'node:util';
77
import child_process from 'node:child_process';
8+
import { uniq } from 'lodash';
89

910
const exec = promisify(child_process.exec);
1011

@@ -157,11 +158,32 @@ const modifyPackageJSON = async (serviceList: string[]) => {
157158
const data = fs.readFileSync(path, 'utf8');
158159
const jsonData = JSON.parse(data);
159160

160-
const newServiceList = [...new Set([...jsonData.files, ...serviceList])].sort();
161+
jsonData.exports = jsonData.exports || {};
162+
jsonData.files = jsonData.files || [];
161163

162-
jsonData.files = newServiceList;
164+
serviceList.forEach((serviceName) => {
165+
jsonData.exports[`./${serviceName}`] = `./${serviceName}/index.js`;
166+
jsonData.exports[`./${serviceName}/*`] = `./${serviceName}/*.js`;
167+
jsonData.files.push(serviceName);
168+
});
169+
170+
jsonData.files.sort();
171+
jsonData.files = uniq(jsonData.files);
172+
173+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
174+
const replacer = (key: string, value: any) => {
175+
return value && typeof value === 'object' && key === 'exports'
176+
? Object.keys(value)
177+
.sort()
178+
.reduce((sorted, key) => {
179+
sorted[key] = value[key];
180+
return sorted;
181+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
182+
}, {} as any)
183+
: value;
184+
};
163185

164-
fs.writeFileSync(path, JSON.stringify(jsonData, null, 2) + '\n', 'utf8');
186+
fs.writeFileSync(path, JSON.stringify(jsonData, replacer, 2) + '\n', 'utf8');
165187
};
166188

167189
const main = async () => {

0 commit comments

Comments
 (0)