@appport/assessment 0.0.0-stage → 0.1.0

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/dist/proto.js ADDED
@@ -0,0 +1,422 @@
1
+ /**
2
+ * A static reader for Protocol Buffers definitions (proto3, and proto2 syntax where it overlaps): packages, services and
3
+ * their methods with `google.api.http` bindings, messages, fields with `google.api.field_behavior`, and enums. Options
4
+ * other than those two are skipped; extensions, groups and custom option values are not interpreted
5
+ * (spec/assessment-1.md §5.1).
6
+ */
7
+ import { SourceSyntaxError } from "./go.js";
8
+ function tokenize(text) {
9
+ const out = [];
10
+ let i = 0;
11
+ let line = 1;
12
+ while (i < text.length) {
13
+ const c = text[i];
14
+ if (c === "\n") {
15
+ line++;
16
+ i++;
17
+ }
18
+ else if (/\s/.test(c)) {
19
+ i++;
20
+ }
21
+ else if (c === "/" && text[i + 1] === "/") {
22
+ while (i < text.length && text[i] !== "\n")
23
+ i++;
24
+ }
25
+ else if (c === "/" && text[i + 1] === "*") {
26
+ const end = text.indexOf("*/", i + 2);
27
+ if (end < 0)
28
+ throw new SourceSyntaxError("unterminated block comment", line);
29
+ for (let k = i; k < end; k++)
30
+ if (text[k] === "\n")
31
+ line++;
32
+ i = end + 2;
33
+ }
34
+ else if (c === '"' || c === "'") {
35
+ let k = i + 1;
36
+ let value = "";
37
+ while (k < text.length && text[k] !== c) {
38
+ if (text[k] === "\n")
39
+ throw new SourceSyntaxError("unterminated string literal", line);
40
+ if (text[k] === "\\") {
41
+ value += text[k + 1] ?? "";
42
+ k += 2;
43
+ }
44
+ else
45
+ value += text[k++];
46
+ }
47
+ if (k >= text.length)
48
+ throw new SourceSyntaxError("unterminated string literal", line);
49
+ out.push({ kind: "string", value, line });
50
+ i = k + 1;
51
+ }
52
+ else if (/[A-Za-z_]/.test(c)) {
53
+ let k = i + 1;
54
+ while (k < text.length && /[A-Za-z0-9_.]/.test(text[k]))
55
+ k++;
56
+ out.push({ kind: "ident", value: text.slice(i, k), line });
57
+ i = k;
58
+ }
59
+ else if (/[0-9-]/.test(c) || (c === "." && /[0-9]/.test(text[i + 1] ?? ""))) {
60
+ let k = i + 1;
61
+ while (k < text.length && /[0-9A-Za-z_.+]/.test(text[k]))
62
+ k++;
63
+ out.push({ kind: "number", value: text.slice(i, k), line });
64
+ i = k;
65
+ }
66
+ else {
67
+ out.push({ kind: "punct", value: c, line });
68
+ i++;
69
+ }
70
+ }
71
+ return out;
72
+ }
73
+ /** proto3 JSON field name: underscores removed, following letter upper-cased. */
74
+ export const jsonName = (name) => name.replace(/_([a-z0-9])/g, (_, c) => c.toUpperCase());
75
+ export function parseProto(source) {
76
+ const t = tokenize(source);
77
+ const file = { packageName: "", imports: [], services: [], messages: [], enums: [] };
78
+ let i = 0;
79
+ const peek = (k = 0) => t[i + k];
80
+ const isP = (v, k = 0) => peek(k)?.kind === "punct" && peek(k).value === v;
81
+ const fail = (message) => {
82
+ throw new SourceSyntaxError(message, peek()?.line ?? t.at(-1)?.line ?? 0);
83
+ };
84
+ const expect = (v) => {
85
+ if (!isP(v))
86
+ fail(`expected "${v}"`);
87
+ return t[i++];
88
+ };
89
+ const ident = () => {
90
+ if (peek()?.kind !== "ident")
91
+ fail("expected an identifier");
92
+ return t[i++];
93
+ };
94
+ /** A type reference, keeping a leading `.` (fully qualified). */
95
+ const typeName = () => (isP(".") ? (i++, `.${ident().value}`) : ident().value);
96
+ /** Skips a balanced `{…}`, `[…]` or `(…)` starting at the current token. */
97
+ const skipBalanced = () => {
98
+ const open = peek().value;
99
+ const close = open === "{" ? "}" : open === "[" ? "]" : ")";
100
+ let depth = 0;
101
+ do {
102
+ if (!peek())
103
+ fail(`unbalanced "${open}"`);
104
+ if (isP(open))
105
+ depth++;
106
+ else if (isP(close))
107
+ depth--;
108
+ i++;
109
+ } while (depth > 0);
110
+ };
111
+ /** Skips to and past the next `;` at this level. */
112
+ const skipStatement = () => {
113
+ while (peek() && !isP(";")) {
114
+ if (isP("{") || isP("[") || isP("("))
115
+ skipBalanced();
116
+ else
117
+ i++;
118
+ }
119
+ if (isP(";"))
120
+ i++;
121
+ };
122
+ /** Parses an option value `{ key: value … }` into flat string pairs, counting nested blocks by key. */
123
+ const optionObject = () => {
124
+ const pairs = [];
125
+ const nested = [];
126
+ expect("{");
127
+ while (!isP("}")) {
128
+ if (!peek())
129
+ fail("unterminated option value");
130
+ if (isP(",") || isP(";")) {
131
+ i++;
132
+ continue;
133
+ }
134
+ const key = ident();
135
+ if (isP(":"))
136
+ i++;
137
+ if (isP("{")) {
138
+ nested.push(key.value);
139
+ skipBalanced();
140
+ }
141
+ else {
142
+ const v = t[i++];
143
+ pairs.push({ key: key.value, value: v.value, line: v.line });
144
+ }
145
+ }
146
+ i++;
147
+ return { pairs, nested };
148
+ };
149
+ const scopeName = (scope, name) => (scope ? `${scope}.${name}` : name);
150
+ const enumBody = (scope) => {
151
+ const start = ident().line;
152
+ const name = ident().value;
153
+ const e = { name, fullName: scopeName(scope, name), values: [], startLine: start, endLine: start };
154
+ expect("{");
155
+ while (!isP("}")) {
156
+ if (!peek())
157
+ fail("unterminated enum");
158
+ if (isP(";")) {
159
+ i++;
160
+ continue;
161
+ }
162
+ const head = peek();
163
+ if (head.kind === "ident" && (head.value === "option" || head.value === "reserved")) {
164
+ skipStatement();
165
+ continue;
166
+ }
167
+ e.values.push(ident().value);
168
+ skipStatement();
169
+ }
170
+ e.endLine = t[i++].line;
171
+ file.enums.push(e);
172
+ };
173
+ const fieldOptions = () => {
174
+ const behaviors = [];
175
+ let json;
176
+ if (!isP("["))
177
+ return { behaviors };
178
+ const close = (() => {
179
+ let depth = 0;
180
+ for (let k = i; k < t.length; k++) {
181
+ if (t[k].kind === "punct" && t[k].value === "[")
182
+ depth++;
183
+ else if (t[k].kind === "punct" && t[k].value === "]" && --depth === 0)
184
+ return k;
185
+ }
186
+ return fail("unbalanced \"[\"");
187
+ })();
188
+ for (let k = i; k < close; k++) {
189
+ const a = t[k];
190
+ if (a.kind === "ident" && a.value === "google.api.field_behavior" && t[k + 1]?.value === ")" && t[k + 2]?.value === "=") {
191
+ const v = t[k + 3];
192
+ if (v?.kind === "ident")
193
+ behaviors.push(v.value);
194
+ }
195
+ if (a.kind === "ident" && a.value === "json_name" && t[k + 1]?.value === "=" && t[k + 2]?.kind === "string")
196
+ json = t[k + 2].value;
197
+ }
198
+ i = close + 1;
199
+ return { behaviors, jsonName: json };
200
+ };
201
+ const field = (msg, oneof) => {
202
+ const first = peek();
203
+ let label = "singular";
204
+ if (first.kind === "ident" && ["repeated", "optional", "required"].includes(first.value)) {
205
+ label = first.value;
206
+ i++;
207
+ }
208
+ let type;
209
+ let map;
210
+ if (peek()?.kind === "ident" && peek().value === "map" && isP("<", 1)) {
211
+ i += 2;
212
+ const key = ident().value;
213
+ expect(",");
214
+ const value = ident().value;
215
+ expect(">");
216
+ map = { key, value };
217
+ type = `map<${key}, ${value}>`;
218
+ }
219
+ else {
220
+ type = typeName();
221
+ }
222
+ const name = ident();
223
+ expect("=");
224
+ const number = Number(t[i++]?.value);
225
+ const options = fieldOptions();
226
+ expect(";");
227
+ msg.fields.push({
228
+ name: name.value,
229
+ jsonName: options.jsonName ?? jsonName(name.value),
230
+ number,
231
+ type,
232
+ label,
233
+ ...(map ? { map } : {}),
234
+ ...(oneof ? { oneof } : {}),
235
+ behaviors: options.behaviors.sort(),
236
+ line: name.line
237
+ });
238
+ };
239
+ const messageBody = (scope) => {
240
+ const start = ident().line;
241
+ const name = ident().value;
242
+ const msg = { name, fullName: scopeName(scope, name), fields: [], startLine: start, endLine: start };
243
+ expect("{");
244
+ while (!isP("}")) {
245
+ const head = peek();
246
+ if (!head)
247
+ fail("unterminated message");
248
+ if (isP(";")) {
249
+ i++;
250
+ continue;
251
+ }
252
+ switch (head.value) {
253
+ case "message":
254
+ messageBody(msg.fullName);
255
+ break;
256
+ case "enum":
257
+ enumBody(msg.fullName);
258
+ break;
259
+ case "oneof": {
260
+ i++;
261
+ const group = ident().value;
262
+ expect("{");
263
+ while (!isP("}")) {
264
+ if (!peek())
265
+ fail("unterminated oneof");
266
+ if (peek().value === "option")
267
+ skipStatement();
268
+ else if (isP(";"))
269
+ i++;
270
+ else
271
+ field(msg, group);
272
+ }
273
+ i++;
274
+ break;
275
+ }
276
+ case "option":
277
+ case "reserved":
278
+ case "extensions":
279
+ skipStatement();
280
+ break;
281
+ case "extend":
282
+ i++;
283
+ ident();
284
+ skipBalanced();
285
+ break;
286
+ default:
287
+ field(msg);
288
+ }
289
+ }
290
+ msg.endLine = t[i++].line;
291
+ file.messages.push(msg);
292
+ };
293
+ const serviceBody = () => {
294
+ const start = ident().line;
295
+ const name = ident().value;
296
+ const service = { name, fullName: scopeName(file.packageName, name), methods: [], startLine: start, endLine: start };
297
+ expect("{");
298
+ while (!isP("}")) {
299
+ const head = peek();
300
+ if (!head)
301
+ fail("unterminated service");
302
+ if (isP(";")) {
303
+ i++;
304
+ continue;
305
+ }
306
+ if (head.value !== "rpc") {
307
+ skipStatement();
308
+ continue;
309
+ }
310
+ const rpcLine = t[i++].line;
311
+ const methodName = ident().value;
312
+ expect("(");
313
+ let clientStreaming = false;
314
+ if (peek()?.value === "stream" && (peek(1)?.kind === "ident" || isP(".", 1))) {
315
+ clientStreaming = true;
316
+ i++;
317
+ }
318
+ const input = typeName();
319
+ expect(")");
320
+ if (peek()?.value !== "returns")
321
+ fail("expected \"returns\"");
322
+ i++;
323
+ expect("(");
324
+ let serverStreaming = false;
325
+ if (peek()?.value === "stream" && (peek(1)?.kind === "ident" || isP(".", 1))) {
326
+ serverStreaming = true;
327
+ i++;
328
+ }
329
+ const output = typeName();
330
+ expect(")");
331
+ const method = { name: methodName, input, output, clientStreaming, serverStreaming, additionalBindings: 0, startLine: rpcLine, endLine: rpcLine };
332
+ if (isP("{")) {
333
+ i++;
334
+ while (!isP("}")) {
335
+ if (!peek())
336
+ fail("unterminated rpc options");
337
+ if (peek().value === "option" && isP("(", 1) && peek(2)?.value === "google.api.http" && isP(")", 3) && isP("=", 4)) {
338
+ i += 5;
339
+ const { pairs, nested } = optionObject();
340
+ const verb = pairs.find((p) => ["get", "put", "post", "delete", "patch"].includes(p.key));
341
+ const body = pairs.find((p) => p.key === "body");
342
+ if (verb)
343
+ method.http = { method: verb.key, path: verb.value, ...(body ? { body: body.value } : {}), line: verb.line };
344
+ else if (nested.includes("custom"))
345
+ method.http = { method: "custom", path: "", line: rpcLine };
346
+ method.additionalBindings = nested.filter((n) => n === "additional_bindings").length;
347
+ if (isP(";"))
348
+ i++;
349
+ }
350
+ else
351
+ skipStatement();
352
+ }
353
+ method.endLine = t[i++].line;
354
+ }
355
+ else
356
+ expect(";");
357
+ service.methods.push(method);
358
+ }
359
+ service.endLine = t[i++].line;
360
+ file.services.push(service);
361
+ };
362
+ while (i < t.length) {
363
+ const head = peek();
364
+ if (isP(";")) {
365
+ i++;
366
+ continue;
367
+ }
368
+ switch (head.value) {
369
+ case "syntax":
370
+ case "edition":
371
+ i += 2;
372
+ file.syntax = peek()?.value;
373
+ skipStatement();
374
+ break;
375
+ case "package":
376
+ i++;
377
+ file.packageName = ident().value;
378
+ expect(";");
379
+ break;
380
+ case "import":
381
+ i++;
382
+ if (peek()?.value === "public" || peek()?.value === "weak")
383
+ i++;
384
+ file.imports.push(t[i++].value);
385
+ expect(";");
386
+ break;
387
+ case "option":
388
+ skipStatement();
389
+ break;
390
+ case "message":
391
+ messageBody(file.packageName);
392
+ break;
393
+ case "enum":
394
+ enumBody(file.packageName);
395
+ break;
396
+ case "service":
397
+ serviceBody();
398
+ break;
399
+ case "extend":
400
+ i++;
401
+ ident();
402
+ skipBalanced();
403
+ break;
404
+ default:
405
+ fail(`unexpected "${head.value}"`);
406
+ }
407
+ }
408
+ return file;
409
+ }
410
+ /** Resolves a type reference as written inside `scope` (a package or message full name), per protobuf scoping rules. */
411
+ export function resolveProtoType(reference, scope, known) {
412
+ if (reference.startsWith("."))
413
+ return known(reference.slice(1)) ? reference.slice(1) : undefined;
414
+ const parts = scope ? scope.split(".") : [];
415
+ for (let k = parts.length; k >= 0; k--) {
416
+ const candidate = [...parts.slice(0, k), reference].join(".");
417
+ if (known(candidate))
418
+ return candidate;
419
+ }
420
+ return undefined;
421
+ }
422
+ //# sourceMappingURL=proto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proto.js","sourceRoot":"","sources":["../src/proto.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,43 @@
1
1
  {
2
2
  "name": "@appport/assessment",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
3
+ "version": "0.1.0",
4
+ "description": "AppWorks existing-application assessment: a static, read-only, evidence-backed capability inventory of a repository as an appport.application-assessment/1 artifact. Executes nothing and grants no authority.",
5
+ "license": "UNLICENSED",
6
+ "engines": {
7
+ "node": ">=20"
8
+ },
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "git+https://github.com/rkendel1/appworks.git",
12
+ "directory": "packages/assessment"
13
+ },
14
+ "type": "module",
15
+ "main": "./dist/index.js",
16
+ "types": "./dist/index.d.ts",
17
+ "bin": {
18
+ "appworks-assess": "./dist/cli.js"
19
+ },
20
+ "exports": {
21
+ ".": {
22
+ "types": "./dist/index.d.ts",
23
+ "import": "./dist/index.js"
24
+ },
25
+ "./package.json": "./package.json"
26
+ },
27
+ "files": [
28
+ "dist",
29
+ "schemas",
30
+ "README.md",
31
+ "CHANGELOG.md"
32
+ ],
33
+ "dependencies": {
34
+ "@appport/protocol": "1.3.0"
35
+ },
36
+ "devDependencies": {
37
+ "@appport/schema": "1.1.3"
38
+ },
39
+ "scripts": {
40
+ "build": "tsc -b",
41
+ "clean": "tsc -b --clean"
42
+ }
6
43
  }