@aws-amplify/data-schema 1.20.0 → 1.20.2

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.
@@ -605,19 +605,26 @@ function getAppSyncAuthDirectiveFromRule(rule) {
605
605
  }
606
606
  function mapToNativeAppSyncAuthDirectives(authorization, isCustomHandler) {
607
607
  const rules = new Set();
608
+ const groupProvider = new Map();
608
609
  for (const entry of authorization) {
609
610
  const rule = (0, Authorization_1.accessData)(entry);
610
611
  isCustomHandler && validateCustomHandlerAuthRule(rule);
611
612
  const provider = getAppSyncAuthDirectiveFromRule(rule);
612
613
  if (rule.groups) {
613
- // example: (cognito_groups: ["Bloggers", "Readers"])
614
- rules.add(`${provider}(cognito_groups: [${rule.groups
615
- .map((group) => `"${group}"`)
616
- .join(', ')}])`);
614
+ if (!groupProvider.has(provider)) {
615
+ groupProvider.set(provider, new Set());
616
+ }
617
+ rule.groups.forEach((group) => groupProvider.get(provider)?.add(group));
617
618
  }
618
619
  else {
619
620
  rules.add(provider);
620
621
  }
622
+ groupProvider.forEach((groups, provider) => {
623
+ rules.add(`${provider}(cognito_groups: [${Array.from(groups)
624
+ .map((group) => `"${group}"`)
625
+ .join(', ')}])`);
626
+ // example: (cognito_groups: ["Bloggers", "Readers"])
627
+ });
621
628
  }
622
629
  const authString = [...rules].join(' ');
623
630
  return { authString };
@@ -952,8 +959,19 @@ function generateInputTypes(operationName, args, getRefType) {
952
959
  if (isRefField(argDef)) {
953
960
  const refType = getRefType(argDef.data.link, operationName);
954
961
  if (refType.type === 'CustomType') {
962
+ const { valueRequired, array, arrayRequired } = argDef.data;
955
963
  const inputTypeName = `${argDef.data.link}Input`;
956
- argDefinitions.push(`${argName}: ${inputTypeName}`);
964
+ let field = inputTypeName;
965
+ if (valueRequired === true) {
966
+ field += '!';
967
+ }
968
+ if (array) {
969
+ field = `[${field}]`;
970
+ if (arrayRequired === true) {
971
+ field += '!';
972
+ }
973
+ }
974
+ argDefinitions.push(`${argName}: ${field}`);
957
975
  // Process the input type if it hasn't been processed yet
958
976
  if (!processedTypes.has(inputTypeName)) {
959
977
  processedTypes.add(inputTypeName);
@@ -965,7 +983,18 @@ function generateInputTypes(operationName, args, getRefType) {
965
983
  }
966
984
  }
967
985
  else if (refType.type === 'Enum') {
968
- argDefinitions.push(`${argName}: ${argDef.data.link}`);
986
+ const { valueRequired, array, arrayRequired } = argDef.data;
987
+ let field = argDef.data.link;
988
+ if (valueRequired === true) {
989
+ field += '!';
990
+ }
991
+ if (array) {
992
+ field = `[${field}]`;
993
+ if (arrayRequired === true) {
994
+ field += '!';
995
+ }
996
+ }
997
+ argDefinitions.push(`${argName}: ${field}`);
969
998
  }
970
999
  else {
971
1000
  throw new Error(`Unsupported reference type '${refType.type}' for argument '${argName}' in '${operationName}'. ` +