@opra/common 0.28.1 → 0.29.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/browser.js +203 -101
- package/cjs/document/data-type/complex-type-class.js +38 -13
- package/cjs/document/data-type/field-class.js +2 -1
- package/cjs/document/factory/api-document-factory.js +26 -3
- package/cjs/document/factory/type-document-factory.js +6 -3
- package/cjs/document/index.js +1 -1
- package/cjs/document/resource/collection-class.js +31 -27
- package/cjs/document/resource/collection-decorator.js +61 -33
- package/cjs/document/resource/{operation-decorator.js → crud-operation-decorator.js} +3 -2
- package/cjs/document/resource/crud-operation.js +49 -0
- package/cjs/document/resource/crud-resource.js +2 -2
- package/cjs/document/resource/endpoint.js +11 -3
- package/cjs/document/resource/singleton-class.js +20 -15
- package/cjs/document/resource/storage-decorator.js +10 -10
- package/esm/document/data-type/complex-type-class.js +38 -13
- package/esm/document/data-type/field-class.js +2 -1
- package/esm/document/factory/api-document-factory.js +26 -3
- package/esm/document/factory/type-document-factory.js +6 -3
- package/esm/document/index.js +1 -1
- package/esm/document/resource/collection-class.js +31 -27
- package/esm/document/resource/collection-decorator.js +54 -26
- package/esm/document/resource/{operation-decorator.js → crud-operation-decorator.js} +3 -2
- package/esm/document/resource/crud-operation.js +44 -0
- package/esm/document/resource/crud-resource.js +2 -2
- package/esm/document/resource/endpoint.js +11 -3
- package/esm/document/resource/singleton-class.js +20 -15
- package/esm/document/resource/storage-decorator.js +7 -7
- package/package.json +2 -1
- package/types/document/data-type/complex-type-class.d.ts +1 -1
- package/types/document/data-type/complex-type.d.ts +7 -3
- package/types/document/data-type/data-type.d.ts +3 -0
- package/types/document/data-type/field-class.d.ts +0 -2
- package/types/document/index.d.ts +1 -1
- package/types/document/resource/collection-class.d.ts +0 -9
- package/types/document/resource/collection-decorator.d.ts +12 -0
- package/types/document/resource/crud-operation-decorator.d.ts +6 -0
- package/types/document/resource/{operation.d.ts → crud-operation.d.ts} +12 -4
- package/types/document/resource/crud-resource.d.ts +3 -3
- package/types/document/resource/endpoint.d.ts +1 -1
- package/types/document/resource/resource-decorator.d.ts +3 -2
- package/types/document/resource/resource.d.ts +2 -2
- package/types/document/resource/singleton-class.d.ts +5 -5
- package/types/document/resource/singleton-decorator.d.ts +6 -0
- package/types/document/resource/storage-class.d.ts +4 -4
- package/types/schema/data-type/complex-type.interface.d.ts +1 -1
- package/types/schema/resource/collection.interface.d.ts +7 -7
- package/types/schema/resource/endpoint.interface.d.ts +2 -1
- package/types/schema/resource/singleton.interface.d.ts +0 -2
- package/cjs/document/resource/operation.js +0 -25
- package/esm/document/resource/operation.js +0 -20
- package/types/document/resource/operation-decorator.d.ts +0 -6
package/browser.js
CHANGED
|
@@ -1074,6 +1074,7 @@ var Endpoint = class {
|
|
|
1074
1074
|
constructor(resource, name, init) {
|
|
1075
1075
|
this.resource = resource;
|
|
1076
1076
|
this.name = name;
|
|
1077
|
+
this.options = {};
|
|
1077
1078
|
Object.assign(this, init);
|
|
1078
1079
|
this.parameters = new ResponsiveMap();
|
|
1079
1080
|
if (init.parameters) {
|
|
@@ -1098,12 +1099,19 @@ var Endpoint = class {
|
|
|
1098
1099
|
const schema = omitUndefined({
|
|
1099
1100
|
description: this.description
|
|
1100
1101
|
});
|
|
1102
|
+
if (Object.keys(this.options).length)
|
|
1103
|
+
schema.options = { ...this.options };
|
|
1101
1104
|
if (this.parameters.size) {
|
|
1102
|
-
|
|
1105
|
+
let i = 0;
|
|
1106
|
+
const parameters = {};
|
|
1103
1107
|
for (const [name, param] of this.parameters.entries()) {
|
|
1104
|
-
if (!param.isBuiltin)
|
|
1105
|
-
|
|
1108
|
+
if (!param.isBuiltin) {
|
|
1109
|
+
parameters[name] = param.exportSchema(options);
|
|
1110
|
+
i++;
|
|
1111
|
+
}
|
|
1106
1112
|
}
|
|
1113
|
+
if (i)
|
|
1114
|
+
schema.parameters = parameters;
|
|
1107
1115
|
}
|
|
1108
1116
|
return schema;
|
|
1109
1117
|
}
|
|
@@ -1409,7 +1417,7 @@ var FieldClass = class {
|
|
|
1409
1417
|
}
|
|
1410
1418
|
exportSchema(options) {
|
|
1411
1419
|
return omitUndefined({
|
|
1412
|
-
type: this.type.name ? this.type.name : this.type.exportSchema(options),
|
|
1420
|
+
type: this.type ? this.type.name ? this.type.name : this.type.exportSchema(options) : void 0,
|
|
1413
1421
|
description: this.description,
|
|
1414
1422
|
isArray: this.isArray,
|
|
1415
1423
|
default: this.default,
|
|
@@ -1477,6 +1485,7 @@ var ComplexTypeClass = class extends DataType {
|
|
|
1477
1485
|
constructor(document, init) {
|
|
1478
1486
|
super(document, init);
|
|
1479
1487
|
this.kind = opra_schema_ns_exports.ComplexType.Kind;
|
|
1488
|
+
this.fields = new ResponsiveMap();
|
|
1480
1489
|
const own = this.own = {};
|
|
1481
1490
|
own.ctor = init.ctor;
|
|
1482
1491
|
if (init.base) {
|
|
@@ -1495,7 +1504,6 @@ var ComplexTypeClass = class extends DataType {
|
|
|
1495
1504
|
this.additionalFields = true;
|
|
1496
1505
|
else if (this.base?.additionalFields === "error" && !this.additionalFields)
|
|
1497
1506
|
this.additionalFields = "error";
|
|
1498
|
-
this.fields = new ResponsiveMap();
|
|
1499
1507
|
if (this.base) {
|
|
1500
1508
|
if (this.base.fields)
|
|
1501
1509
|
for (const [k, el] of this.base.fields.entries()) {
|
|
@@ -1592,7 +1600,7 @@ var ComplexTypeClass = class extends DataType {
|
|
|
1592
1600
|
Object.assign(out, omitUndefined({
|
|
1593
1601
|
base: this.base ? this.base.name ? this.base.name : this.base.exportSchema(options) : void 0,
|
|
1594
1602
|
abstract: this.abstract,
|
|
1595
|
-
additionalFields: this.own.additionalFields
|
|
1603
|
+
additionalFields: this.own.additionalFields instanceof DataType ? this.own.additionalFields.name ? this.own.additionalFields.name : this.own.additionalFields.exportSchema(options) : this.own.additionalFields
|
|
1596
1604
|
}));
|
|
1597
1605
|
if (this.own.fields.size) {
|
|
1598
1606
|
const fields = out.fields = {};
|
|
@@ -1616,9 +1624,10 @@ var ComplexTypeClass = class extends DataType {
|
|
|
1616
1624
|
}
|
|
1617
1625
|
generateCodec(codec, options) {
|
|
1618
1626
|
const schema = this._generateCodecSchema(codec, options);
|
|
1627
|
+
const additionalFields = this.additionalFields instanceof DataType ? this.additionalFields.generateCodec(codec, options) : this.additionalFields;
|
|
1619
1628
|
return vg4.isObject(schema, {
|
|
1620
1629
|
ctor: this.ctor,
|
|
1621
|
-
additionalFields
|
|
1630
|
+
additionalFields,
|
|
1622
1631
|
name: this.name,
|
|
1623
1632
|
caseInSensitive: !options?.caseSensitive
|
|
1624
1633
|
});
|
|
@@ -1627,16 +1636,26 @@ var ComplexTypeClass = class extends DataType {
|
|
|
1627
1636
|
const schema = {};
|
|
1628
1637
|
const pickOption = (options?.pick || []).map((x) => x.toLowerCase());
|
|
1629
1638
|
const omitOption = (options?.omit || []).map((x) => x.toLowerCase());
|
|
1630
|
-
|
|
1631
|
-
|
|
1632
|
-
|
|
1639
|
+
const dedupedFieldNames = (options?.overwriteFields ? Array.from(/* @__PURE__ */ new Set([...this.fields.keys(), ...options?.overwriteFields.keys()])) : Array.from(this.fields.keys())).map((x) => x.toLocaleString());
|
|
1640
|
+
for (const nameLower of dedupedFieldNames) {
|
|
1641
|
+
const overwriteField = options?.overwriteFields?.get(nameLower);
|
|
1642
|
+
const field = this.fields.get(nameLower);
|
|
1643
|
+
if (!(field || overwriteField))
|
|
1633
1644
|
continue;
|
|
1634
|
-
if (pickOption.length && !pickOption.find((x) => x === nameLower || x.startsWith(nameLower + ".")))
|
|
1645
|
+
if (!overwriteField && (omitOption.find((x) => x === nameLower) || pickOption.length && !pickOption.find((x) => x === nameLower || x.startsWith(nameLower + "."))))
|
|
1635
1646
|
continue;
|
|
1647
|
+
let f;
|
|
1648
|
+
if (overwriteField) {
|
|
1649
|
+
f = { ...overwriteField };
|
|
1650
|
+
if (!field)
|
|
1651
|
+
f.type = this.document.getDataType("any");
|
|
1652
|
+
Object.setPrototypeOf(f, field || ApiField.prototype);
|
|
1653
|
+
} else
|
|
1654
|
+
f = field;
|
|
1636
1655
|
schema[f.name] = f.generateCodec(codec, {
|
|
1637
1656
|
...options,
|
|
1638
|
-
pick: pickOption.filter((x) => x.startsWith(nameLower + ".")).map((x) => x.substring(x.indexOf(".") + 1)),
|
|
1639
|
-
omit: omitOption.filter((x) => x.startsWith(nameLower + ".")).map((x) => x.substring(x.indexOf(".") + 1))
|
|
1657
|
+
pick: overwriteField ? [] : pickOption.filter((x) => x.startsWith(nameLower + ".")).map((x) => x.substring(x.indexOf(".") + 1)),
|
|
1658
|
+
omit: overwriteField ? [] : omitOption.filter((x) => x.startsWith(nameLower + ".")).map((x) => x.substring(x.indexOf(".") + 1))
|
|
1640
1659
|
});
|
|
1641
1660
|
}
|
|
1642
1661
|
return schema;
|
|
@@ -2640,7 +2659,7 @@ var TypeDocumentFactory = class _TypeDocumentFactory {
|
|
|
2640
2659
|
return dataType;
|
|
2641
2660
|
throw new TypeError(`Class "${thunk.name}" doesn't have a valid DataType metadata`);
|
|
2642
2661
|
}
|
|
2643
|
-
name = metadata.name;
|
|
2662
|
+
name = metadata.anonymous ? void 0 : metadata.name;
|
|
2644
2663
|
initArguments = cloneObject(metadata);
|
|
2645
2664
|
ctor = thunk;
|
|
2646
2665
|
} else if (typeof thunk === "object") {
|
|
@@ -2652,7 +2671,7 @@ var TypeDocumentFactory = class _TypeDocumentFactory {
|
|
|
2652
2671
|
const metadata = thunk[DATATYPE_METADATA];
|
|
2653
2672
|
if (!metadata)
|
|
2654
2673
|
throw new TypeError(`No EnumType metadata found for object ${JSON.stringify(thunk).substring(0, 20)}...`);
|
|
2655
|
-
name = metadata.name;
|
|
2674
|
+
name = metadata.anonymous ? void 0 : metadata.name;
|
|
2656
2675
|
initArguments = cloneObject(metadata);
|
|
2657
2676
|
initArguments.enumObject = thunk;
|
|
2658
2677
|
}
|
|
@@ -2682,9 +2701,11 @@ var TypeDocumentFactory = class _TypeDocumentFactory {
|
|
|
2682
2701
|
if (name)
|
|
2683
2702
|
this.document.types.set(name, instance);
|
|
2684
2703
|
await this.prepareDataTypeInitArguments(initArguments, ctor);
|
|
2685
|
-
if (initArguments.kind === "ComplexType")
|
|
2704
|
+
if (initArguments.kind === "ComplexType") {
|
|
2705
|
+
if (typeof initArguments.additionalFields === "function")
|
|
2706
|
+
initArguments.additionalFields = await this.importDataType(initArguments.additionalFields);
|
|
2686
2707
|
ComplexType2.apply(instance, [this.document, initArguments]);
|
|
2687
|
-
else if (initArguments.kind === "SimpleType")
|
|
2708
|
+
} else if (initArguments.kind === "SimpleType")
|
|
2688
2709
|
SimpleType2.apply(instance, [this.document, initArguments]);
|
|
2689
2710
|
else if (initArguments.kind === "EnumType")
|
|
2690
2711
|
EnumType2.apply(instance, [this.document, initArguments]);
|
|
@@ -10320,11 +10341,11 @@ var _wrapEntryValue = /* @__PURE__ */ __name((v) => {
|
|
|
10320
10341
|
return new StringLiteral("" + v);
|
|
10321
10342
|
}, "_wrapEntryValue");
|
|
10322
10343
|
|
|
10323
|
-
// ../../build/common/esm/document/resource/operation.js
|
|
10344
|
+
// ../../build/common/esm/document/resource/crud-operation.js
|
|
10324
10345
|
import * as vg7 from "valgen";
|
|
10325
|
-
var
|
|
10346
|
+
var CrudOperation = class extends Endpoint {
|
|
10326
10347
|
static {
|
|
10327
|
-
__name(this, "
|
|
10348
|
+
__name(this, "CrudOperation");
|
|
10328
10349
|
}
|
|
10329
10350
|
constructor(resource, name, init) {
|
|
10330
10351
|
super(resource, name, init);
|
|
@@ -10335,6 +10356,26 @@ var Operation = class extends Endpoint {
|
|
|
10335
10356
|
this.encodeReturning = vg7.isAny();
|
|
10336
10357
|
this.returnType = init.returnType instanceof DataType ? init.returnType : this.resource.document.getDataType(init.returnType || "any");
|
|
10337
10358
|
this.encodeReturning = this.returnType.generateCodec("encode", { operation: "read" });
|
|
10359
|
+
if (init.options?.inputOverwriteFields)
|
|
10360
|
+
this.inputOverwriteFields = new ResponsiveMap(init.options.inputOverwriteFields);
|
|
10361
|
+
if (init.options?.outputOverwriteFields)
|
|
10362
|
+
this.outputOverwriteFields = new ResponsiveMap(init.options.outputOverwriteFields);
|
|
10363
|
+
}
|
|
10364
|
+
exportSchema(options) {
|
|
10365
|
+
const schema = super.exportSchema(options);
|
|
10366
|
+
if (this.inputOverwriteFields) {
|
|
10367
|
+
const trg = schema.options.inputOverwriteFields = {};
|
|
10368
|
+
Array.from(this.inputOverwriteFields.entries()).forEach(([k, o]) => {
|
|
10369
|
+
trg[k] = ApiField.prototype.exportSchema.call(o, options);
|
|
10370
|
+
});
|
|
10371
|
+
}
|
|
10372
|
+
if (this.outputOverwriteFields) {
|
|
10373
|
+
const trg = schema.options.outputOverwriteFields = {};
|
|
10374
|
+
Array.from(this.outputOverwriteFields.entries()).forEach(([k, o]) => {
|
|
10375
|
+
trg[k] = ApiField.prototype.exportSchema.call(o, options);
|
|
10376
|
+
});
|
|
10377
|
+
}
|
|
10378
|
+
return schema;
|
|
10338
10379
|
}
|
|
10339
10380
|
};
|
|
10340
10381
|
|
|
@@ -10348,7 +10389,7 @@ var CrudResource = class extends Resource {
|
|
|
10348
10389
|
this.operations = new ResponsiveMap();
|
|
10349
10390
|
if (init.operations) {
|
|
10350
10391
|
for (const [name, meta] of Object.entries(init.operations)) {
|
|
10351
|
-
this.operations.set(name, new
|
|
10392
|
+
this.operations.set(name, new CrudOperation(this, name, meta));
|
|
10352
10393
|
}
|
|
10353
10394
|
}
|
|
10354
10395
|
}
|
|
@@ -10391,16 +10432,18 @@ var CollectionClass = class extends CrudResource {
|
|
|
10391
10432
|
endpoint.defineParameter("include", { type: "string", isArray: true, isBuiltin: true });
|
|
10392
10433
|
endpoint.decodeInput = this.type.generateCodec("decode", {
|
|
10393
10434
|
partial: true,
|
|
10394
|
-
pick: endpoint.inputPickFields,
|
|
10395
|
-
omit: endpoint.inputOmitFields,
|
|
10396
|
-
operation: "write"
|
|
10435
|
+
pick: endpoint.options.inputPickFields,
|
|
10436
|
+
omit: endpoint.options.inputOmitFields,
|
|
10437
|
+
operation: "write",
|
|
10438
|
+
overwriteFields: endpoint.inputOverwriteFields
|
|
10397
10439
|
});
|
|
10398
10440
|
endpoint.returnType = this.type;
|
|
10399
10441
|
endpoint.encodeReturning = endpoint.returnType.generateCodec("encode", {
|
|
10400
10442
|
partial: true,
|
|
10401
|
-
pick: endpoint.outputPickFields,
|
|
10402
|
-
omit: endpoint.outputOmitFields,
|
|
10403
|
-
operation: "read"
|
|
10443
|
+
pick: endpoint.options.outputPickFields,
|
|
10444
|
+
omit: endpoint.options.outputOmitFields,
|
|
10445
|
+
operation: "read",
|
|
10446
|
+
overwriteFields: endpoint.outputOverwriteFields
|
|
10404
10447
|
});
|
|
10405
10448
|
}
|
|
10406
10449
|
endpoint = this.operations.get("deleteMany");
|
|
@@ -10415,9 +10458,10 @@ var CollectionClass = class extends CrudResource {
|
|
|
10415
10458
|
endpoint.returnType = this.type;
|
|
10416
10459
|
endpoint.encodeReturning = endpoint.returnType.generateCodec("encode", {
|
|
10417
10460
|
partial: true,
|
|
10418
|
-
pick: endpoint.outputPickFields,
|
|
10419
|
-
omit: endpoint.outputOmitFields,
|
|
10420
|
-
operation: "read"
|
|
10461
|
+
pick: endpoint.options.outputPickFields,
|
|
10462
|
+
omit: endpoint.options.outputOmitFields,
|
|
10463
|
+
operation: "read",
|
|
10464
|
+
overwriteFields: endpoint.outputOverwriteFields
|
|
10421
10465
|
});
|
|
10422
10466
|
}
|
|
10423
10467
|
endpoint = this.operations.get("findMany");
|
|
@@ -10434,9 +10478,10 @@ var CollectionClass = class extends CrudResource {
|
|
|
10434
10478
|
endpoint.returnType = this.type;
|
|
10435
10479
|
endpoint.encodeReturning = vg8.isArray(this.type.generateCodec("encode", {
|
|
10436
10480
|
partial: true,
|
|
10437
|
-
pick: endpoint.outputPickFields,
|
|
10438
|
-
omit: endpoint.outputOmitFields,
|
|
10439
|
-
operation: "read"
|
|
10481
|
+
pick: endpoint.options.outputPickFields,
|
|
10482
|
+
omit: endpoint.options.outputOmitFields,
|
|
10483
|
+
operation: "read",
|
|
10484
|
+
overwriteFields: endpoint.outputOverwriteFields
|
|
10440
10485
|
}));
|
|
10441
10486
|
}
|
|
10442
10487
|
endpoint = this.operations.get("update");
|
|
@@ -10445,31 +10490,31 @@ var CollectionClass = class extends CrudResource {
|
|
|
10445
10490
|
endpoint.defineParameter("omit", { type: "string", isArray: true, isBuiltin: true });
|
|
10446
10491
|
endpoint.defineParameter("include", { type: "string", isArray: true, isBuiltin: true });
|
|
10447
10492
|
endpoint.decodeInput = this.type.generateCodec("decode", {
|
|
10448
|
-
pick: endpoint.inputPickFields,
|
|
10449
|
-
omit: endpoint.inputOmitFields,
|
|
10450
|
-
operation: "write"
|
|
10493
|
+
pick: endpoint.options.inputPickFields,
|
|
10494
|
+
omit: endpoint.options.inputOmitFields,
|
|
10495
|
+
operation: "write",
|
|
10496
|
+
overwriteFields: endpoint.inputOverwriteFields
|
|
10451
10497
|
});
|
|
10452
10498
|
endpoint.returnType = this.type;
|
|
10453
10499
|
endpoint.encodeReturning = endpoint.returnType.generateCodec("encode", {
|
|
10454
10500
|
partial: true,
|
|
10455
|
-
pick: endpoint.outputPickFields,
|
|
10456
|
-
omit: endpoint.outputOmitFields,
|
|
10457
|
-
operation: "read"
|
|
10501
|
+
pick: endpoint.options.outputPickFields,
|
|
10502
|
+
omit: endpoint.options.outputOmitFields,
|
|
10503
|
+
operation: "read",
|
|
10504
|
+
overwriteFields: endpoint.outputOverwriteFields
|
|
10458
10505
|
});
|
|
10459
10506
|
}
|
|
10460
10507
|
endpoint = this.operations.get("updateMany");
|
|
10461
10508
|
if (endpoint) {
|
|
10462
10509
|
endpoint.defineParameter("filter", { type: "string", isBuiltin: true });
|
|
10463
10510
|
endpoint.decodeInput = this.type.generateCodec("decode", {
|
|
10464
|
-
pick: endpoint.inputPickFields,
|
|
10465
|
-
omit: endpoint.inputOmitFields,
|
|
10466
|
-
operation: "write"
|
|
10511
|
+
pick: endpoint.options.inputPickFields,
|
|
10512
|
+
omit: endpoint.options.inputOmitFields,
|
|
10513
|
+
operation: "write",
|
|
10514
|
+
overwriteFields: endpoint.inputOverwriteFields
|
|
10467
10515
|
});
|
|
10468
10516
|
}
|
|
10469
10517
|
}
|
|
10470
|
-
getOperation(name) {
|
|
10471
|
-
return super.getOperation(name);
|
|
10472
|
-
}
|
|
10473
10518
|
exportSchema(options) {
|
|
10474
10519
|
return {
|
|
10475
10520
|
...super.exportSchema(options),
|
|
@@ -10516,7 +10561,7 @@ var CollectionClass = class extends CrudResource {
|
|
|
10516
10561
|
if (!normalized)
|
|
10517
10562
|
return;
|
|
10518
10563
|
const findManyOp = this.getOperation("findMany");
|
|
10519
|
-
const sortFields = findManyOp && findManyOp.sortFields;
|
|
10564
|
+
const sortFields = findManyOp && findManyOp.options.sortFields;
|
|
10520
10565
|
(Array.isArray(normalized) ? normalized : [normalized]).forEach((field) => {
|
|
10521
10566
|
if (!sortFields?.find((x) => x === field))
|
|
10522
10567
|
throw new BadRequestError({
|
|
@@ -10535,13 +10580,13 @@ var CollectionClass = class extends CrudResource {
|
|
|
10535
10580
|
throw new TypeError(`Invalid filter query. Left side should be a data field.`);
|
|
10536
10581
|
const findManyOp = this.getOperation("findMany");
|
|
10537
10582
|
const fieldLower = ast.left.value.toLowerCase();
|
|
10538
|
-
const filterDef = (findManyOp && findManyOp.filters || []).find((f) => f.field.toLowerCase() === fieldLower);
|
|
10583
|
+
const filterDef = (findManyOp && findManyOp.options.filters || []).find((f) => f.field.toLowerCase() === fieldLower);
|
|
10539
10584
|
if (!filterDef) {
|
|
10540
10585
|
throw new BadRequestError({
|
|
10541
10586
|
message: translate("error:UNACCEPTED_FILTER_FIELD", { field: ast.left.value })
|
|
10542
10587
|
});
|
|
10543
10588
|
}
|
|
10544
|
-
if (!filterDef.operators
|
|
10589
|
+
if (filterDef.operators && !filterDef.operators.includes(ast.op))
|
|
10545
10590
|
throw new BadRequestError({
|
|
10546
10591
|
message: translate("error:UNACCEPTED_FILTER_OPERATION", { field: ast.left.value })
|
|
10547
10592
|
});
|
|
@@ -10575,14 +10620,15 @@ var CollectionClass = class extends CrudResource {
|
|
|
10575
10620
|
}
|
|
10576
10621
|
};
|
|
10577
10622
|
|
|
10578
|
-
// ../../build/common/esm/document/resource/operation-decorator.js
|
|
10579
|
-
function createOperationDecorator(operation,
|
|
10623
|
+
// ../../build/common/esm/document/resource/crud-operation-decorator.js
|
|
10624
|
+
function createOperationDecorator(operation, init, list) {
|
|
10580
10625
|
const decorator = /* @__PURE__ */ __name((target, propertyKey) => {
|
|
10581
10626
|
if (propertyKey !== operation)
|
|
10582
10627
|
throw new TypeError(`Name of the handler name should be '${operation}'`);
|
|
10583
10628
|
const resourceMetadata = Reflect.getOwnMetadata(RESOURCE_METADATA, target.constructor) || {};
|
|
10584
10629
|
resourceMetadata.operations = resourceMetadata.operations || {};
|
|
10585
|
-
const operationMeta = { ...
|
|
10630
|
+
const operationMeta = { ...init };
|
|
10631
|
+
operationMeta.options = operationMeta.options || {};
|
|
10586
10632
|
resourceMetadata.operations[operation] = operationMeta;
|
|
10587
10633
|
for (const fn of list)
|
|
10588
10634
|
fn(operationMeta, target, propertyKey);
|
|
@@ -10618,23 +10664,31 @@ Object.assign(CollectionDecorator, ResourceDecorator);
|
|
|
10618
10664
|
const list = [];
|
|
10619
10665
|
const decorator = createOperationDecorator("create", options, list);
|
|
10620
10666
|
decorator.InputMaxContentSize = (sizeInBytes) => {
|
|
10621
|
-
list.push((operationMeta) => operationMeta.inputMaxContentSize = sizeInBytes);
|
|
10667
|
+
list.push((operationMeta) => operationMeta.options.inputMaxContentSize = sizeInBytes);
|
|
10622
10668
|
return decorator;
|
|
10623
10669
|
};
|
|
10624
10670
|
decorator.InputPickFields = (...fields) => {
|
|
10625
|
-
list.push((operationMeta) => operationMeta.inputPickFields = fields);
|
|
10671
|
+
list.push((operationMeta) => operationMeta.options.inputPickFields = fields);
|
|
10626
10672
|
return decorator;
|
|
10627
10673
|
};
|
|
10628
10674
|
decorator.InputOmitFields = (...fields) => {
|
|
10629
|
-
list.push((operationMeta) => operationMeta.inputOmitFields = fields);
|
|
10675
|
+
list.push((operationMeta) => operationMeta.options.inputOmitFields = fields);
|
|
10676
|
+
return decorator;
|
|
10677
|
+
};
|
|
10678
|
+
decorator.InputOverwriteFields = (fields) => {
|
|
10679
|
+
list.push((operationMeta) => operationMeta.options.inputOverwriteFields = fields);
|
|
10630
10680
|
return decorator;
|
|
10631
10681
|
};
|
|
10632
10682
|
decorator.OutputPickFields = (...fields) => {
|
|
10633
|
-
list.push((operationMeta) => operationMeta.outputPickFields = fields);
|
|
10683
|
+
list.push((operationMeta) => operationMeta.options.outputPickFields = fields);
|
|
10634
10684
|
return decorator;
|
|
10635
10685
|
};
|
|
10636
10686
|
decorator.OutputOmitFields = (...fields) => {
|
|
10637
|
-
list.push((operationMeta) => operationMeta.outputOmitFields = fields);
|
|
10687
|
+
list.push((operationMeta) => operationMeta.options.outputOmitFields = fields);
|
|
10688
|
+
return decorator;
|
|
10689
|
+
};
|
|
10690
|
+
decorator.OutputOverwriteFields = (fields) => {
|
|
10691
|
+
list.push((operationMeta) => operationMeta.options.outputOverwriteFields = fields);
|
|
10638
10692
|
return decorator;
|
|
10639
10693
|
};
|
|
10640
10694
|
return decorator;
|
|
@@ -10654,8 +10708,8 @@ Object.assign(CollectionDecorator, ResourceDecorator);
|
|
|
10654
10708
|
if (typeof operators === "string")
|
|
10655
10709
|
operators = operators.split(/\s*[,| ]\s*/);
|
|
10656
10710
|
list.push((operationMeta) => {
|
|
10657
|
-
operationMeta.filters = operationMeta.filters || [];
|
|
10658
|
-
operationMeta.filters.push(omitUndefined({ field, operators, notes }));
|
|
10711
|
+
operationMeta.options.filters = operationMeta.options.filters || [];
|
|
10712
|
+
operationMeta.options.filters.push(omitUndefined({ field, operators, notes }));
|
|
10659
10713
|
});
|
|
10660
10714
|
return decorator;
|
|
10661
10715
|
};
|
|
@@ -10667,11 +10721,15 @@ Object.assign(CollectionDecorator, ResourceDecorator);
|
|
|
10667
10721
|
const list = [];
|
|
10668
10722
|
const decorator = createOperationDecorator("get", options, list);
|
|
10669
10723
|
decorator.OutputPickFields = (...fields) => {
|
|
10670
|
-
list.push((operationMeta) => operationMeta.outputPickFields = fields);
|
|
10724
|
+
list.push((operationMeta) => operationMeta.options.outputPickFields = fields);
|
|
10671
10725
|
return decorator;
|
|
10672
10726
|
};
|
|
10673
10727
|
decorator.OutputOmitFields = (...fields) => {
|
|
10674
|
-
list.push((operationMeta) => operationMeta.outputOmitFields = fields);
|
|
10728
|
+
list.push((operationMeta) => operationMeta.options.outputOmitFields = fields);
|
|
10729
|
+
return decorator;
|
|
10730
|
+
};
|
|
10731
|
+
decorator.OutputOverwriteFields = (fields) => {
|
|
10732
|
+
list.push((operationMeta) => operationMeta.options.outputOverwriteFields = fields);
|
|
10675
10733
|
return decorator;
|
|
10676
10734
|
};
|
|
10677
10735
|
return decorator;
|
|
@@ -10682,28 +10740,32 @@ Object.assign(CollectionDecorator, ResourceDecorator);
|
|
|
10682
10740
|
const list = [];
|
|
10683
10741
|
const decorator = createOperationDecorator("findMany", options, list);
|
|
10684
10742
|
decorator.SortFields = (...fields) => {
|
|
10685
|
-
list.push((operationMeta) => operationMeta.sortFields = fields);
|
|
10743
|
+
list.push((operationMeta) => operationMeta.options.sortFields = fields);
|
|
10686
10744
|
return decorator;
|
|
10687
10745
|
};
|
|
10688
10746
|
decorator.DefaultSort = (...fields) => {
|
|
10689
|
-
list.push((operationMeta) => operationMeta.defaultSort = fields);
|
|
10747
|
+
list.push((operationMeta) => operationMeta.options.defaultSort = fields);
|
|
10690
10748
|
return decorator;
|
|
10691
10749
|
};
|
|
10692
10750
|
decorator.Filter = (field, operators, notes) => {
|
|
10693
10751
|
if (typeof operators === "string")
|
|
10694
10752
|
operators = operators.split(/\s*[,| ]\s*/);
|
|
10695
10753
|
list.push((operationMeta) => {
|
|
10696
|
-
operationMeta.filters = operationMeta.filters || [];
|
|
10697
|
-
operationMeta.filters.push(omitUndefined({ field, operators, notes }));
|
|
10754
|
+
operationMeta.options.filters = operationMeta.options.filters || [];
|
|
10755
|
+
operationMeta.options.filters.push(omitUndefined({ field, operators, notes }));
|
|
10698
10756
|
});
|
|
10699
10757
|
return decorator;
|
|
10700
10758
|
};
|
|
10701
10759
|
decorator.OutputPickFields = (...fields) => {
|
|
10702
|
-
list.push((operationMeta) => operationMeta.outputPickFields = fields);
|
|
10760
|
+
list.push((operationMeta) => operationMeta.options.outputPickFields = fields);
|
|
10703
10761
|
return decorator;
|
|
10704
10762
|
};
|
|
10705
10763
|
decorator.OutputOmitFields = (...fields) => {
|
|
10706
|
-
list.push((operationMeta) => operationMeta.outputOmitFields = fields);
|
|
10764
|
+
list.push((operationMeta) => operationMeta.options.outputOmitFields = fields);
|
|
10765
|
+
return decorator;
|
|
10766
|
+
};
|
|
10767
|
+
decorator.OutputOverwriteFields = (fields) => {
|
|
10768
|
+
list.push((operationMeta) => operationMeta.options.outputOverwriteFields = fields);
|
|
10707
10769
|
return decorator;
|
|
10708
10770
|
};
|
|
10709
10771
|
return decorator;
|
|
@@ -10716,23 +10778,31 @@ Object.assign(CollectionDecorator, ResourceDecorator);
|
|
|
10716
10778
|
const list = [];
|
|
10717
10779
|
const decorator = createOperationDecorator("update", options, list);
|
|
10718
10780
|
decorator.InputMaxContentSize = (sizeInBytes) => {
|
|
10719
|
-
list.push((operationMeta) => operationMeta.inputMaxContentSize = sizeInBytes);
|
|
10781
|
+
list.push((operationMeta) => operationMeta.options.inputMaxContentSize = sizeInBytes);
|
|
10720
10782
|
return decorator;
|
|
10721
10783
|
};
|
|
10722
10784
|
decorator.InputPickFields = (...fields) => {
|
|
10723
|
-
list.push((operationMeta) => operationMeta.inputPickFields = fields);
|
|
10785
|
+
list.push((operationMeta) => operationMeta.options.inputPickFields = fields);
|
|
10724
10786
|
return decorator;
|
|
10725
10787
|
};
|
|
10726
10788
|
decorator.InputOmitFields = (...fields) => {
|
|
10727
|
-
list.push((operationMeta) => operationMeta.inputOmitFields = fields);
|
|
10789
|
+
list.push((operationMeta) => operationMeta.options.inputOmitFields = fields);
|
|
10790
|
+
return decorator;
|
|
10791
|
+
};
|
|
10792
|
+
decorator.InputOverwriteFields = (fields) => {
|
|
10793
|
+
list.push((operationMeta) => operationMeta.options.inputOverwriteFields = fields);
|
|
10728
10794
|
return decorator;
|
|
10729
10795
|
};
|
|
10730
10796
|
decorator.OutputPickFields = (...fields) => {
|
|
10731
|
-
list.push((operationMeta) => operationMeta.outputPickFields = fields);
|
|
10797
|
+
list.push((operationMeta) => operationMeta.options.outputPickFields = fields);
|
|
10732
10798
|
return decorator;
|
|
10733
10799
|
};
|
|
10734
10800
|
decorator.OutputOmitFields = (...fields) => {
|
|
10735
|
-
list.push((operationMeta) => operationMeta.outputOmitFields = fields);
|
|
10801
|
+
list.push((operationMeta) => operationMeta.options.outputOmitFields = fields);
|
|
10802
|
+
return decorator;
|
|
10803
|
+
};
|
|
10804
|
+
decorator.OutputOverwriteFields = (fields) => {
|
|
10805
|
+
list.push((operationMeta) => operationMeta.options.outputOverwriteFields = fields);
|
|
10736
10806
|
return decorator;
|
|
10737
10807
|
};
|
|
10738
10808
|
return decorator;
|
|
@@ -10746,23 +10816,27 @@ Object.assign(CollectionDecorator, ResourceDecorator);
|
|
|
10746
10816
|
const options = typeof arg0 === "string" ? { description: arg0 } : { ...arg0 };
|
|
10747
10817
|
const decorator = createOperationDecorator("updateMany", options, list);
|
|
10748
10818
|
decorator.InputMaxContentSize = (sizeInBytes) => {
|
|
10749
|
-
list.push((operationMeta) => operationMeta.inputMaxContentSize = sizeInBytes);
|
|
10819
|
+
list.push((operationMeta) => operationMeta.options.inputMaxContentSize = sizeInBytes);
|
|
10750
10820
|
return decorator;
|
|
10751
10821
|
};
|
|
10752
10822
|
decorator.InputPickFields = (...fields) => {
|
|
10753
|
-
list.push((operationMeta) => operationMeta.inputPickFields = fields);
|
|
10823
|
+
list.push((operationMeta) => operationMeta.options.inputPickFields = fields);
|
|
10754
10824
|
return decorator;
|
|
10755
10825
|
};
|
|
10756
10826
|
decorator.InputOmitFields = (...fields) => {
|
|
10757
|
-
list.push((operationMeta) => operationMeta.inputOmitFields = fields);
|
|
10827
|
+
list.push((operationMeta) => operationMeta.options.inputOmitFields = fields);
|
|
10828
|
+
return decorator;
|
|
10829
|
+
};
|
|
10830
|
+
decorator.InputOverwriteFields = (fields) => {
|
|
10831
|
+
list.push((operationMeta) => operationMeta.options.inputOverwriteFields = fields);
|
|
10758
10832
|
return decorator;
|
|
10759
10833
|
};
|
|
10760
10834
|
decorator.Filter = (field, operators, notes) => {
|
|
10761
10835
|
if (typeof operators === "string")
|
|
10762
10836
|
operators = operators.split(/\s*[,| ]\s*/);
|
|
10763
10837
|
list.push((operationMeta) => {
|
|
10764
|
-
operationMeta.filters = operationMeta.filters || [];
|
|
10765
|
-
operationMeta.filters.push(omitUndefined({ field, operators, notes }));
|
|
10838
|
+
operationMeta.options.filters = operationMeta.options.filters || [];
|
|
10839
|
+
operationMeta.options.filters.push(omitUndefined({ field, operators, notes }));
|
|
10766
10840
|
});
|
|
10767
10841
|
return decorator;
|
|
10768
10842
|
};
|
|
@@ -10804,16 +10878,18 @@ var SingletonClass = class extends CrudResource {
|
|
|
10804
10878
|
endpoint.defineParameter("include", { type: "string", isArray: true, isBuiltin: true });
|
|
10805
10879
|
endpoint.decodeInput = this.type.generateCodec("decode", {
|
|
10806
10880
|
partial: true,
|
|
10807
|
-
pick: endpoint.inputPickFields,
|
|
10808
|
-
omit: endpoint.inputOmitFields,
|
|
10809
|
-
operation: "write"
|
|
10881
|
+
pick: endpoint.options.inputPickFields,
|
|
10882
|
+
omit: endpoint.options.inputOmitFields,
|
|
10883
|
+
operation: "write",
|
|
10884
|
+
overwriteFields: endpoint.inputOverwriteFields
|
|
10810
10885
|
});
|
|
10811
10886
|
endpoint.returnType = this.type;
|
|
10812
10887
|
endpoint.encodeReturning = endpoint.returnType.generateCodec("encode", {
|
|
10813
10888
|
partial: true,
|
|
10814
|
-
pick: endpoint.outputPickFields,
|
|
10815
|
-
omit: endpoint.outputOmitFields,
|
|
10816
|
-
operation: "read"
|
|
10889
|
+
pick: endpoint.options.outputPickFields,
|
|
10890
|
+
omit: endpoint.options.outputOmitFields,
|
|
10891
|
+
operation: "read",
|
|
10892
|
+
overwriteFields: endpoint.outputOverwriteFields
|
|
10817
10893
|
});
|
|
10818
10894
|
}
|
|
10819
10895
|
endpoint = this.operations.get("get");
|
|
@@ -10824,9 +10900,10 @@ var SingletonClass = class extends CrudResource {
|
|
|
10824
10900
|
endpoint.returnType = this.type;
|
|
10825
10901
|
endpoint.encodeReturning = endpoint.returnType.generateCodec("encode", {
|
|
10826
10902
|
partial: true,
|
|
10827
|
-
pick: endpoint.outputPickFields,
|
|
10828
|
-
omit: endpoint.outputOmitFields,
|
|
10829
|
-
operation: "read"
|
|
10903
|
+
pick: endpoint.options.outputPickFields,
|
|
10904
|
+
omit: endpoint.options.outputOmitFields,
|
|
10905
|
+
operation: "read",
|
|
10906
|
+
overwriteFields: endpoint.outputOverwriteFields
|
|
10830
10907
|
});
|
|
10831
10908
|
}
|
|
10832
10909
|
endpoint = this.operations.get("update");
|
|
@@ -10835,16 +10912,18 @@ var SingletonClass = class extends CrudResource {
|
|
|
10835
10912
|
endpoint.defineParameter("omit", { type: "string", isArray: true, isBuiltin: true });
|
|
10836
10913
|
endpoint.defineParameter("include", { type: "string", isArray: true, isBuiltin: true });
|
|
10837
10914
|
endpoint.decodeInput = this.type.generateCodec("decode", {
|
|
10838
|
-
pick: endpoint.inputPickFields,
|
|
10839
|
-
omit: endpoint.inputOmitFields,
|
|
10840
|
-
operation: "write"
|
|
10915
|
+
pick: endpoint.options.inputPickFields,
|
|
10916
|
+
omit: endpoint.options.inputOmitFields,
|
|
10917
|
+
operation: "write",
|
|
10918
|
+
overwriteFields: endpoint.inputOverwriteFields
|
|
10841
10919
|
});
|
|
10842
10920
|
endpoint.returnType = this.type;
|
|
10843
10921
|
endpoint.encodeReturning = endpoint.returnType.generateCodec("encode", {
|
|
10844
10922
|
partial: true,
|
|
10845
|
-
pick: endpoint.outputPickFields,
|
|
10846
|
-
omit: endpoint.outputOmitFields,
|
|
10847
|
-
operation: "read"
|
|
10923
|
+
pick: endpoint.options.outputPickFields,
|
|
10924
|
+
omit: endpoint.options.outputOmitFields,
|
|
10925
|
+
operation: "read",
|
|
10926
|
+
overwriteFields: endpoint.outputOverwriteFields
|
|
10848
10927
|
});
|
|
10849
10928
|
}
|
|
10850
10929
|
}
|
|
@@ -10967,27 +11046,27 @@ Object.assign(StorageDecorator, ResourceDecorator);
|
|
|
10967
11046
|
const list = [];
|
|
10968
11047
|
const decorator = createOperationDecorator("post", options, list);
|
|
10969
11048
|
decorator.MaxFields = (amount) => {
|
|
10970
|
-
list.push((operationMeta) => operationMeta.maxFields = amount);
|
|
11049
|
+
list.push((operationMeta) => operationMeta.options.maxFields = amount);
|
|
10971
11050
|
return decorator;
|
|
10972
11051
|
};
|
|
10973
11052
|
decorator.MaxFieldSize = (amount) => {
|
|
10974
|
-
list.push((operationMeta) => operationMeta.maxFieldsSize = amount);
|
|
11053
|
+
list.push((operationMeta) => operationMeta.options.maxFieldsSize = amount);
|
|
10975
11054
|
return decorator;
|
|
10976
11055
|
};
|
|
10977
11056
|
decorator.MaxFiles = (amount) => {
|
|
10978
|
-
list.push((operationMeta) => operationMeta.maxFiles = amount);
|
|
11057
|
+
list.push((operationMeta) => operationMeta.options.maxFiles = amount);
|
|
10979
11058
|
return decorator;
|
|
10980
11059
|
};
|
|
10981
11060
|
decorator.MaxFileSize = (sizeInBytes) => {
|
|
10982
|
-
list.push((operationMeta) => operationMeta.maxFileSize = sizeInBytes);
|
|
11061
|
+
list.push((operationMeta) => operationMeta.options.maxFileSize = sizeInBytes);
|
|
10983
11062
|
return decorator;
|
|
10984
11063
|
};
|
|
10985
11064
|
decorator.MaxTotalFileSize = (sizeInBytes) => {
|
|
10986
|
-
list.push((operationMeta) => operationMeta.maxTotalFileSize = sizeInBytes);
|
|
11065
|
+
list.push((operationMeta) => operationMeta.options.maxTotalFileSize = sizeInBytes);
|
|
10987
11066
|
return decorator;
|
|
10988
11067
|
};
|
|
10989
11068
|
decorator.MinFileSize = (sizeInBytes) => {
|
|
10990
|
-
list.push((operationMeta) => operationMeta.minFileSize = sizeInBytes);
|
|
11069
|
+
list.push((operationMeta) => operationMeta.options.minFileSize = sizeInBytes);
|
|
10991
11070
|
return decorator;
|
|
10992
11071
|
};
|
|
10993
11072
|
return decorator;
|
|
@@ -11153,9 +11232,9 @@ var ApiDocumentFactory = class _ApiDocumentFactory extends TypeDocumentFactory {
|
|
|
11153
11232
|
return;
|
|
11154
11233
|
const output = {};
|
|
11155
11234
|
for (const [kA, oA] of Object.entries(source)) {
|
|
11156
|
-
|
|
11235
|
+
const o = output[kA] = { ...oA };
|
|
11157
11236
|
if (oA.parameters) {
|
|
11158
|
-
parameters = {};
|
|
11237
|
+
const parameters = o.parameters = {};
|
|
11159
11238
|
for (const [kP, oP] of Object.entries(oA.parameters)) {
|
|
11160
11239
|
if (oP.enum) {
|
|
11161
11240
|
oP.type = EnumType2(oP.enum, { name: kP + "Enum" });
|
|
@@ -11166,7 +11245,30 @@ var ApiDocumentFactory = class _ApiDocumentFactory extends TypeDocumentFactory {
|
|
|
11166
11245
|
};
|
|
11167
11246
|
}
|
|
11168
11247
|
}
|
|
11169
|
-
|
|
11248
|
+
if (oA.options?.inputOverwriteFields) {
|
|
11249
|
+
const inputOverwriteFields = {};
|
|
11250
|
+
for (const [kP, oP] of Object.entries(oA.options.inputOverwriteFields)) {
|
|
11251
|
+
if (oP.enum) {
|
|
11252
|
+
oP.type = EnumType2(oP.enum, { name: kP + "Enum" });
|
|
11253
|
+
}
|
|
11254
|
+
inputOverwriteFields[kP] = { ...oP };
|
|
11255
|
+
if (oP.type)
|
|
11256
|
+
inputOverwriteFields[kP].type = await this.importDataType(oP.type);
|
|
11257
|
+
}
|
|
11258
|
+
o.options.inputOverwriteFields = inputOverwriteFields;
|
|
11259
|
+
}
|
|
11260
|
+
if (oA.options?.outputOverwriteFields) {
|
|
11261
|
+
const outputOverwriteFields = {};
|
|
11262
|
+
for (const [kP, oP] of Object.entries(oA.options.outputOverwriteFields)) {
|
|
11263
|
+
if (oP.enum) {
|
|
11264
|
+
oP.type = EnumType2(oP.enum, { name: kP + "Enum" });
|
|
11265
|
+
}
|
|
11266
|
+
outputOverwriteFields[kP] = { ...oP };
|
|
11267
|
+
if (oP.type)
|
|
11268
|
+
outputOverwriteFields[kP].type = await this.importDataType(oP.type);
|
|
11269
|
+
}
|
|
11270
|
+
o.options.outputOverwriteFields = outputOverwriteFields;
|
|
11271
|
+
}
|
|
11170
11272
|
}
|
|
11171
11273
|
return output;
|
|
11172
11274
|
}, "convertEndpoints");
|
|
@@ -11935,6 +12037,7 @@ export {
|
|
|
11935
12037
|
Collection2 as Collection,
|
|
11936
12038
|
ComplexType2 as ComplexType,
|
|
11937
12039
|
Container2 as Container,
|
|
12040
|
+
CrudOperation,
|
|
11938
12041
|
CrudResource,
|
|
11939
12042
|
DATATYPE_METADATA,
|
|
11940
12043
|
DECORATOR,
|
|
@@ -11956,7 +12059,6 @@ export {
|
|
|
11956
12059
|
NotAcceptableError,
|
|
11957
12060
|
NotFoundError,
|
|
11958
12061
|
OmitType,
|
|
11959
|
-
Operation,
|
|
11960
12062
|
OperationResult,
|
|
11961
12063
|
OpraException,
|
|
11962
12064
|
opra_filter_ns_exports as OpraFilter,
|