@aws-amplify/data-schema 1.1.3 → 1.1.5

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 (55) hide show
  1. package/dist/cjs/CustomOperation.js +46 -0
  2. package/dist/cjs/CustomOperation.js.map +1 -1
  3. package/dist/cjs/CustomType.js +32 -0
  4. package/dist/cjs/CustomType.js.map +1 -1
  5. package/dist/cjs/Handler.js +62 -0
  6. package/dist/cjs/Handler.js.map +1 -1
  7. package/dist/cjs/MappedTypes/{MapSecondaryIndexes.js → MapIndexes.js} +1 -1
  8. package/dist/cjs/MappedTypes/MapIndexes.js.map +1 -0
  9. package/dist/cjs/ModelRelationalField.js +82 -3
  10. package/dist/cjs/ModelRelationalField.js.map +1 -1
  11. package/dist/cjs/SchemaProcessor.js +3 -1
  12. package/dist/cjs/SchemaProcessor.js.map +1 -1
  13. package/dist/esm/Authorization.d.ts +2 -2
  14. package/dist/esm/CustomOperation.d.ts +46 -0
  15. package/dist/esm/CustomOperation.mjs +46 -0
  16. package/dist/esm/CustomOperation.mjs.map +1 -1
  17. package/dist/esm/CustomType.d.ts +32 -0
  18. package/dist/esm/CustomType.mjs +32 -0
  19. package/dist/esm/CustomType.mjs.map +1 -1
  20. package/dist/esm/Handler.d.ts +62 -0
  21. package/dist/esm/Handler.mjs +62 -0
  22. package/dist/esm/Handler.mjs.map +1 -1
  23. package/dist/esm/MappedTypes/ImplicitFieldInjector.d.ts +15 -5
  24. package/dist/esm/MappedTypes/{MapSecondaryIndexes.d.ts → MapIndexes.d.ts} +6 -0
  25. package/dist/esm/MappedTypes/MapIndexes.mjs +2 -0
  26. package/dist/esm/MappedTypes/MapIndexes.mjs.map +1 -0
  27. package/dist/esm/MappedTypes/ModelMetadata.d.ts +12 -5
  28. package/dist/esm/MappedTypes/ResolveFieldProperties.d.ts +3 -2
  29. package/dist/esm/ModelField.d.ts +1 -1
  30. package/dist/esm/ModelRelationalField.d.ts +83 -4
  31. package/dist/esm/ModelRelationalField.mjs +82 -3
  32. package/dist/esm/ModelRelationalField.mjs.map +1 -1
  33. package/dist/esm/ModelType.d.ts +22 -25
  34. package/dist/esm/RefType.d.ts +1 -1
  35. package/dist/esm/SchemaProcessor.mjs +3 -1
  36. package/dist/esm/SchemaProcessor.mjs.map +1 -1
  37. package/dist/esm/runtime/client/index.d.ts +26 -15
  38. package/dist/meta/cjs.tsbuildinfo +1 -1
  39. package/package.json +1 -1
  40. package/src/CustomOperation.ts +46 -0
  41. package/src/CustomType.ts +32 -0
  42. package/src/Handler.ts +62 -0
  43. package/src/MappedTypes/ImplicitFieldInjector.ts +22 -14
  44. package/src/MappedTypes/{MapSecondaryIndexes.ts → MapIndexes.ts} +16 -0
  45. package/src/MappedTypes/ModelMetadata.ts +17 -12
  46. package/src/MappedTypes/ResolveFieldProperties.ts +3 -2
  47. package/src/ModelField.ts +1 -1
  48. package/src/ModelRelationalField.ts +83 -4
  49. package/src/ModelType.ts +45 -46
  50. package/src/RefType.ts +1 -1
  51. package/src/SchemaProcessor.ts +5 -3
  52. package/src/runtime/client/index.ts +52 -25
  53. package/dist/cjs/MappedTypes/MapSecondaryIndexes.js.map +0 -1
  54. package/dist/esm/MappedTypes/MapSecondaryIndexes.mjs +0 -2
  55. package/dist/esm/MappedTypes/MapSecondaryIndexes.mjs.map +0 -1
@@ -161,7 +161,7 @@ export type ResolvedModel<Model extends Record<string, unknown>, Depth extends n
161
161
  };
162
162
  }[Depth extends -1 ? 'done' : 'recur'];
163
163
  export type SelectionSet<Model extends Record<string, unknown>, Path extends ReadonlyArray<ModelPath<FlatModel>>, FlatModel extends Record<string, unknown> = ResolvedModel<Model>> = CustomSelectionSetReturnValue<FlatModel, Path[number]>;
164
- export type ModelIdentifier<Model extends Record<any, any>> = Prettify<Record<Model['identifier'] & string, string>>;
164
+ export type ModelIdentifier<ModelMeta extends ModelMetaShape> = ModelMeta['identifier']['pk'] & (ModelMeta['identifier']['sk'] extends never ? unknown : ModelMeta['identifier']['sk']);
165
165
  type IfEquals<X, Y, A = X, B = never> = (<T>() => T extends X ? 1 : 2) extends <T>() => T extends Y ? 1 : 2 ? A : B;
166
166
  type WritableKeys<T> = {
167
167
  [P in keyof T]-?: IfEquals<{
@@ -179,7 +179,7 @@ type MutationInput<Fields, WritableFields = Pick<Fields, WritableKeys<Fields>>>
179
179
  /**
180
180
  * All identifiers and fields used to create a model
181
181
  */
182
- type CreateModelInput<Model extends Record<string, unknown>, ModelMeta extends Record<string, unknown>> = Equal<ModelIdentifier<ModelMeta>, {
182
+ type CreateModelInput<Model extends Record<string, unknown>, ModelMeta extends ModelMetaShape> = Equal<ModelIdentifier<ModelMeta>, {
183
183
  id: string;
184
184
  }> extends true ? Partial<ModelIdentifier<ModelMeta>> & Omit<MutationInput<Model>, 'id'> : MutationInput<Model>;
185
185
  /**
@@ -324,7 +324,7 @@ type ModelFilter<Model extends Record<any, any>> = LogicalFilters<Model> & {
324
324
  export type ModelSortDirection = 'ASC' | 'DESC';
325
325
  type ModelMetaShape = {
326
326
  secondaryIndexes: SecondaryIndexIrShape[];
327
- identifier: string;
327
+ identifier: PrimaryIndexIrShape;
328
328
  };
329
329
  export type ModelTypesClient<ModelName extends string, Model extends Record<string, unknown>, ModelMeta extends ModelMetaShape, Enums extends Record<string, string>, FlatModel extends Record<string, unknown> = ResolvedModel<Model>> = IndexQueryMethodsFromIR<ModelMeta['secondaryIndexes'], ModelName, Model, Enums> & {
330
330
  create: (model: Prettify<CreateModelInput<Model, ModelMeta>>, options?: {
@@ -348,9 +348,8 @@ export type ModelTypesClient<ModelName extends string, Model extends Record<stri
348
348
  authToken?: string;
349
349
  headers?: CustomHeaders;
350
350
  }): SingularReturnValue<Prettify<ReturnValue<Model, FlatModel, SelectionSet>>>;
351
- list<SelectionSet extends ReadonlyArray<ModelPath<FlatModel>> = never[]>(options?: Partial<ModelIdentifier<ModelMeta>> & {
351
+ list<SelectionSet extends ReadonlyArray<ModelPath<FlatModel>> = never[]>(options?: ListPkOptions<ModelMeta, Enums> & {
352
352
  filter?: ModelFilter<Model>;
353
- sortDirection?: ModelSortDirection;
354
353
  limit?: number;
355
354
  nextToken?: string | null;
356
355
  selectionSet?: SelectionSet;
@@ -408,7 +407,7 @@ type ModelTypesSSRCookies<ModelName extends string, Model extends Record<string,
408
407
  authToken?: string;
409
408
  headers?: CustomHeaders;
410
409
  }): SingularReturnValue<Prettify<ReturnValue<Model, FlatModel, SelectionSet>>>;
411
- list<SelectionSet extends ReadonlyArray<ModelPath<FlatModel>> = never[]>(options?: Partial<ModelIdentifier<ModelMeta>> & {
410
+ list<SelectionSet extends ReadonlyArray<ModelPath<FlatModel>> = never[]>(options?: ListPkOptions<ModelMeta, Enums> & {
412
411
  filter?: ModelFilter<Model>;
413
412
  sortDirection?: ModelSortDirection;
414
413
  limit?: number;
@@ -441,7 +440,7 @@ type ModelTypesSSRRequest<ModelName extends string, Model extends Record<string,
441
440
  authToken?: string;
442
441
  headers?: CustomHeaders;
443
442
  }): SingularReturnValue<Prettify<ReturnValue<Model, FlatModel, SelectionSet>>>;
444
- list<SelectionSet extends ReadonlyArray<ModelPath<FlatModel>> = never[]>(contextSpec: any, options?: Partial<ModelIdentifier<ModelMeta>> & {
443
+ list<SelectionSet extends ReadonlyArray<ModelPath<FlatModel>> = never[]>(contextSpec: any, options?: ListPkOptions<ModelMeta, Enums> & {
445
444
  filter?: ModelFilter<Model>;
446
445
  sortDirection?: ModelSortDirection;
447
446
  limit?: number;
@@ -516,27 +515,39 @@ export type RequestOptions = {
516
515
  */
517
516
  export type CustomHeaders = Record<string, string> | ((requestOptions?: RequestOptions) => Promise<Record<string, string>>);
518
517
  /**
519
- * SecondaryIndex index types and query methods
518
+ * PrimaryIndex field types and query methods
520
519
  */
521
- export type SecondaryIndexIrShape = {
522
- defaultQueryFieldSuffix: string;
523
- queryField: string;
520
+ export interface PrimaryIndexIrShape {
524
521
  pk: {
525
522
  [key: string]: string | number;
526
523
  };
527
524
  sk: {
528
525
  [key: string]: string | number;
529
- };
530
- };
526
+ } | never;
527
+ }
528
+ /**
529
+ * SecondaryIndex field types and query methods
530
+ */
531
+ export interface SecondaryIndexIrShape extends PrimaryIndexIrShape {
532
+ defaultQueryFieldSuffix: string;
533
+ queryField: string;
534
+ }
531
535
  type IndexQueryMethodsFromIR<SecondaryIdxTuple extends SecondaryIndexIrShape[], ModelName extends string, Model extends Record<string, unknown>, Enums extends Record<string, string>, Res = unknown> = SecondaryIdxTuple extends [
532
536
  infer A extends SecondaryIndexIrShape,
533
537
  ...infer B extends SecondaryIndexIrShape[]
534
538
  ] ? IndexQueryMethodsFromIR<B, ModelName, Model, Enums, IndexQueryMethodSignature<A, ModelName, Model, Enums> & Res> : Res;
535
- type IndexQueryMethodSignature<Idx extends SecondaryIndexIrShape, ModelName extends string, Model extends Record<string, unknown>, Enums extends Record<string, string>> = Record<IsEmptyStringOrNever<Idx['queryField']> extends false ? Idx['queryField'] : `list${ModelName}By${Idx['defaultQueryFieldSuffix']}`, <FlatModel extends Record<string, unknown> = ResolvedModel<Model>, SelectionSet extends ReadonlyArray<ModelPath<FlatModel>> = never[]>(input: {
539
+ type ListPkOptions<ModelMeta extends ModelMetaShape, Enums extends Record<string, string>> = ModelMeta['identifier']['sk'] extends never ? unknown : Prettify<Partial<IndexQueryInput<ModelMeta['identifier'], Enums>> & {
540
+ sortDirection?: ModelSortDirection;
541
+ }>;
542
+ /**
543
+ * Accepts a PrimaryIndexIr or SecondaryIndexIr and returns resolved parameters
544
+ */
545
+ type IndexQueryInput<Idx extends PrimaryIndexIrShape, Enums extends Record<string, string>> = {
536
546
  [PKField in keyof Idx['pk']]: Idx['pk'][PKField] extends `${deferredRefResolvingPrefix}${infer R}` ? Enums[R] : Idx['pk'][PKField];
537
547
  } & {
538
548
  [SKField in keyof Idx['sk']]+?: number extends Idx['sk'][SKField] ? NumericFilter : Idx['sk'][SKField] extends `${deferredRefResolvingPrefix}${infer R}` ? StringFilter<Enums[R]> : StringFilter<Idx['sk'][SKField] & string>;
539
- }, options?: {
549
+ };
550
+ type IndexQueryMethodSignature<Idx extends SecondaryIndexIrShape, ModelName extends string, Model extends Record<string, unknown>, Enums extends Record<string, string>> = Record<IsEmptyStringOrNever<Idx['queryField']> extends false ? Idx['queryField'] : `list${ModelName}By${Idx['defaultQueryFieldSuffix']}`, <FlatModel extends Record<string, unknown> = ResolvedModel<Model>, SelectionSet extends ReadonlyArray<ModelPath<FlatModel>> = never[]>(input: IndexQueryInput<Idx, Enums>, options?: {
540
551
  filter?: ModelFilter<Model>;
541
552
  sortDirection?: ModelSortDirection;
542
553
  limit?: number;