@aws-amplify/data-schema 1.3.9 → 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.
Files changed (104) hide show
  1. package/dist/cjs/ModelType.js +5 -0
  2. package/dist/cjs/ModelType.js.map +1 -1
  3. package/dist/cjs/SchemaProcessor.js +58 -1
  4. package/dist/cjs/SchemaProcessor.js.map +1 -1
  5. package/dist/cjs/runtime/addSchemaToClient.js +1 -0
  6. package/dist/cjs/runtime/addSchemaToClient.js.map +1 -1
  7. package/dist/cjs/runtime/addSchemaToClientWithInstance.js +1 -0
  8. package/dist/cjs/runtime/addSchemaToClientWithInstance.js.map +1 -1
  9. package/dist/cjs/runtime/internals/APIClient.js +63 -42
  10. package/dist/cjs/runtime/internals/APIClient.js.map +1 -1
  11. package/dist/cjs/runtime/internals/cancellation.js +48 -0
  12. package/dist/cjs/runtime/internals/cancellation.js.map +1 -0
  13. package/dist/cjs/runtime/internals/clientUtils.js +45 -3
  14. package/dist/cjs/runtime/internals/clientUtils.js.map +1 -1
  15. package/dist/cjs/runtime/internals/index.js +3 -1
  16. package/dist/cjs/runtime/internals/index.js.map +1 -1
  17. package/dist/cjs/runtime/internals/operations/custom.js +91 -85
  18. package/dist/cjs/runtime/internals/operations/custom.js.map +1 -1
  19. package/dist/cjs/runtime/internals/operations/get.js +71 -65
  20. package/dist/cjs/runtime/internals/operations/get.js.map +1 -1
  21. package/dist/cjs/runtime/internals/operations/indexQuery.js +66 -60
  22. package/dist/cjs/runtime/internals/operations/indexQuery.js.map +1 -1
  23. package/dist/cjs/runtime/internals/operations/list.js +90 -84
  24. package/dist/cjs/runtime/internals/operations/list.js.map +1 -1
  25. package/dist/cjs/runtime/internals/server/generateModelsProperty.js +3 -3
  26. package/dist/cjs/runtime/internals/server/generateModelsProperty.js.map +1 -1
  27. package/dist/cjs/runtime/internals/utils/clientProperties/generateModelsProperty.js +3 -3
  28. package/dist/cjs/runtime/internals/utils/clientProperties/generateModelsProperty.js.map +1 -1
  29. package/dist/cjs/runtime/utils/index.js +3 -1
  30. package/dist/cjs/runtime/utils/index.js.map +1 -1
  31. package/dist/cjs/runtime/utils/selfAwareAsync.js +40 -0
  32. package/dist/cjs/runtime/utils/selfAwareAsync.js.map +1 -0
  33. package/dist/esm/Authorization.d.ts +1 -1
  34. package/dist/esm/ClientSchema/Core/ClientModel.d.ts +20 -1
  35. package/dist/esm/ClientSchema/utilities/ResolveField.d.ts +5 -1
  36. package/dist/esm/ModelType.d.ts +6 -0
  37. package/dist/esm/ModelType.mjs +5 -0
  38. package/dist/esm/ModelType.mjs.map +1 -1
  39. package/dist/esm/SchemaProcessor.mjs +58 -1
  40. package/dist/esm/SchemaProcessor.mjs.map +1 -1
  41. package/dist/esm/runtime/addSchemaToClient.mjs +2 -0
  42. package/dist/esm/runtime/addSchemaToClient.mjs.map +1 -1
  43. package/dist/esm/runtime/addSchemaToClientWithInstance.mjs +2 -0
  44. package/dist/esm/runtime/addSchemaToClientWithInstance.mjs.map +1 -1
  45. package/dist/esm/runtime/bridge-types.d.ts +2 -2
  46. package/dist/esm/runtime/client/index.d.ts +18 -10
  47. package/dist/esm/runtime/internals/APIClient.d.ts +2 -2
  48. package/dist/esm/runtime/internals/APIClient.mjs +64 -42
  49. package/dist/esm/runtime/internals/APIClient.mjs.map +1 -1
  50. package/dist/esm/runtime/internals/cancellation.d.ts +10 -0
  51. package/dist/esm/runtime/internals/cancellation.mjs +44 -0
  52. package/dist/esm/runtime/internals/cancellation.mjs.map +1 -0
  53. package/dist/esm/runtime/internals/clientUtils.d.ts +78 -1
  54. package/dist/esm/runtime/internals/clientUtils.mjs +45 -3
  55. package/dist/esm/runtime/internals/clientUtils.mjs.map +1 -1
  56. package/dist/esm/runtime/internals/index.d.ts +1 -0
  57. package/dist/esm/runtime/internals/index.mjs +1 -0
  58. package/dist/esm/runtime/internals/index.mjs.map +1 -1
  59. package/dist/esm/runtime/internals/operations/custom.d.ts +1 -1
  60. package/dist/esm/runtime/internals/operations/custom.mjs +91 -85
  61. package/dist/esm/runtime/internals/operations/custom.mjs.map +1 -1
  62. package/dist/esm/runtime/internals/operations/get.d.ts +1 -1
  63. package/dist/esm/runtime/internals/operations/get.mjs +71 -65
  64. package/dist/esm/runtime/internals/operations/get.mjs.map +1 -1
  65. package/dist/esm/runtime/internals/operations/indexQuery.d.ts +1 -1
  66. package/dist/esm/runtime/internals/operations/indexQuery.mjs +66 -60
  67. package/dist/esm/runtime/internals/operations/indexQuery.mjs.map +1 -1
  68. package/dist/esm/runtime/internals/operations/list.d.ts +1 -1
  69. package/dist/esm/runtime/internals/operations/list.mjs +90 -84
  70. package/dist/esm/runtime/internals/operations/list.mjs.map +1 -1
  71. package/dist/esm/runtime/internals/server/generateModelsProperty.mjs +4 -4
  72. package/dist/esm/runtime/internals/server/generateModelsProperty.mjs.map +1 -1
  73. package/dist/esm/runtime/internals/utils/clientProperties/generateModelsProperty.mjs +4 -4
  74. package/dist/esm/runtime/internals/utils/clientProperties/generateModelsProperty.mjs.map +1 -1
  75. package/dist/esm/runtime/utils/index.d.ts +1 -0
  76. package/dist/esm/runtime/utils/index.mjs +1 -0
  77. package/dist/esm/runtime/utils/index.mjs.map +1 -1
  78. package/dist/esm/runtime/utils/selfAwareAsync.d.ts +19 -0
  79. package/dist/esm/runtime/utils/selfAwareAsync.mjs +37 -0
  80. package/dist/esm/runtime/utils/selfAwareAsync.mjs.map +1 -0
  81. package/dist/esm/util/Filters.d.ts +42 -3
  82. package/dist/meta/cjs.tsbuildinfo +1 -1
  83. package/package.json +2 -2
  84. package/src/ClientSchema/Core/ClientModel.ts +29 -0
  85. package/src/ClientSchema/utilities/ResolveField.ts +26 -6
  86. package/src/ModelType.ts +31 -0
  87. package/src/SchemaProcessor.ts +77 -2
  88. package/src/runtime/addSchemaToClient.ts +2 -0
  89. package/src/runtime/addSchemaToClientWithInstance.ts +2 -0
  90. package/src/runtime/bridge-types.ts +2 -2
  91. package/src/runtime/client/index.ts +230 -184
  92. package/src/runtime/internals/APIClient.ts +67 -23
  93. package/src/runtime/internals/cancellation.ts +57 -0
  94. package/src/runtime/internals/clientUtils.ts +61 -1
  95. package/src/runtime/internals/index.ts +1 -0
  96. package/src/runtime/internals/operations/custom.ts +117 -109
  97. package/src/runtime/internals/operations/get.ts +111 -95
  98. package/src/runtime/internals/operations/indexQuery.ts +100 -94
  99. package/src/runtime/internals/operations/list.ts +132 -119
  100. package/src/runtime/internals/server/generateModelsProperty.ts +31 -28
  101. package/src/runtime/internals/utils/clientProperties/generateModelsProperty.ts +36 -33
  102. package/src/runtime/utils/index.ts +1 -0
  103. package/src/runtime/utils/selfAwareAsync.ts +39 -0
  104. package/src/util/Filters.ts +47 -3
@@ -18,6 +18,9 @@ import type {
18
18
  StringFilter,
19
19
  NumericFilter,
20
20
  BooleanFilters,
21
+ SubscriptionStringFilter,
22
+ SubscriptionNumericFilter,
23
+ SubscriptionBooleanFilters,
21
24
  } from '../../util';
22
25
  import { AmplifyServer } from '../bridge-types';
23
26
 
@@ -419,6 +422,26 @@ type ModelFilter<
419
422
  : StringFilter;
420
423
  };
421
424
 
425
+ type LogicalSubscriptionFilters<
426
+ Model extends ClientSchemaByEntityTypeBaseShape['models'][string],
427
+ > = {
428
+ and?: ModelSubscriptionFilter<Model> | ModelSubscriptionFilter<Model>[];
429
+ or?: ModelSubscriptionFilter<Model> | ModelSubscriptionFilter<Model>[];
430
+ not?: ModelSubscriptionFilter<Model>;
431
+ };
432
+
433
+ type ModelSubscriptionFilter<
434
+ Model extends ClientSchemaByEntityTypeBaseShape['models'][string],
435
+ > = LogicalSubscriptionFilters<Model> & {
436
+ [K in keyof Model['type'] as Model['type'][K] extends LazyLoader<any, any>
437
+ ? never
438
+ : K]?: boolean extends Model['type'][K]
439
+ ? SubscriptionBooleanFilters
440
+ : number extends Model['type'][K]
441
+ ? SubscriptionNumericFilter
442
+ : SubscriptionStringFilter;
443
+ };
444
+
422
445
  export type ModelSortDirection = 'ASC' | 'DESC';
423
446
 
424
447
  type ListCpkOptions<
@@ -484,202 +507,225 @@ type IndexQueryMethod<
484
507
  type ModelTypesClient<
485
508
  Model extends ClientSchemaByEntityTypeBaseShape['models'][string],
486
509
  FlatModel extends Record<string, unknown> = ResolvedModel<Model['type']>,
487
- > = IndexQueryMethods<Model> & {
488
- create: (
489
- model: Model['createType'],
490
- options?: {
491
- authMode?: AuthMode;
492
- authToken?: string;
493
- headers?: CustomHeaders;
494
- },
495
- ) => SingularReturnValue<Model['type']>;
496
- update: (
497
- model: Model['updateType'],
498
- options?: {
499
- authMode?: AuthMode;
500
- authToken?: string;
501
- headers?: CustomHeaders;
502
- },
503
- ) => SingularReturnValue<Model['type']>;
504
- delete: (
505
- identifier: Model['deleteType'],
506
- options?: {
507
- authMode?: AuthMode;
508
- authToken?: string;
509
- headers?: CustomHeaders;
510
- },
511
- ) => SingularReturnValue<Model['type']>;
512
- get<SelectionSet extends ReadonlyArray<ModelPath<FlatModel>> = never[]>(
513
- identifier: Model['identifier'],
514
- options?: {
515
- selectionSet?: SelectionSet;
516
- authMode?: AuthMode;
517
- authToken?: string;
518
- headers?: CustomHeaders;
519
- },
520
- ): SingularReturnValue<Prettify<ReturnValue<Model, FlatModel, SelectionSet>>>;
521
- list<SelectionSet extends ReadonlyArray<ModelPath<FlatModel>> = never[]>(
522
- options?: ListCpkOptions<Model> & {
523
- filter?: ModelFilter<Model>;
524
- limit?: number;
525
- nextToken?: string | null;
526
- selectionSet?: SelectionSet;
527
- authMode?: AuthMode;
528
- authToken?: string;
529
- headers?: CustomHeaders;
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
+ >;
530
605
  },
531
- ): ListReturnValue<Prettify<ReturnValue<Model, FlatModel, SelectionSet>>>;
532
- onCreate<
533
- SelectionSet extends ReadonlyArray<ModelPath<FlatModel>> = never[],
534
- >(options?: {
535
- filter?: ModelFilter<Model>;
536
- selectionSet?: SelectionSet;
537
- authMode?: AuthMode;
538
- authToken?: string;
539
- headers?: CustomHeaders;
540
- }): ObservedReturnValue<
541
- Prettify<ReturnValue<Model, FlatModel, SelectionSet>>
606
+ keyof Model['__meta']['disabledOperations']
542
607
  >;
543
- onUpdate<
544
- SelectionSet extends ReadonlyArray<ModelPath<FlatModel>> = never[],
545
- >(options?: {
546
- filter?: ModelFilter<Model>;
547
- selectionSet?: SelectionSet;
548
- authMode?: AuthMode;
549
- authToken?: string;
550
- headers?: CustomHeaders;
551
- }): ObservedReturnValue<
552
- Prettify<ReturnValue<Model, FlatModel, SelectionSet>>
553
- >;
554
- onDelete<
555
- SelectionSet extends ReadonlyArray<ModelPath<FlatModel>> = never[],
556
- >(options?: {
557
- filter?: ModelFilter<Model>;
558
- selectionSet?: SelectionSet;
559
- authMode?: AuthMode;
560
- authToken?: string;
561
- headers?: CustomHeaders;
562
- }): ObservedReturnValue<
563
- Prettify<ReturnValue<Model, FlatModel, SelectionSet>>
564
- >;
565
- observeQuery<
566
- SelectionSet extends ModelPath<FlatModel>[] = never[],
567
- >(options?: {
568
- filter?: ModelFilter<Model>;
569
- selectionSet?: SelectionSet;
570
- authMode?: AuthMode;
571
- authToken?: string;
572
- }): ObserveQueryReturnValue<
573
- Prettify<ReturnValue<Model, FlatModel, SelectionSet>>
574
- >;
575
- };
576
608
 
577
609
  type ModelTypesSSRCookies<
578
610
  Model extends ClientSchemaByEntityTypeBaseShape['models'][string],
579
611
  FlatModel extends Record<string, unknown> = ResolvedModel<Model['type']>,
580
- > = IndexQueryMethods<Model> & {
581
- create: (
582
- model: Model['createType'],
583
- options?: {
584
- authMode?: AuthMode;
585
- authToken?: string;
586
- headers?: CustomHeaders;
587
- },
588
- ) => SingularReturnValue<Model['type']>;
589
- update: (
590
- model: Model['updateType'],
591
- options?: {
592
- authMode?: AuthMode;
593
- authToken?: string;
594
- headers?: CustomHeaders;
595
- },
596
- ) => SingularReturnValue<Model['type']>;
597
- delete: (
598
- identifier: Model['deleteType'],
599
- options?: {
600
- authMode?: AuthMode;
601
- authToken?: string;
602
- headers?: CustomHeaders;
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>>>;
603
663
  },
604
- ) => SingularReturnValue<Model['type']>;
605
- get<SelectionSet extends ReadonlyArray<ModelPath<FlatModel>> = never[]>(
606
- identifier: Model['identifier'],
607
- options?: {
608
- selectionSet?: SelectionSet;
609
- authMode?: AuthMode;
610
- authToken?: string;
611
- headers?: CustomHeaders;
612
- },
613
- ): SingularReturnValue<Prettify<ReturnValue<Model, FlatModel, SelectionSet>>>;
614
- list<SelectionSet extends ReadonlyArray<ModelPath<FlatModel>> = never[]>(
615
- options?: ListCpkOptions<Model> & {
616
- filter?: ModelFilter<Model>;
617
- sortDirection?: ModelSortDirection;
618
- limit?: number;
619
- nextToken?: string | null;
620
- selectionSet?: SelectionSet;
621
- authMode?: AuthMode;
622
- authToken?: string;
623
- headers?: CustomHeaders;
624
- },
625
- ): ListReturnValue<Prettify<ReturnValue<Model, FlatModel, SelectionSet>>>;
626
- };
664
+ keyof Model['__meta']['disabledOperations']
665
+ >;
627
666
 
628
667
  type ModelTypesSSRRequest<
629
668
  Model extends ClientSchemaByEntityTypeBaseShape['models'][string],
630
669
  FlatModel extends Record<string, unknown> = ResolvedModel<Model['type']>,
631
- > = IndexQueryMethods<Model, 'REQUEST'> & {
632
- create: (
633
- contextSpec: AmplifyServer.ContextSpec,
634
- model: Model['createType'],
635
- options?: {
636
- authMode?: AuthMode;
637
- authToken?: string;
638
- headers?: CustomHeaders;
639
- },
640
- ) => SingularReturnValue<Model['type']>;
641
- update: (
642
- contextSpec: AmplifyServer.ContextSpec,
643
- model: Model['updateType'],
644
- options?: {
645
- authMode?: AuthMode;
646
- authToken?: string;
647
- headers?: CustomHeaders;
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>>>;
648
726
  },
649
- ) => SingularReturnValue<Model['type']>;
650
- delete: (
651
- contextSpec: AmplifyServer.ContextSpec,
652
- identifier: Model['deleteType'],
653
- options?: {
654
- authMode?: AuthMode;
655
- authToken?: string;
656
- headers?: CustomHeaders;
657
- },
658
- ) => SingularReturnValue<Model['type']>;
659
- get<SelectionSet extends ReadonlyArray<ModelPath<FlatModel>> = never[]>(
660
- contextSpec: AmplifyServer.ContextSpec,
661
- identifier: Model['identifier'],
662
- options?: {
663
- selectionSet?: SelectionSet;
664
- authMode?: AuthMode;
665
- authToken?: string;
666
- headers?: CustomHeaders;
667
- },
668
- ): SingularReturnValue<Prettify<ReturnValue<Model, FlatModel, SelectionSet>>>;
669
- list<SelectionSet extends ReadonlyArray<ModelPath<FlatModel>> = never[]>(
670
- contextSpec: AmplifyServer.ContextSpec,
671
- options?: ListCpkOptions<Model> & {
672
- filter?: ModelFilter<Model>;
673
- sortDirection?: ModelSortDirection;
674
- limit?: number;
675
- nextToken?: string | null;
676
- selectionSet?: SelectionSet;
677
- authMode?: AuthMode;
678
- authToken?: string;
679
- headers?: CustomHeaders;
680
- },
681
- ): ListReturnValue<Prettify<ReturnValue<Model, FlatModel, SelectionSet>>>;
682
- };
727
+ keyof Model['__meta']['disabledOperations']
728
+ >;
683
729
 
684
730
  type ContextType = 'CLIENT' | 'COOKIES' | 'REQUEST';
685
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 (client as any).models[relatedModelName]
343
- .list(contextSpec, {
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
- .then(mapResult);
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 (client as any).models[relatedModelName]
361
- .list({
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
- .then(mapResult);
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 (client as any).models[relatedModelName]
395
- .list(contextSpec, {
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
- .then(mapResult);
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 (client as any).models[relatedModelName]
413
- .list({
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
- .then(mapResult);
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
- READ: { operationPrefix: 'get', usePlural: false },
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
- OBSERVE_QUERY: { operationPrefix: 'observeQuery', usePlural: false },
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 'READ':
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 'OBSERVE_QUERY':
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 'READ':
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 'OBSERVE_QUERY':
1241
+ case 'OBSERVEQUERY':
1198
1242
  throw new Error(
1199
1243
  'Internal error: Attempted to build variables for observeQuery. Please report this error.',
1200
1244
  );