coze-studio/frontend/infra/idl/idl-parser/__tests__/demo.unify.ts

214 lines
4.1 KiB
TypeScript

/*
* Copyright 2025 coze-dev Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/* eslint-disable */
import * as t from '../src/unify/index';
import * as path from 'path';
// const root = 'test/idl';
// const idl = path.resolve(process.cwd(), root, 'dep/common.thrift');
// const document = t.parse(idl, {
// root,
// namespaceRefer: true,
// cache: false,
// });
// // document.body[4]
// console.log('#gg', document);
const indexThriftContent = `
namespace java com.unify_idx
include 'unify_dependent1.thrift'
typedef unify_dependent1.Foo TFoo
enum Gender {
// male
Male // male tail
// female
Female // female tail
// mix
Mix
}
// const map<Gender, string> genderMap = {
// Gender. Male: 'Male',
// Gender. Female: 'Female',
// }
union FuncRequest {
1: unify_dependent1.Foo r_key1
2: TFoo list (go.tag = "json:\\"-\\"")
}
`;
const dep1ThriftContent = `
namespace js unify_dep1
typedef Foo Foo1
struct Foo {
1: string f_key1
}
`;
// const fileContentMap = {
// 'unify_index.thrift': indexThriftContent,
// 'unify_dependent1.thrift': dep1ThriftContent,
// };
const indexProtoContent = `
syntax = "proto3";
import "unify.dependent1.proto";
package a.b.c;
message Request {
repeated string key1 = 1[(api.key) = 'f'];
a.b.Foo key3 = 3;
// message Sub {
// enum Num {
// ONE = 1;
// }
// // string k1 = 1;
// Num k2 = 2;
// }
// Sub key2 = 2;
}
`;
const dep1ProtoContent = `
syntax = "proto3";
package a.b;
message Foo {
string f_key1 = 1;
message SubF {}
SubF f_key2 = 2;
}
`;
const fileContentMap = {
'unify_index.proto': indexProtoContent,
'unify.dependent1.proto': dep1ProtoContent,
};
// const document = t.parse(
// 'unify_index.proto',
// {
// root: '.',
// // namespaceRefer: true,
// },
// fileContentMap
// );
// // document.body[4]
// console.log(document);
const baseContent = `
syntax = "proto3";
package a.b;
message Bar {
message BarSub {
enum NumBar {
ONE = 1;
}
}
}
`;
const extraContent = `
syntax = "proto3";
package a.b;
message Extra {}
`;
const indexContent = `
syntax = "proto3";
package a.b;
import 'base.proto';
import 'extra.proto';
message Foo {
// message FooSub {
// enum NumFoo {
// TWO = 2;
// }
// }
// Foo.FooSub.NumFoo k1 = 1;
// FooSub.NumFoo k2 = 2;
// FooSub k3 = 3;
// repeated FooSub k4 = 4;
// map<string, FooSub.NumFoo> k5 = 5;
// Bar.BarSub.NumBar k10 = 10;
Bar.BarSub k11 = 11;
// repeated Bar.BarSub.NumBar k12 = 12;
// map<string, Bar.BarSub> k13 = 13;
}
// message Bar {
// message BarSub {
// enum NumBar {
// ONE = 1;
// }
// }
// }
`;
const document = t.parse(
'index.proto',
{ cache: false },
{
'index.proto': indexContent,
'base.proto': baseContent,
'extra.proto': extraContent,
}
);
const statement = document.statements[0] as t.InterfaceWithFields;
console.log(statement);
// const baseContent = `
// syntax = "proto3";
// package a.b;
// message Common {
// }
// `;
// const indexContent = `
// syntax = "proto3";
// message Foo {
// google.protobuf.Any k1 = 1;
// }
// `;
// const document = t.parse(
// 'index.proto',
// { cache: false },
// {
// 'index.proto': indexContent,
// // 'base.proto': baseContent,
// }
// );
// const { functions } = document.statements[0] as t.ServiceDefinition;
// console.log(functions);