@zmdb/compiler 1.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +674 -0
- package/README.md +40 -0
- package/dist/codegen/index.d.ts +50 -0
- package/dist/codegen/index.d.ts.map +1 -0
- package/dist/codegen/index.js +364 -0
- package/dist/codegen/index.js.map +1 -0
- package/dist/codegen/scan.d.ts +105 -0
- package/dist/codegen/scan.d.ts.map +1 -0
- package/dist/codegen/scan.js +450 -0
- package/dist/codegen/scan.js.map +1 -0
- package/dist/codegen/witness.d.ts +76 -0
- package/dist/codegen/witness.d.ts.map +1 -0
- package/dist/codegen/witness.js +690 -0
- package/dist/codegen/witness.js.map +1 -0
- package/dist/config/contract.d.ts +41 -0
- package/dist/config/contract.d.ts.map +1 -0
- package/dist/config/contract.js +5 -0
- package/dist/config/contract.js.map +1 -0
- package/dist/config/index.d.ts +53 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +277 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/index.zmdb.generated.d.ts +12 -0
- package/dist/config/index.zmdb.generated.js +28 -0
- package/dist/config/index.zmdb.witness.d.ts +3 -0
- package/dist/config/index.zmdb.witness.d.ts.map +1 -0
- package/dist/config/index.zmdb.witness.js +20 -0
- package/dist/config/index.zmdb.witness.js.map +1 -0
- package/dist/configured-plugin.d.ts +11 -0
- package/dist/configured-plugin.d.ts.map +1 -0
- package/dist/configured-plugin.js +27 -0
- package/dist/configured-plugin.js.map +1 -0
- package/dist/emit/index.d.ts +103 -0
- package/dist/emit/index.d.ts.map +1 -0
- package/dist/emit/index.js +1356 -0
- package/dist/emit/index.js.map +1 -0
- package/dist/errors.d.ts +7 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +2 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +46 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +254 -0
- package/dist/index.js.map +1 -0
- package/dist/lint/ast.d.ts +17 -0
- package/dist/lint/ast.d.ts.map +1 -0
- package/dist/lint/ast.js +77 -0
- package/dist/lint/ast.js.map +1 -0
- package/dist/lint/host-types.d.ts +9 -0
- package/dist/lint/host-types.d.ts.map +1 -0
- package/dist/lint/host-types.js +2 -0
- package/dist/lint/host-types.js.map +1 -0
- package/dist/lint/index.d.ts +23 -0
- package/dist/lint/index.d.ts.map +1 -0
- package/dist/lint/index.js +53 -0
- package/dist/lint/index.js.map +1 -0
- package/dist/lint/rules/no-distributed-nullable-tags.d.ts +3 -0
- package/dist/lint/rules/no-distributed-nullable-tags.d.ts.map +1 -0
- package/dist/lint/rules/no-distributed-nullable-tags.js +71 -0
- package/dist/lint/rules/no-distributed-nullable-tags.js.map +1 -0
- package/dist/lint/rules/no-empty-patch.d.ts +3 -0
- package/dist/lint/rules/no-empty-patch.d.ts.map +1 -0
- package/dist/lint/rules/no-empty-patch.js +26 -0
- package/dist/lint/rules/no-empty-patch.js.map +1 -0
- package/dist/lint/rules/no-interpolated-sql.d.ts +3 -0
- package/dist/lint/rules/no-interpolated-sql.d.ts.map +1 -0
- package/dist/lint/rules/no-interpolated-sql.js +35 -0
- package/dist/lint/rules/no-interpolated-sql.js.map +1 -0
- package/dist/lint/rules/no-unbounded-find.d.ts +3 -0
- package/dist/lint/rules/no-unbounded-find.d.ts.map +1 -0
- package/dist/lint/rules/no-unbounded-find.js +26 -0
- package/dist/lint/rules/no-unbounded-find.js.map +1 -0
- package/dist/lint/rules/no-unknown-json-column.d.ts +3 -0
- package/dist/lint/rules/no-unknown-json-column.d.ts.map +1 -0
- package/dist/lint/rules/no-unknown-json-column.js +35 -0
- package/dist/lint/rules/no-unknown-json-column.js.map +1 -0
- package/dist/lint/rules/require-sql-on-number.d.ts +3 -0
- package/dist/lint/rules/require-sql-on-number.d.ts.map +1 -0
- package/dist/lint/rules/require-sql-on-number.js +34 -0
- package/dist/lint/rules/require-sql-on-number.js.map +1 -0
- package/dist/lint/types.d.ts +12 -0
- package/dist/lint/types.d.ts.map +1 -0
- package/dist/lint/types.js +2 -0
- package/dist/lint/types.js.map +1 -0
- package/dist/metro/metro.d.ts +22 -0
- package/dist/metro/metro.d.ts.map +1 -0
- package/dist/metro/metro.js +242 -0
- package/dist/metro/metro.js.map +1 -0
- package/dist/protobuf/decode.d.ts +20 -0
- package/dist/protobuf/decode.d.ts.map +1 -0
- package/dist/protobuf/decode.js +289 -0
- package/dist/protobuf/decode.js.map +1 -0
- package/dist/protobuf/descriptor.d.ts +16 -0
- package/dist/protobuf/descriptor.d.ts.map +1 -0
- package/dist/protobuf/descriptor.js +303 -0
- package/dist/protobuf/descriptor.js.map +1 -0
- package/dist/protobuf/encode.d.ts +20 -0
- package/dist/protobuf/encode.d.ts.map +1 -0
- package/dist/protobuf/encode.js +203 -0
- package/dist/protobuf/encode.js.map +1 -0
- package/dist/protobuf/grpc-ir.d.ts +16 -0
- package/dist/protobuf/grpc-ir.d.ts.map +1 -0
- package/dist/protobuf/grpc-ir.js +2 -0
- package/dist/protobuf/grpc-ir.js.map +1 -0
- package/dist/protobuf/plan.d.ts +42 -0
- package/dist/protobuf/plan.d.ts.map +1 -0
- package/dist/protobuf/plan.js +158 -0
- package/dist/protobuf/plan.js.map +1 -0
- package/dist/reflect/callsites.d.ts +40 -0
- package/dist/reflect/callsites.d.ts.map +1 -0
- package/dist/reflect/callsites.js +153 -0
- package/dist/reflect/callsites.js.map +1 -0
- package/dist/reflect/index.d.ts +106 -0
- package/dist/reflect/index.d.ts.map +1 -0
- package/dist/reflect/index.js +1421 -0
- package/dist/reflect/index.js.map +1 -0
- package/dist/reflect/session.d.ts +118 -0
- package/dist/reflect/session.d.ts.map +1 -0
- package/dist/reflect/session.js +228 -0
- package/dist/reflect/session.js.map +1 -0
- package/dist/testing/index.d.ts +69 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +210 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/transform/index.d.ts +74 -0
- package/dist/transform/index.d.ts.map +1 -0
- package/dist/transform/index.js +572 -0
- package/dist/transform/index.js.map +1 -0
- package/dist/unplugin/index.d.ts +53 -0
- package/dist/unplugin/index.d.ts.map +1 -0
- package/dist/unplugin/index.js +130 -0
- package/dist/unplugin/index.js.map +1 -0
- package/dist/unplugin/inline-bench.d.ts +29 -0
- package/dist/unplugin/inline-bench.d.ts.map +1 -0
- package/dist/unplugin/inline-bench.js +82 -0
- package/dist/unplugin/inline-bench.js.map +1 -0
- package/package.json +110 -0
- package/src/codegen/index.ts +451 -0
- package/src/codegen/scan.ts +574 -0
- package/src/codegen/witness.ts +819 -0
- package/src/config/contract.ts +48 -0
- package/src/config/index.ts +384 -0
- package/src/config/index.zmdb.generated.d.ts +12 -0
- package/src/config/index.zmdb.generated.js +28 -0
- package/src/config/index.zmdb.witness.ts +22 -0
- package/src/configured-plugin.ts +35 -0
- package/src/emit/index.ts +1496 -0
- package/src/errors.ts +6 -0
- package/src/index.ts +336 -0
- package/src/lint/ast.ts +96 -0
- package/src/lint/host-types.ts +9 -0
- package/src/lint/index.ts +80 -0
- package/src/lint/rules/no-distributed-nullable-tags.ts +76 -0
- package/src/lint/rules/no-empty-patch.ts +26 -0
- package/src/lint/rules/no-interpolated-sql.ts +45 -0
- package/src/lint/rules/no-unbounded-find.ts +26 -0
- package/src/lint/rules/no-unknown-json-column.ts +36 -0
- package/src/lint/rules/require-sql-on-number.ts +34 -0
- package/src/lint/types.ts +11 -0
- package/src/metro/metro.ts +313 -0
- package/src/protobuf/decode.ts +375 -0
- package/src/protobuf/descriptor.ts +353 -0
- package/src/protobuf/encode.ts +277 -0
- package/src/protobuf/grpc-ir.ts +17 -0
- package/src/protobuf/plan.ts +244 -0
- package/src/reflect/callsites.ts +198 -0
- package/src/reflect/index.ts +1723 -0
- package/src/reflect/session.ts +276 -0
- package/src/testing/index.ts +298 -0
- package/src/transform/index.ts +690 -0
- package/src/unplugin/index.ts +182 -0
- package/src/unplugin/inline-bench.ts +92 -0
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
// Metro's Babel-transformer seam adapted to the same AOT transform used by the
|
|
2
|
+
// bundler plugin and code generator.
|
|
3
|
+
//
|
|
4
|
+
// This entry is loaded through `require()` from CommonJS Metro configuration and
|
|
5
|
+
// worker processes. Keep its import graph synchronous: top-level await would make
|
|
6
|
+
// `require('@zmdb/compiler/metro')` fail before Metro reads the config.
|
|
7
|
+
import { existsSync, readFileSync, statSync } from 'node:fs';
|
|
8
|
+
import { createRequire, registerHooks } from 'node:module';
|
|
9
|
+
import { dirname, isAbsolute, join, relative, resolve, sep } from 'node:path';
|
|
10
|
+
import { fileURLToPath } from 'node:url';
|
|
11
|
+
const require = createRequire(import.meta.url);
|
|
12
|
+
const ENTRY = fileURLToPath(import.meta.url);
|
|
13
|
+
const PACKAGE_ROOT = resolve(dirname(ENTRY), '../..');
|
|
14
|
+
const SOURCE = /\.(?:ts|tsx|mts|cts|js|jsx|mjs)$/;
|
|
15
|
+
const DELEGATE_FIELD = 'unstable_zmdbDelegatePath';
|
|
16
|
+
const PROJECT_FIELD = 'unstable_zmdbProjectPath';
|
|
17
|
+
const OPTIONS_FIELD = 'unstable_zmdbOptions';
|
|
18
|
+
const ENV_DELEGATE = 'ZMDB_METRO_DELEGATE';
|
|
19
|
+
const ENV_MAX_WORKERS = 'ZMDB_METRO_MAX_WORKERS';
|
|
20
|
+
const ENV_PROJECT = 'ZMDB_METRO_PROJECT';
|
|
21
|
+
const ENV_OPTIONS = 'ZMDB_METRO_OPTIONS';
|
|
22
|
+
const VERSION = String(require(join(PACKAGE_ROOT, 'package.json')).version);
|
|
23
|
+
// Source exports point at `.ts`, while every authored relative specifier correctly
|
|
24
|
+
// names the emitted `.js`. Node's synchronous require of this ESM entry does not
|
|
25
|
+
// apply TypeScript's `.js` -> `.ts` source substitution, so install the same narrow
|
|
26
|
+
// development-time resolver used by the repository scripts. Published `dist` has
|
|
27
|
+
// real `.js` siblings and therefore never takes this branch.
|
|
28
|
+
registerHooks({
|
|
29
|
+
resolve(specifier, context, nextResolve) {
|
|
30
|
+
if (context.parentURL !== undefined && /^\.{1,2}\/.*\.js$/.test(specifier)) {
|
|
31
|
+
const asJavaScript = new URL(specifier, context.parentURL);
|
|
32
|
+
if (!existsSync(fileURLToPath(asJavaScript))) {
|
|
33
|
+
const asTypeScript = new URL(`${specifier.slice(0, -3)}.ts`, context.parentURL);
|
|
34
|
+
if (existsSync(fileURLToPath(asTypeScript))) {
|
|
35
|
+
return { url: asTypeScript.href, shortCircuit: true };
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return nextResolve(specifier, context);
|
|
40
|
+
},
|
|
41
|
+
});
|
|
42
|
+
let activeHook;
|
|
43
|
+
let pendingSession;
|
|
44
|
+
let calleePattern;
|
|
45
|
+
/**
|
|
46
|
+
* Wrap Metro's existing Babel transformer without replacing its worker.
|
|
47
|
+
*
|
|
48
|
+
* The same `metro.config.js` form works for bare React Native and Expo because
|
|
49
|
+
* both have already selected their Babel transformer before this wrapper reads it.
|
|
50
|
+
*/
|
|
51
|
+
export function withZmdb(config, options = {}) {
|
|
52
|
+
if (options.workerCount !== undefined && (!Number.isInteger(options.workerCount) || options.workerCount < 1)) {
|
|
53
|
+
throw new RangeError('withZmdb workerCount must be a positive integer');
|
|
54
|
+
}
|
|
55
|
+
const projectRoot = resolve(config.projectRoot ?? process.cwd());
|
|
56
|
+
const project = join(projectRoot, 'tsconfig.json');
|
|
57
|
+
if (!existsSync(project)) {
|
|
58
|
+
throw new Error(`withZmdb could not find a TypeScript project at ${project}`);
|
|
59
|
+
}
|
|
60
|
+
const current = config.transformer?.babelTransformerPath ?? 'metro-babel-transformer';
|
|
61
|
+
const previous = resolve(current) === resolve(ENTRY)
|
|
62
|
+
? (readString(config.transformer, DELEGATE_FIELD) ?? process.env[ENV_DELEGATE] ?? 'metro-babel-transformer')
|
|
63
|
+
: current;
|
|
64
|
+
const delegate = require.resolve(previous, { paths: [projectRoot] });
|
|
65
|
+
const workerCount = options.workerCount ?? config.maxWorkers;
|
|
66
|
+
const resolvedOptions = JSON.stringify({
|
|
67
|
+
workerCount: options.workerCount ?? null,
|
|
68
|
+
maxWorkers: workerCount ?? null,
|
|
69
|
+
});
|
|
70
|
+
// With one worker Metro transforms in the config process itself. Loading a new
|
|
71
|
+
// config is therefore the only observable boundary between two programmatic
|
|
72
|
+
// builds, and the previous build's compiler child must not leak across it.
|
|
73
|
+
disposeActiveHook();
|
|
74
|
+
disposePendingSession();
|
|
75
|
+
// Metro 0.87 keeps unknown transformer config in the worker config and cache
|
|
76
|
+
// material but does not pass it to the Babel transformer arguments. Environment
|
|
77
|
+
// variables are inherited by the worker process, so they are the fallback channel
|
|
78
|
+
// frozen by the spec; the serialisable fields remain visible to config tooling.
|
|
79
|
+
process.env[ENV_DELEGATE] = delegate;
|
|
80
|
+
if (workerCount === undefined)
|
|
81
|
+
delete process.env[ENV_MAX_WORKERS];
|
|
82
|
+
else
|
|
83
|
+
process.env[ENV_MAX_WORKERS] = String(workerCount);
|
|
84
|
+
process.env[ENV_PROJECT] = project;
|
|
85
|
+
process.env[ENV_OPTIONS] = resolvedOptions;
|
|
86
|
+
const transformer = {
|
|
87
|
+
...config.transformer,
|
|
88
|
+
babelTransformerPath: ENTRY,
|
|
89
|
+
[DELEGATE_FIELD]: delegate,
|
|
90
|
+
[PROJECT_FIELD]: project,
|
|
91
|
+
[OPTIONS_FIELD]: resolvedOptions,
|
|
92
|
+
};
|
|
93
|
+
return Object.assign({}, config, workerCount === undefined ? {} : { maxWorkers: workerCount }, { transformer });
|
|
94
|
+
}
|
|
95
|
+
/** Run zmdb first, then hand the rewritten source to the transform Metro already used. */
|
|
96
|
+
export function transform(args) {
|
|
97
|
+
const config = runtimeConfig();
|
|
98
|
+
const delegate = loadDelegate(config.delegate);
|
|
99
|
+
const fileName = isAbsolute(args.filename) ? args.filename : resolve(args.options.projectRoot, args.filename);
|
|
100
|
+
if (!isProjectSource(fileName, config.project))
|
|
101
|
+
return delegate.transform(args);
|
|
102
|
+
const transformer = loadTransformer();
|
|
103
|
+
if (!pattern(transformer.CALLEES).test(args.src)) {
|
|
104
|
+
const code = transformer.transformCode(args.src);
|
|
105
|
+
return delegate.transform(code === args.src ? args : { ...args, src: code });
|
|
106
|
+
}
|
|
107
|
+
const hook = ensureHook(config);
|
|
108
|
+
const transformed = hook.transform(args.src, fileName)?.code ?? args.src;
|
|
109
|
+
return delegate.transform(transformed === args.src ? args : { ...args, src: transformed });
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Return unhashed cache material. Metro folds this into its own digest.
|
|
113
|
+
*
|
|
114
|
+
* A different delegate, zmdb release, wrapper option, tsconfig, or project source
|
|
115
|
+
* stat therefore invalidates every transformed module on the next build.
|
|
116
|
+
*/
|
|
117
|
+
export function getCacheKey(options) {
|
|
118
|
+
const config = runtimeConfig(options?.projectRoot);
|
|
119
|
+
const delegate = loadDelegate(config.delegate);
|
|
120
|
+
const delegateKey = delegate.getCacheKey?.(options) ?? '';
|
|
121
|
+
const projectText = readFileSync(config.project, 'utf8');
|
|
122
|
+
return [
|
|
123
|
+
'zmdb-metro',
|
|
124
|
+
VERSION,
|
|
125
|
+
config.delegate,
|
|
126
|
+
delegateKey,
|
|
127
|
+
config.options,
|
|
128
|
+
config.project,
|
|
129
|
+
projectText,
|
|
130
|
+
typeFingerprint(config, projectText),
|
|
131
|
+
].join('\0');
|
|
132
|
+
}
|
|
133
|
+
function runtimeConfig(projectRoot) {
|
|
134
|
+
const delegate = process.env[ENV_DELEGATE];
|
|
135
|
+
const configuredProject = process.env[ENV_PROJECT];
|
|
136
|
+
if (delegate === undefined) {
|
|
137
|
+
throw new Error('withZmdb must wrap the Metro config before the zmdb transformer is loaded');
|
|
138
|
+
}
|
|
139
|
+
const project = configuredProject ?? join(resolve(projectRoot ?? process.cwd()), 'tsconfig.json');
|
|
140
|
+
const maxWorkersText = process.env[ENV_MAX_WORKERS];
|
|
141
|
+
const maxWorkers = maxWorkersText === undefined ? undefined : Number(maxWorkersText);
|
|
142
|
+
return {
|
|
143
|
+
delegate,
|
|
144
|
+
maxWorkers: maxWorkers !== undefined && Number.isInteger(maxWorkers) && maxWorkers > 0 ? maxWorkers : undefined,
|
|
145
|
+
project,
|
|
146
|
+
options: process.env[ENV_OPTIONS] ?? JSON.stringify({ workerCount: null }),
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
function loadDelegate(path) {
|
|
150
|
+
const loaded = require(path);
|
|
151
|
+
return loaded.__esModule === true && loaded.default !== undefined ? loaded.default : loaded;
|
|
152
|
+
}
|
|
153
|
+
function loadPlugin() {
|
|
154
|
+
return require('../unplugin/index.js');
|
|
155
|
+
}
|
|
156
|
+
function loadTransformer() {
|
|
157
|
+
return require('../transform/index.js');
|
|
158
|
+
}
|
|
159
|
+
function loadSession() {
|
|
160
|
+
return require('../reflect/session.js');
|
|
161
|
+
}
|
|
162
|
+
function ensureHook(config) {
|
|
163
|
+
const key = `${config.project}\0${config.options}`;
|
|
164
|
+
if (activeHook?.key === key)
|
|
165
|
+
return activeHook.hook;
|
|
166
|
+
disposeActiveHook();
|
|
167
|
+
const pending = pendingSession?.key === key ? pendingSession : undefined;
|
|
168
|
+
if (pending !== undefined)
|
|
169
|
+
pendingSession = undefined;
|
|
170
|
+
else
|
|
171
|
+
disposePendingSession();
|
|
172
|
+
const hook = loadPlugin().zmdbAot(pending === undefined
|
|
173
|
+
? { project: config.project, cwd: dirname(config.project) }
|
|
174
|
+
: { project: config.project, cwd: dirname(config.project), session: pending.session });
|
|
175
|
+
activeHook = pending === undefined ? { key, hook } : { key, hook, session: pending.session };
|
|
176
|
+
return hook;
|
|
177
|
+
}
|
|
178
|
+
function pattern(callees) {
|
|
179
|
+
calleePattern ??= new RegExp(`\\b(?:${[...callees].join('|')})\\s*(?:<|\\()`);
|
|
180
|
+
return calleePattern;
|
|
181
|
+
}
|
|
182
|
+
function isProjectSource(fileName, project) {
|
|
183
|
+
if (fileName.includes(`${sep}node_modules${sep}`) || fileName.endsWith('.d.ts') || !SOURCE.test(fileName)) {
|
|
184
|
+
return false;
|
|
185
|
+
}
|
|
186
|
+
const root = dirname(project);
|
|
187
|
+
const path = relative(root, fileName);
|
|
188
|
+
return path !== '..' && !path.startsWith(`..${sep}`);
|
|
189
|
+
}
|
|
190
|
+
function typeFingerprint(config, projectText) {
|
|
191
|
+
const key = `${config.project}\0${config.options}`;
|
|
192
|
+
let session;
|
|
193
|
+
let retained = false;
|
|
194
|
+
if (config.maxWorkers === 1) {
|
|
195
|
+
if (pendingSession?.key !== key || pendingSession.projectText !== projectText) {
|
|
196
|
+
disposePendingSession();
|
|
197
|
+
pendingSession = {
|
|
198
|
+
key,
|
|
199
|
+
projectText,
|
|
200
|
+
session: loadSession().ReflectSession.open({ project: config.project }),
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
session = pendingSession.session;
|
|
204
|
+
retained = true;
|
|
205
|
+
}
|
|
206
|
+
else {
|
|
207
|
+
session = loadSession().ReflectSession.open({ project: config.project });
|
|
208
|
+
}
|
|
209
|
+
const fingerprint = session
|
|
210
|
+
.sourceFileNames()
|
|
211
|
+
.filter(file => !file.includes(`${sep}node_modules${sep}`) && !file.endsWith('.d.ts'))
|
|
212
|
+
.toSorted()
|
|
213
|
+
.map(file => {
|
|
214
|
+
try {
|
|
215
|
+
const stat = statSync(file);
|
|
216
|
+
return `${file}\0${String(stat.size)}\0${String(stat.mtimeMs)}`;
|
|
217
|
+
}
|
|
218
|
+
catch {
|
|
219
|
+
return `${file}\0missing`;
|
|
220
|
+
}
|
|
221
|
+
})
|
|
222
|
+
.join('\0');
|
|
223
|
+
if (!retained)
|
|
224
|
+
session.close();
|
|
225
|
+
return fingerprint;
|
|
226
|
+
}
|
|
227
|
+
function disposeActiveHook() {
|
|
228
|
+
activeHook?.hook.buildEnd?.();
|
|
229
|
+
activeHook?.session?.close();
|
|
230
|
+
activeHook = undefined;
|
|
231
|
+
}
|
|
232
|
+
function disposePendingSession() {
|
|
233
|
+
pendingSession?.session.close();
|
|
234
|
+
pendingSession = undefined;
|
|
235
|
+
}
|
|
236
|
+
function readString(value, key) {
|
|
237
|
+
if (value === undefined)
|
|
238
|
+
return undefined;
|
|
239
|
+
const property = Object.getOwnPropertyDescriptor(value, key)?.value;
|
|
240
|
+
return typeof property === 'string' ? property : undefined;
|
|
241
|
+
}
|
|
242
|
+
//# sourceMappingURL=metro.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metro.js","sourceRoot":"","sources":["../../src/metro/metro.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type TypeIR } from '@zmdb/schema/ir';
|
|
2
|
+
export interface ProtoDecodeDiagnostic {
|
|
3
|
+
readonly path: string;
|
|
4
|
+
readonly reason: string;
|
|
5
|
+
readonly source?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface ProtoDecoderOptions {
|
|
8
|
+
/** Unique valid-identifier prefix supplied by the file-level emitter. */
|
|
9
|
+
readonly namespace: string;
|
|
10
|
+
/** Local identifier bound to the emitted wire-runtime import. */
|
|
11
|
+
readonly reader: string;
|
|
12
|
+
}
|
|
13
|
+
export interface ProtoDecoderResult {
|
|
14
|
+
readonly entry?: string;
|
|
15
|
+
readonly helpers: readonly string[];
|
|
16
|
+
readonly diagnostics: readonly ProtoDecodeDiagnostic[];
|
|
17
|
+
}
|
|
18
|
+
/** Emit all helper declarations and the root helper to call, or named diagnostics. */
|
|
19
|
+
export declare function emitProtoDecoder(root: TypeIR, preferredName: string, options: ProtoDecoderOptions): ProtoDecoderResult;
|
|
20
|
+
//# sourceMappingURL=decode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decode.d.ts","sourceRoot":"","sources":["../../src/protobuf/decode.ts"],"names":[],"mappings":"AAMA,OAAO,EAAiD,KAAK,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAe7F,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,mBAAmB;IAClC,yEAAyE;IACzE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,iEAAiE;IACjE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,WAAW,EAAE,SAAS,qBAAqB,EAAE,CAAC;CACxD;AAaD,sFAAsF;AACtF,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,mBAAmB,GAC3B,kBAAkB,CAEpB"}
|
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
// TypeIR -> field-number-dispatched protobuf decoder JavaScript.
|
|
2
|
+
//
|
|
3
|
+
// This is build-time only. Generated helpers construct the declared object shape and
|
|
4
|
+
// switch directly on known field numbers. The runtime reader owns byte bounds and wire
|
|
5
|
+
// primitives only; no descriptor or property table reaches the application.
|
|
6
|
+
import {} from '@zmdb/schema/ir';
|
|
7
|
+
import { collectMessages, IDENTIFIER, isPacked, planField, planScalar, safeName, } from './plan.js';
|
|
8
|
+
const SCALAR_ZERO = { number: '0', bigint: '0n', boolean: 'false', string: '""' };
|
|
9
|
+
/** Emit all helper declarations and the root helper to call, or named diagnostics. */
|
|
10
|
+
export function emitProtoDecoder(root, preferredName, options) {
|
|
11
|
+
return new DecoderEmitter(options).emit(root, preferredName);
|
|
12
|
+
}
|
|
13
|
+
class DecoderEmitter {
|
|
14
|
+
#options;
|
|
15
|
+
#diagnostics = [];
|
|
16
|
+
#objects = [];
|
|
17
|
+
#objectHelpers = new Map();
|
|
18
|
+
#namedObjects = new Map();
|
|
19
|
+
#auxiliary = [];
|
|
20
|
+
#messages = [];
|
|
21
|
+
#counter = 0;
|
|
22
|
+
#timestampHelper;
|
|
23
|
+
constructor(options) {
|
|
24
|
+
this.#options = options;
|
|
25
|
+
}
|
|
26
|
+
emit(root, preferredName) {
|
|
27
|
+
if (root.kind !== 'object') {
|
|
28
|
+
const reason = root.kind === 'union' && root.members.some(member => member.kind === 'object')
|
|
29
|
+
? 'a union of message types would require `oneof`, but union arms have no ProtoField<N> tag slot'
|
|
30
|
+
: 'a protobuf decoder root must be an object message';
|
|
31
|
+
this.#refuse(preferredName, reason);
|
|
32
|
+
return { helpers: [], diagnostics: this.#diagnostics };
|
|
33
|
+
}
|
|
34
|
+
this.#collect(root, preferredName);
|
|
35
|
+
this.#validateRequiredCycles();
|
|
36
|
+
for (const message of this.#objects)
|
|
37
|
+
this.#renderMessage(message);
|
|
38
|
+
if (this.#diagnostics.length > 0)
|
|
39
|
+
return { helpers: [], diagnostics: this.#diagnostics };
|
|
40
|
+
const entry = this.#objectHelpers.get(root);
|
|
41
|
+
if (entry === undefined) {
|
|
42
|
+
this.#refuse(preferredName, 'the protobuf root did not receive a decoder helper');
|
|
43
|
+
return { helpers: [], diagnostics: this.#diagnostics };
|
|
44
|
+
}
|
|
45
|
+
return { entry, helpers: [...this.#auxiliary, ...this.#messages], diagnostics: [] };
|
|
46
|
+
}
|
|
47
|
+
#collect(node, suggested) {
|
|
48
|
+
collectMessages(node, suggested, (message, name) => {
|
|
49
|
+
if (this.#objectHelpers.has(message))
|
|
50
|
+
return false;
|
|
51
|
+
const helper = this.#name(`Decode${safeName(message.name ?? name)}`);
|
|
52
|
+
this.#objectHelpers.set(message, helper);
|
|
53
|
+
if (message.name !== undefined && !this.#namedObjects.has(message.name)) {
|
|
54
|
+
this.#namedObjects.set(message.name, message);
|
|
55
|
+
}
|
|
56
|
+
this.#objects.push(message);
|
|
57
|
+
return true;
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
#validateRequiredCycles() {
|
|
61
|
+
const visited = new Set();
|
|
62
|
+
const active = new Set();
|
|
63
|
+
const visit = (node, path) => {
|
|
64
|
+
if (visited.has(node))
|
|
65
|
+
return;
|
|
66
|
+
active.add(node);
|
|
67
|
+
for (const property of node.properties) {
|
|
68
|
+
if (property.optional)
|
|
69
|
+
continue;
|
|
70
|
+
const target = this.#requiredMessage(property.type);
|
|
71
|
+
if (target === undefined)
|
|
72
|
+
continue;
|
|
73
|
+
const next = [...path, property.name];
|
|
74
|
+
if (active.has(target)) {
|
|
75
|
+
this.#refuse(next.join('.'), 'a cycle of required singular protobuf messages has no finite absent-field value; make one edge optional, nullable, or repeated');
|
|
76
|
+
continue;
|
|
77
|
+
}
|
|
78
|
+
visit(target, next);
|
|
79
|
+
}
|
|
80
|
+
active.delete(node);
|
|
81
|
+
visited.add(node);
|
|
82
|
+
};
|
|
83
|
+
for (const object of this.#objects)
|
|
84
|
+
visit(object, [object.name ?? 'Message']);
|
|
85
|
+
}
|
|
86
|
+
#requiredMessage(node) {
|
|
87
|
+
switch (node.kind) {
|
|
88
|
+
case 'object':
|
|
89
|
+
return node;
|
|
90
|
+
case 'ref':
|
|
91
|
+
return this.#namedObjects.get(node.name);
|
|
92
|
+
case 'union': {
|
|
93
|
+
if (node.members.some(member => member.kind === 'null' || member.kind === 'undefined'))
|
|
94
|
+
return undefined;
|
|
95
|
+
const values = node.members.filter(member => member.kind !== 'null' && member.kind !== 'undefined');
|
|
96
|
+
return values.length === 1 && values[0] !== undefined ? this.#requiredMessage(values[0]) : undefined;
|
|
97
|
+
}
|
|
98
|
+
default:
|
|
99
|
+
return undefined;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
#renderMessage(node) {
|
|
103
|
+
const helper = this.#objectHelpers.get(node);
|
|
104
|
+
if (helper === undefined) {
|
|
105
|
+
this.#refuse(node.name ?? 'Message', 'the protobuf message did not receive a decoder helper');
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
const fields = [];
|
|
109
|
+
const ordered = node.properties.toSorted((left, right) => (left.protoField ?? Number.MAX_SAFE_INTEGER) - (right.protoField ?? Number.MAX_SAFE_INTEGER));
|
|
110
|
+
for (const property of ordered) {
|
|
111
|
+
const path = `${node.name ?? 'Message'}.${property.name}`;
|
|
112
|
+
if (!IDENTIFIER.test(property.name)) {
|
|
113
|
+
this.#refuse(path, `\`${property.name}\` is not a valid protobuf field identifier`);
|
|
114
|
+
continue;
|
|
115
|
+
}
|
|
116
|
+
if (property.protoField === undefined) {
|
|
117
|
+
this.#refuse(path, `protobuf property \`${property.name}\` has no ProtoField<N> field number`);
|
|
118
|
+
continue;
|
|
119
|
+
}
|
|
120
|
+
const plan = this.#fieldPlan(property.type, path);
|
|
121
|
+
if (plan === undefined)
|
|
122
|
+
continue;
|
|
123
|
+
if (property.optional && plan.nullable) {
|
|
124
|
+
this.#refuse(path, 'an optional nullable protobuf field has three TypeScript states but only two wire-presence states');
|
|
125
|
+
continue;
|
|
126
|
+
}
|
|
127
|
+
fields.push({ property, path, plan });
|
|
128
|
+
}
|
|
129
|
+
if (this.#diagnostics.length > 0)
|
|
130
|
+
return;
|
|
131
|
+
const initial = fields
|
|
132
|
+
.flatMap(field => {
|
|
133
|
+
const value = this.#initial(field);
|
|
134
|
+
return value === undefined ? [] : [`[${JSON.stringify(field.property.name)}]: ${value}`];
|
|
135
|
+
})
|
|
136
|
+
.join(', ');
|
|
137
|
+
const lines = [`if (_v === undefined) _v = { ${initial} };`, 'while (!_r.done) {'];
|
|
138
|
+
lines.push('const _key = _r.key();', 'const _field = Math.floor(_key / 8);', 'const _wire = _key % 8;', 'switch (_field) {');
|
|
139
|
+
for (const field of fields)
|
|
140
|
+
lines.push(this.#case(field));
|
|
141
|
+
lines.push('default: _r.skip(_wire); break;', '}', '}');
|
|
142
|
+
for (const field of fields) {
|
|
143
|
+
if (field.property.optional || field.plan.nullable || field.plan.repeated)
|
|
144
|
+
continue;
|
|
145
|
+
const has = `Object.hasOwn(_v, ${JSON.stringify(field.property.name)})`;
|
|
146
|
+
if (field.plan.atom.kind === 'enum') {
|
|
147
|
+
lines.push(`if (!${has}) ${field.plan.atom.helper}(0);`);
|
|
148
|
+
}
|
|
149
|
+
else if (field.plan.atom.kind === 'message') {
|
|
150
|
+
lines.push(`if (!${has}) ${this.#assign('_v', field.property.name, `${field.plan.atom.helper}(new ${this.#options.reader}())`)};`);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
lines.push('return _v;');
|
|
154
|
+
this.#messages.push(`function ${helper}(_r, _v) { ${lines.join(' ')} }`);
|
|
155
|
+
}
|
|
156
|
+
#initial(field) {
|
|
157
|
+
if (field.plan.repeated)
|
|
158
|
+
return '[]';
|
|
159
|
+
if (field.plan.nullable)
|
|
160
|
+
return 'null';
|
|
161
|
+
if (field.property.optional)
|
|
162
|
+
return undefined;
|
|
163
|
+
switch (field.plan.atom.kind) {
|
|
164
|
+
case 'scalar':
|
|
165
|
+
return field.plan.atom.zero;
|
|
166
|
+
case 'timestamp':
|
|
167
|
+
return 'new Date(0)';
|
|
168
|
+
case 'enum':
|
|
169
|
+
case 'message':
|
|
170
|
+
return undefined;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
#case(field) {
|
|
174
|
+
const number = field.property.protoField;
|
|
175
|
+
if (number === undefined)
|
|
176
|
+
return '';
|
|
177
|
+
const property = access('_v', field.property.name);
|
|
178
|
+
const atom = field.plan.atom;
|
|
179
|
+
let body;
|
|
180
|
+
if (field.plan.repeated && isPacked(atom)) {
|
|
181
|
+
const packed = this.#name('Packed');
|
|
182
|
+
const one = this.#read(atom, '_r');
|
|
183
|
+
const packedOne = this.#read(atom, packed);
|
|
184
|
+
body =
|
|
185
|
+
`if (_wire === ${atom.wire}) { ${property}.push(${one}); } ` +
|
|
186
|
+
`else if (_wire === 2) { const ${packed} = _r.message(); while (!${packed}.done) ${property}.push(${packedOne}); } ` +
|
|
187
|
+
'else _r.skip(_wire);';
|
|
188
|
+
}
|
|
189
|
+
else if (field.plan.repeated) {
|
|
190
|
+
body = `_wire === ${atom.wire} ? ${property}.push(${this.#read(atom, '_r')}) : _r.skip(_wire);`;
|
|
191
|
+
}
|
|
192
|
+
else {
|
|
193
|
+
const current = atom.kind === 'message' || atom.kind === 'timestamp'
|
|
194
|
+
? `Object.hasOwn(_v, ${JSON.stringify(field.property.name)}) ? ${property} : undefined`
|
|
195
|
+
: undefined;
|
|
196
|
+
const value = this.#read(atom, '_r', current);
|
|
197
|
+
body = `if (_wire === ${atom.wire}) { ${this.#assign('_v', field.property.name, value)}; } else _r.skip(_wire);`;
|
|
198
|
+
}
|
|
199
|
+
return `case ${number}: ${body} break;`;
|
|
200
|
+
}
|
|
201
|
+
#read(atom, reader, current) {
|
|
202
|
+
switch (atom.kind) {
|
|
203
|
+
case 'scalar':
|
|
204
|
+
return `${reader}.${atom.method}()`;
|
|
205
|
+
case 'enum':
|
|
206
|
+
return `${atom.helper}(${reader}.uint32())`;
|
|
207
|
+
case 'message':
|
|
208
|
+
case 'timestamp':
|
|
209
|
+
return `${atom.helper}(${reader}.message()${current === undefined ? '' : `, ${current}`})`;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
#assign(target, property, value) {
|
|
213
|
+
if (property !== '__proto__')
|
|
214
|
+
return `${access(target, property)} = ${value}`;
|
|
215
|
+
return (`Object.defineProperty(${target}, "__proto__", ` +
|
|
216
|
+
`{ value: ${value}, writable: true, enumerable: true, configurable: true })`);
|
|
217
|
+
}
|
|
218
|
+
#fieldPlan(node, path) {
|
|
219
|
+
return planField(node, path, (value, location) => this.#atom(value, location), (location, values) => this.#enum(location, values), (location, reason, origin) => this.#refuse(location, reason, origin));
|
|
220
|
+
}
|
|
221
|
+
#atom(node, path) {
|
|
222
|
+
switch (node.kind) {
|
|
223
|
+
case 'scalar':
|
|
224
|
+
return this.#scalar(node, path);
|
|
225
|
+
case 'object': {
|
|
226
|
+
const helper = this.#objectHelpers.get(node);
|
|
227
|
+
return helper === undefined
|
|
228
|
+
? this.#refuse(path, 'the nested protobuf message did not receive a decoder helper')
|
|
229
|
+
: { kind: 'message', helper, wire: 2 };
|
|
230
|
+
}
|
|
231
|
+
case 'ref': {
|
|
232
|
+
const target = this.#namedObjects.get(node.name);
|
|
233
|
+
const helper = target === undefined ? undefined : this.#objectHelpers.get(target);
|
|
234
|
+
return helper === undefined || target === undefined
|
|
235
|
+
? this.#refuse(path, `protobuf back-reference \`${node.name}\` has no message declaration`)
|
|
236
|
+
: { kind: 'message', helper, wire: 2 };
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
#scalar(node, path) {
|
|
241
|
+
const plan = planScalar(node, path, () => this.#timestamp(), (location, reason, origin) => this.#refuse(location, reason, origin));
|
|
242
|
+
return plan?.kind === 'scalar' ? { ...plan, zero: SCALAR_ZERO[plan.zero] } : plan;
|
|
243
|
+
}
|
|
244
|
+
#enum(path, values) {
|
|
245
|
+
const helper = this.#name('Enum');
|
|
246
|
+
const cases = values.map((value, index) => `case ${index + 1}: return ${JSON.stringify(value)};`);
|
|
247
|
+
const message = `unknown protobuf enum number for ${path}`;
|
|
248
|
+
this.#auxiliary.push(`function ${helper}(_v) { switch (_v) { ${cases.join(' ')} default: throw new RangeError(${JSON.stringify(message)} + ": " + _v); } }`);
|
|
249
|
+
return { kind: 'enum', helper, wire: 0 };
|
|
250
|
+
}
|
|
251
|
+
#timestamp() {
|
|
252
|
+
if (this.#timestampHelper !== undefined)
|
|
253
|
+
return this.#timestampHelper;
|
|
254
|
+
const helper = this.#name('Timestamp');
|
|
255
|
+
this.#timestampHelper = helper;
|
|
256
|
+
this.#auxiliary.push(`function ${helper}(_r, _current) { ` +
|
|
257
|
+
'let _seconds = 0n; let _nanos = 0; ' +
|
|
258
|
+
'if (_current !== undefined) { ' +
|
|
259
|
+
'const _milliseconds = BigInt(_current.getTime()); ' +
|
|
260
|
+
'_seconds = _milliseconds / 1000n; _nanos = Number(_milliseconds % 1000n) * 1000000; ' +
|
|
261
|
+
'if (_nanos < 0) { _seconds -= 1n; _nanos += 1000000000; } } ' +
|
|
262
|
+
'while (!_r.done) { const _key = _r.key(); const _field = Math.floor(_key / 8); const _wire = _key % 8; ' +
|
|
263
|
+
'switch (_field) { ' +
|
|
264
|
+
'case 1: if (_wire === 0) _seconds = _r.int64(); else _r.skip(_wire); break; ' +
|
|
265
|
+
'case 2: if (_wire === 0) _nanos = _r.int32(); else _r.skip(_wire); break; ' +
|
|
266
|
+
'default: _r.skip(_wire); break; } } ' +
|
|
267
|
+
'if (_seconds < -62135596800n || _seconds > 253402300799n) ' +
|
|
268
|
+
'throw new RangeError("protobuf Timestamp seconds are outside 0001-01-01 through 9999-12-31"); ' +
|
|
269
|
+
'if (_nanos < 0 || _nanos > 999999999) ' +
|
|
270
|
+
'throw new RangeError("protobuf Timestamp nanos must be in 0 … 999999999"); ' +
|
|
271
|
+
'const _milliseconds = _seconds * 1000n + BigInt(Math.trunc(_nanos / 1000000)); ' +
|
|
272
|
+
'const _number = Number(_milliseconds); const _date = new Date(_number); ' +
|
|
273
|
+
'if (!Number.isSafeInteger(_number) || Number.isNaN(_date.getTime())) ' +
|
|
274
|
+
'throw new RangeError("protobuf Timestamp cannot be represented by a JavaScript Date"); ' +
|
|
275
|
+
'return _date; }');
|
|
276
|
+
return helper;
|
|
277
|
+
}
|
|
278
|
+
#name(hint) {
|
|
279
|
+
return `${this.#options.namespace}${hint}${this.#counter++}`;
|
|
280
|
+
}
|
|
281
|
+
#refuse(path, reason, source) {
|
|
282
|
+
this.#diagnostics.push(source === undefined ? { path, reason } : { path, reason, source });
|
|
283
|
+
return undefined;
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
function access(target, property) {
|
|
287
|
+
return `${target}[${JSON.stringify(property)}]`;
|
|
288
|
+
}
|
|
289
|
+
//# sourceMappingURL=decode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decode.js","sourceRoot":"","sources":["../../src/protobuf/decode.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type TypeIR } from '@zmdb/schema/ir';
|
|
2
|
+
import type { GrpcServiceIR } from './grpc-ir.js';
|
|
3
|
+
export interface ProtoDescriptorDiagnostic {
|
|
4
|
+
readonly path: string;
|
|
5
|
+
readonly reason: string;
|
|
6
|
+
readonly source?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface ProtoDescriptorResult {
|
|
9
|
+
readonly source?: string;
|
|
10
|
+
readonly diagnostics: readonly ProtoDescriptorDiagnostic[];
|
|
11
|
+
}
|
|
12
|
+
/** Emit a complete proto3 file, or named diagnostics when the IR has no honest spelling. */
|
|
13
|
+
export declare function emitProtoDescriptor(root: TypeIR, preferredName?: string): ProtoDescriptorResult;
|
|
14
|
+
/** Emit one proto3 service and every request/response message it references. */
|
|
15
|
+
export declare function emitGrpcDescriptor(root: GrpcServiceIR, service: string, pkg: string): ProtoDescriptorResult;
|
|
16
|
+
//# sourceMappingURL=descriptor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"descriptor.d.ts","sourceRoot":"","sources":["../../src/protobuf/descriptor.ts"],"names":[],"mappings":"AAMA,OAAO,EAAiD,KAAK,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAE7F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAGlD,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,SAAS,yBAAyB,EAAE,CAAC;CAC5D;AAUD,4FAA4F;AAC5F,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,qBAAqB,CAE/F;AAED,gFAAgF;AAChF,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,qBAAqB,CAE3G"}
|