Skip to content

Commit c77cc52

Browse files
authored
Merge pull request #237 from yandex-cloud/update-cloud-api-160426
Update cloudapi
2 parents 16b4d90 + bdecd8d commit c77cc52

1,095 files changed

Lines changed: 212144 additions & 24440 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

cloudapi

Submodule cloudapi updated 630 files

package-lock.json

Lines changed: 50 additions & 39 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@
5959
"grpc-tools": "^1.12.4",
6060
"husky": "^7.0.4",
6161
"jest": "^27.4.5",
62+
"prettier": "^3.8.3",
6263
"semantic-release": "^21.0.1",
6364
"ts-jest": "^27.1.1",
6465
"ts-node": "^10.9.2",
@@ -127,6 +128,8 @@
127128
"./backup-v1/*": "./dist/generated/yandex/cloud/backup/v1/*.js",
128129
"./baremetal-v1alpha": "./dist/clients/baremetal-v1alpha/index.js",
129130
"./baremetal-v1alpha/*": "./dist/generated/yandex/cloud/baremetal/v1alpha/*.js",
131+
"./billing-usage_records-v1": "./dist/clients/billing-usage_records-v1/index.js",
132+
"./billing-usage_records-v1/*": "./dist/generated/yandex/cloud/billing/usage_records/v1/*.js",
130133
"./billing-v1": "./dist/clients/billing-v1/index.js",
131134
"./billing-v1/*": "./dist/generated/yandex/cloud/billing/v1/*.js",
132135
"./cdn-v1": "./dist/clients/cdn-v1/index.js",
@@ -145,8 +148,12 @@
145148
"./cloudrouter-v1/*": "./dist/generated/yandex/cloud/cloudrouter/v1/*.js",
146149
"./compute-v1": "./dist/clients/compute-v1/index.js",
147150
"./compute-v1/*": "./dist/generated/yandex/cloud/compute/v1/*.js",
151+
"./connectionmanager-v1": "./dist/clients/connectionmanager-v1/index.js",
152+
"./connectionmanager-v1/*": "./dist/generated/yandex/cloud/connectionmanager/v1/*.js",
148153
"./containerregistry-v1": "./dist/clients/containerregistry-v1/index.js",
149154
"./containerregistry-v1/*": "./dist/generated/yandex/cloud/containerregistry/v1/*.js",
155+
"./datacatalog-v1": "./dist/clients/datacatalog-v1/index.js",
156+
"./datacatalog-v1/*": "./dist/generated/yandex/cloud/datacatalog/v1/*.js",
150157
"./dataproc-manager-v1": "./dist/clients/dataproc-manager-v1/index.js",
151158
"./dataproc-manager-v1/*": "./dist/generated/yandex/cloud/dataproc/manager/v1/*.js",
152159
"./dataproc-v1": "./dist/clients/dataproc-v1/index.js",
@@ -157,6 +164,8 @@
157164
"./datasphere-v2/*": "./dist/generated/yandex/cloud/datasphere/v2/*.js",
158165
"./datatransfer-v1": "./dist/clients/datatransfer-v1/index.js",
159166
"./datatransfer-v1/*": "./dist/generated/yandex/cloud/datatransfer/v1/*.js",
167+
"./devtools-ycvc-v1": "./dist/clients/devtools-ycvc-v1/index.js",
168+
"./devtools-ycvc-v1/*": "./dist/generated/yandex/cloud/devtools/ycvc/v1/*.js",
160169
"./dist/*": "./dist/*.js",
161170
"./dns-v1": "./dist/clients/dns-v1/index.js",
162171
"./dns-v1/*": "./dist/generated/yandex/cloud/dns/v1/*.js",
@@ -195,6 +204,8 @@
195204
"./marketplace-metering-v1/*": "./dist/generated/yandex/cloud/marketplace/metering/v1/*.js",
196205
"./marketplace-pim-v1": "./dist/clients/marketplace-pim-v1/index.js",
197206
"./marketplace-pim-v1/*": "./dist/generated/yandex/cloud/marketplace/pim/v1/*.js",
207+
"./marketplace-stacklandlicenseapi-v1": "./dist/clients/marketplace-stacklandlicenseapi-v1/index.js",
208+
"./marketplace-stacklandlicenseapi-v1/*": "./dist/generated/yandex/cloud/marketplace/stacklandlicenseapi/v1/*.js",
198209
"./marketplace-v1": "./dist/clients/marketplace-v1/index.js",
199210
"./marketplace-v1/*": "./dist/generated/yandex/cloud/marketplace/v1/*.js",
200211
"./mdb-clickhouse-v1": "./dist/clients/mdb-clickhouse-v1/index.js",
@@ -246,6 +257,8 @@
246257
"./serverless-eventrouter-v1/*": "./dist/generated/yandex/cloud/serverless/eventrouter/v1/*.js",
247258
"./serverless-functions-v1": "./dist/clients/serverless-functions-v1/index.js",
248259
"./serverless-functions-v1/*": "./dist/generated/yandex/cloud/serverless/functions/v1/*.js",
260+
"./serverless-mcpgateway-v1": "./dist/clients/serverless-mcpgateway-v1/index.js",
261+
"./serverless-mcpgateway-v1/*": "./dist/generated/yandex/cloud/serverless/mcpgateway/v1/*.js",
249262
"./serverless-mdbproxy-v1": "./dist/clients/serverless-mdbproxy-v1/index.js",
250263
"./serverless-mdbproxy-v1/*": "./dist/generated/yandex/cloud/serverless/mdbproxy/v1/*.js",
251264
"./serverless-triggers-v1": "./dist/clients/serverless-triggers-v1/index.js",
@@ -269,6 +282,8 @@
269282
"./vpc-v1": "./dist/clients/vpc-v1/index.js",
270283
"./vpc-v1/*": "./dist/generated/yandex/cloud/vpc/v1/*.js",
271284
"./ydb-v1": "./dist/clients/ydb-v1/index.js",
272-
"./ydb-v1/*": "./dist/generated/yandex/cloud/ydb/v1/*.js"
285+
"./ydb-v1/*": "./dist/generated/yandex/cloud/ydb/v1/*.js",
286+
"./ytsaurus-v1": "./dist/clients/ytsaurus-v1/index.js",
287+
"./ytsaurus-v1/*": "./dist/generated/yandex/cloud/ytsaurus/v1/*.js"
273288
}
274289
}

scripts/generate_services/index.ts

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,98 @@ const generateCloudApi = (protoFiles: string[]) => {
9797
return exec(command);
9898
};
9999

100+
/**
101+
* Workaround for TS7056 ("inferred type exceeds the maximum length the
102+
* compiler will serialize") on large ts-proto helper objects. Adds an explicit
103+
* type annotation to every `export const X = { encode, decode, fromJSON,
104+
* toJSON, fromPartial }` so TS emits the annotation into .d.ts instead of the
105+
* giant inferred object literal type.
106+
*
107+
* Only annotates helpers that contain EXACTLY the five standard ts-proto
108+
* methods — consts with extras (e.g. `wrap`/`unwrap` on well-known types like
109+
* `google.protobuf.Struct`/`Value`/`ListValue`) are left untouched, since a
110+
* rigid annotation would reject those extra members. Such helpers are small
111+
* enough not to trigger TS7056 anyway.
112+
*
113+
* Idempotent: after the rewrite the original `export const X = {` opener no
114+
* longer matches (it becomes `export const X: { ... } = {`).
115+
*/
116+
const annotateHelperConsts = () => {
117+
const GENERATED_CODE_DIR = PATH.resolve('./src/generated');
118+
const files = fg.sync('**/*.ts', { cwd: GENERATED_CODE_DIR, absolute: true });
119+
120+
const STANDARD_METHODS = ['encode', 'decode', 'fromJSON', 'toJSON', 'fromPartial'];
121+
const START_RE = /^export const (\w+) = \{$/;
122+
// Top-level property of a ts-proto helper: 4-space indent + identifier
123+
// followed by `(` (regular method) or `<` (generic method e.g.
124+
// `fromPartial<I extends ...>(...)`).
125+
const PROP_RE = /^ {4}(\w+)[<(]/;
126+
const END_LINE = '};';
127+
128+
for (const file of files) {
129+
const content = fs.readFileSync(file, 'utf8');
130+
const lines = content.split('\n');
131+
const out: string[] = [];
132+
let modified = false;
133+
let i = 0;
134+
135+
while (i < lines.length) {
136+
const m = START_RE.exec(lines[i]);
137+
if (!m) {
138+
out.push(lines[i]);
139+
i += 1;
140+
continue;
141+
}
142+
143+
const name = m[1];
144+
145+
// Find the matching `};` at column 0 (end of the top-level const).
146+
let j = i + 1;
147+
while (j < lines.length && lines[j] !== END_LINE) j += 1;
148+
if (j >= lines.length) {
149+
out.push(lines[i]);
150+
i += 1;
151+
continue;
152+
}
153+
154+
const body = lines.slice(i + 1, j);
155+
const methods = new Set<string>();
156+
for (const line of body) {
157+
const pm = PROP_RE.exec(line);
158+
if (pm) methods.add(pm[1]);
159+
}
160+
161+
const isStandard =
162+
methods.size === STANDARD_METHODS.length &&
163+
STANDARD_METHODS.every((s) => methods.has(s));
164+
165+
if (!isStandard) {
166+
out.push(lines[i]);
167+
i += 1;
168+
continue;
169+
}
170+
171+
out.push(
172+
`export const ${name}: {`,
173+
` encode(message: ${name}, writer?: _m0.Writer): _m0.Writer;`,
174+
` decode(input: _m0.Reader | Uint8Array, length?: number): ${name};`,
175+
` fromJSON(object: any): ${name};`,
176+
` toJSON(message: ${name}): unknown;`,
177+
` fromPartial<I extends Exact<DeepPartial<${name}>, I>>(object: I): ${name};`,
178+
`} = {`,
179+
);
180+
out.push(...body);
181+
out.push(END_LINE);
182+
modified = true;
183+
i = j + 1;
184+
}
185+
186+
if (modified) {
187+
fs.writeFileSync(file, out.join('\n'), 'utf8');
188+
}
189+
}
190+
};
191+
100192
const generateClient = async (dir: string) => {
101193
const target = PATH.join(YANDEX_CLOUD_DIR, dir);
102194

@@ -178,6 +270,8 @@ const main = async () => {
178270

179271
await Promise.all([generateCloudApi(protoFiles), generateServiceEndpointsMap()]);
180272

273+
annotateHelperConsts();
274+
181275
const clientPromiseList = Object.keys(serviceMap).map(generateClient);
182276
const serviceDirList = await Promise.all(clientPromiseList);
183277
serviceDirList.sort();

0 commit comments

Comments
 (0)