@lovrozagar/oat 0.12.1 → 0.12.3
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/runtime/checks.d.ts.map +1 -1
- package/dist/runtime/checks.js +41 -3
- package/dist/runtime/checks.js.map +1 -1
- package/dist/runtime/effects.d.ts +22 -0
- package/dist/runtime/effects.d.ts.map +1 -1
- package/dist/runtime/effects.js +166 -0
- package/dist/runtime/effects.js.map +1 -1
- package/dist/runtime/run.d.ts.map +1 -1
- package/dist/runtime/run.js +26 -6
- package/dist/runtime/run.js.map +1 -1
- package/dist/runtime/scope.d.ts.map +1 -1
- package/dist/runtime/scope.js +9 -0
- package/dist/runtime/scope.js.map +1 -1
- package/dist/spec/tag-schema.d.ts.map +1 -1
- package/dist/spec/tag-schema.js +2 -0
- package/dist/spec/tag-schema.js.map +1 -1
- package/docs/tags.md +14 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checks.d.ts","sourceRoot":"","sources":["../../src/runtime/checks.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAEtE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAa,KAAK,OAAO,EAAE,MAAM,gBAAgB,CAAA;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,EAEN,KAAK,0BAA0B,EAS/B,MAAM,+BAA+B,CAAA;AAEtC,OAAO,EACN,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,SAAS,EAMd,MAAM,kBAAkB,CAAA;AAKzB,OAAO,KAAK,EAAE,MAAM,EAAY,UAAU,EAAkB,MAAM,aAAa,CAAA;AAK/E,OAAO,EAAsB,KAAK,gBAAgB,EAAE,KAAK,OAAO,EAAa,MAAM,cAAc,CAAA;AAKjG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAC9C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAEhD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAEpD,OAAO,EAAE,KAAK,OAAO,EAAiC,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"checks.d.ts","sourceRoot":"","sources":["../../src/runtime/checks.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAEtE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAa,KAAK,OAAO,EAAE,MAAM,gBAAgB,CAAA;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,EAEN,KAAK,0BAA0B,EAS/B,MAAM,+BAA+B,CAAA;AAEtC,OAAO,EACN,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,SAAS,EAMd,MAAM,kBAAkB,CAAA;AAKzB,OAAO,KAAK,EAAE,MAAM,EAAY,UAAU,EAAkB,MAAM,aAAa,CAAA;AAK/E,OAAO,EAAsB,KAAK,gBAAgB,EAAE,KAAK,OAAO,EAAa,MAAM,cAAc,CAAA;AAKjG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAC9C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAEhD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAEpD,OAAO,EAAE,KAAK,OAAO,EAAiC,MAAM,YAAY,CAAA;AAyBxE,kGAAkG;AAClG,MAAM,WAAW,KAAK;IACrB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,GAAG,SAAS,CAAA;IACxB,oEAAoE;IACpE,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACrC;;;OAGG;IACH,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACzC,6EAA6E;IAC7E,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC7B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC7B,iEAAiE;IACjE,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAA;CAC5B;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU;IAC9D,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,SAAS,CAAA;IAChB,MAAM,EAAE,CAAC,CAAA;IACT,QAAQ,EAAE,gBAAgB,CAAA;IAC1B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC7B,MAAM,EAAE,cAAc,CAAA;IACtB,MAAM,EAAE,cAAc,GAAG,SAAS,CAAA;IAClC,QAAQ,EAAE,cAAc,GAAG,SAAS,CAAA;IACpC,QAAQ,EAAE,cAAc,GAAG,SAAS,CAAA;IACpC,QAAQ,EAAE,cAAc,GAAG,SAAS,CAAA;IACpC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,OAAO,EAAE,OAAO,EAAE,CAAA;IAClB,KAAK,EAAE,eAAe,GAAG,IAAI,CAAA;IAC7B,2EAA2E;IAC3E,YAAY,CAAC,EAAE,0BAA0B,CAAA;IACzC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,MAAM,EAAE,UAAU,GAAG,IAAI,CAAA;IACzB,IAAI,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAClC,uFAAuF;IACvF,cAAc,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACnD;;;OAGG;IACH,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,6FAA6F;IAC7F,OAAO,EAAE,CAAC,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,CAAA;IACnD,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAA;IAC5C,SAAS,EAAE,eAAe,GAAG,SAAS,CAAA;IACtC,IAAI,EAAE,MAAM,CAAA;IACZ,oGAAoG;IACpG,KAAK,EAAE,MAAM,CAAA;IACb,2FAA2F;IAC3F,UAAU,EAAE,MAAM,EAAE,EAAE,CAAA;IACtB,mFAAmF;IACnF,aAAa,EAAE,OAAO,CAAA;IACtB,6EAA6E;IAC7E,cAAc,EAAE,cAAc,GAAG,SAAS,CAAA;IAC1C,6EAA6E;IAC7E,cAAc,EAAE,cAAc,GAAG,SAAS,CAAA;IAC1C,wDAAwD;IACxD,OAAO,EAAE,aAAa,CAAA;IACtB,8DAA8D;IAC9D,QAAQ,EAAE,cAAc,EAAE,CAAA;IAC1B,0DAA0D;IAC1D,SAAS,EAAE,cAAc,EAAE,CAAA;IAC3B,uDAAuD;IACvD,OAAO,EAAE,cAAc,EAAE,CAAA;IACzB,KAAK,EAAE,KAAK,CAAA;IACZ,SAAS,EAAE,aAAa,CAAA;IACxB;;;;OAIG;IACH,QAAQ,CAAC,EAAE;QAAE,MAAM,EAAE,aAAa,CAAC;QAAC,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAA;IAC9D;;;;OAIG;IACH,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,cAAc,KAAK,OAAO,CAAA;IACzC;;;OAGG;IACH,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,IAAI,CAAA;IACnF;;;;OAIG;IACH,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,KAAK,IAAI,CAAA;CAClD;AAED,wDAAwD;AACxD,MAAM,MAAM,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,CAAA;AA4G/C;;;;;;GAMG;AACH,MAAM,MAAM,IAAI,CAAC,CAAC,IAAI;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAE5E,wBAAgB,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAE1C;AAED,kGAAkG;AAClG,wBAAgB,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAElD;AAED,+FAA+F;AAC/F,wBAAgB,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAEjF;AAED,qFAAqF;AACrF,wBAAgB,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAExE;AAED,UAAU,SAAS,CAAC,CAAC;IACpB,EAAE,EAAE,OAAO,CAAA;IACX,iGAAiG;IACjG,IAAI,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;IAChC;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,EAAE,CAAA;IACrB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;;;;;OAOG;IACH,QAAQ,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,KAAK,MAAM,EAAE,CAAA;CAC7D;AAED;;;;;GAKG;AACH,MAAM,MAAM,KAAK,CAAC,CAAC,GAAG,OAAO,IAAI,SAAS,CAAC,CAAC,CAAC,GAC5C,CACG;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,GAAG,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;CAAE,GACpE;IAAE,OAAO,CAAC,EAAE,KAAK,CAAC;IAAC,GAAG,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;CAAE,CACxE,CAAA;AAQF,yGAAyG;AACzG,eAAO,MAAM,UAAU;oBACN,WAAW,SAAS,SAAS,KAAG,MAAM,EAAE;2BACjC,WAAW,SAAS,SAAS,KAAG,MAAM,EAAE;qBAE9C,WAAW,KAAG,MAAM,EAAE;oCACP,WAAW,SAAS,SAAS,KAAG,MAAM,EAAE;4BAYhD,WAAW,KAAG,MAAM,EAAE;qBAC7B,WAAW,KAAG,MAAM,EAAE;4BACf,WAAW,KAAG,MAAM,EAAE;sBAC5B,WAAW,SAAS,SAAS,KAAG,MAAM,EAAE;qBACzC,WAAW,KAAG,MAAM,EAAE;mBAExB,WAAW,KAAG,MAAM,EAAE;wBACjB,WAAW,SAAS,SAAS,KAAG,MAAM,EAAE;mBAC7C,WAAW,KAAG,MAAM,EAAE;2BACd,WAAW,SAAS,SAAS,KAAG,MAAM,EAAE;0BAGzC,WAAW,KAAG,MAAM,EAAE;qBAC3B,WAAW,KAAG,MAAM,EAAE;oBACvB,WAAW,SAAS,SAAS,KAAG,MAAM,EAAE;2BACjC,WAAW,KAAG,MAAM,EAAE;CAC7C,CAAA;AAm4QD,eAAO,MAAM,MAAM,EAAE,SAAS,KAAK,EA0HlC,CAAA;AAED,4FAA4F;AAC5F,wBAAsB,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CAIhF;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,GAAG,IAAI,CAkB/D"}
|
package/dist/runtime/checks.js
CHANGED
|
@@ -26,7 +26,7 @@ import { forEachInvocation } from "./upload-each.js";
|
|
|
26
26
|
import { driveWait } from "./wait.js";
|
|
27
27
|
import { fillPath, isPlanLimitResponse } from "./world.js";
|
|
28
28
|
import { bodyPropertyNames, collisionCreateBody, collisionUpdatePatch, idempotencyHeaderRequired, probeableUniqueSets, uniquifyProbeBody, uniqueProbeHeaders, } from "./unique.js";
|
|
29
|
-
import { bindAfterCreateEffects, bindCreatedScope, bindInstanceScope, bindMissingPathParams, canFillPath, describeEffectHold, effectHolds, identityPathParam, } from "./effects.js";
|
|
29
|
+
import { bindAfterCreateEffects, bindCreatedScope, applyActionBind, bindActionScope, bindInstanceScope, bindMissingPathParams, readActionBind, readBefore, canFillPath, describeEffectHold, effectHolds, identityPathParam, } from "./effects.js";
|
|
30
30
|
const graded = (ctx, op) => ctx.inScope?.(op) ?? true;
|
|
31
31
|
/* ------------------------------------------------------------------- invented values */
|
|
32
32
|
/** This entity's identifier as its item route takes it: the path parameter's schema, else the record's. */
|
|
@@ -4624,7 +4624,43 @@ const declaredEffectsOccur = {
|
|
|
4624
4624
|
const effects = op.effects;
|
|
4625
4625
|
if (effects.length === 0)
|
|
4626
4626
|
return;
|
|
4627
|
-
|
|
4627
|
+
let scope = bindInstanceScope(ctx.model, ctx.entityName, ctx.identity, ctx.records, ctx.scope);
|
|
4628
|
+
const raw = ctx.model.rawOperations.get(op.operationId);
|
|
4629
|
+
const actionBind = readActionBind(raw?.["x-bind"]);
|
|
4630
|
+
const beforeId = readBefore(raw?.["x-before"]);
|
|
4631
|
+
let beforeBody;
|
|
4632
|
+
if (beforeId !== undefined) {
|
|
4633
|
+
const beforeOp = ctx.model.byOperationId.get(beforeId);
|
|
4634
|
+
if (beforeOp === undefined) {
|
|
4635
|
+
ctx.findings.gap(this.id, subject(ctx.entityName, op.operationId, fixture), `${op.operationId} names x-before "${beforeId}", which is not an operation`, "the action was not invoked", fixture);
|
|
4636
|
+
return;
|
|
4637
|
+
}
|
|
4638
|
+
const beforeScope = bindActionScope(beforeOp.pathParams, ctx.records, scope, null, undefined);
|
|
4639
|
+
if (!canFillPath(beforeOp.path, beforeScope)) {
|
|
4640
|
+
const missing = beforeOp.pathParams.filter((name) => beforeScope[name] === undefined);
|
|
4641
|
+
ctx.findings.gap(this.id, subject(ctx.entityName, op.operationId, fixture), `${op.operationId} could not run x-before "${beforeId}"`, `missing ${missing.map((name) => `{${name}}`).join(", ")}`, fixture);
|
|
4642
|
+
return;
|
|
4643
|
+
}
|
|
4644
|
+
const beforeFields = beforeOp.hasRequestBody ? bodyForOp(ctx, beforeOp) : undefined;
|
|
4645
|
+
const beforeInvoked = await ctx.client.request(beforeOp.method, fillPath(beforeOp.path, beforeScope), {
|
|
4646
|
+
headers: ctx.auth(),
|
|
4647
|
+
operationId: beforeOp.operationId,
|
|
4648
|
+
...(beforeFields === undefined
|
|
4649
|
+
? {}
|
|
4650
|
+
: await encodeOpBody(ctx, beforeOp, beforeFields, "baseline", 0, uploads)),
|
|
4651
|
+
});
|
|
4652
|
+
if (beforeInvoked.status >= 400) {
|
|
4653
|
+
ctx.findings.gap(this.id, subject(ctx.entityName, op.operationId, fixture), `${beforeId} (x-before) returned ${beforeInvoked.status}`, `${op.operationId} was not invoked`, fixture);
|
|
4654
|
+
return;
|
|
4655
|
+
}
|
|
4656
|
+
beforeBody = beforeInvoked.responseBody;
|
|
4657
|
+
}
|
|
4658
|
+
scope = bindActionScope(op.pathParams, ctx.records, scope, actionBind, beforeBody);
|
|
4659
|
+
if (!canFillPath(op.path, scope)) {
|
|
4660
|
+
const missing = op.pathParams.filter((name) => scope[name] === undefined);
|
|
4661
|
+
ctx.findings.gap(this.id, subject(ctx.entityName, op.operationId, fixture), `${op.operationId} could not be invoked`, `missing ${missing.map((name) => `{${name}}`).join(", ")}`, fixture);
|
|
4662
|
+
return;
|
|
4663
|
+
}
|
|
4628
4664
|
const befores = new Map();
|
|
4629
4665
|
for (const effect of effects) {
|
|
4630
4666
|
const listOp = listOpFor(ctx, effect.entity);
|
|
@@ -4634,11 +4670,13 @@ const declaredEffectsOccur = {
|
|
|
4634
4670
|
continue;
|
|
4635
4671
|
befores.set(effect.entity, await observe(ctx, listOp, scope));
|
|
4636
4672
|
}
|
|
4637
|
-
const
|
|
4673
|
+
const prepared = applyActionBind(actionBind, ctx.records, beforeBody, op.hasRequestBody ? bodyForOp(ctx, op) : undefined);
|
|
4674
|
+
const body = prepared.body;
|
|
4638
4675
|
const invoked = await ctx.client.request(op.method, fillPath(op.path, scope), {
|
|
4639
4676
|
headers: ctx.auth(),
|
|
4640
4677
|
operationId: op.operationId,
|
|
4641
4678
|
...(fixture === undefined ? {} : { fixture }),
|
|
4679
|
+
...(Object.keys(prepared.query).length === 0 ? {} : { query: prepared.query }),
|
|
4642
4680
|
...(body === undefined ? {} : await encodeOpBody(ctx, op, body, "baseline", 0, uploads)),
|
|
4643
4681
|
});
|
|
4644
4682
|
if (standDownForFeatureGate(ctx, op, invoked, this.id))
|