@appsemble/lang-sdk 0.34.9 → 0.34.11

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@appsemble/lang-sdk",
3
- "version": "0.34.9",
3
+ "version": "0.34.11",
4
4
  "description": "Language SDK for Appsemble",
5
5
  "keywords": [
6
6
  "app",
@@ -12,6 +12,21 @@ export const AppMembersDefinition = {
12
12
  $ref: '#/components/schemas/AppMemberPropertyDefinition',
13
13
  },
14
14
  },
15
+ phoneNumber: {
16
+ type: 'object',
17
+ description: 'Whether the phone number property should be enabled',
18
+ required: ['enable'],
19
+ properties: {
20
+ enable: {
21
+ type: 'boolean',
22
+ default: false,
23
+ },
24
+ required: {
25
+ type: 'boolean',
26
+ default: false,
27
+ },
28
+ },
29
+ },
15
30
  },
16
31
  };
17
32
  //# sourceMappingURL=AppMembersDefinition.js.map
package/types/core.d.ts CHANGED
@@ -95,7 +95,8 @@ export interface AppDefinition {
95
95
  pages: PageDefinition[];
96
96
  controller?: ControllerDefinition;
97
97
  members?: {
98
- properties: Record<string, AppMemberPropertyDefinition>;
98
+ phoneNumber?: AppMemberPhoneNumberDefinition;
99
+ properties?: Record<string, AppMemberPropertyDefinition>;
99
100
  };
100
101
  /**
101
102
  * Resource definitions that may be used by the app.
@@ -294,6 +295,10 @@ export interface WebhookDefinition {
294
295
  schema: OpenAPIV3.SchemaObject;
295
296
  action: ActionDefinition;
296
297
  }
298
+ export interface AppMemberPhoneNumberDefinition {
299
+ enable: boolean;
300
+ required?: boolean;
301
+ }
297
302
  export interface AppMemberPropertyDefinition {
298
303
  /**
299
304
  * The JSON schema to validate user properties against before sending it to the backend.
package/validation.js CHANGED
@@ -75,10 +75,10 @@ function validateUniquePageNames(definition, report) {
75
75
  checkPages(definition.pages);
76
76
  }
77
77
  function validateMembersSchema(definition, report) {
78
- if (!definition.members) {
78
+ if (!definition.members?.properties) {
79
79
  return;
80
80
  }
81
- for (const [propertyName, propertyDefinition] of Object.entries(definition.members.properties)) {
81
+ for (const [propertyName, propertyDefinition] of Object.entries(definition.members.properties ?? {})) {
82
82
  // Handled by schema validation
83
83
  if (!propertyDefinition?.schema) {
84
84
  continue;
@@ -104,6 +104,18 @@ function validateMembersSchema(definition, report) {
104
104
  }
105
105
  }
106
106
  }
107
+ function validatePhoneNumberDefinition(definition, report) {
108
+ if (!definition.members?.phoneNumber) {
109
+ return;
110
+ }
111
+ if (!definition.members.phoneNumber.enable && definition.members.phoneNumber.required) {
112
+ report(definition.members.phoneNumber, 'phone number should be enabled', [
113
+ 'members',
114
+ 'phoneNumber',
115
+ 'required',
116
+ ]);
117
+ }
118
+ }
107
119
  // XXX: Very not good nesting
108
120
  function validateResourceSchemas(definition, report) {
109
121
  if (!definition.resources) {
@@ -1222,6 +1234,7 @@ export async function validateAppDefinition(definition, getBlockVersions, contro
1222
1234
  validateLanguage(definition, report);
1223
1235
  validateResourceReferences(definition, report);
1224
1236
  validateMembersSchema(definition, report);
1237
+ validatePhoneNumberDefinition(definition, report);
1225
1238
  validateResourceSchemas(definition, report);
1226
1239
  validateSecurity(definition, report);
1227
1240
  validateBlocks(definition, blockVersionMap, report);