@aws-amplify/data-schema 1.3.10 → 1.4.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/cjs/ModelType.js +5 -0
- package/dist/cjs/ModelType.js.map +1 -1
- package/dist/cjs/SchemaProcessor.js +58 -1
- package/dist/cjs/SchemaProcessor.js.map +1 -1
- package/dist/cjs/runtime/addSchemaToClient.js +1 -0
- package/dist/cjs/runtime/addSchemaToClient.js.map +1 -1
- package/dist/cjs/runtime/addSchemaToClientWithInstance.js +1 -0
- package/dist/cjs/runtime/addSchemaToClientWithInstance.js.map +1 -1
- package/dist/cjs/runtime/internals/APIClient.js +63 -42
- package/dist/cjs/runtime/internals/APIClient.js.map +1 -1
- package/dist/cjs/runtime/internals/cancellation.js +48 -0
- package/dist/cjs/runtime/internals/cancellation.js.map +1 -0
- package/dist/cjs/runtime/internals/clientUtils.js +45 -3
- package/dist/cjs/runtime/internals/clientUtils.js.map +1 -1
- package/dist/cjs/runtime/internals/index.js +3 -1
- package/dist/cjs/runtime/internals/index.js.map +1 -1
- package/dist/cjs/runtime/internals/operations/custom.js +91 -85
- package/dist/cjs/runtime/internals/operations/custom.js.map +1 -1
- package/dist/cjs/runtime/internals/operations/get.js +71 -65
- package/dist/cjs/runtime/internals/operations/get.js.map +1 -1
- package/dist/cjs/runtime/internals/operations/indexQuery.js +66 -60
- package/dist/cjs/runtime/internals/operations/indexQuery.js.map +1 -1
- package/dist/cjs/runtime/internals/operations/list.js +90 -84
- package/dist/cjs/runtime/internals/operations/list.js.map +1 -1
- package/dist/cjs/runtime/internals/server/generateModelsProperty.js +3 -3
- package/dist/cjs/runtime/internals/server/generateModelsProperty.js.map +1 -1
- package/dist/cjs/runtime/internals/utils/clientProperties/generateModelsProperty.js +3 -3
- package/dist/cjs/runtime/internals/utils/clientProperties/generateModelsProperty.js.map +1 -1
- package/dist/cjs/runtime/utils/index.js +3 -1
- package/dist/cjs/runtime/utils/index.js.map +1 -1
- package/dist/cjs/runtime/utils/selfAwareAsync.js +40 -0
- package/dist/cjs/runtime/utils/selfAwareAsync.js.map +1 -0
- package/dist/esm/Authorization.d.ts +1 -1
- package/dist/esm/ClientSchema/Core/ClientModel.d.ts +20 -1
- package/dist/esm/ClientSchema/utilities/ResolveField.d.ts +5 -1
- package/dist/esm/ModelType.d.ts +6 -0
- package/dist/esm/ModelType.mjs +5 -0
- package/dist/esm/ModelType.mjs.map +1 -1
- package/dist/esm/SchemaProcessor.mjs +58 -1
- package/dist/esm/SchemaProcessor.mjs.map +1 -1
- package/dist/esm/runtime/addSchemaToClient.mjs +2 -0
- package/dist/esm/runtime/addSchemaToClient.mjs.map +1 -1
- package/dist/esm/runtime/addSchemaToClientWithInstance.mjs +2 -0
- package/dist/esm/runtime/addSchemaToClientWithInstance.mjs.map +1 -1
- package/dist/esm/runtime/bridge-types.d.ts +2 -2
- package/dist/esm/runtime/client/index.d.ts +6 -6
- package/dist/esm/runtime/internals/APIClient.d.ts +2 -2
- package/dist/esm/runtime/internals/APIClient.mjs +64 -42
- package/dist/esm/runtime/internals/APIClient.mjs.map +1 -1
- package/dist/esm/runtime/internals/cancellation.d.ts +10 -0
- package/dist/esm/runtime/internals/cancellation.mjs +44 -0
- package/dist/esm/runtime/internals/cancellation.mjs.map +1 -0
- package/dist/esm/runtime/internals/clientUtils.d.ts +78 -1
- package/dist/esm/runtime/internals/clientUtils.mjs +45 -3
- package/dist/esm/runtime/internals/clientUtils.mjs.map +1 -1
- package/dist/esm/runtime/internals/index.d.ts +1 -0
- package/dist/esm/runtime/internals/index.mjs +1 -0
- package/dist/esm/runtime/internals/index.mjs.map +1 -1
- package/dist/esm/runtime/internals/operations/custom.d.ts +1 -1
- package/dist/esm/runtime/internals/operations/custom.mjs +91 -85
- package/dist/esm/runtime/internals/operations/custom.mjs.map +1 -1
- package/dist/esm/runtime/internals/operations/get.d.ts +1 -1
- package/dist/esm/runtime/internals/operations/get.mjs +71 -65
- package/dist/esm/runtime/internals/operations/get.mjs.map +1 -1
- package/dist/esm/runtime/internals/operations/indexQuery.d.ts +1 -1
- package/dist/esm/runtime/internals/operations/indexQuery.mjs +66 -60
- package/dist/esm/runtime/internals/operations/indexQuery.mjs.map +1 -1
- package/dist/esm/runtime/internals/operations/list.d.ts +1 -1
- package/dist/esm/runtime/internals/operations/list.mjs +90 -84
- package/dist/esm/runtime/internals/operations/list.mjs.map +1 -1
- package/dist/esm/runtime/internals/server/generateModelsProperty.mjs +4 -4
- package/dist/esm/runtime/internals/server/generateModelsProperty.mjs.map +1 -1
- package/dist/esm/runtime/internals/utils/clientProperties/generateModelsProperty.mjs +4 -4
- package/dist/esm/runtime/internals/utils/clientProperties/generateModelsProperty.mjs.map +1 -1
- package/dist/esm/runtime/utils/index.d.ts +1 -0
- package/dist/esm/runtime/utils/index.mjs +1 -0
- package/dist/esm/runtime/utils/index.mjs.map +1 -1
- package/dist/esm/runtime/utils/selfAwareAsync.d.ts +19 -0
- package/dist/esm/runtime/utils/selfAwareAsync.mjs +37 -0
- package/dist/esm/runtime/utils/selfAwareAsync.mjs.map +1 -0
- package/dist/meta/cjs.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/src/ClientSchema/Core/ClientModel.ts +29 -0
- package/src/ClientSchema/utilities/ResolveField.ts +26 -6
- package/src/ModelType.ts +31 -0
- package/src/SchemaProcessor.ts +77 -2
- package/src/runtime/addSchemaToClient.ts +2 -0
- package/src/runtime/addSchemaToClientWithInstance.ts +2 -0
- package/src/runtime/bridge-types.ts +2 -2
- package/src/runtime/client/index.ts +207 -184
- package/src/runtime/internals/APIClient.ts +67 -23
- package/src/runtime/internals/cancellation.ts +57 -0
- package/src/runtime/internals/clientUtils.ts +61 -1
- package/src/runtime/internals/index.ts +1 -0
- package/src/runtime/internals/operations/custom.ts +117 -109
- package/src/runtime/internals/operations/get.ts +111 -95
- package/src/runtime/internals/operations/indexQuery.ts +100 -94
- package/src/runtime/internals/operations/list.ts +132 -119
- package/src/runtime/internals/server/generateModelsProperty.ts +31 -28
- package/src/runtime/internals/utils/clientProperties/generateModelsProperty.ts +36 -33
- package/src/runtime/utils/index.ts +1 -0
- package/src/runtime/utils/selfAwareAsync.ts +39 -0
|
@@ -507,202 +507,225 @@ type IndexQueryMethod<
|
|
|
507
507
|
type ModelTypesClient<
|
|
508
508
|
Model extends ClientSchemaByEntityTypeBaseShape['models'][string],
|
|
509
509
|
FlatModel extends Record<string, unknown> = ResolvedModel<Model['type']>,
|
|
510
|
-
> = IndexQueryMethods<Model> &
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
510
|
+
> = IndexQueryMethods<Model> &
|
|
511
|
+
// Omit any disabled operations
|
|
512
|
+
Omit<
|
|
513
|
+
{
|
|
514
|
+
create: (
|
|
515
|
+
model: Model['createType'],
|
|
516
|
+
options?: {
|
|
517
|
+
authMode?: AuthMode;
|
|
518
|
+
authToken?: string;
|
|
519
|
+
headers?: CustomHeaders;
|
|
520
|
+
},
|
|
521
|
+
) => SingularReturnValue<Model['type']>;
|
|
522
|
+
update: (
|
|
523
|
+
model: Model['updateType'],
|
|
524
|
+
options?: {
|
|
525
|
+
authMode?: AuthMode;
|
|
526
|
+
authToken?: string;
|
|
527
|
+
headers?: CustomHeaders;
|
|
528
|
+
},
|
|
529
|
+
) => SingularReturnValue<Model['type']>;
|
|
530
|
+
delete: (
|
|
531
|
+
identifier: Model['deleteType'],
|
|
532
|
+
options?: {
|
|
533
|
+
authMode?: AuthMode;
|
|
534
|
+
authToken?: string;
|
|
535
|
+
headers?: CustomHeaders;
|
|
536
|
+
},
|
|
537
|
+
) => SingularReturnValue<Model['type']>;
|
|
538
|
+
|
|
539
|
+
get<SelectionSet extends ReadonlyArray<ModelPath<FlatModel>> = never[]>(
|
|
540
|
+
identifier: Model['identifier'],
|
|
541
|
+
options?: {
|
|
542
|
+
selectionSet?: SelectionSet;
|
|
543
|
+
authMode?: AuthMode;
|
|
544
|
+
authToken?: string;
|
|
545
|
+
headers?: CustomHeaders;
|
|
546
|
+
},
|
|
547
|
+
): SingularReturnValue<
|
|
548
|
+
Prettify<ReturnValue<Model, FlatModel, SelectionSet>>
|
|
549
|
+
>;
|
|
550
|
+
list<SelectionSet extends ReadonlyArray<ModelPath<FlatModel>> = never[]>(
|
|
551
|
+
options?: ListCpkOptions<Model> & {
|
|
552
|
+
filter?: ModelFilter<Model>;
|
|
553
|
+
limit?: number;
|
|
554
|
+
nextToken?: string | null;
|
|
555
|
+
selectionSet?: SelectionSet;
|
|
556
|
+
authMode?: AuthMode;
|
|
557
|
+
authToken?: string;
|
|
558
|
+
headers?: CustomHeaders;
|
|
559
|
+
},
|
|
560
|
+
): ListReturnValue<Prettify<ReturnValue<Model, FlatModel, SelectionSet>>>;
|
|
561
|
+
|
|
562
|
+
onCreate<
|
|
563
|
+
SelectionSet extends ReadonlyArray<ModelPath<FlatModel>> = never[],
|
|
564
|
+
>(options?: {
|
|
565
|
+
filter?: ModelSubscriptionFilter<Model>;
|
|
566
|
+
selectionSet?: SelectionSet;
|
|
567
|
+
authMode?: AuthMode;
|
|
568
|
+
authToken?: string;
|
|
569
|
+
headers?: CustomHeaders;
|
|
570
|
+
}): ObservedReturnValue<
|
|
571
|
+
Prettify<ReturnValue<Model, FlatModel, SelectionSet>>
|
|
572
|
+
>;
|
|
573
|
+
onUpdate<
|
|
574
|
+
SelectionSet extends ReadonlyArray<ModelPath<FlatModel>> = never[],
|
|
575
|
+
>(options?: {
|
|
576
|
+
filter?: ModelSubscriptionFilter<Model>;
|
|
577
|
+
selectionSet?: SelectionSet;
|
|
578
|
+
authMode?: AuthMode;
|
|
579
|
+
authToken?: string;
|
|
580
|
+
headers?: CustomHeaders;
|
|
581
|
+
}): ObservedReturnValue<
|
|
582
|
+
Prettify<ReturnValue<Model, FlatModel, SelectionSet>>
|
|
583
|
+
>;
|
|
584
|
+
onDelete<
|
|
585
|
+
SelectionSet extends ReadonlyArray<ModelPath<FlatModel>> = never[],
|
|
586
|
+
>(options?: {
|
|
587
|
+
filter?: ModelSubscriptionFilter<Model>;
|
|
588
|
+
selectionSet?: SelectionSet;
|
|
589
|
+
authMode?: AuthMode;
|
|
590
|
+
authToken?: string;
|
|
591
|
+
headers?: CustomHeaders;
|
|
592
|
+
}): ObservedReturnValue<
|
|
593
|
+
Prettify<ReturnValue<Model, FlatModel, SelectionSet>>
|
|
594
|
+
>;
|
|
595
|
+
observeQuery<
|
|
596
|
+
SelectionSet extends ModelPath<FlatModel>[] = never[],
|
|
597
|
+
>(options?: {
|
|
598
|
+
filter?: ModelFilter<Model>;
|
|
599
|
+
selectionSet?: SelectionSet;
|
|
600
|
+
authMode?: AuthMode;
|
|
601
|
+
authToken?: string;
|
|
602
|
+
}): ObserveQueryReturnValue<
|
|
603
|
+
Prettify<ReturnValue<Model, FlatModel, SelectionSet>>
|
|
604
|
+
>;
|
|
553
605
|
},
|
|
554
|
-
|
|
555
|
-
onCreate<
|
|
556
|
-
SelectionSet extends ReadonlyArray<ModelPath<FlatModel>> = never[],
|
|
557
|
-
>(options?: {
|
|
558
|
-
filter?: ModelSubscriptionFilter<Model>;
|
|
559
|
-
selectionSet?: SelectionSet;
|
|
560
|
-
authMode?: AuthMode;
|
|
561
|
-
authToken?: string;
|
|
562
|
-
headers?: CustomHeaders;
|
|
563
|
-
}): ObservedReturnValue<
|
|
564
|
-
Prettify<ReturnValue<Model, FlatModel, SelectionSet>>
|
|
565
|
-
>;
|
|
566
|
-
onUpdate<
|
|
567
|
-
SelectionSet extends ReadonlyArray<ModelPath<FlatModel>> = never[],
|
|
568
|
-
>(options?: {
|
|
569
|
-
filter?: ModelSubscriptionFilter<Model>;
|
|
570
|
-
selectionSet?: SelectionSet;
|
|
571
|
-
authMode?: AuthMode;
|
|
572
|
-
authToken?: string;
|
|
573
|
-
headers?: CustomHeaders;
|
|
574
|
-
}): ObservedReturnValue<
|
|
575
|
-
Prettify<ReturnValue<Model, FlatModel, SelectionSet>>
|
|
576
|
-
>;
|
|
577
|
-
onDelete<
|
|
578
|
-
SelectionSet extends ReadonlyArray<ModelPath<FlatModel>> = never[],
|
|
579
|
-
>(options?: {
|
|
580
|
-
filter?: ModelSubscriptionFilter<Model>;
|
|
581
|
-
selectionSet?: SelectionSet;
|
|
582
|
-
authMode?: AuthMode;
|
|
583
|
-
authToken?: string;
|
|
584
|
-
headers?: CustomHeaders;
|
|
585
|
-
}): ObservedReturnValue<
|
|
586
|
-
Prettify<ReturnValue<Model, FlatModel, SelectionSet>>
|
|
606
|
+
keyof Model['__meta']['disabledOperations']
|
|
587
607
|
>;
|
|
588
|
-
observeQuery<
|
|
589
|
-
SelectionSet extends ModelPath<FlatModel>[] = never[],
|
|
590
|
-
>(options?: {
|
|
591
|
-
filter?: ModelFilter<Model>;
|
|
592
|
-
selectionSet?: SelectionSet;
|
|
593
|
-
authMode?: AuthMode;
|
|
594
|
-
authToken?: string;
|
|
595
|
-
}): ObserveQueryReturnValue<
|
|
596
|
-
Prettify<ReturnValue<Model, FlatModel, SelectionSet>>
|
|
597
|
-
>;
|
|
598
|
-
};
|
|
599
608
|
|
|
600
609
|
type ModelTypesSSRCookies<
|
|
601
610
|
Model extends ClientSchemaByEntityTypeBaseShape['models'][string],
|
|
602
611
|
FlatModel extends Record<string, unknown> = ResolvedModel<Model['type']>,
|
|
603
|
-
> = IndexQueryMethods<Model> &
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
612
|
+
> = IndexQueryMethods<Model> &
|
|
613
|
+
Omit<
|
|
614
|
+
{
|
|
615
|
+
create: (
|
|
616
|
+
model: Model['createType'],
|
|
617
|
+
options?: {
|
|
618
|
+
authMode?: AuthMode;
|
|
619
|
+
authToken?: string;
|
|
620
|
+
headers?: CustomHeaders;
|
|
621
|
+
},
|
|
622
|
+
) => SingularReturnValue<Model['type']>;
|
|
623
|
+
update: (
|
|
624
|
+
model: Model['updateType'],
|
|
625
|
+
options?: {
|
|
626
|
+
authMode?: AuthMode;
|
|
627
|
+
authToken?: string;
|
|
628
|
+
headers?: CustomHeaders;
|
|
629
|
+
},
|
|
630
|
+
) => SingularReturnValue<Model['type']>;
|
|
631
|
+
delete: (
|
|
632
|
+
identifier: Model['deleteType'],
|
|
633
|
+
options?: {
|
|
634
|
+
authMode?: AuthMode;
|
|
635
|
+
authToken?: string;
|
|
636
|
+
headers?: CustomHeaders;
|
|
637
|
+
},
|
|
638
|
+
) => SingularReturnValue<Model['type']>;
|
|
639
|
+
|
|
640
|
+
get<SelectionSet extends ReadonlyArray<ModelPath<FlatModel>> = never[]>(
|
|
641
|
+
identifier: Model['identifier'],
|
|
642
|
+
options?: {
|
|
643
|
+
selectionSet?: SelectionSet;
|
|
644
|
+
authMode?: AuthMode;
|
|
645
|
+
authToken?: string;
|
|
646
|
+
headers?: CustomHeaders;
|
|
647
|
+
},
|
|
648
|
+
): SingularReturnValue<
|
|
649
|
+
Prettify<ReturnValue<Model, FlatModel, SelectionSet>>
|
|
650
|
+
>;
|
|
651
|
+
list<SelectionSet extends ReadonlyArray<ModelPath<FlatModel>> = never[]>(
|
|
652
|
+
options?: ListCpkOptions<Model> & {
|
|
653
|
+
filter?: ModelFilter<Model>;
|
|
654
|
+
sortDirection?: ModelSortDirection;
|
|
655
|
+
limit?: number;
|
|
656
|
+
nextToken?: string | null;
|
|
657
|
+
selectionSet?: SelectionSet;
|
|
658
|
+
authMode?: AuthMode;
|
|
659
|
+
authToken?: string;
|
|
660
|
+
headers?: CustomHeaders;
|
|
661
|
+
},
|
|
662
|
+
): ListReturnValue<Prettify<ReturnValue<Model, FlatModel, SelectionSet>>>;
|
|
647
663
|
},
|
|
648
|
-
|
|
649
|
-
|
|
664
|
+
keyof Model['__meta']['disabledOperations']
|
|
665
|
+
>;
|
|
650
666
|
|
|
651
667
|
type ModelTypesSSRRequest<
|
|
652
668
|
Model extends ClientSchemaByEntityTypeBaseShape['models'][string],
|
|
653
669
|
FlatModel extends Record<string, unknown> = ResolvedModel<Model['type']>,
|
|
654
|
-
> = IndexQueryMethods<Model, 'REQUEST'> &
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
670
|
+
> = IndexQueryMethods<Model, 'REQUEST'> &
|
|
671
|
+
Omit<
|
|
672
|
+
{
|
|
673
|
+
create: (
|
|
674
|
+
contextSpec: AmplifyServer.ContextSpec,
|
|
675
|
+
model: Model['createType'],
|
|
676
|
+
options?: {
|
|
677
|
+
authMode?: AuthMode;
|
|
678
|
+
authToken?: string;
|
|
679
|
+
headers?: CustomHeaders;
|
|
680
|
+
},
|
|
681
|
+
) => SingularReturnValue<Model['type']>;
|
|
682
|
+
update: (
|
|
683
|
+
contextSpec: AmplifyServer.ContextSpec,
|
|
684
|
+
model: Model['updateType'],
|
|
685
|
+
options?: {
|
|
686
|
+
authMode?: AuthMode;
|
|
687
|
+
authToken?: string;
|
|
688
|
+
headers?: CustomHeaders;
|
|
689
|
+
},
|
|
690
|
+
) => SingularReturnValue<Model['type']>;
|
|
691
|
+
delete: (
|
|
692
|
+
contextSpec: AmplifyServer.ContextSpec,
|
|
693
|
+
identifier: Model['deleteType'],
|
|
694
|
+
options?: {
|
|
695
|
+
authMode?: AuthMode;
|
|
696
|
+
authToken?: string;
|
|
697
|
+
headers?: CustomHeaders;
|
|
698
|
+
},
|
|
699
|
+
) => SingularReturnValue<Model['type']>;
|
|
700
|
+
|
|
701
|
+
get<SelectionSet extends ReadonlyArray<ModelPath<FlatModel>> = never[]>(
|
|
702
|
+
contextSpec: AmplifyServer.ContextSpec,
|
|
703
|
+
identifier: Model['identifier'],
|
|
704
|
+
options?: {
|
|
705
|
+
selectionSet?: SelectionSet;
|
|
706
|
+
authMode?: AuthMode;
|
|
707
|
+
authToken?: string;
|
|
708
|
+
headers?: CustomHeaders;
|
|
709
|
+
},
|
|
710
|
+
): SingularReturnValue<
|
|
711
|
+
Prettify<ReturnValue<Model, FlatModel, SelectionSet>>
|
|
712
|
+
>;
|
|
713
|
+
list<SelectionSet extends ReadonlyArray<ModelPath<FlatModel>> = never[]>(
|
|
714
|
+
contextSpec: AmplifyServer.ContextSpec,
|
|
715
|
+
options?: ListCpkOptions<Model> & {
|
|
716
|
+
filter?: ModelFilter<Model>;
|
|
717
|
+
sortDirection?: ModelSortDirection;
|
|
718
|
+
limit?: number;
|
|
719
|
+
nextToken?: string | null;
|
|
720
|
+
selectionSet?: SelectionSet;
|
|
721
|
+
authMode?: AuthMode;
|
|
722
|
+
authToken?: string;
|
|
723
|
+
headers?: CustomHeaders;
|
|
724
|
+
},
|
|
725
|
+
): ListReturnValue<Prettify<ReturnValue<Model, FlatModel, SelectionSet>>>;
|
|
690
726
|
},
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
contextSpec: AmplifyServer.ContextSpec,
|
|
694
|
-
options?: ListCpkOptions<Model> & {
|
|
695
|
-
filter?: ModelFilter<Model>;
|
|
696
|
-
sortDirection?: ModelSortDirection;
|
|
697
|
-
limit?: number;
|
|
698
|
-
nextToken?: string | null;
|
|
699
|
-
selectionSet?: SelectionSet;
|
|
700
|
-
authMode?: AuthMode;
|
|
701
|
-
authToken?: string;
|
|
702
|
-
headers?: CustomHeaders;
|
|
703
|
-
},
|
|
704
|
-
): ListReturnValue<Prettify<ReturnValue<Model, FlatModel, SelectionSet>>>;
|
|
705
|
-
};
|
|
727
|
+
keyof Model['__meta']['disabledOperations']
|
|
728
|
+
>;
|
|
706
729
|
|
|
707
730
|
type ContextType = 'CLIENT' | 'COOKIES' | 'REQUEST';
|
|
708
731
|
|
|
@@ -21,7 +21,8 @@ import {
|
|
|
21
21
|
} from '../bridge-types';
|
|
22
22
|
|
|
23
23
|
import { CustomHeaders } from '../client';
|
|
24
|
-
import { resolveOwnerFields, capitalize } from '../utils';
|
|
24
|
+
import { resolveOwnerFields, capitalize, selfAwareAsync } from '../utils';
|
|
25
|
+
import { extendCancellability } from './cancellation';
|
|
25
26
|
|
|
26
27
|
import type { IndexMeta } from './operations/indexQuery';
|
|
27
28
|
|
|
@@ -246,6 +247,11 @@ export function initializeModel(
|
|
|
246
247
|
{},
|
|
247
248
|
);
|
|
248
249
|
|
|
250
|
+
// if get is disabled on the related model
|
|
251
|
+
if ((client as any).models[relatedModelName].get === undefined) {
|
|
252
|
+
break;
|
|
253
|
+
}
|
|
254
|
+
|
|
249
255
|
if (context) {
|
|
250
256
|
initializedRelationalFields[fieldName] = (
|
|
251
257
|
contextSpec: AmplifyServer.ContextSpec,
|
|
@@ -333,21 +339,33 @@ export function initializeModel(
|
|
|
333
339
|
},
|
|
334
340
|
);
|
|
335
341
|
|
|
342
|
+
// if list is disabled on the related model
|
|
343
|
+
if ((client as any).models[relatedModelName].list === undefined) {
|
|
344
|
+
break;
|
|
345
|
+
}
|
|
346
|
+
|
|
336
347
|
if (context) {
|
|
337
348
|
initializedRelationalFields[fieldName] = (
|
|
338
349
|
contextSpec: AmplifyServer.ContextSpec,
|
|
339
350
|
options?: LazyLoadOptions,
|
|
340
351
|
) => {
|
|
341
352
|
if (record[parentPk]) {
|
|
342
|
-
return (
|
|
343
|
-
|
|
353
|
+
return selfAwareAsync(async (resultPromise) => {
|
|
354
|
+
const basePromise = (client as any).models[
|
|
355
|
+
relatedModelName
|
|
356
|
+
].list(contextSpec, {
|
|
344
357
|
filter: { and: hasManyFilter },
|
|
345
358
|
limit: options?.limit,
|
|
346
359
|
nextToken: options?.nextToken,
|
|
347
360
|
authMode: options?.authMode || authMode,
|
|
348
361
|
authToken: options?.authToken || authToken,
|
|
349
|
-
})
|
|
350
|
-
|
|
362
|
+
});
|
|
363
|
+
const extendedBase = extendCancellability(
|
|
364
|
+
basePromise,
|
|
365
|
+
resultPromise,
|
|
366
|
+
);
|
|
367
|
+
return mapResult((await extendedBase) as any);
|
|
368
|
+
});
|
|
351
369
|
}
|
|
352
370
|
|
|
353
371
|
return [];
|
|
@@ -357,15 +375,22 @@ export function initializeModel(
|
|
|
357
375
|
options?: LazyLoadOptions,
|
|
358
376
|
) => {
|
|
359
377
|
if (record[parentPk]) {
|
|
360
|
-
return (
|
|
361
|
-
.
|
|
378
|
+
return selfAwareAsync(async (resultPromise) => {
|
|
379
|
+
const basePromise = (client as any).models[
|
|
380
|
+
relatedModelName
|
|
381
|
+
].list({
|
|
362
382
|
filter: { and: hasManyFilter },
|
|
363
383
|
limit: options?.limit,
|
|
364
384
|
nextToken: options?.nextToken,
|
|
365
385
|
authMode: options?.authMode || authMode,
|
|
366
386
|
authToken: options?.authToken || authToken,
|
|
367
|
-
})
|
|
368
|
-
|
|
387
|
+
});
|
|
388
|
+
const extendedBase = extendCancellability(
|
|
389
|
+
basePromise,
|
|
390
|
+
resultPromise,
|
|
391
|
+
);
|
|
392
|
+
return mapResult((await extendedBase) as any);
|
|
393
|
+
});
|
|
369
394
|
}
|
|
370
395
|
|
|
371
396
|
return [];
|
|
@@ -385,21 +410,33 @@ export function initializeModel(
|
|
|
385
410
|
},
|
|
386
411
|
);
|
|
387
412
|
|
|
413
|
+
// if list is disabled on the related model
|
|
414
|
+
if ((client as any).models[relatedModelName].list === undefined) {
|
|
415
|
+
break;
|
|
416
|
+
}
|
|
417
|
+
|
|
388
418
|
if (context) {
|
|
389
419
|
initializedRelationalFields[fieldName] = (
|
|
390
420
|
contextSpec: AmplifyServer.ContextSpec,
|
|
391
421
|
options?: LazyLoadOptions,
|
|
392
422
|
) => {
|
|
393
423
|
if (record[parentPk]) {
|
|
394
|
-
return (
|
|
395
|
-
|
|
424
|
+
return selfAwareAsync(async (resultPromise) => {
|
|
425
|
+
const basePromise = (client as any).models[
|
|
426
|
+
relatedModelName
|
|
427
|
+
].list(contextSpec, {
|
|
396
428
|
filter: { and: hasManyFilter },
|
|
397
429
|
limit: options?.limit,
|
|
398
430
|
nextToken: options?.nextToken,
|
|
399
431
|
authMode: options?.authMode || authMode,
|
|
400
432
|
authToken: options?.authToken || authToken,
|
|
401
|
-
})
|
|
402
|
-
|
|
433
|
+
});
|
|
434
|
+
const extendedBase = extendCancellability(
|
|
435
|
+
basePromise,
|
|
436
|
+
resultPromise,
|
|
437
|
+
);
|
|
438
|
+
return mapResult((await extendedBase) as any);
|
|
439
|
+
});
|
|
403
440
|
}
|
|
404
441
|
|
|
405
442
|
return [];
|
|
@@ -409,15 +446,22 @@ export function initializeModel(
|
|
|
409
446
|
options?: LazyLoadOptions,
|
|
410
447
|
) => {
|
|
411
448
|
if (record[parentPk]) {
|
|
412
|
-
return (
|
|
413
|
-
.
|
|
449
|
+
return selfAwareAsync(async (resultPromise) => {
|
|
450
|
+
const basePromise = (client as any).models[
|
|
451
|
+
relatedModelName
|
|
452
|
+
].list({
|
|
414
453
|
filter: { and: hasManyFilter },
|
|
415
454
|
limit: options?.limit,
|
|
416
455
|
nextToken: options?.nextToken,
|
|
417
456
|
authMode: options?.authMode || authMode,
|
|
418
457
|
authToken: options?.authToken || authToken,
|
|
419
|
-
})
|
|
420
|
-
|
|
458
|
+
});
|
|
459
|
+
const extendedBase = extendCancellability(
|
|
460
|
+
basePromise,
|
|
461
|
+
resultPromise,
|
|
462
|
+
);
|
|
463
|
+
return mapResult((await extendedBase) as any);
|
|
464
|
+
});
|
|
421
465
|
}
|
|
422
466
|
|
|
423
467
|
return [];
|
|
@@ -437,7 +481,7 @@ export function initializeModel(
|
|
|
437
481
|
|
|
438
482
|
export const graphQLOperationsInfo = {
|
|
439
483
|
CREATE: { operationPrefix: 'create', usePlural: false },
|
|
440
|
-
|
|
484
|
+
GET: { operationPrefix: 'get', usePlural: false },
|
|
441
485
|
UPDATE: { operationPrefix: 'update', usePlural: false },
|
|
442
486
|
DELETE: { operationPrefix: 'delete', usePlural: false },
|
|
443
487
|
LIST: { operationPrefix: 'list', usePlural: true },
|
|
@@ -445,7 +489,7 @@ export const graphQLOperationsInfo = {
|
|
|
445
489
|
ONCREATE: { operationPrefix: 'onCreate', usePlural: false },
|
|
446
490
|
ONUPDATE: { operationPrefix: 'onUpdate', usePlural: false },
|
|
447
491
|
ONDELETE: { operationPrefix: 'onDelete', usePlural: false },
|
|
448
|
-
|
|
492
|
+
OBSERVEQUERY: { operationPrefix: 'observeQuery', usePlural: false },
|
|
449
493
|
} as const;
|
|
450
494
|
export type ModelOperation = keyof typeof graphQLOperationsInfo;
|
|
451
495
|
|
|
@@ -999,7 +1043,7 @@ export function generateGraphQLDocument(
|
|
|
999
1043
|
graphQLOperationType ?? (graphQLOperationType = 'mutation');
|
|
1000
1044
|
// TODO(Eslint): this this case clause correct without the break statement?
|
|
1001
1045
|
// eslint-disable-next-line no-fallthrough
|
|
1002
|
-
case '
|
|
1046
|
+
case 'GET':
|
|
1003
1047
|
graphQLArguments ?? (graphQLArguments = getPkArgs);
|
|
1004
1048
|
graphQLSelectionSet ?? (graphQLSelectionSet = selectionSetFields);
|
|
1005
1049
|
// TODO(Eslint): this this case clause correct without the break statement?
|
|
@@ -1047,7 +1091,7 @@ export function generateGraphQLDocument(
|
|
|
1047
1091
|
graphQLOperationType ?? (graphQLOperationType = 'subscription');
|
|
1048
1092
|
graphQLSelectionSet ?? (graphQLSelectionSet = selectionSetFields);
|
|
1049
1093
|
break;
|
|
1050
|
-
case '
|
|
1094
|
+
case 'OBSERVEQUERY':
|
|
1051
1095
|
default:
|
|
1052
1096
|
throw new Error(
|
|
1053
1097
|
'Internal error: Attempted to generate graphql document for observeQuery. Please report this error.',
|
|
@@ -1120,7 +1164,7 @@ export function buildGraphQLVariables(
|
|
|
1120
1164
|
: {},
|
|
1121
1165
|
};
|
|
1122
1166
|
break;
|
|
1123
|
-
case '
|
|
1167
|
+
case 'GET':
|
|
1124
1168
|
case 'DELETE':
|
|
1125
1169
|
// only identifiers are sent
|
|
1126
1170
|
if (arg) {
|
|
@@ -1194,7 +1238,7 @@ export function buildGraphQLVariables(
|
|
|
1194
1238
|
variables = { filter: arg.filter };
|
|
1195
1239
|
}
|
|
1196
1240
|
break;
|
|
1197
|
-
case '
|
|
1241
|
+
case 'OBSERVEQUERY':
|
|
1198
1242
|
throw new Error(
|
|
1199
1243
|
'Internal error: Attempted to build variables for observeQuery. Please report this error.',
|
|
1200
1244
|
);
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { BaseClient } from '../bridge-types';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* A map of cancellable promise "extensions".
|
|
5
|
+
*
|
|
6
|
+
* Each entry value must either be a directly `cancel()`-able promise, or must
|
|
7
|
+
* refer to another entry.
|
|
8
|
+
*
|
|
9
|
+
* When cancellation of a promise is requested, cancel
|
|
10
|
+
* will check to see if the promise exists in the map. If it does, it pulls
|
|
11
|
+
* the value and repeats the check. If not, it will perform the underlying
|
|
12
|
+
* cancel operation.
|
|
13
|
+
*/
|
|
14
|
+
const promiseMap = new WeakMap<Promise<any>, Promise<any>>();
|
|
15
|
+
|
|
16
|
+
export function extendCancellability<T>(
|
|
17
|
+
existingCancellablePromise: Promise<T>,
|
|
18
|
+
newPromiseToRegister: Promise<any>,
|
|
19
|
+
): Promise<T> {
|
|
20
|
+
promiseMap.set(newPromiseToRegister, existingCancellablePromise);
|
|
21
|
+
|
|
22
|
+
return existingCancellablePromise.finally(() => {
|
|
23
|
+
promiseMap.delete(newPromiseToRegister);
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Wraps the existing `cancel()` method with logic to iteratively search for
|
|
29
|
+
* the corresponding base level promise, if needed, that the core graphql client
|
|
30
|
+
* knows how to cancel.
|
|
31
|
+
*
|
|
32
|
+
* @param client
|
|
33
|
+
*/
|
|
34
|
+
export function upgradeClientCancellation(client: BaseClient) {
|
|
35
|
+
const innerCancel = client.cancel.bind(client);
|
|
36
|
+
|
|
37
|
+
client.cancel = function (
|
|
38
|
+
promise: Promise<any>,
|
|
39
|
+
message?: string | undefined,
|
|
40
|
+
): boolean {
|
|
41
|
+
const visited = new Set<Promise<any>>();
|
|
42
|
+
let targetPromise: Promise<any> | undefined = promise;
|
|
43
|
+
|
|
44
|
+
while (targetPromise && promiseMap.has(targetPromise)) {
|
|
45
|
+
if (visited.has(targetPromise))
|
|
46
|
+
throw new Error(
|
|
47
|
+
'A cycle was detected in the modeled graphql cancellation chain. This is a bug. Please report it!',
|
|
48
|
+
);
|
|
49
|
+
visited.add(targetPromise);
|
|
50
|
+
targetPromise = promiseMap.get(targetPromise);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// call `innerCancel` with `targetPromise!` to defer to existing implementation
|
|
54
|
+
// on how to handle `null | undefined` or otherwise "non-cancellable" objects.
|
|
55
|
+
return innerCancel(targetPromise!, message);
|
|
56
|
+
};
|
|
57
|
+
}
|