@things-factory/contact 7.0.49 → 7.0.52

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.
@@ -13,14 +13,14 @@ const contact_type_1 = require("./contact-type");
13
13
  function getContactItems(contact) {
14
14
  const { items } = contact;
15
15
  if (!items || !(items instanceof Array)) {
16
- return null;
16
+ return [];
17
17
  }
18
18
  return items;
19
19
  }
20
20
  function getContactItem(contact, type, label) {
21
21
  var _a;
22
22
  const { items } = contact;
23
- return ((_a = items === null || items === void 0 ? void 0 : items.find(item => item.type === type && item.label === label)) === null || _a === void 0 ? void 0 : _a.value) || '';
23
+ return ((_a = items === null || items === void 0 ? void 0 : items.find(item => item.type === type && item.label === label)) === null || _a === void 0 ? void 0 : _a.value) || null;
24
24
  }
25
25
  let ContactQuery = class ContactQuery {
26
26
  async contact(id, context) {
@@ -1 +1 @@
1
- {"version":3,"file":"contact-query.js","sourceRoot":"","sources":["../../../server/service/contact/contact-query.ts"],"names":[],"mappings":";;;;AAAA,+CAAmF;AACnF,iDAAuG;AACvG,yDAAgD;AAChD,qEAA4D;AAC5D,uCAAiD;AACjD,iDAA4C;AAC5C,uCAAmC;AACnC,iDAA4C;AAE5C,SAAS,eAAe,CAAC,OAAgB;IACvC,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAA;IAEzB,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC,EAAE,CAAC;QACxC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,cAAc,CAAC,OAAgB,EAAE,IAAY,EAAE,KAAa;;IACnE,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAA;IAEzB,OAAO,CAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,0CAAE,KAAK,KAAI,EAAE,CAAA;AACrF,CAAC;AAGM,IAAM,YAAY,GAAlB,MAAM,YAAY;IAEjB,AAAN,KAAK,CAAC,OAAO,CAAY,EAAU,EAAS,OAAwB;QAClE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAEhC,OAAO,MAAM,IAAA,qBAAa,EAAC,iBAAO,CAAC,CAAC,OAAO,CAAC;YAC1C,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;SACzC,CAAC,CAAA;IACJ,CAAC;IAGK,AAAN,KAAK,CAAC,QAAQ,CAA0B,MAAiB,EAAS,OAAwB;QACxF,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAEhC,MAAM,YAAY,GAAG,IAAA,qCAA6B,EAAC;YACjD,MAAM;YACN,MAAM;YACN,UAAU,EAAE,MAAM,IAAA,qBAAa,EAAC,iBAAO,CAAC;YACxC,WAAW,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC;SACnD,CAAC,CAAA;QAEF,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,MAAM,YAAY,CAAC,eAAe,EAAE,CAAA;QAE3D,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA;IACzB,CAAC;IAGK,AAAN,KAAK,CAAC,OAAO,CAAS,OAAgB;QACpC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,OAAO,IAAI,EAAE,CAAA;QAE/C,IAAI,IAAI,KAAK,SAAS,IAAI,GAAG,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YAClE,OAAM;QACR,CAAC;QAED,MAAM,UAAU,GAAe,MAAM,IAAA,qBAAa,EAAC,4BAAU,CAAC,CAAC,OAAO,CAAC;YACrE,KAAK,EAAE;gBACL,MAAM,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,QAAQ,EAAE;gBAChC,OAAO,EAAE,iBAAO,CAAC,IAAI;gBACrB,KAAK,EAAE,OAAO,CAAC,EAAE;aAClB;SACF,CAAC,CAAA;QAEF,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,QAAQ,EAAE,CAAA;IAC3D,CAAC;IAGK,AAAN,KAAK,CAAC,KAAK,CAAS,OAAgB;QAClC,OAAO,cAAc,CAAC,OAAO,EAAE,sBAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;IAC5D,CAAC;IAGK,AAAN,KAAK,CAAC,KAAK,CAAS,OAAgB;QAClC,OAAO,cAAc,CAAC,OAAO,EAAE,sBAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;IAC5D,CAAC;IAGK,AAAN,KAAK,CAAC,OAAO,CAAS,OAAgB;QACpC,OAAO,cAAc,CAAC,OAAO,EAAE,sBAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IAC9D,CAAC;IAGK,AAAN,KAAK,CAAC,UAAU,CAAS,OAAgB;QACvC,OAAO,cAAc,CAAC,OAAO,EAAE,sBAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;IACjE,CAAC;IAGK,AAAN,KAAK,CAAC,KAAK,CAAS,OAAgB;QAClC,OAAO,eAAe,CAAC,OAAO,CAAC,CAAA;IACjC,CAAC;IAGK,AAAN,KAAK,CAAC,MAAM,CAAS,OAAgB;QACnC,OAAO,MAAM,IAAA,qBAAa,EAAC,cAAM,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAA;IACxE,CAAC;IAGK,AAAN,KAAK,CAAC,OAAO,CAAS,OAAgB;QACpC,OAAO,MAAM,IAAA,qBAAa,EAAC,gBAAI,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAA;IACvE,CAAC;IAGK,AAAN,KAAK,CAAC,OAAO,CAAS,OAAgB;QACpC,OAAO,MAAM,IAAA,qBAAa,EAAC,gBAAI,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAA;IACvE,CAAC;CACF,CAAA;AApFY,oCAAY;AAEjB;IADL,IAAA,oBAAK,EAAC,OAAO,CAAC,EAAE,CAAC,iBAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,oBAAoB,EAAE,CAAC;IACnE,mBAAA,IAAA,kBAAG,EAAC,IAAI,CAAC,CAAA;IAAc,mBAAA,IAAA,kBAAG,GAAE,CAAA;;;;2CAM1C;AAGK;IADL,IAAA,oBAAK,EAAC,OAAO,CAAC,EAAE,CAAC,0BAAW,EAAE,EAAE,WAAW,EAAE,4BAA4B,EAAE,CAAC;IAC7D,mBAAA,IAAA,mBAAI,EAAC,IAAI,CAAC,EAAE,CAAC,iBAAS,CAAC,CAAA;IAAqB,mBAAA,IAAA,kBAAG,GAAE,CAAA;;6CAAjB,iBAAS;;4CAaxD;AAGK;IADL,IAAA,4BAAa,EAAC,IAAI,CAAC,EAAE,CAAC,iBAAO,CAAC;IAChB,mBAAA,IAAA,mBAAI,GAAE,CAAA;;6CAAU,iBAAO;;2CAgBrC;AAGK;IADL,IAAA,4BAAa,EAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC;IACjB,mBAAA,IAAA,mBAAI,GAAE,CAAA;;6CAAU,iBAAO;;yCAEnC;AAGK;IADL,IAAA,4BAAa,EAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC;IACjB,mBAAA,IAAA,mBAAI,GAAE,CAAA;;6CAAU,iBAAO;;yCAEnC;AAGK;IADL,IAAA,4BAAa,EAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC;IACf,mBAAA,IAAA,mBAAI,GAAE,CAAA;;6CAAU,iBAAO;;2CAErC;AAGK;IADL,IAAA,4BAAa,EAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC;IACZ,mBAAA,IAAA,mBAAI,GAAE,CAAA;;6CAAU,iBAAO;;8CAExC;AAGK;IADL,IAAA,4BAAa,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC,0BAAW,CAAC,CAAC;IACxB,mBAAA,IAAA,mBAAI,GAAE,CAAA;;6CAAU,iBAAO;;yCAEnC;AAGK;IADL,IAAA,4BAAa,EAAC,IAAI,CAAC,EAAE,CAAC,cAAM,CAAC;IAChB,mBAAA,IAAA,mBAAI,GAAE,CAAA;;6CAAU,iBAAO;;0CAEpC;AAGK;IADL,IAAA,4BAAa,EAAC,IAAI,CAAC,EAAE,CAAC,gBAAI,CAAC;IACb,mBAAA,IAAA,mBAAI,GAAE,CAAA;;6CAAU,iBAAO;;2CAErC;AAGK;IADL,IAAA,4BAAa,EAAC,IAAI,CAAC,EAAE,CAAC,gBAAI,CAAC;IACb,mBAAA,IAAA,mBAAI,GAAE,CAAA;;6CAAU,iBAAO;;2CAErC;uBAnFU,YAAY;IADxB,IAAA,uBAAQ,EAAC,iBAAO,CAAC;GACL,YAAY,CAoFxB","sourcesContent":["import { Resolver, Query, FieldResolver, Root, Args, Arg, Ctx } from 'type-graphql'\nimport { Domain, getQueryBuilderFromListParams, getRepository, ListParam } from '@things-factory/shell'\nimport { User } from '@things-factory/auth-base'\nimport { Attachment } from '@things-factory/attachment-base'\nimport { Contact, ContactField } from './contact'\nimport { ContactItem } from './contact-item'\nimport { Profile } from './profile'\nimport { ContactList } from './contact-type'\n\nfunction getContactItems(contact: Contact) {\n const { items } = contact\n\n if (!items || !(items instanceof Array)) {\n return null\n }\n\n return items\n}\n\nfunction getContactItem(contact: Contact, type: String, label: String) {\n const { items } = contact\n\n return items?.find(item => item.type === type && item.label === label)?.value || ''\n}\n\n@Resolver(Contact)\nexport class ContactQuery {\n @Query(returns => Contact!, { nullable: true, description: 'To fetch a Contact' })\n async contact(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<Contact> {\n const { domain } = context.state\n\n return await getRepository(Contact).findOne({\n where: { domain: { id: domain.id }, id }\n })\n }\n\n @Query(returns => ContactList, { description: 'To fetch multiple Contacts' })\n async contacts(@Args(type => ListParam) params: ListParam, @Ctx() context: ResolverContext): Promise<ContactList> {\n const { domain } = context.state\n\n const queryBuilder = getQueryBuilderFromListParams({\n domain,\n params,\n repository: await getRepository(Contact),\n searchables: ['name', 'company', 'email', 'phone']\n })\n\n const [items, total] = await queryBuilder.getManyAndCount()\n\n return { items, total }\n }\n\n @FieldResolver(type => Profile)\n async profile(@Root() contact: Contact): Promise<Profile> {\n var { left, top, zoom } = contact.profile || {}\n\n if (left === undefined || top === undefined || zoom === undefined) {\n return\n }\n\n const attachment: Attachment = await getRepository(Attachment).findOne({\n where: {\n domain: { id: contact.domainId },\n refType: Contact.name,\n refBy: contact.id\n }\n })\n\n return { left, top, zoom, picture: attachment?.fullpath }\n }\n\n @FieldResolver(type => String)\n async phone(@Root() contact: Contact): Promise<string> {\n return getContactItem(contact, ContactField.Phone, 'work')\n }\n\n @FieldResolver(type => String)\n async email(@Root() contact: Contact): Promise<string> {\n return getContactItem(contact, ContactField.Email, 'work')\n }\n\n @FieldResolver(type => String)\n async address(@Root() contact: Contact): Promise<string> {\n return getContactItem(contact, ContactField.Address, 'work')\n }\n\n @FieldResolver(type => String)\n async department(@Root() contact: Contact): Promise<string> {\n return getContactItem(contact, ContactField.Department, 'work')\n }\n\n @FieldResolver(type => [ContactItem])\n async items(@Root() contact: Contact): Promise<ContactItem[]> {\n return getContactItems(contact)\n }\n\n @FieldResolver(type => Domain)\n async domain(@Root() contact: Contact): Promise<Domain> {\n return await getRepository(Domain).findOneBy({ id: contact.domainId })\n }\n\n @FieldResolver(type => User)\n async updater(@Root() contact: Contact): Promise<User> {\n return await getRepository(User).findOneBy({ id: contact.updaterId })\n }\n\n @FieldResolver(type => User)\n async creator(@Root() contact: Contact): Promise<User> {\n return await getRepository(User).findOneBy({ id: contact.creatorId })\n }\n}\n"]}
1
+ {"version":3,"file":"contact-query.js","sourceRoot":"","sources":["../../../server/service/contact/contact-query.ts"],"names":[],"mappings":"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","sourcesContent":["import { Resolver, Query, FieldResolver, Root, Args, Arg, Ctx } from 'type-graphql'\nimport { Domain, getQueryBuilderFromListParams, getRepository, ListParam } from '@things-factory/shell'\nimport { User } from '@things-factory/auth-base'\nimport { Attachment } from '@things-factory/attachment-base'\nimport { Contact, ContactField } from './contact'\nimport { ContactItem } from './contact-item'\nimport { Profile } from './profile'\nimport { ContactList } from './contact-type'\n\nfunction getContactItems(contact: Contact) {\n const { items } = contact\n\n if (!items || !(items instanceof Array)) {\n return []\n }\n\n return items\n}\n\nfunction getContactItem(contact: Contact, type: String, label: String) {\n const { items } = contact\n\n return items?.find(item => item.type === type && item.label === label)?.value || null\n}\n\n@Resolver(Contact)\nexport class ContactQuery {\n @Query(returns => Contact!, { nullable: true, description: 'To fetch a Contact' })\n async contact(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<Contact> {\n const { domain } = context.state\n\n return await getRepository(Contact).findOne({\n where: { domain: { id: domain.id }, id }\n })\n }\n\n @Query(returns => ContactList, { description: 'To fetch multiple Contacts' })\n async contacts(@Args(type => ListParam) params: ListParam, @Ctx() context: ResolverContext): Promise<ContactList> {\n const { domain } = context.state\n\n const queryBuilder = getQueryBuilderFromListParams({\n domain,\n params,\n repository: await getRepository(Contact),\n searchables: ['name', 'company', 'email', 'phone']\n })\n\n const [items, total] = await queryBuilder.getManyAndCount()\n\n return { items, total }\n }\n\n @FieldResolver(type => Profile)\n async profile(@Root() contact: Contact): Promise<Profile> {\n var { left, top, zoom } = contact.profile || {}\n\n if (left === undefined || top === undefined || zoom === undefined) {\n return\n }\n\n const attachment: Attachment = await getRepository(Attachment).findOne({\n where: {\n domain: { id: contact.domainId },\n refType: Contact.name,\n refBy: contact.id\n }\n })\n\n return { left, top, zoom, picture: attachment?.fullpath }\n }\n\n @FieldResolver(type => String)\n async phone(@Root() contact: Contact): Promise<string> {\n return getContactItem(contact, ContactField.Phone, 'work')\n }\n\n @FieldResolver(type => String)\n async email(@Root() contact: Contact): Promise<string> {\n return getContactItem(contact, ContactField.Email, 'work')\n }\n\n @FieldResolver(type => String)\n async address(@Root() contact: Contact): Promise<string> {\n return getContactItem(contact, ContactField.Address, 'work')\n }\n\n @FieldResolver(type => String)\n async department(@Root() contact: Contact): Promise<string> {\n return getContactItem(contact, ContactField.Department, 'work')\n }\n\n @FieldResolver(type => [ContactItem])\n async items(@Root() contact: Contact): Promise<ContactItem[]> {\n return getContactItems(contact)\n }\n\n @FieldResolver(type => Domain)\n async domain(@Root() contact: Contact): Promise<Domain> {\n return await getRepository(Domain).findOneBy({ id: contact.domainId })\n }\n\n @FieldResolver(type => User)\n async updater(@Root() contact: Contact): Promise<User> {\n return await getRepository(User).findOneBy({ id: contact.updaterId })\n }\n\n @FieldResolver(type => User)\n async creator(@Root() contact: Contact): Promise<User> {\n return await getRepository(User).findOneBy({ id: contact.creatorId })\n }\n}\n"]}