@oneblink/sdk-core 8.3.0-beta.1 → 8.3.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.
@@ -12,6 +12,6 @@ export interface ResourceDefinitionWithChoices {
12
12
  choices: ResourceDefinitionChoice[];
13
13
  }
14
14
  export type ResourceDefinition<T> = T & ResourceDefinitionBase & ({
15
- type: 'TEXT_SINGLE_LINE' | 'TEXT_MULTI_LINE' | 'EMAIL' | 'DATE' | 'DATETIME' | 'NUMBER' | 'BOOLEAN' | 'SIGNATURE';
15
+ type: 'TEXT_SINGLE_LINE' | 'TEXT_MULTI_LINE' | 'EMAIL' | 'DATE' | 'DATETIME' | 'NUMBER' | 'BOOLEAN' | 'IMAGE';
16
16
  } | ResourceDefinitionWithChoices);
17
17
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"resource-definitions.js","sourceRoot":"","sources":["../../src/types/resource-definitions.ts"],"names":[],"mappings":"","sourcesContent":["export type ResourceDefinitionChoice = {\n value: string | number\n label: string\n}\n\ntype ResourceDefinitionBase = {\n id: string\n isRequired: boolean\n displayName: string\n}\n\nexport interface ResourceDefinitionWithChoices {\n type: 'CHOICE_SINGLE' | 'CHOICE_MULTIPLE'\n choices: ResourceDefinitionChoice[]\n}\n\nexport type ResourceDefinition<T> = T &\n ResourceDefinitionBase &\n (\n | {\n type:\n | 'TEXT_SINGLE_LINE'\n | 'TEXT_MULTI_LINE'\n | 'EMAIL'\n | 'DATE'\n | 'DATETIME'\n | 'NUMBER'\n | 'BOOLEAN'\n | 'SIGNATURE'\n }\n | ResourceDefinitionWithChoices\n )\n"]}
1
+ {"version":3,"file":"resource-definitions.js","sourceRoot":"","sources":["../../src/types/resource-definitions.ts"],"names":[],"mappings":"","sourcesContent":["export type ResourceDefinitionChoice = {\n value: string | number\n label: string\n}\n\ntype ResourceDefinitionBase = {\n id: string\n isRequired: boolean\n displayName: string\n}\n\nexport interface ResourceDefinitionWithChoices {\n type: 'CHOICE_SINGLE' | 'CHOICE_MULTIPLE'\n choices: ResourceDefinitionChoice[]\n}\n\nexport type ResourceDefinition<T> = T &\n ResourceDefinitionBase &\n (\n | {\n type:\n | 'TEXT_SINGLE_LINE'\n | 'TEXT_MULTI_LINE'\n | 'EMAIL'\n | 'DATE'\n | 'DATETIME'\n | 'NUMBER'\n | 'BOOLEAN'\n | 'IMAGE'\n }\n | ResourceDefinitionWithChoices\n )\n"]}
@@ -75,6 +75,8 @@ function parseUserProfile(data) {
75
75
  employeeNumber: parseString(jwtPayload['custom:employee_number']),
76
76
  departmentHeadFullName: parseString(jwtPayload['custom:departmenthead_name']),
77
77
  departmentHeadEmail: parseString(jwtPayload['custom:departmenthead_email']),
78
+ zipCode: parseString(jwtPayload['custom:zip_code']),
79
+ postalCode: parseString(jwtPayload['custom:postal_code']),
78
80
  };
79
81
  if (!((_b = userProfile.supervisor) === null || _b === void 0 ? void 0 : _b.fullName) &&
80
82
  !((_c = userProfile.supervisor) === null || _c === void 0 ? void 0 : _c.email) &&
@@ -1 +1 @@
1
- {"version":3,"file":"userService.js","sourceRoot":"","sources":["../src/userService.ts"],"names":[],"mappings":"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","sourcesContent":["import { MiscTypes } from '@oneblink/types'\n\nfunction parseBoolean(value: unknown): boolean | undefined {\n return typeof value === 'boolean' ? value : undefined\n}\n\nfunction parseString(value: unknown): string | undefined {\n return typeof value === 'string' ? value : undefined\n}\n\nfunction parseAddress(address: unknown): string | undefined {\n if (typeof address === 'object' && address && 'formatted' in address) {\n return parseString(address.formatted)\n }\n\n return parseString(address)\n}\n\n/**\n * Parse a User Profile based on a JWT payload. Will return `undefined` if not a\n * valid JWT payload\n *\n * #### Example\n *\n * ```js\n * import jwtDecode from 'jwt-decode'\n *\n * const jwtPayload = jwtDecode('a valid token from a user')\n * const userProfile = userService.parseUserProfile(jwtPayload)\n * if (userProfile) {\n * // continue\n * }\n * ```\n *\n * @param data An object containing all parameters to be passed to the function\n */\nexport function parseUserProfile(\n data: unknown,\n): MiscTypes.UserProfile | undefined {\n if (typeof data !== 'object' || !data) {\n return\n }\n const jwtPayload = data as Record<string, unknown>\n if (typeof jwtPayload.sub !== 'string') {\n return\n }\n const userProfile: MiscTypes.UserProfile = {\n isSAMLUser: false,\n providerType: 'Cognito',\n providerUserId: jwtPayload.sub,\n userId: jwtPayload.sub,\n email: parseString(jwtPayload.email),\n emailVerified: parseBoolean(jwtPayload.email_verified),\n firstName: parseString(jwtPayload.given_name),\n middleName: parseString(jwtPayload.middle_name),\n lastName: parseString(jwtPayload.family_name),\n fullName: parseString(jwtPayload.name),\n picture: parseString(jwtPayload.picture),\n address: parseAddress(jwtPayload.address),\n role: parseString(jwtPayload['custom:role']),\n username: parseString(jwtPayload.email) || jwtPayload.sub,\n supervisor: {\n fullName: parseString(jwtPayload['custom:supervisor_name']),\n email: parseString(jwtPayload['custom:supervisor_email']),\n providerUserId: parseString(jwtPayload['custom:supervisor_user_id']),\n },\n phoneNumber: parseString(jwtPayload['custom:phone_number']),\n phoneNumberVerified: parseBoolean(\n jwtPayload['custom:phone_number_verified'],\n ),\n groups: parseString(jwtPayload['custom:groups'])\n ?.split(',')\n .map((group) => group.trim()),\n areaCode: parseString(jwtPayload['custom:area_code']),\n city: parseString(jwtPayload['custom:city']),\n state: parseString(jwtPayload['custom:state']),\n country: parseString(jwtPayload['custom:country']),\n countryCallingCode: parseString(jwtPayload['custom:country_calling_code']),\n department: parseString(jwtPayload['custom:department']),\n division: parseString(jwtPayload['custom:division']),\n bargain: parseString(jwtPayload['custom:bargain']),\n employeeNumber: parseString(jwtPayload['custom:employee_number']),\n departmentHeadFullName: parseString(\n jwtPayload['custom:departmenthead_name'],\n ),\n departmentHeadEmail: parseString(jwtPayload['custom:departmenthead_email']),\n }\n\n if (\n !userProfile.supervisor?.fullName &&\n !userProfile.supervisor?.email &&\n !userProfile.supervisor?.providerUserId\n ) {\n userProfile.supervisor = undefined\n }\n\n if (\n jwtPayload.identities &&\n Array.isArray(jwtPayload.identities) &&\n jwtPayload.identities.length\n ) {\n const { providerType, userId } = jwtPayload.identities[0]\n userProfile.providerType = providerType\n userProfile.providerUserId = userId\n userProfile.isSAMLUser = providerType === 'SAML'\n if (userProfile.isSAMLUser) {\n userProfile.username = jwtPayload.preferred_username || userId\n }\n }\n\n return userProfile\n}\n\n/**\n * A friendly `string` that represents the a [User Profile](#user-profile). Uses\n * first name, last name, full name, email address or username.\n *\n * #### Example\n *\n * ```js\n * const userProfile = userService.parseUserProfile(jwtPayload)\n * const name = userService.getUserFriendlyName(userProfile)\n * if (name) {\n * // Display current user's name\n * }\n * ```\n *\n * @param userProfile\n * @returns\n */\nexport function getUserFriendlyName(\n userProfile: MiscTypes.UserProfile,\n): string {\n if (userProfile.fullName) {\n return userProfile.fullName\n }\n\n if (userProfile.firstName || userProfile.lastName) {\n return [userProfile.firstName, userProfile.lastName].join(' ').trim()\n }\n\n if (userProfile.email) {\n return userProfile.email\n }\n\n if (userProfile.username) {\n return userProfile.username\n }\n\n return userProfile.userId\n}\n"]}
1
+ {"version":3,"file":"userService.js","sourceRoot":"","sources":["../src/userService.ts"],"names":[],"mappings":"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","sourcesContent":["import { MiscTypes } from '@oneblink/types'\n\nfunction parseBoolean(value: unknown): boolean | undefined {\n return typeof value === 'boolean' ? value : undefined\n}\n\nfunction parseString(value: unknown): string | undefined {\n return typeof value === 'string' ? value : undefined\n}\n\nfunction parseAddress(address: unknown): string | undefined {\n if (typeof address === 'object' && address && 'formatted' in address) {\n return parseString(address.formatted)\n }\n\n return parseString(address)\n}\n\n/**\n * Parse a User Profile based on a JWT payload. Will return `undefined` if not a\n * valid JWT payload\n *\n * #### Example\n *\n * ```js\n * import jwtDecode from 'jwt-decode'\n *\n * const jwtPayload = jwtDecode('a valid token from a user')\n * const userProfile = userService.parseUserProfile(jwtPayload)\n * if (userProfile) {\n * // continue\n * }\n * ```\n *\n * @param data An object containing all parameters to be passed to the function\n */\nexport function parseUserProfile(\n data: unknown,\n): MiscTypes.UserProfile | undefined {\n if (typeof data !== 'object' || !data) {\n return\n }\n const jwtPayload = data as Record<string, unknown>\n if (typeof jwtPayload.sub !== 'string') {\n return\n }\n const userProfile: MiscTypes.UserProfile = {\n isSAMLUser: false,\n providerType: 'Cognito',\n providerUserId: jwtPayload.sub,\n userId: jwtPayload.sub,\n email: parseString(jwtPayload.email),\n emailVerified: parseBoolean(jwtPayload.email_verified),\n firstName: parseString(jwtPayload.given_name),\n middleName: parseString(jwtPayload.middle_name),\n lastName: parseString(jwtPayload.family_name),\n fullName: parseString(jwtPayload.name),\n picture: parseString(jwtPayload.picture),\n address: parseAddress(jwtPayload.address),\n role: parseString(jwtPayload['custom:role']),\n username: parseString(jwtPayload.email) || jwtPayload.sub,\n supervisor: {\n fullName: parseString(jwtPayload['custom:supervisor_name']),\n email: parseString(jwtPayload['custom:supervisor_email']),\n providerUserId: parseString(jwtPayload['custom:supervisor_user_id']),\n },\n phoneNumber: parseString(jwtPayload['custom:phone_number']),\n phoneNumberVerified: parseBoolean(\n jwtPayload['custom:phone_number_verified'],\n ),\n groups: parseString(jwtPayload['custom:groups'])\n ?.split(',')\n .map((group) => group.trim()),\n areaCode: parseString(jwtPayload['custom:area_code']),\n city: parseString(jwtPayload['custom:city']),\n state: parseString(jwtPayload['custom:state']),\n country: parseString(jwtPayload['custom:country']),\n countryCallingCode: parseString(jwtPayload['custom:country_calling_code']),\n department: parseString(jwtPayload['custom:department']),\n division: parseString(jwtPayload['custom:division']),\n bargain: parseString(jwtPayload['custom:bargain']),\n employeeNumber: parseString(jwtPayload['custom:employee_number']),\n departmentHeadFullName: parseString(\n jwtPayload['custom:departmenthead_name'],\n ),\n departmentHeadEmail: parseString(jwtPayload['custom:departmenthead_email']),\n zipCode: parseString(jwtPayload['custom:zip_code']),\n postalCode: parseString(jwtPayload['custom:postal_code']),\n }\n\n if (\n !userProfile.supervisor?.fullName &&\n !userProfile.supervisor?.email &&\n !userProfile.supervisor?.providerUserId\n ) {\n userProfile.supervisor = undefined\n }\n\n if (\n jwtPayload.identities &&\n Array.isArray(jwtPayload.identities) &&\n jwtPayload.identities.length\n ) {\n const { providerType, userId } = jwtPayload.identities[0]\n userProfile.providerType = providerType\n userProfile.providerUserId = userId\n userProfile.isSAMLUser = providerType === 'SAML'\n if (userProfile.isSAMLUser) {\n userProfile.username = jwtPayload.preferred_username || userId\n }\n }\n\n return userProfile\n}\n\n/**\n * A friendly `string` that represents the a [User Profile](#user-profile). Uses\n * first name, last name, full name, email address or username.\n *\n * #### Example\n *\n * ```js\n * const userProfile = userService.parseUserProfile(jwtPayload)\n * const name = userService.getUserFriendlyName(userProfile)\n * if (name) {\n * // Display current user's name\n * }\n * ```\n *\n * @param userProfile\n * @returns\n */\nexport function getUserFriendlyName(\n userProfile: MiscTypes.UserProfile,\n): string {\n if (userProfile.fullName) {\n return userProfile.fullName\n }\n\n if (userProfile.firstName || userProfile.lastName) {\n return [userProfile.firstName, userProfile.lastName].join(' ').trim()\n }\n\n if (userProfile.email) {\n return userProfile.email\n }\n\n if (userProfile.username) {\n return userProfile.username\n }\n\n return userProfile.userId\n}\n"]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@oneblink/sdk-core",
3
3
  "description": "OneBlink SDK for JavaScript (works in Browsers and NodeJS)",
4
- "version": "8.3.0-beta.1",
4
+ "version": "8.3.0",
5
5
  "author": "OneBlink <developers@oneblink.io> (https://oneblink.io)",
6
6
  "bugs": {
7
7
  "url": "https://github.com/oneblink/sdk-core-js/issues"