@aws-amplify/data-schema 0.0.0-20240412222732

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 (92) hide show
  1. package/LICENSE +175 -0
  2. package/NOTICE +1 -0
  3. package/internals/package.json +6 -0
  4. package/lib-esm/index.d.ts +5 -0
  5. package/lib-esm/index.d.ts.map +1 -0
  6. package/lib-esm/index.js +28 -0
  7. package/lib-esm/src/Authorization.d.ts +287 -0
  8. package/lib-esm/src/Authorization.d.ts.map +1 -0
  9. package/lib-esm/src/Authorization.js +332 -0
  10. package/lib-esm/src/ClientSchema.d.ts +54 -0
  11. package/lib-esm/src/ClientSchema.d.ts.map +1 -0
  12. package/lib-esm/src/ClientSchema.js +2 -0
  13. package/lib-esm/src/CombineSchema.d.ts +19 -0
  14. package/lib-esm/src/CombineSchema.d.ts.map +1 -0
  15. package/lib-esm/src/CombineSchema.js +40 -0
  16. package/lib-esm/src/CustomOperation.d.ts +98 -0
  17. package/lib-esm/src/CustomOperation.d.ts.map +1 -0
  18. package/lib-esm/src/CustomOperation.js +67 -0
  19. package/lib-esm/src/CustomType.d.ts +36 -0
  20. package/lib-esm/src/CustomType.d.ts.map +1 -0
  21. package/lib-esm/src/CustomType.js +14 -0
  22. package/lib-esm/src/EnumType.d.ts +16 -0
  23. package/lib-esm/src/EnumType.d.ts.map +1 -0
  24. package/lib-esm/src/EnumType.js +17 -0
  25. package/lib-esm/src/Handler.d.ts +58 -0
  26. package/lib-esm/src/Handler.d.ts.map +1 -0
  27. package/lib-esm/src/Handler.js +48 -0
  28. package/lib-esm/src/MappedTypes/CustomOperations.d.ts +127 -0
  29. package/lib-esm/src/MappedTypes/CustomOperations.d.ts.map +1 -0
  30. package/lib-esm/src/MappedTypes/CustomOperations.js +2 -0
  31. package/lib-esm/src/MappedTypes/ExtractNonModelTypes.d.ts +74 -0
  32. package/lib-esm/src/MappedTypes/ExtractNonModelTypes.d.ts.map +1 -0
  33. package/lib-esm/src/MappedTypes/ExtractNonModelTypes.js +2 -0
  34. package/lib-esm/src/MappedTypes/ForeignKeys.d.ts +84 -0
  35. package/lib-esm/src/MappedTypes/ForeignKeys.d.ts.map +1 -0
  36. package/lib-esm/src/MappedTypes/ForeignKeys.js +2 -0
  37. package/lib-esm/src/MappedTypes/ImplicitFieldInjector.d.ts +38 -0
  38. package/lib-esm/src/MappedTypes/ImplicitFieldInjector.d.ts.map +1 -0
  39. package/lib-esm/src/MappedTypes/ImplicitFieldInjector.js +2 -0
  40. package/lib-esm/src/MappedTypes/MapSecondaryIndexes.d.ts +61 -0
  41. package/lib-esm/src/MappedTypes/MapSecondaryIndexes.d.ts.map +1 -0
  42. package/lib-esm/src/MappedTypes/MapSecondaryIndexes.js +2 -0
  43. package/lib-esm/src/MappedTypes/ModelMetadata.d.ts +26 -0
  44. package/lib-esm/src/MappedTypes/ModelMetadata.d.ts.map +1 -0
  45. package/lib-esm/src/MappedTypes/ModelMetadata.js +2 -0
  46. package/lib-esm/src/MappedTypes/ResolveFieldProperties.d.ts +70 -0
  47. package/lib-esm/src/MappedTypes/ResolveFieldProperties.d.ts.map +1 -0
  48. package/lib-esm/src/MappedTypes/ResolveFieldProperties.js +2 -0
  49. package/lib-esm/src/MappedTypes/ResolveSchema.d.ts +65 -0
  50. package/lib-esm/src/MappedTypes/ResolveSchema.d.ts.map +1 -0
  51. package/lib-esm/src/MappedTypes/ResolveSchema.js +2 -0
  52. package/lib-esm/src/ModelField.d.ts +162 -0
  53. package/lib-esm/src/ModelField.d.ts.map +1 -0
  54. package/lib-esm/src/ModelField.js +209 -0
  55. package/lib-esm/src/ModelIndex.d.ts +19 -0
  56. package/lib-esm/src/ModelIndex.d.ts.map +1 -0
  57. package/lib-esm/src/ModelIndex.js +33 -0
  58. package/lib-esm/src/ModelRelationalField.d.ts +119 -0
  59. package/lib-esm/src/ModelRelationalField.d.ts.map +1 -0
  60. package/lib-esm/src/ModelRelationalField.js +120 -0
  61. package/lib-esm/src/ModelSchema.d.ts +107 -0
  62. package/lib-esm/src/ModelSchema.d.ts.map +1 -0
  63. package/lib-esm/src/ModelSchema.js +162 -0
  64. package/lib-esm/src/ModelType.d.ts +85 -0
  65. package/lib-esm/src/ModelType.d.ts.map +1 -0
  66. package/lib-esm/src/ModelType.js +64 -0
  67. package/lib-esm/src/RefType.d.ts +59 -0
  68. package/lib-esm/src/RefType.d.ts.map +1 -0
  69. package/lib-esm/src/RefType.js +47 -0
  70. package/lib-esm/src/SchemaProcessor.d.ts +11 -0
  71. package/lib-esm/src/SchemaProcessor.d.ts.map +1 -0
  72. package/lib-esm/src/SchemaProcessor.js +1106 -0
  73. package/lib-esm/src/index.d.ts +13 -0
  74. package/lib-esm/src/index.d.ts.map +1 -0
  75. package/lib-esm/src/index.js +43 -0
  76. package/lib-esm/src/internals/index.d.ts +2 -0
  77. package/lib-esm/src/internals/index.d.ts.map +1 -0
  78. package/lib-esm/src/internals/index.js +5 -0
  79. package/lib-esm/src/util/Brand.d.ts +36 -0
  80. package/lib-esm/src/util/Brand.d.ts.map +1 -0
  81. package/lib-esm/src/util/Brand.js +32 -0
  82. package/lib-esm/src/util/IndexLimit.d.ts +8 -0
  83. package/lib-esm/src/util/IndexLimit.d.ts.map +1 -0
  84. package/lib-esm/src/util/IndexLimit.js +2 -0
  85. package/lib-esm/src/util/SpreadTuple.d.ts +7 -0
  86. package/lib-esm/src/util/SpreadTuple.d.ts.map +1 -0
  87. package/lib-esm/src/util/SpreadTuple.js +2 -0
  88. package/lib-esm/src/util/index.d.ts +4 -0
  89. package/lib-esm/src/util/index.d.ts.map +1 -0
  90. package/lib-esm/src/util/index.js +6 -0
  91. package/lib-esm/tsconfig.tsbuildinfo +1 -0
  92. package/package.json +62 -0
@@ -0,0 +1,61 @@
1
+ import { IsEmptyStringOrNever } from '@aws-amplify/data-schema-types';
2
+ import { ModelIndexType } from '../ModelIndex';
3
+ type ModelIndexTypeShape = ModelIndexType<any, any, any, any, any>;
4
+ /**
5
+ * Maps array of ModelIndexType to SecondaryIndexIrShape (defined in in data-schema-types)
6
+ * */
7
+ export type SecondaryIndexToIR<Idxs extends ReadonlyArray<ModelIndexTypeShape>, ResolvedFields, Result extends readonly any[] = readonly []> = Idxs extends readonly [
8
+ infer First extends ModelIndexTypeShape,
9
+ ...infer Rest extends ReadonlyArray<ModelIndexTypeShape>
10
+ ] ? SecondaryIndexToIR<Rest, ResolvedFields, [
11
+ ...Result,
12
+ SingleIndexIrFromType<First, ResolvedFields>
13
+ ]> : Result;
14
+ /**
15
+ * @typeParam Idx - accepts a single ModelIndexType
16
+ * @typeParam ResolvedFields - resolved model fields
17
+ *
18
+ * @returns an IR with the following shape:
19
+ * {
20
+ * queryField: string;
21
+ * pk: { [fieldName: string]: string | number }
22
+ * sk: { [fieldName: string]: string | number } | never
23
+ * }
24
+ *
25
+ * @remarks - the IR type alias is defined as SecondaryIndexIrShape in data-schema-types
26
+ */
27
+ type SingleIndexIrFromType<Idx extends ModelIndexTypeShape, ResolvedFields> = Idx extends ModelIndexType<any, infer PK extends string, infer SK, infer QueryField extends string | never, any> ? {
28
+ queryField: IsEmptyStringOrNever<QueryField> extends true ? `listBy${QueryFieldLabelFromTuple<SK, Capitalize<PK>>}` : QueryField;
29
+ pk: PK extends keyof ResolvedFields ? {
30
+ [Key in PK]: Exclude<ResolvedFields[PK], null>;
31
+ } : never;
32
+ sk: unknown extends SK ? never : ResolvedSortKeyFields<SK, ResolvedFields>;
33
+ } : never;
34
+ /**
35
+ * @typeParam SK - tuple of SortKey field names, e.g. ['viewCount', 'createdAt']
36
+ * @typeParam StrStart - initial string value; expects capitalized Partition Key field name
37
+ *
38
+ * @returns Query field name: concatenated PascalCase string with an `And` separator
39
+ * @example
40
+ * QueryFieldLabelFromTuple<['viewCount', 'createdAt'], 'Title'> => 'TitleAndViewCountAndCreatedAt'
41
+ */
42
+ type QueryFieldLabelFromTuple<SK, StrStart extends string = ''> = SK extends readonly [infer A extends string, ...infer B extends string[]] ? QueryFieldLabelFromTuple<B, `${StrStart}And${Capitalize<A>}`> : StrStart;
43
+ /**
44
+ * @typeParam SK - tuple of SortKey field names, e.g. ['viewCount', 'createdAt']
45
+ * @typeParam ResolvedFields - resolved model fields
46
+ *
47
+ * @returns object type where the key is the sort key field name and the value is the resolved model field type
48
+ * @example
49
+ * {
50
+ * viewCount: number;
51
+ * createdAt: string;
52
+ * }
53
+ */
54
+ type ResolvedSortKeyFields<SK, ResolvedFields> = SK extends readonly [
55
+ infer A extends string,
56
+ ...infer B extends string[]
57
+ ] ? A extends keyof ResolvedFields ? {
58
+ [Key in A]: Exclude<ResolvedFields[A], null>;
59
+ } & (B extends readonly never[] ? unknown : ResolvedSortKeyFields<B, ResolvedFields>) : never : never;
60
+ export {};
61
+ //# sourceMappingURL=MapSecondaryIndexes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MapSecondaryIndexes.d.ts","sourceRoot":"","sources":["../../../src/MappedTypes/MapSecondaryIndexes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,KAAK,mBAAmB,GAAG,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAEnE;;KAEK;AACL,MAAM,MAAM,kBAAkB,CAC5B,IAAI,SAAS,aAAa,CAAC,mBAAmB,CAAC,EAC/C,cAAc,EACd,MAAM,SAAS,SAAS,GAAG,EAAE,GAAG,SAAS,EAAE,IACzC,IAAI,SAAS,SAAS;IACxB,MAAM,KAAK,SAAS,mBAAmB;IACvC,GAAG,MAAM,IAAI,SAAS,aAAa,CAAC,mBAAmB,CAAC;CACzD,GACG,kBAAkB,CAChB,IAAI,EACJ,cAAc,EACd;IAAC,GAAG,MAAM;IAAE,qBAAqB,CAAC,KAAK,EAAE,cAAc,CAAC;CAAC,CAC1D,GACD,MAAM,CAAC;AAEX;;;;;;;;;;;;GAYG;AACH,KAAK,qBAAqB,CACxB,GAAG,SAAS,mBAAmB,EAC/B,cAAc,IACZ,GAAG,SAAS,cAAc,CAC5B,GAAG,EACH,MAAM,EAAE,SAAS,MAAM,EACvB,MAAM,EAAE,EACR,MAAM,UAAU,SAAS,MAAM,GAAG,KAAK,EACvC,GAAG,CACJ,GACG;IACE,UAAU,EAAE,oBAAoB,CAAC,UAAU,CAAC,SAAS,IAAI,GACrD,SAAS,wBAAwB,CAAC,EAAE,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,GACvD,UAAU,CAAC;IACf,EAAE,EAAE,EAAE,SAAS,MAAM,cAAc,GAC/B;SACG,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC;KAC/C,GACD,KAAK,CAAC;IAEV,EAAE,EAAE,OAAO,SAAS,EAAE,GAClB,KAAK,GACL,qBAAqB,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC;CAC/C,GACD,KAAK,CAAC;AAEV;;;;;;;GAOG;AACH,KAAK,wBAAwB,CAC3B,EAAE,EACF,QAAQ,SAAS,MAAM,GAAG,EAAE,IAC1B,EAAE,SAAS,SAAS,CAAC,MAAM,CAAC,SAAS,MAAM,EAAE,GAAG,MAAM,CAAC,SAAS,MAAM,EAAE,CAAC,GACzE,wBAAwB,CAAC,CAAC,EAAE,GAAG,QAAQ,MAAM,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAC7D,QAAQ,CAAC;AAEb;;;;;;;;;;GAUG;AACH,KAAK,qBAAqB,CAAC,EAAE,EAAE,cAAc,IAAI,EAAE,SAAS,SAAS;IACnE,MAAM,CAAC,SAAS,MAAM;IACtB,GAAG,MAAM,CAAC,SAAS,MAAM,EAAE;CAC5B,GACG,CAAC,SAAS,MAAM,cAAc,GAC5B;KACG,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;CAC7C,GAAG,CAAC,CAAC,SAAS,SAAS,KAAK,EAAE,GAC3B,OAAO,GACP,qBAAqB,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,GAC7C,KAAK,GACP,KAAK,CAAC"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,26 @@
1
+ import { type UnionToIntersection, type ExcludeEmpty } from '@aws-amplify/data-schema-types';
2
+ import type { ModelType } from '../ModelType';
3
+ import type { ModelRelationalFieldParamShape } from '../ModelRelationalField';
4
+ export type ModelIdentifier<T> = {
5
+ [Property in keyof T]: T[Property] extends ModelType<infer R, any> ? R['identifier'] extends any[] ? {
6
+ identifier: R['identifier'][number];
7
+ } : never : never;
8
+ };
9
+ export type ModelSecondaryIndexes<T> = {
10
+ [Property in keyof T]: T[Property] extends ModelType<infer R, any> ? R['secondaryIndexes'] extends any[] ? {
11
+ secondaryIndexes: R['secondaryIndexes'];
12
+ } : never : never;
13
+ };
14
+ export type RelationalMetadata<ResolvedSchema, ResolvedFields extends Record<string, unknown>, IdentifierMeta extends Record<string, any>> = UnionToIntersection<ExcludeEmpty<{
15
+ [ModelName in keyof ResolvedSchema]: {
16
+ [Field in keyof ResolvedSchema[ModelName] as ResolvedSchema[ModelName][Field] extends ModelRelationalFieldParamShape ? ResolvedSchema[ModelName][Field]['relationshipType'] extends 'hasOne' | 'belongsTo' ? ModelName : ResolvedSchema[ModelName][Field]['relationshipType'] extends 'manyToMany' ? ResolvedSchema[ModelName][Field]['relationName'] extends string ? ResolvedSchema[ModelName][Field]['relationName'] : never : never : never]: ResolvedSchema[ModelName][Field] extends ModelRelationalFieldParamShape ? ResolvedSchema[ModelName][Field] extends ModelRelationalFieldParamShape ? ResolvedSchema[ModelName][Field]['relationshipType'] extends 'manyToMany' | 'hasMany' ? {
17
+ relationalInputFields: Partial<Record<`${Uncapitalize<ModelName & string>}`, NormalizeInputFields<ResolvedFields[ModelName & string], ExtractModelIdentifier<ModelName, IdentifierMeta>>>>;
18
+ } : {
19
+ relationalInputFields: Partial<Record<Field, NormalizeInputFields<ResolvedFields[ResolvedSchema[ModelName][Field]['relatedModel']], ExtractModelIdentifier<`${Capitalize<Field & string>}`, IdentifierMeta>>>>;
20
+ } : never : never;
21
+ };
22
+ }[keyof ResolvedSchema]>>;
23
+ type ExtractModelIdentifier<ModelName, IdentifierMeta> = ModelName extends keyof IdentifierMeta ? IdentifierMeta[ModelName] : never;
24
+ type NormalizeInputFields<ModelFields, IdentifierMeta extends Record<string, any>> = Partial<Omit<ModelFields, IdentifierMeta['identifier']>> & Required<Pick<ModelFields, IdentifierMeta['identifier']>>;
25
+ export {};
26
+ //# sourceMappingURL=ModelMetadata.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModelMetadata.d.ts","sourceRoot":"","sources":["../../../src/MappedTypes/ModelMetadata.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,70 @@
1
+ import type { UnionToIntersection, LazyLoader, ExcludeEmpty } from '@aws-amplify/data-schema-types';
2
+ import type { Authorization, ImpliedAuthFields } from '../Authorization';
3
+ import type { ModelField } from '../ModelField';
4
+ import type { ModelType, ModelTypeParamShape } from '../ModelType';
5
+ import type { GenericModelSchema } from '../ModelSchema';
6
+ import type { ModelRelationalField, ModelRelationalFieldParamShape, ModelRelationalTypeArgFactory, ModelRelationshipTypes } from '../ModelRelationalField';
7
+ import type { AllImpliedFKs } from './ForeignKeys';
8
+ import type { ResolveSchema, SchemaTypes } from './ResolveSchema';
9
+ import type { InjectImplicitModelFields } from './ImplicitFieldInjector';
10
+ import type { ModelIdentifier } from './ModelMetadata';
11
+ import type { RefType, RefTypeParamShape } from '../RefType';
12
+ import type { NonModelTypesShape } from './ExtractNonModelTypes';
13
+ import type { CustomType, CustomTypeParamShape } from '../CustomType';
14
+ import type { EnumType, EnumTypeParamShape } from '../EnumType';
15
+ import type { CustomOperation, CustomOperationParamShape } from '../CustomOperation';
16
+ export type ResolveFieldProperties<Schema extends GenericModelSchema<any>, NonModelTypes extends NonModelTypesShape, ImplicitModelsSchema, ResolvedSchema = ResolveSchema<Schema>, IdentifierMeta extends Record<string, {
17
+ identifier: string;
18
+ }> = ModelIdentifier<SchemaTypes<Schema>>, FieldsWithInjectedImplicitFields = InjectImplicitModelFields<ResolvedSchema & ImplicitModelsSchema, IdentifierMeta>, FieldsWithRelationships = ResolveRelationships<FieldsWithInjectedImplicitFields, NonModelTypes>> = Intersection<FilterFieldTypes<MarkModelsNonNullableFieldsRequired<FieldsWithRelationships>>, FilterFieldTypes<MarkModelsNullableFieldsOptional<FieldsWithRelationships>>, FilterFieldTypes<ModelImpliedAuthFields<Schema>>, AllImpliedFKs<ResolvedSchema, IdentifierMeta>>;
19
+ export type ResolveStaticFieldProperties<Schema extends GenericModelSchema<any>, NonModelTypes extends NonModelTypesShape, ImplicitModelsSchema, ResolvedSchema = ResolveSchema<Schema>, FieldsWithInjectedImplicitFields = InjectImplicitModelFields<ResolvedSchema & ImplicitModelsSchema, object>, FieldsWithRelationships = ResolveRelationships<FieldsWithInjectedImplicitFields, NonModelTypes>> = Intersection<FilterFieldTypes<MarkModelsNonNullableFieldsRequired<FieldsWithRelationships>>, FilterFieldTypes<MarkModelsNullableFieldsOptional<FieldsWithRelationships>>>;
20
+ export type CreateImplicitModelsFromRelations<Schema> = UnionToIntersection<ExcludeEmpty<{
21
+ [ModelProp in keyof Schema]: {
22
+ [FieldProp in keyof Schema[ModelProp] as Schema[ModelProp][FieldProp] extends ModelRelationalFieldParamShape ? Schema[ModelProp][FieldProp]['relationName'] extends string ? Schema[ModelProp][FieldProp]['relationName'] extends keyof Schema ? never : Schema[ModelProp][FieldProp]['relationName'] : never : never]: Record<`${Lowercase<ModelProp & string>}`, ModelRelationalTypeArgFactory<ModelProp & string, ModelRelationshipTypes.hasMany, false>>;
23
+ };
24
+ }[keyof Schema]>>;
25
+ type GetRelationshipRef<T, RM extends keyof T, TypeArg extends ModelRelationalFieldParamShape, Flat extends boolean, ResolvedModel = ResolveRelationalFieldsForModel<T, RM, Flat>, Model = TypeArg['valueRequired'] extends true ? ResolvedModel : ResolvedModel | null | undefined> = LazyLoader<Model, TypeArg['array']>;
26
+ type ResolveRelationalFieldsForModel<Schema, ModelName extends keyof Schema, Flat extends boolean> = {
27
+ [FieldName in keyof Schema[ModelName]]: Schema[ModelName][FieldName] extends ModelRelationalFieldParamShape ? Schema[ModelName][FieldName]['relatedModel'] extends keyof Schema ? GetRelationshipRef<Schema, Schema[ModelName][FieldName]['relatedModel'], Schema[ModelName][FieldName], Flat> : never : Schema[ModelName][FieldName];
28
+ };
29
+ export type ResolveRef<NonModelTypes extends NonModelTypesShape, Ref extends RefTypeParamShape, Link extends string = Ref['link'], RefValue = Link extends keyof NonModelTypes['enums'] ? NonModelTypes['enums'][Link] : Link extends keyof NonModelTypes['customTypes'] ? ResolveRefsOfCustomType<NonModelTypes, NonModelTypes['customTypes'][Link]> : never, Value = Ref['valueRequired'] extends true ? RefValue : RefValue | null> = ResolveRefValueArrayTraits<Ref, Value>;
30
+ /**
31
+ * Converts the resolved RefType Value type into Array<> according to the
32
+ * `array` and `arrayRequired` properties of the RefType
33
+ */
34
+ export type ResolveRefValueArrayTraits<Ref extends RefTypeParamShape, Value> = Ref['array'] extends false ? Value : Ref['arrayRequired'] extends true ? Array<Value> : Array<Value> | null;
35
+ export type ResolveRefsOfCustomType<NonModelTypes extends NonModelTypesShape, T> = {
36
+ [Prop in keyof T]: T[Prop] extends RefType<infer R extends RefTypeParamShape, any, any> | null ? ResolveRef<NonModelTypes, R> : T[Prop];
37
+ } extends infer Resolved ? ResolveCustomTypeFieldsRequirements<Resolved> : never;
38
+ export type ResolveCustomTypeFieldsRequirements<Resolved> = Intersection<ExtractNullableFieldsToOptionalFields<Resolved>, ExtractNonNullableFieldsToRequiredFields<Resolved>>;
39
+ type ResolveRelationships<Schema, NonModelTypes extends NonModelTypesShape, Flat extends boolean = false> = {
40
+ [ModelProp in keyof Schema]: {
41
+ [FieldProp in keyof Schema[ModelProp]]: Schema[ModelProp][FieldProp] extends RefType<infer R extends RefTypeParamShape, any, any> | null ? ResolveRef<NonModelTypes, R> : Schema[ModelProp][FieldProp] extends ModelRelationalFieldParamShape ? Schema[ModelProp][FieldProp]['relatedModel'] extends keyof Schema ? Schema[ModelProp][FieldProp]['relationshipType'] extends 'manyToMany' ? Schema[ModelProp][FieldProp]['relationName'] extends keyof Schema ? GetRelationshipRef<Schema, Schema[ModelProp][FieldProp]['relationName'], Schema[ModelProp][FieldProp], Flat> : never : GetRelationshipRef<Schema, Schema[ModelProp][FieldProp]['relatedModel'], Schema[ModelProp][FieldProp], Flat> : never : Schema[ModelProp][FieldProp];
42
+ };
43
+ };
44
+ type FilterFieldTypes<Schema> = {
45
+ [ModelProp in keyof Schema]: {
46
+ [FieldProp in keyof Schema[ModelProp] as Schema[ModelProp][FieldProp] extends undefined ? never : FieldProp]: Schema[ModelProp][FieldProp];
47
+ };
48
+ };
49
+ type ExtractNullableFieldsToOptionalFields<Fields> = Partial<{
50
+ [FieldProp in keyof Fields as null extends Fields[FieldProp] ? FieldProp : never]: null extends Fields[FieldProp] ? Fields[FieldProp] : never;
51
+ }>;
52
+ type MarkModelsNullableFieldsOptional<Schema> = {
53
+ [ModelProp in keyof Schema]: ExtractNullableFieldsToOptionalFields<Schema[ModelProp]>;
54
+ };
55
+ type ExtractNonNullableFieldsToRequiredFields<Fields> = {
56
+ [FieldProp in keyof Fields as null extends Fields[FieldProp] ? never : FieldProp]: null extends Fields[FieldProp] ? never : Fields[FieldProp];
57
+ };
58
+ type MarkModelsNonNullableFieldsRequired<Schema> = {
59
+ [ModelProp in keyof Schema]: ExtractNonNullableFieldsToRequiredFields<Schema[ModelProp]>;
60
+ };
61
+ type Intersection<A = Record<never, never>, B = Record<never, never>, C = Record<never, never>, D = Record<never, never>> = A & B & C & D extends infer U ? {
62
+ [P in keyof U]: U[P];
63
+ } : never;
64
+ export type ModelImpliedAuthFields<Schema extends GenericModelSchema<any>> = {
65
+ [ModelKey in keyof Schema['data']['types'] as Schema['data']['types'][ModelKey] extends EnumType<EnumTypeParamShape> ? never : Schema['data']['types'][ModelKey] extends CustomType<CustomTypeParamShape> ? never : Schema['data']['types'][ModelKey] extends CustomOperation<CustomOperationParamShape, any> ? never : ModelKey]: Schema['data']['types'][ModelKey] extends ModelType<infer Model, any> ? AllAuthFieldsForModel<Schema, Model> : object;
66
+ };
67
+ type AllAuthFieldsForModel<Schema extends GenericModelSchema<any>, Model extends Schema['data']['types'][keyof Schema['data']['types']]> = (Model['authorization'][number] extends never ? Schema['data']['authorization'][number] extends never ? object : ImpliedAuthFields<Schema['data']['authorization'][number]> : ImpliedAuthFields<Model['authorization'][number]>) & ImpliedAuthFieldsFromFields<Model>;
68
+ type ImpliedAuthFieldsFromFields<T> = UnionToIntersection<T extends ModelTypeParamShape ? T['fields'][keyof T['fields']] extends ModelField<any, any, infer Auth> | ModelRelationalField<any, any, any, infer Auth> | RefType<any, any, infer Auth> ? Auth extends Authorization<any, any, any> ? ImpliedAuthFields<Auth> : object : object : object>;
69
+ export {};
70
+ //# sourceMappingURL=ResolveFieldProperties.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResolveFieldProperties.d.ts","sourceRoot":"","sources":["../../../src/MappedTypes/ResolveFieldProperties.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,65 @@
1
+ import type { ModelType } from '../ModelType';
2
+ import type { GenericModelSchema } from '../ModelSchema';
3
+ import type { ModelRelationalField, ModelRelationshipTypes, RelationTypeFunctionOmitMapping } from '../ModelRelationalField';
4
+ import type { ModelField } from '../ModelField';
5
+ import type { CustomType, CustomTypeParamShape } from '../CustomType';
6
+ import type { EnumType, EnumTypeParamShape } from '../EnumType';
7
+ import type { RefType, RefTypeParamShape } from '../RefType';
8
+ import type { CustomOperation, CustomOperationParamShape } from '../CustomOperation';
9
+ export type ResolveSchema<Schema> = FieldTypes<ModelTypes<SchemaTypes<Schema>>>;
10
+ export type SchemaTypes<T> = T extends GenericModelSchema<any> ? T['data']['types'] : never;
11
+ /**
12
+ * Resolves model types
13
+ *
14
+ * Removes CustomTypes and Enums from resolved schema.
15
+ * They are extracted separately in ExtractNonModelTypes.ts and
16
+ * added to ModelMeta in ClientSchema.ts
17
+ */
18
+ export type ModelTypes<Schema> = {
19
+ [Model in keyof Schema as Schema[Model] extends EnumType<EnumTypeParamShape> | CustomType<CustomTypeParamShape> | CustomOperation<CustomOperationParamShape, any> ? never : Model]: Schema[Model] extends ModelType<infer R, any> ? R['fields'] : never;
20
+ };
21
+ /**
22
+ * Gets the collection of all ModelTypes and CustomTypes which are explicitly
23
+ * defined in the schema.
24
+ */
25
+ export type ModelAndCustomTypes<Schema> = {
26
+ [Model in keyof Schema as Schema[Model] extends EnumType<EnumTypeParamShape> | CustomOperation<CustomOperationParamShape, any> ? never : Model]: Schema[Model] extends ModelType<any, any> ? Schema[Model] : Schema[Model] extends CustomType<CustomTypeParamShape> ? Schema[Model] : never;
27
+ };
28
+ /**
29
+ * Resolves field types
30
+ *
31
+ * Non-model types are replaced with Refs. Refs remain and are resolved in ResolveFieldProperties.ts
32
+ */
33
+ export type FieldTypes<T> = {
34
+ [ModelProp in keyof T]: {
35
+ [FieldProp in keyof T[ModelProp]]: T[ModelProp][FieldProp] extends ModelField<infer R, any, any> ? R : T[ModelProp][FieldProp] extends RefType<infer R extends RefTypeParamShape, any, any> ? R['valueRequired'] extends true ? T[ModelProp][FieldProp] : T[ModelProp][FieldProp] | null : T[ModelProp][FieldProp] extends EnumType<EnumTypeParamShape> | CustomType<CustomTypeParamShape> ? RefType<{
36
+ link: `${Capitalize<ModelProp & string>}${Capitalize<FieldProp & string>}`;
37
+ type: 'ref';
38
+ valueRequired: false;
39
+ array: false;
40
+ arrayRequired: false;
41
+ authorization: [];
42
+ }> | null : T[ModelProp][FieldProp] extends ModelRelationalField<infer R, string, RelationTypeFunctionOmitMapping<ModelRelationshipTypes>, any> ? R : never;
43
+ };
44
+ };
45
+ /**
46
+ * Resolves field types for a CustomType.
47
+ *
48
+ * This utility type is needed in addition to the `FieldTypes` utility type as
49
+ * without checking `ModelRelationalField` can improve ~5% on resolving performance.
50
+ *
51
+ * Non-model types are replaced with Refs. Refs remain and are resolved in ResolveFieldProperties.ts
52
+ */
53
+ export type FieldTypesOfCustomType<T> = {
54
+ [CustomTypeName in keyof T]: {
55
+ [FieldProp in keyof T[CustomTypeName]]: T[CustomTypeName][FieldProp] extends ModelField<infer R, any, any> ? R : T[CustomTypeName][FieldProp] extends RefType<infer R extends RefTypeParamShape, any, any> ? R['valueRequired'] extends true ? T[CustomTypeName][FieldProp] : T[CustomTypeName][FieldProp] | null : T[CustomTypeName][FieldProp] extends EnumType<EnumTypeParamShape> | CustomType<CustomTypeParamShape> ? RefType<{
56
+ link: `${Capitalize<CustomTypeName & string>}${Capitalize<FieldProp & string>}`;
57
+ type: 'ref';
58
+ valueRequired: false;
59
+ array: false;
60
+ arrayRequired: false;
61
+ authorization: [];
62
+ }> | null : never;
63
+ };
64
+ };
65
+ //# sourceMappingURL=ResolveSchema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResolveSchema.d.ts","sourceRoot":"","sources":["../../../src/MappedTypes/ResolveSchema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,162 @@
1
+ import { Brand } from './util';
2
+ import { Authorization } from './Authorization';
3
+ /**
4
+ * Used to "attach" auth types to ModelField without exposing them on the builder.
5
+ */
6
+ export declare const __auth: unique symbol;
7
+ declare const brandName = "modelField";
8
+ export declare enum ModelFieldType {
9
+ Id = "ID",
10
+ String = "String",
11
+ Integer = "Int",
12
+ Float = "Float",
13
+ Boolean = "Boolean",
14
+ Date = "AWSDate",
15
+ Time = "AWSTime",
16
+ DateTime = "AWSDateTime",
17
+ Timestamp = "AWSTimestamp",
18
+ Email = "AWSEmail",
19
+ JSON = "AWSJSON",
20
+ Phone = "AWSPhone",
21
+ Url = "AWSURL",
22
+ IPAddress = "AWSIPAddress"
23
+ }
24
+ export declare enum ModelFieldDataType {
25
+ String = "string",
26
+ Number = "number",
27
+ Boolean = "boolean",
28
+ Date = "Date",
29
+ JSON = "any"
30
+ }
31
+ type FieldData = {
32
+ fieldType: ModelFieldType;
33
+ required: boolean;
34
+ array: boolean;
35
+ arrayRequired: boolean;
36
+ default: undefined | ModelFieldTypeParamOuter;
37
+ authorization: Authorization<any, any, any>[];
38
+ };
39
+ type ModelFieldTypeParamInner = string | number | boolean | Date | Json | null;
40
+ export type Json = null | string | number | boolean | object | any[];
41
+ export type ModelFieldTypeParamOuter = ModelFieldTypeParamInner | Array<ModelFieldTypeParamInner> | null;
42
+ /**
43
+ * Field type arg mutators
44
+ */
45
+ export type Nullable<T> = T | null;
46
+ export type Required<T> = Exclude<T, null>;
47
+ export type ArrayField<T> = [T] extends [ModelFieldTypeParamInner] ? Array<T> | null : never;
48
+ /**
49
+ * Public API for the chainable builder methods exposed by Model Field.
50
+ * The type is narrowing e.g., after calling .array() it will be omitted from intellisense suggestions
51
+ *
52
+ * @typeParam T - holds the JS data type of the field
53
+ * @typeParam K - union of strings representing already-invoked method names. Used to improve Intellisense
54
+ */
55
+ export type ModelField<T extends ModelFieldTypeParamOuter, K extends keyof ModelField<T> = never, Auth = undefined> = Omit<{
56
+ /**
57
+ * Marks a field as required.
58
+ */
59
+ required(): ModelField<Required<T>, K | 'required'>;
60
+ /**
61
+ * Converts a field type definition to an array of the field type.
62
+ */
63
+ array(): ModelField<ArrayField<T>, Exclude<K, 'required'> | 'array'>;
64
+ /**
65
+ * Sets a default value for the scalar type.
66
+ * @param value the default value
67
+ */
68
+ default(value: ModelFieldTypeParamOuter): ModelField<T, K | 'default'>;
69
+ /**
70
+ * Configures field-level authorization rules. Pass in an array of authorizations `(a.allow.____)` to mix and match
71
+ * multiple authorization rules for this field.
72
+ */
73
+ authorization<AuthRuleType extends Authorization<any, any, any>>(rules: AuthRuleType[]): ModelField<T, K | 'authorization', AuthRuleType>;
74
+ }, K> & {
75
+ [__auth]?: Auth;
76
+ } & Brand<typeof brandName>;
77
+ /**
78
+ * Internal representation of Model Field that exposes the `data` property.
79
+ * Used at buildtime.
80
+ */
81
+ export type InternalField = ModelField<ModelFieldTypeParamOuter, never> & {
82
+ data: FieldData;
83
+ };
84
+ /**
85
+ * A unique identifier scalar type. This scalar is serialized like a String but isn't meant to be human-readable.
86
+ * If not specified on create operations, a ULID will be auto-generated service-side.
87
+ * @returns ID field definition
88
+ */
89
+ export declare function id(): ModelField<Nullable<string>>;
90
+ /**
91
+ * A string scalar type that is represented server-side as a UTF-8 character sequence.
92
+ * @returns string field definition
93
+ */
94
+ export declare function string(): ModelField<Nullable<string>>;
95
+ /**
96
+ * An integer scalar type with a supported value range between -(2^31) and 2^31-1.
97
+ * @returns integer field definition
98
+ */
99
+ export declare function integer(): ModelField<Nullable<number>>;
100
+ /**
101
+ * A float scalar type following represented server-side as an IEEE 754 floating point value.
102
+ * @returns float field definition
103
+ */
104
+ export declare function float(): ModelField<Nullable<number>>;
105
+ /**
106
+ * A boolean scalar type that can be either true or false.
107
+ * @returns boolean field definition
108
+ */
109
+ export declare function boolean(): ModelField<Nullable<boolean>>;
110
+ /**
111
+ * A date scalar type that is represented server-side as an extended ISO 8601 date string in the format `YYYY-MM-DD`.
112
+ * @returns date field definition
113
+ */
114
+ export declare function date(): ModelField<Nullable<string>>;
115
+ /**
116
+ * A time scalar type that is represented server-side as an extended ISO 8601 time string in the format `hh:mm:ss.sss`.
117
+ * @returns time field definition
118
+ */
119
+ export declare function time(): ModelField<Nullable<string>>;
120
+ /**
121
+ * A date time scalar type that is represented server-side as an extended ISO 8601 date and time string in the format `YYYY-MM-DDThh:mm:ss.sssZ`.
122
+ * @returns datetime field definition
123
+ */
124
+ export declare function datetime(): ModelField<Nullable<string>>;
125
+ /**
126
+ * A timestamp scalar type that is represented by an integer value of the number of seconds before or after `1970-01-01-T00:00Z`.
127
+ * @returns timestamp field definition
128
+ */
129
+ export declare function timestamp(): ModelField<Nullable<number>>;
130
+ /**
131
+ * An email scalar type that is represented server-side in the format `local-part@domain-part` as defined by RFC 822.
132
+ * @returns email field definition
133
+ */
134
+ export declare function email(): ModelField<Nullable<string>>;
135
+ /**
136
+ * A JSON scalar type that is automatically parsed and loaded server-side as maps, lists, or scalar values
137
+ * rather than as the literal input strings.
138
+ * @returns JSON field definition
139
+ */
140
+ export declare function json(): ModelField<Nullable<Json>>;
141
+ /**
142
+ * A phone number scalar type thas is stored as a string server-side. Phone numbers can contain either spaces
143
+ * or hyphens to separate digit groups. Phone numbers without a country code are assumed to be US/North American numbers adhering
144
+ * to the North American Numbering Plan.
145
+ * @returns phone number field definition
146
+ */
147
+ export declare function phone(): ModelField<Nullable<string>>;
148
+ /**
149
+ * A URL scalar type as defined by RFC 1738. For example, https://www.amazon.com/dp/B000NZW3KC/ or mailto:example@example.com.
150
+ * URLs must contain a schema (http, mailto) and can't contain two forward slashes (//) in the path part.
151
+ * @returns URL field definition
152
+ */
153
+ export declare function url(): ModelField<Nullable<string>>;
154
+ /**
155
+ * A valid IPv4 or IPv6 address scalar type. IPv4 addresses are expected in quad-dotted notation (123.12.34.56). IPv6 addresses
156
+ * are expected in non-bracketed, colon-separated format (1a2b:3c4b:🔢4567). You can include an optional CIDR suffix (123.45.67.89/16)
157
+ * to indicate subnet mask.
158
+ * @returns IP address field definition
159
+ */
160
+ export declare function ipAddress(): ModelField<Nullable<string>>;
161
+ export {};
162
+ //# sourceMappingURL=ModelField.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModelField.d.ts","sourceRoot":"","sources":["../../src/ModelField.ts"],"names":[],"mappings":"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"}