@royalschedule/maps 4.0.23 → 4.0.25

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.
@@ -3,22 +3,19 @@ function courses_default(scheduledGroups, school, importErrors, importWarnings)
3
3
  const courses = [];
4
4
  scheduledGroups?.forEach((scheduledGroup) => {
5
5
  const subjects = school.school_type == "GR" ? scheduledGroup.subjects : scheduledGroup.courses;
6
- if (subjects.length != 1) {
7
- const warn = `The schedule group "${scheduledGroup.name}" with id "${scheduledGroup.id}" contained ${subjects.length} number of ${school.school_type == "GR" ? "subjects" : "courses"} and was therefore omitted: a schedule group shall contain only a single ${school.school_type == "GR" ? "subject" : "course"}.`;
8
- importWarnings.push(warn);
9
- return;
6
+ for (const subject of subjects) {
7
+ if (scheduledGroup.teachers?.length == 0) {
8
+ const warn = `The schedule group "${scheduledGroup.name}" with id "${scheduledGroup.id}" did not contain any teachers.`;
9
+ importWarnings.push(warn);
10
+ }
11
+ courses.push({
12
+ ids: scheduledGroup.id.toString(),
13
+ displayName: scheduledGroup.name,
14
+ subject: subject.name,
15
+ groups: scheduledGroup.users_primary_groups.map((x) => ({ to: x.toString() })),
16
+ teachers: scheduledGroup.teachers?.map((x) => ({ to: x.id.toString() }))
17
+ });
10
18
  }
11
- if (scheduledGroup.teachers?.length == 0) {
12
- const warn = `The schedule group "${scheduledGroup.name}" with id "${scheduledGroup.id}" did not contain any teachers.`;
13
- importWarnings.push(warn);
14
- }
15
- courses.push({
16
- ids: scheduledGroup.id.toString(),
17
- displayName: scheduledGroup.name,
18
- subject: subjects.map((x) => x.name).join(", "),
19
- groups: scheduledGroup.users_primary_groups.map((x) => ({ to: x.toString() })),
20
- teachers: scheduledGroup.teachers?.map((x) => ({ to: x.id.toString() }))
21
- });
22
19
  });
23
20
  return courses;
24
21
  }
@@ -1 +1 @@
1
- {"version":3,"file":"courses.js","names":["courses: OutTypes.course[]"],"sources":["../../../src/Admentum/from/courses.ts"],"sourcesContent":["import type { ScheduleGroup } from '../types/schedule-groups';\nimport type { School } from '../types/schools';\nimport type { OutTypes } from './schedules';\n\n\nexport default function (\n scheduledGroups: ScheduleGroup[] | undefined,\n school: School,\n importErrors: string[],\n importWarnings: string[],\n): OutTypes.course[] {\n\n const courses: OutTypes.course[] = [];\n\n scheduledGroups?.forEach(scheduledGroup => {\n\n ////\n //// check number of subjects/courses\n ////\n const subjects = school.school_type == 'GR' ? scheduledGroup.subjects : scheduledGroup.courses;\n if (subjects.length != 1) {\n const warn = `The schedule group \"${scheduledGroup.name}\" with id \"${scheduledGroup.id}\" contained ${subjects.length} number of ${school.school_type == 'GR' ? 'subjects' : 'courses'} and was therefore omitted: a schedule group shall contain only a single ${school.school_type == 'GR' ? 'subject' : 'course'}.`;\n importWarnings.push(warn);\n return;\n }\n\n\n ////\n //// check number of teachers\n ////\n if (scheduledGroup.teachers?.length == 0) {\n const warn = `The schedule group \"${scheduledGroup.name}\" with id \"${scheduledGroup.id}\" did not contain any teachers.`;\n importWarnings.push(warn);\n }\n\n\n courses.push({\n ids: scheduledGroup.id.toString(),\n displayName: scheduledGroup.name,\n subject: subjects.map(x => x.name).join(', '),\n groups: scheduledGroup.users_primary_groups.map(x => ({ to: x.toString() })),\n teachers: scheduledGroup.teachers?.map(x => ({ to: x.id.toString() }))\n } satisfies OutTypes.course);\n\n });\n\n return courses;\n}\n"],"mappings":";AAKA,yBACE,iBACA,QACA,cACA,gBACmB;CAEnB,MAAMA,UAA6B,EAAE;AAErC,kBAAiB,SAAQ,mBAAkB;EAKzC,MAAM,WAAW,OAAO,eAAe,OAAO,eAAe,WAAW,eAAe;AACvF,MAAI,SAAS,UAAU,GAAG;GACxB,MAAM,OAAO,uBAAuB,eAAe,KAAK,aAAa,eAAe,GAAG,cAAc,SAAS,OAAO,aAAa,OAAO,eAAe,OAAO,aAAa,UAAU,2EAA2E,OAAO,eAAe,OAAO,YAAY,SAAS;AACnT,kBAAe,KAAK,KAAK;AACzB;;AAOF,MAAI,eAAe,UAAU,UAAU,GAAG;GACxC,MAAM,OAAO,uBAAuB,eAAe,KAAK,aAAa,eAAe,GAAG;AACvF,kBAAe,KAAK,KAAK;;AAI3B,UAAQ,KAAK;GACX,KAAa,eAAe,GAAG,UAAU;GACzC,aAAa,eAAe;GAC5B,SAAa,SAAS,KAAI,MAAK,EAAE,KAAK,CAAC,KAAK,KAAK;GACjD,QAAa,eAAe,qBAAqB,KAAI,OAAM,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE;GACjF,UAAa,eAAe,UAAU,KAAI,OAAM,EAAE,IAAI,EAAE,GAAG,UAAU,EAAE,EAAE;GAC1E,CAA2B;GAE5B;AAEF,QAAO"}
1
+ {"version":3,"file":"courses.js","names":["courses: OutTypes.course[]"],"sources":["../../../src/Admentum/from/courses.ts"],"sourcesContent":["import type { ScheduleGroup } from '../types/schedule-groups';\nimport type { School } from '../types/schools';\nimport type { OutTypes } from './schedules';\n\n\nexport default function (\n scheduledGroups: ScheduleGroup[] | undefined,\n school: School,\n importErrors: string[],\n importWarnings: string[],\n): OutTypes.course[] {\n\n const courses: OutTypes.course[] = [];\n\n scheduledGroups?.forEach(scheduledGroup => {\n\n ////\n //// check number of subjects/courses\n ////\n const subjects = school.school_type == 'GR' ? scheduledGroup.subjects : scheduledGroup.courses;\n // Nikos takes full responsibility for this line of code and the decision to allow multiple subjects per schedule group, which is a scenario that we have observed in the wild but that we do not fully understand the implications of.\n for (const subject of subjects) {\n ////\n //// check number of teachers\n ////\n if (scheduledGroup.teachers?.length == 0) {\n const warn = `The schedule group \"${scheduledGroup.name}\" with id \"${scheduledGroup.id}\" did not contain any teachers.`;\n importWarnings.push(warn);\n }\n\n courses.push({\n ids: scheduledGroup.id.toString(),\n displayName: scheduledGroup.name,\n subject: subject.name,\n groups: scheduledGroup.users_primary_groups.map(x => ({ to: x.toString() })),\n teachers: scheduledGroup.teachers?.map(x => ({ to: x.id.toString() }))\n } satisfies OutTypes.course);\n }\n });\n\n return courses;\n}\n"],"mappings":";AAKA,yBACE,iBACA,QACA,cACA,gBACmB;CAEnB,MAAMA,UAA6B,EAAE;AAErC,kBAAiB,SAAQ,mBAAkB;EAKzC,MAAM,WAAW,OAAO,eAAe,OAAO,eAAe,WAAW,eAAe;AAEvF,OAAK,MAAM,WAAW,UAAU;AAI9B,OAAI,eAAe,UAAU,UAAU,GAAG;IACxC,MAAM,OAAO,uBAAuB,eAAe,KAAK,aAAa,eAAe,GAAG;AACvF,mBAAe,KAAK,KAAK;;AAG3B,WAAQ,KAAK;IACX,KAAa,eAAe,GAAG,UAAU;IACzC,aAAa,eAAe;IAC5B,SAAa,QAAQ;IACrB,QAAa,eAAe,qBAAqB,KAAI,OAAM,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE;IACjF,UAAa,eAAe,UAAU,KAAI,OAAM,EAAE,IAAI,EAAE,GAAG,UAAU,EAAE,EAAE;IAC1E,CAA2B;;GAE9B;AAEF,QAAO"}
@@ -12,8 +12,10 @@ var groups_default = (groups, belongsTo, expand) => {
12
12
  if (!groups.every((group) => isString(group) || isString(get(group, "id")))) throw new Error("(SS12000::To::Groups) Some groups are missing \"id\" values", { cause: "invalid_input" });
13
13
  if (!belongsTo && !groups.every((group) => isString(group) && belongsTo || has(group, "belongsTo"))) throw new Error("(SS12000::To::Groups) Some top layer groups are missing \"belongsTo\" values", { cause: "invalid_input" });
14
14
  return groups.map((group) => {
15
- if (!isString(group) && group.members?.some((member) => isString(member))) throw new Error("(SS12000::To::Groups) Some group members are missing \"id\" values", { cause: "invalid_input" });
16
- const members = !isString(group) && group.members?.length && !isString(group.members[0]) ? group.members : [];
15
+ const members = !isString(group) && Array.isArray(group.members) ? group.members.map((member) => {
16
+ if (isString(member)) return { id: member };
17
+ return member;
18
+ }) : [];
17
19
  const division = belongsTo ?? (!isString(group) ? group.belongsTo : void 0);
18
20
  if (!division || isString(division) || !("id" in division && division.id)) throw new Error("(SS12000::To::Groups) Some group members are missing \"belongsTo\" values", { cause: "invalid_input" });
19
21
  if (!("start" in division && division.start) || !("end" in division && division.end)) throw new Error("(SS12000::To::Groups) Some group members are missing \"belongsTo\" start or end values", { cause: "invalid_input" });
@@ -1 +1 @@
1
- {"version":3,"file":"groups.js","names":["toPerson"],"sources":["../../../src/SS12000/to/groups.ts"],"sourcesContent":["import { isString, has, get, omitBy, isNil } from 'lodash-es';\nimport moment from 'moment';\nimport type { CoreTypes } from '../../core';\nimport type { Group } from '../types/groups';\nimport { getDivisionId, toReference } from './common';\nimport toPerson from './persons';\n\ntype Expand = ('referenceNames' | 'persons')[];\n\n/**\n * @deprecated This is only used for SCS. can be removed when scs use v2\n */\nexport default (\n groups: Exclude<Extract<CoreTypes.Mixed.Group, { id: string }>, { members: string[] }>[],\n belongsTo?: Extract<CoreTypes.Deep.Division, { id: string }>,\n expand?: Expand\n): Group[] => {\n if (!Array.isArray(groups))\n throw new Error('(SS12000::To::Groups) Group input is not of array type', { cause: 'invalid_input' });\n\n if (!groups.every((group) => isString(group) || isString(get(group, 'id'))))\n throw new Error('(SS12000::To::Groups) Some groups are missing \"id\" values', { cause: 'invalid_input' });\n\n if (!belongsTo && !groups.every((group) => (isString(group) && belongsTo) || has(group, 'belongsTo')))\n throw new Error('(SS12000::To::Groups) Some top layer groups are missing \"belongsTo\" values', { cause: 'invalid_input' });\n\n return groups.map((group) => {\n if (! isString(group) && group.members?.some((member) => isString(member))) {\n throw new Error('(SS12000::To::Groups) Some group members are missing \"id\" values', { cause: 'invalid_input' });\n }\n const members = !isString(group) && group.members?.length && !isString(group.members[0])\n ? group.members as Extract<CoreTypes.Mixed.Person, { id: string }>[]\n : [];\n\n const division = belongsTo ?? (!isString(group) ? group.belongsTo : undefined);\n if (!division || isString(division) || !('id' in division && division.id))\n throw new Error('(SS12000::To::Groups) Some group members are missing \"belongsTo\" values', { cause: 'invalid_input' });\n if (!('start' in division && division.start) || !('end' in division && division.end))\n throw new Error('(SS12000::To::Groups) Some group members are missing \"belongsTo\" start or end values', { cause: 'invalid_input' });\n\n return {\n id: `${ getDivisionId(group, belongsTo) }.${ isString(group) ? group : group.id }`,\n groupType: group.species === 'class' ? 'Klass' : 'Undervisning',\n startDate: moment(division.start).toISOString(),\n endDate: moment(division.end).toISOString(),\n ...!isString(group) && {\n meta: {\n created: moment(group.createdAt).toISOString(),\n modified: moment(group.updatedAt).toISOString()\n },\n /*\n Optionally add the following properties\n */\n ...omitBy({\n foreignId: group.ids,\n displayName: group.displayName,\n }, isNil),\n ...group.members && {\n // @ts-ignore\n groupMemberships: toReference(members, division).map(person => ({\n startDate: moment(division.start).toISOString(),\n endDate: moment(division.end).toISOString(),\n person: person\n }))\n },\n ...expand?.some(x => ['persons'].includes(x)) && {\n _embedded: {\n ...expand.includes('persons') && {\n groups: toPerson(members, division as Extract<CoreTypes.Deep.Division, { id: string }>)\n }\n }\n }\n }\n };\n });\n};"],"mappings":";;;;;;;;;AAYA,sBACE,QACA,WACA,WACY;AACZ,KAAI,CAAC,MAAM,QAAQ,OAAO,CACxB,OAAM,IAAI,MAAM,0DAA0D,EAAE,OAAO,iBAAiB,CAAC;AAEvG,KAAI,CAAC,OAAO,OAAO,UAAU,SAAS,MAAM,IAAI,SAAS,IAAI,OAAO,KAAK,CAAC,CAAC,CACzE,OAAM,IAAI,MAAM,+DAA6D,EAAE,OAAO,iBAAiB,CAAC;AAE1G,KAAI,CAAC,aAAa,CAAC,OAAO,OAAO,UAAW,SAAS,MAAM,IAAI,aAAc,IAAI,OAAO,YAAY,CAAC,CACnG,OAAM,IAAI,MAAM,gFAA8E,EAAE,OAAO,iBAAiB,CAAC;AAE3H,QAAO,OAAO,KAAK,UAAU;AAC3B,MAAI,CAAE,SAAS,MAAM,IAAI,MAAM,SAAS,MAAM,WAAW,SAAS,OAAO,CAAC,CACxE,OAAM,IAAI,MAAM,sEAAoE,EAAE,OAAO,iBAAiB,CAAC;EAEjH,MAAM,UAAU,CAAC,SAAS,MAAM,IAAI,MAAM,SAAS,UAAU,CAAC,SAAS,MAAM,QAAQ,GAAG,GACpF,MAAM,UACN,EAAE;EAEN,MAAM,WAAW,cAAc,CAAC,SAAS,MAAM,GAAG,MAAM,YAAY;AACpE,MAAI,CAAC,YAAY,SAAS,SAAS,IAAI,EAAE,QAAQ,YAAY,SAAS,IACpE,OAAM,IAAI,MAAM,6EAA2E,EAAE,OAAO,iBAAiB,CAAC;AACxH,MAAI,EAAE,WAAW,YAAY,SAAS,UAAU,EAAE,SAAS,YAAY,SAAS,KAC9E,OAAM,IAAI,MAAM,0FAAwF,EAAE,OAAO,iBAAiB,CAAC;AAErI,SAAO;GACL,IAAW,GAAI,cAAc,OAAO,UAAU,CAAE,GAAI,SAAS,MAAM,GAAG,QAAQ,MAAM;GACpF,WAAW,MAAM,YAAY,UAAU,UAAU;GACjD,WAAW,OAAO,SAAS,MAAM,CAAC,aAAa;GAC/C,SAAW,OAAO,SAAS,IAAI,CAAC,aAAa;GAC7C,GAAG,CAAC,SAAS,MAAM,IAAI;IACrB,MAAM;KACJ,SAAU,OAAO,MAAM,UAAU,CAAC,aAAa;KAC/C,UAAU,OAAO,MAAM,UAAU,CAAC,aAAa;KAChD;IAID,GAAG,OAAO;KACR,WAAa,MAAM;KACnB,aAAa,MAAM;KACpB,EAAE,MAAM;IACT,GAAG,MAAM,WAAW,EAElB,kBAAkB,YAAY,SAAS,SAAS,CAAC,KAAI,YAAW;KAC9D,WAAW,OAAO,SAAS,MAAM,CAAC,aAAa;KAC/C,SAAW,OAAO,SAAS,IAAI,CAAC,aAAa;KAClC;KACZ,EAAE,EACJ;IACD,GAAG,QAAQ,MAAK,MAAK,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,IAAI,EAC/C,WAAW,EACT,GAAG,OAAO,SAAS,UAAU,IAAI,EAC/B,QAAQA,gBAAS,SAAS,SAA6D,EACxF,EACF,EACF;IACF;GACF;GACD"}
1
+ {"version":3,"file":"groups.js","names":["toPerson"],"sources":["../../../src/SS12000/to/groups.ts"],"sourcesContent":["import { isString, has, get, omitBy, isNil } from 'lodash-es';\nimport moment from 'moment';\nimport type { CoreTypes } from '../../core';\nimport type { Group } from '../types/groups';\nimport { getDivisionId, toReference } from './common';\nimport toPerson from './persons';\n\ntype Expand = ('referenceNames' | 'persons')[];\n\n/**\n * @deprecated This is only used for SCS. can be removed when scs use v2\n */\nexport default (\n groups: Extract<CoreTypes.Mixed.Group, { id: string }>[],\n belongsTo?: Extract<CoreTypes.Deep.Division, { id: string }>,\n expand?: Expand\n): Group[] => {\n if (!Array.isArray(groups))\n throw new Error('(SS12000::To::Groups) Group input is not of array type', { cause: 'invalid_input' });\n\n if (!groups.every((group) => isString(group) || isString(get(group, 'id'))))\n throw new Error('(SS12000::To::Groups) Some groups are missing \"id\" values', { cause: 'invalid_input' });\n\n if (!belongsTo && !groups.every((group) => (isString(group) && belongsTo) || has(group, 'belongsTo')))\n throw new Error('(SS12000::To::Groups) Some top layer groups are missing \"belongsTo\" values', { cause: 'invalid_input' });\n\n return groups.map((group) => {\n const members = !isString(group) && Array.isArray(group.members)\n ? (group.members).map((member) => {\n if (isString(member)) return { id: member } as Extract<CoreTypes.Mixed.Person, { id: string }>;\n return member as Extract<CoreTypes.Mixed.Person, { id: string }>;\n })\n : [];\n\n const division = belongsTo ?? (!isString(group) ? group.belongsTo : undefined);\n if (!division || isString(division) || !('id' in division && division.id))\n throw new Error('(SS12000::To::Groups) Some group members are missing \"belongsTo\" values', { cause: 'invalid_input' });\n if (!('start' in division && division.start) || !('end' in division && division.end))\n throw new Error('(SS12000::To::Groups) Some group members are missing \"belongsTo\" start or end values', { cause: 'invalid_input' });\n\n return {\n id: `${ getDivisionId(group, belongsTo) }.${ isString(group) ? group : group.id }`,\n groupType: group.species === 'class' ? 'Klass' : 'Undervisning',\n startDate: moment(division.start).toISOString(),\n endDate: moment(division.end).toISOString(),\n ...!isString(group) && {\n meta: {\n created: moment(group.createdAt).toISOString(),\n modified: moment(group.updatedAt).toISOString()\n },\n /*\n Optionally add the following properties\n */\n ...omitBy({\n foreignId: group.ids,\n displayName: group.displayName,\n }, isNil),\n ...group.members && {\n // @ts-ignore\n groupMemberships: toReference(members, division).map(person => ({\n startDate: moment(division.start).toISOString(),\n endDate: moment(division.end).toISOString(),\n person: person\n }))\n },\n ...expand?.some(x => ['persons'].includes(x)) && {\n _embedded: {\n ...expand.includes('persons') && {\n groups: toPerson(members, division as Extract<CoreTypes.Deep.Division, { id: string }>)\n }\n }\n }\n }\n };\n });\n};"],"mappings":";;;;;;;;;AAYA,sBACE,QACA,WACA,WACY;AACZ,KAAI,CAAC,MAAM,QAAQ,OAAO,CACxB,OAAM,IAAI,MAAM,0DAA0D,EAAE,OAAO,iBAAiB,CAAC;AAEvG,KAAI,CAAC,OAAO,OAAO,UAAU,SAAS,MAAM,IAAI,SAAS,IAAI,OAAO,KAAK,CAAC,CAAC,CACzE,OAAM,IAAI,MAAM,+DAA6D,EAAE,OAAO,iBAAiB,CAAC;AAE1G,KAAI,CAAC,aAAa,CAAC,OAAO,OAAO,UAAW,SAAS,MAAM,IAAI,aAAc,IAAI,OAAO,YAAY,CAAC,CACnG,OAAM,IAAI,MAAM,gFAA8E,EAAE,OAAO,iBAAiB,CAAC;AAE3H,QAAO,OAAO,KAAK,UAAU;EAC3B,MAAM,UAAU,CAAC,SAAS,MAAM,IAAI,MAAM,QAAQ,MAAM,QAAQ,GAC3D,MAAM,QAAS,KAAK,WAAW;AAChC,OAAI,SAAS,OAAO,CAAE,QAAO,EAAE,IAAI,QAAQ;AAC3C,UAAO;IACP,GACA,EAAE;EAEN,MAAM,WAAW,cAAc,CAAC,SAAS,MAAM,GAAG,MAAM,YAAY;AACpE,MAAI,CAAC,YAAY,SAAS,SAAS,IAAI,EAAE,QAAQ,YAAY,SAAS,IACpE,OAAM,IAAI,MAAM,6EAA2E,EAAE,OAAO,iBAAiB,CAAC;AACxH,MAAI,EAAE,WAAW,YAAY,SAAS,UAAU,EAAE,SAAS,YAAY,SAAS,KAC9E,OAAM,IAAI,MAAM,0FAAwF,EAAE,OAAO,iBAAiB,CAAC;AAErI,SAAO;GACL,IAAW,GAAI,cAAc,OAAO,UAAU,CAAE,GAAI,SAAS,MAAM,GAAG,QAAQ,MAAM;GACpF,WAAW,MAAM,YAAY,UAAU,UAAU;GACjD,WAAW,OAAO,SAAS,MAAM,CAAC,aAAa;GAC/C,SAAW,OAAO,SAAS,IAAI,CAAC,aAAa;GAC7C,GAAG,CAAC,SAAS,MAAM,IAAI;IACrB,MAAM;KACJ,SAAU,OAAO,MAAM,UAAU,CAAC,aAAa;KAC/C,UAAU,OAAO,MAAM,UAAU,CAAC,aAAa;KAChD;IAID,GAAG,OAAO;KACR,WAAa,MAAM;KACnB,aAAa,MAAM;KACpB,EAAE,MAAM;IACT,GAAG,MAAM,WAAW,EAElB,kBAAkB,YAAY,SAAS,SAAS,CAAC,KAAI,YAAW;KAC9D,WAAW,OAAO,SAAS,MAAM,CAAC,aAAa;KAC/C,SAAW,OAAO,SAAS,IAAI,CAAC,aAAa;KAClC;KACZ,EAAE,EACJ;IACD,GAAG,QAAQ,MAAK,MAAK,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,IAAI,EAC/C,WAAW,EACT,GAAG,OAAO,SAAS,UAAU,IAAI,EAC/B,QAAQA,gBAAS,SAAS,SAA6D,EACxF,EACF,EACF;IACF;GACF;GACD"}
@@ -28,10 +28,8 @@ declare class export_default {
28
28
  }>[], belongsTo?: Extract<Types.Deep.Division, {
29
29
  id: string;
30
30
  }>, expand?: ("person" | "referenceNames")[]) => Duty[];
31
- static groups: (groups: Exclude<Extract<Types.Mixed.Group, {
31
+ static groups: (groups: Extract<Types.Mixed.Group, {
32
32
  id: string;
33
- }>, {
34
- members: string[];
35
33
  }>[], belongsTo?: Extract<Types.Deep.Division, {
36
34
  id: string;
37
35
  }>, expand?: ("persons" | "referenceNames")[]) => Group[];
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@royalschedule/maps",
3
3
  "description": "",
4
- "version": "4.0.23",
4
+ "version": "4.0.25",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",