@suss/ir-core 0.33.0 → 0.34.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/README.md +30 -30
- package/dist/{chunk-N564FH5U.js → chunk-WOXA5GBL.js} +251 -208
- package/dist/index.cjs +335 -248
- package/dist/index.d.cts +399 -355
- package/dist/index.d.ts +399 -355
- package/dist/index.js +68 -26
- package/dist/{schemas-CIns0fqF.d.cts → schemas-CghZNwSE.d.cts} +88 -81
- package/dist/{schemas-CIns0fqF.d.ts → schemas-CghZNwSE.d.ts} +88 -81
- package/dist/schemas.cjs +248 -208
- package/dist/schemas.d.cts +1 -1
- package/dist/schemas.d.ts +1 -1
- package/dist/schemas.js +1 -1
- package/package.json +2 -2
|
@@ -40,6 +40,12 @@ declare const FunctionCallSemanticsSchema: z.ZodObject<{
|
|
|
40
40
|
exportPath: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
41
41
|
}, z.core.$strip>;
|
|
42
42
|
type FunctionCallSemantics = z.infer<typeof FunctionCallSemanticsSchema>;
|
|
43
|
+
/**
|
|
44
|
+
* Whether `module` is the name a project gave one of its modules rather
|
|
45
|
+
* than a path. A path always has a separator in it, and a module name
|
|
46
|
+
* never does, so a rewrite that makes paths relative leaves a name alone.
|
|
47
|
+
*/
|
|
48
|
+
declare function isModuleName(module: string): boolean;
|
|
43
49
|
|
|
44
50
|
declare const GraphqlOperationSemanticsSchema: z.ZodObject<{
|
|
45
51
|
name: z.ZodLiteral<"graphql-operation">;
|
|
@@ -80,20 +86,19 @@ declare const MessageBusSemanticsSchema: z.ZodObject<{
|
|
|
80
86
|
}, z.core.$strip>;
|
|
81
87
|
type MessageBusSemantics = z.infer<typeof MessageBusSemanticsSchema>;
|
|
82
88
|
/**
|
|
83
|
-
* The bus technologies the schema allows. It
|
|
84
|
-
*
|
|
89
|
+
* The bus technologies the schema allows. It is derived from the enum,
|
|
90
|
+
* so there is no hand-written copy to fall out of step.
|
|
85
91
|
*/
|
|
86
92
|
type MessageBusTechnology = MessageBusSemantics["messageBus"];
|
|
87
93
|
|
|
88
94
|
/**
|
|
89
|
-
*
|
|
95
|
+
* The list of protocol definitions, and the lookups built from it.
|
|
90
96
|
*
|
|
91
|
-
* Each protocol
|
|
92
|
-
* `BoundarySemanticsDefinition`.
|
|
93
|
-
*
|
|
94
|
-
*
|
|
95
|
-
*
|
|
96
|
-
* each list.
|
|
97
|
+
* Each protocol module in this directory exports one
|
|
98
|
+
* `BoundarySemanticsDefinition`. They are listed twice, once for the
|
|
99
|
+
* schema union and once for the behavior lookup, and the type check at
|
|
100
|
+
* the bottom fails compilation if the two lists differ. Besides its own
|
|
101
|
+
* module, a new protocol needs one line in each list.
|
|
97
102
|
*/
|
|
98
103
|
|
|
99
104
|
/**
|
|
@@ -171,6 +176,9 @@ declare const SemanticsSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
171
176
|
}>;
|
|
172
177
|
name: z.ZodLiteral<"unit-invocation">;
|
|
173
178
|
instanceName: z.ZodNullable<z.ZodString>;
|
|
179
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
180
|
+
name: z.ZodLiteral<"io">;
|
|
181
|
+
target: z.ZodNullable<z.ZodString>;
|
|
174
182
|
}, z.core.$strip>], "name">;
|
|
175
183
|
type Semantics = z.infer<typeof SemanticsSchema>;
|
|
176
184
|
|
|
@@ -191,44 +199,43 @@ type RestSemantics = z.infer<typeof RestSemanticsSchema>;
|
|
|
191
199
|
*/
|
|
192
200
|
declare function normalizePath(path: string): string;
|
|
193
201
|
/**
|
|
194
|
-
* A path with every parameter
|
|
195
|
-
* and `/users/:userId` both
|
|
196
|
-
*
|
|
197
|
-
*
|
|
198
|
-
*
|
|
199
|
-
* A parameter's range stays, since `{tenant?}` serves a different set
|
|
200
|
-
* of requests from `{tenant}`.
|
|
202
|
+
* A path with every parameter name removed, for comparing two paths.
|
|
203
|
+
* `/users/{id}` and `/users/:userId` both become `/users/{}`, since a
|
|
204
|
+
* parameter's name does not change which requests the path serves. A
|
|
205
|
+
* parameter's range stays, since `{tenant?}` serves a different set of
|
|
206
|
+
* requests from `{tenant}`.
|
|
201
207
|
*/
|
|
202
208
|
declare function pathShape(path: string): string;
|
|
203
209
|
/**
|
|
204
210
|
* Whether two REST methods mean the same thing. Equal methods agree,
|
|
205
|
-
* and `"*"` agrees with any
|
|
206
|
-
* responds to every method responds to this one. A null method
|
|
207
|
-
*
|
|
211
|
+
* and `"*"` agrees with any given method, because a handler that
|
|
212
|
+
* responds to every method responds to this one. A null method means
|
|
213
|
+
* the source never gave one, so it agrees with nothing.
|
|
208
214
|
*
|
|
209
|
-
* This is the counterpart of `busesAgree`.
|
|
210
|
-
*
|
|
215
|
+
* This is the REST counterpart of `busesAgree`. There is no list of
|
|
216
|
+
* known methods, so a wildcard pairs with whatever methods consumers
|
|
217
|
+
* write.
|
|
211
218
|
*/
|
|
212
219
|
declare function methodsAgree(a: string | null, b: string | null): boolean;
|
|
213
220
|
/**
|
|
214
221
|
* Whether a declared route path admits a concrete request path. Both
|
|
215
|
-
*
|
|
216
|
-
*
|
|
217
|
-
*
|
|
222
|
+
* are normalized first. A hole in the request path is compared as plain
|
|
223
|
+
* text, so a mount pattern admits a route inside it and rejects a wider
|
|
224
|
+
* route.
|
|
218
225
|
*/
|
|
219
226
|
declare function routePathAdmits(declaredPath: string, requestPath: string): boolean;
|
|
220
227
|
/** Whether two declared route paths serve at least one request in common. */
|
|
221
228
|
declare function routePathsMeet(a: string, b: string): boolean;
|
|
222
229
|
|
|
223
230
|
/**
|
|
224
|
-
* The
|
|
225
|
-
*
|
|
226
|
-
* `DeployableUnitSchema
|
|
231
|
+
* The dedicated pass pairs on `(deploymentTarget, instanceName)`, which
|
|
232
|
+
* is a deployable unit, so the two fields come from
|
|
233
|
+
* `DeployableUnitSchema`.
|
|
227
234
|
*
|
|
228
|
-
* A provider
|
|
229
|
-
*
|
|
230
|
-
*
|
|
231
|
-
*
|
|
235
|
+
* A provider sets both. The reading side is code, and code does not say
|
|
236
|
+
* which deployment will run it, so a recognizer at a read leaves both
|
|
237
|
+
* out and does not guess. The pairing pass takes the deployment from
|
|
238
|
+
* the provider.
|
|
232
239
|
*/
|
|
233
240
|
declare const RuntimeConfigSemanticsSchema: z.ZodObject<{
|
|
234
241
|
deploymentTarget: z.ZodOptional<z.ZodEnum<{
|
|
@@ -252,37 +259,36 @@ declare const StorageSemanticsSchema: z.ZodObject<{
|
|
|
252
259
|
}, z.core.$strip>;
|
|
253
260
|
type StorageSemantics = z.infer<typeof StorageSemanticsSchema>;
|
|
254
261
|
/**
|
|
255
|
-
* `postgresql:invoices
|
|
256
|
-
*
|
|
257
|
-
*
|
|
258
|
-
*
|
|
262
|
+
* The store's label, such as `postgresql:invoices` or
|
|
263
|
+
* `aws.dynamodb:editions#by-publication`. Storage has no identity key,
|
|
264
|
+
* so `suss ask`, the pass that indexes accesses, and an intent doc all
|
|
265
|
+
* refer to a store by this label.
|
|
259
266
|
*/
|
|
260
267
|
declare function storageLabel(semantics: StorageSemantics): string;
|
|
261
|
-
/** The
|
|
268
|
+
/** The storage system, or `<unknown engine>` when it is null. */
|
|
262
269
|
declare function storageSystemLabel(semantics: StorageSemantics): string;
|
|
263
270
|
/**
|
|
264
|
-
*
|
|
265
|
-
*
|
|
266
|
-
*
|
|
267
|
-
*
|
|
271
|
+
* The column list an access records when it reads every column, as a
|
|
272
|
+
* query without an explicit projection does. It means all columns and
|
|
273
|
+
* does not list any, so code comparing column lists has to handle it
|
|
274
|
+
* separately.
|
|
268
275
|
*/
|
|
269
276
|
declare const EVERY_FIELD = "*";
|
|
270
|
-
/** The store
|
|
277
|
+
/** The store's label without the storage system, as a finding writes it. */
|
|
271
278
|
declare function storageContainerLabel(semantics: StorageSemantics): string;
|
|
272
279
|
|
|
273
280
|
/**
|
|
274
|
-
*
|
|
281
|
+
* The zod schemas for the primitives every suss IR uses.
|
|
275
282
|
*
|
|
276
|
-
*
|
|
277
|
-
*
|
|
278
|
-
*
|
|
279
|
-
*
|
|
280
|
-
*
|
|
281
|
-
*
|
|
282
|
-
* here, in one place none of those IRs needs another IR to reach.
|
|
283
|
+
* `TypeShape` is the structure of a value. `BoundaryBinding` and its
|
|
284
|
+
* `Semantics` variants identify a boundary. `SourceLocation` says where
|
|
285
|
+
* something is in the source, and `Confidence` says how much to trust a
|
|
286
|
+
* claim. Behavioral summaries and intent docs are both built from these,
|
|
287
|
+
* so they live in a package of their own and neither IR depends on the
|
|
288
|
+
* other.
|
|
283
289
|
*
|
|
284
|
-
* The schemas are the
|
|
285
|
-
*
|
|
290
|
+
* The schemas are the source of truth. The package index derives the
|
|
291
|
+
* types from them with `z.infer`.
|
|
286
292
|
*/
|
|
287
293
|
|
|
288
294
|
declare const ConfidenceSourceSchema: z.ZodEnum<{
|
|
@@ -297,17 +303,17 @@ declare const ConfidenceLevelSchema: z.ZodEnum<{
|
|
|
297
303
|
low: "low";
|
|
298
304
|
}>;
|
|
299
305
|
/**
|
|
300
|
-
*
|
|
301
|
-
*
|
|
302
|
-
*
|
|
303
|
-
*
|
|
304
|
-
*
|
|
305
|
-
*
|
|
306
|
-
*
|
|
307
|
-
*
|
|
306
|
+
* The result of checking a claim by running the code (`suss
|
|
307
|
+
* corroborate`). The harness generates inputs that satisfy the claim's
|
|
308
|
+
* own conditions and runs the function on them.
|
|
309
|
+
*
|
|
310
|
+
* - `observed`: every run agreed with the claim.
|
|
311
|
+
* - `refuted`: at least one run disagreed, which is either an extractor
|
|
312
|
+
* bug or a surprise. `counterexample` gives the input.
|
|
313
|
+
* - `untested`: no run produced a verdict. No satisfying input was
|
|
314
|
+
* found, or every run hit a dependency the harness cannot supply.
|
|
308
315
|
*
|
|
309
|
-
* Corroboration adds
|
|
310
|
-
* evidence, and it never rewrites the derived claim.
|
|
316
|
+
* Corroboration adds evidence to a derived claim and never rewrites it.
|
|
311
317
|
*/
|
|
312
318
|
declare const CorroborationSchema: z.ZodObject<{
|
|
313
319
|
outcome: z.ZodEnum<{
|
|
@@ -354,6 +360,7 @@ declare const SourceLocationSchema: z.ZodObject<{
|
|
|
354
360
|
}, z.core.$strip>>;
|
|
355
361
|
exportName: z.ZodNullable<z.ZodString>;
|
|
356
362
|
workspace: z.ZodOptional<z.ZodString>;
|
|
363
|
+
module: z.ZodOptional<z.ZodString>;
|
|
357
364
|
}, z.core.$strip>;
|
|
358
365
|
declare const BoundaryBindingSchema: z.ZodObject<{
|
|
359
366
|
transport: z.ZodString;
|
|
@@ -428,6 +435,9 @@ declare const BoundaryBindingSchema: z.ZodObject<{
|
|
|
428
435
|
}>;
|
|
429
436
|
name: z.ZodLiteral<"unit-invocation">;
|
|
430
437
|
instanceName: z.ZodNullable<z.ZodString>;
|
|
438
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
439
|
+
name: z.ZodLiteral<"io">;
|
|
440
|
+
target: z.ZodNullable<z.ZodString>;
|
|
431
441
|
}, z.core.$strip>], "name">;
|
|
432
442
|
recognition: z.ZodString;
|
|
433
443
|
}, z.core.$strip>;
|
|
@@ -478,24 +488,22 @@ type TypeShape = {
|
|
|
478
488
|
def?: string | undefined;
|
|
479
489
|
/**
|
|
480
490
|
* The file that declares this type, when the project declares it.
|
|
481
|
-
* Absent for a name the language or a dependency
|
|
482
|
-
* the same thing everywhere.
|
|
491
|
+
* Absent for a name the language or a dependency defines, which
|
|
492
|
+
* means the same thing everywhere.
|
|
483
493
|
*
|
|
484
|
-
* A name on its own does not identify a type. Two modules each
|
|
485
|
-
*
|
|
486
|
-
*
|
|
494
|
+
* A name on its own does not identify a type. Two modules that each
|
|
495
|
+
* declare a `User` produce the same ref, and `from` is the only
|
|
496
|
+
* field that tells them apart.
|
|
487
497
|
*/
|
|
488
498
|
from?: string | undefined;
|
|
489
499
|
} | {
|
|
490
500
|
type: "unknown";
|
|
491
501
|
};
|
|
492
502
|
/**
|
|
493
|
-
* The key a table of definitions uses for the type a ref points at
|
|
494
|
-
*
|
|
495
|
-
*
|
|
496
|
-
*
|
|
497
|
-
* on the ref. A name that the language or a dependency owns has no
|
|
498
|
-
* file, and keys on the name alone.
|
|
503
|
+
* The key a table of definitions uses for the type a ref points at,
|
|
504
|
+
* which is the ref's `def`. Null for a ref without one, such as a name
|
|
505
|
+
* the language or a dependency defines, and such a ref is never looked
|
|
506
|
+
* up.
|
|
499
507
|
*/
|
|
500
508
|
declare function typeDefinitionKey(ref: {
|
|
501
509
|
def?: string | undefined;
|
|
@@ -505,16 +513,15 @@ declare const TypeShapeSchema: z.ZodType<TypeShape>;
|
|
|
505
513
|
* A shape with the definitions it refers to substituted back into it.
|
|
506
514
|
*
|
|
507
515
|
* Comparing two shapes means comparing their structure, and a ref has
|
|
508
|
-
* none.
|
|
509
|
-
*
|
|
510
|
-
* reads what it always read.
|
|
516
|
+
* none. Substituting the definitions once means no comparison has to
|
|
517
|
+
* look anything up in a table.
|
|
511
518
|
*
|
|
512
|
-
* Substituting a definition
|
|
513
|
-
*
|
|
514
|
-
*
|
|
515
|
-
*
|
|
516
|
-
*
|
|
519
|
+
* Substituting a definition does not count as a level of nesting. If it
|
|
520
|
+
* did, a type six levels deep would come back three deep, and a
|
|
521
|
+
* consumer reading a field past that would be told the provider lacks
|
|
522
|
+
* it. A type that refers to itself stops at a key already substituted
|
|
523
|
+
* on this path, the same cycle guard the shape walk uses.
|
|
517
524
|
*/
|
|
518
525
|
declare function withDefinitionsInlined(shape: TypeShape, definitions: Record<string, TypeShape> | undefined, depth?: number, inProgress?: ReadonlySet<string>): TypeShape;
|
|
519
526
|
|
|
520
|
-
export {
|
|
527
|
+
export { storageLabel as A, BoundaryBindingSchema as B, ConfidenceInfoSchema as C, type DeployableUnit as D, EVERY_FIELD as E, type FunctionCallSemantics as F, type GraphqlOperationSemantics as G, storageSystemLabel as H, typeDefinitionKey as I, withDefinitionsInlined as J, type MessageBusSemantics as M, type RestSemantics as R, type Semantics as S, type TypeShape as T, ConfidenceLevelSchema as a, ConfidenceSourceSchema as b, CorroborationSchema as c, SourceLocationSchema as d, type MessageBusTechnology as e, DeployableUnitSchema as f, FunctionCallSemanticsSchema as g, GraphqlOperationSemanticsSchema as h, type GraphqlResolverSemantics as i, GraphqlResolverSemanticsSchema as j, MessageBusSemanticsSchema as k, RestSemanticsSchema as l, type RuntimeConfigSemantics as m, RuntimeConfigSemanticsSchema as n, SemanticsSchema as o, type StorageSemantics as p, StorageSemanticsSchema as q, TypeShapeSchema as r, ecsContainerInstanceName as s, isModuleName as t, methodsAgree as u, normalizePath as v, pathShape as w, routePathAdmits as x, routePathsMeet as y, storageContainerLabel as z };
|