@speakableio/core 0.1.105 → 1.0.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.
Files changed (55) hide show
  1. package/dist/analytics-Bj2i88Zk.d.ts +89 -0
  2. package/dist/{assignment.model-DLMWAp0Y.d.ts → assignment.model-BRS4h8gX.d.ts} +1 -1
  3. package/dist/{assignment.model-Bcbxx8oI.d.mts → assignment.model-Bc61gBHl.d.ts} +5 -2
  4. package/dist/{assignment.model-Lu21tZCh.d.mts → assignment.model-Bm9gE2YK.d.ts} +2 -2
  5. package/dist/const.d.ts +3 -73
  6. package/dist/everything.d.ts +1348 -0
  7. package/dist/everything.js +3509 -0
  8. package/dist/everything.js.map +1 -0
  9. package/dist/hooks.d.ts +621 -4
  10. package/dist/hooks.js +1167 -39
  11. package/dist/hooks.js.map +1 -1
  12. package/dist/index.native.d.mts +2272 -27
  13. package/dist/index.native.d.ts +2272 -27
  14. package/dist/index.native.js +2915 -98
  15. package/dist/index.native.js.map +1 -1
  16. package/dist/index.native.mjs +2937 -120
  17. package/dist/index.native.mjs.map +1 -1
  18. package/dist/index.web-DNYJV_41.d.ts +469 -0
  19. package/dist/index.web.d.mts +2437 -6
  20. package/dist/index.web.d.ts +68 -2
  21. package/dist/index.web.js +2937 -120
  22. package/dist/index.web.js.map +1 -1
  23. package/dist/models.d.ts +2 -2
  24. package/dist/repos.d.ts +1 -1
  25. package/dist/speakable-plans-BjWWEWrQ.d.ts +72 -0
  26. package/dist/{const.d.mts → speakable-plans-DR1cQ6IK.d.ts} +19 -258
  27. package/dist/speakable-plans-Dq9nRefI.d.ts +72 -0
  28. package/dist/utils.d.ts +84 -2
  29. package/dist/utils.js +307 -1
  30. package/dist/utils.js.map +1 -1
  31. package/dist/web.constants-qmx4rGyO.d.ts +26 -0
  32. package/package.json +6 -62
  33. package/dist/analytics.cjs +0 -376
  34. package/dist/analytics.cjs.map +0 -1
  35. package/dist/assignment.constants-BIKM6fYi.d.mts +0 -32
  36. package/dist/card.constants-DhKFipX3.d.mts +0 -54
  37. package/dist/const.cjs +0 -526
  38. package/dist/const.cjs.map +0 -1
  39. package/dist/hooks.cjs +0 -1604
  40. package/dist/hooks.cjs.map +0 -1
  41. package/dist/hooks.d.mts +0 -294
  42. package/dist/index.web.cjs +0 -517
  43. package/dist/index.web.cjs.map +0 -1
  44. package/dist/models.cjs +0 -75
  45. package/dist/models.cjs.map +0 -1
  46. package/dist/models.d.mts +0 -56
  47. package/dist/notification.constants-Da4-_0kX.d.mts +0 -21
  48. package/dist/notification.constants-Da4-_0kX.d.ts +0 -21
  49. package/dist/repos.cjs +0 -486
  50. package/dist/repos.cjs.map +0 -1
  51. package/dist/repos.d.mts +0 -209
  52. package/dist/utils.cjs +0 -373
  53. package/dist/utils.cjs.map +0 -1
  54. package/dist/utils.d.mts +0 -39
  55. /package/dist/{notification.constants-B72fb734.d.mts → notification.constants-B72fb734.d.ts} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/entry-points/utils.ts","../src/domains/assignment/utils/check-assignment-availability.ts","../src/lib/firebase/api.ts","../src/domains/assignment/utils/create-default-score.ts","../src/domains/cards/card.model.ts","../src/domains/cards/utils/check-page-type.ts","../src/domains/cards/utils/get-page-prompt.ts","../src/domains/cards/utils/get-completed-pages.ts","../src/domains/cards/utils/get-label-page.ts"],"sourcesContent":["/* eslint-disable padding-line-between-statements */\n\n// Assignment utils\nexport * from '../domains/assignment/utils/calculateScoreAndProgress'\nexport * from '../domains/assignment/utils/check-assignment-availability'\nexport * from '../domains/assignment/utils/create-default-score'\n\n// Page utils\nexport * from '../domains/cards/utils/'\n","import { type CustomTimestamp } from '@core/types/firebase.types'\nimport dayjs from 'dayjs'\n\nexport const checkAssignmentAvailability = (\n scheduledTime: string | CustomTimestamp | null | undefined,\n) => {\n if (!scheduledTime) return true\n\n const scheduledDate =\n typeof scheduledTime === 'string' ? dayjs(scheduledTime) : dayjs(scheduledTime.toDate())\n\n if (!scheduledDate.isValid()) return true\n\n return dayjs().isAfter(scheduledDate)\n}\n","import { type CallableFunction, type FirestoreHelpers } from '@core/types/firebase.types'\nimport {\n type SetOptions,\n type DocumentData,\n type QueryConstraint,\n type WithFieldValue,\n type Firestore,\n} from 'firebase/firestore'\n\ninterface FirebaseConfig {\n db: Firestore\n helpers: FirestoreHelpers\n httpsCallable: (name: string) => CallableFunction\n logEvent: (name: string, data: any) => void\n}\n\ntype FirebasePath = string\n\nexport class FirebaseAPI {\n private static instance: FirebaseAPI\n private config: FirebaseConfig | null = null\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private constructor() {\n // Private constructor for singleton pattern\n }\n\n static getInstance(): FirebaseAPI {\n if (!FirebaseAPI.instance) {\n FirebaseAPI.instance = new FirebaseAPI()\n }\n\n return FirebaseAPI.instance\n }\n\n initialize(config: FirebaseConfig) {\n this.config = config\n }\n\n get db() {\n if (!this.config) throw new Error('Firebase API not initialized')\n\n return this.config.db\n }\n\n get helpers() {\n if (!this.config) throw new Error('Firebase API not initialized')\n\n return this.config.helpers\n }\n\n get httpsCallable() {\n return this.config?.httpsCallable\n }\n\n logEvent(name: string, data: any) {\n this.config?.logEvent(name, data)\n }\n\n accessQueryConstraints() {\n const { query, orderBy, limit, startAt, startAfter, endAt, endBefore, where, increment } =\n this.helpers\n\n return {\n query,\n orderBy,\n limit,\n startAt,\n startAfter,\n endAt,\n endBefore,\n where,\n increment,\n }\n }\n\n accessHelpers() {\n const { doc, collection, writeBatch, serverTimestamp, setDoc } = this.helpers\n\n return {\n doc: (path: FirebasePath) => doc(this.db, path),\n collection: (path: FirebasePath) => collection(this.db, path),\n writeBatch: () => writeBatch(this.db),\n serverTimestamp: serverTimestamp,\n setDoc: setDoc,\n }\n }\n\n async getDoc<T>(path: FirebasePath) {\n const { getDoc, doc } = this.helpers\n\n const docRef = doc(this.db, path)\n const docSnap = await getDoc(docRef)\n\n const data = docSnap.exists()\n ? ({\n ...docSnap.data(),\n id: docSnap.id,\n } as T)\n : null\n\n return {\n id: docSnap.id,\n data,\n }\n }\n\n async getDocs<T>(path: FirebasePath, ...queryConstraints: QueryConstraint[]) {\n const { getDocs, query, collection } = this.helpers\n const collectionRef = collection(this.db, path)\n const q =\n queryConstraints.length > 0 ? query(collectionRef, ...queryConstraints) : collectionRef\n\n const querySnapshot = await getDocs(q)\n\n const data = querySnapshot.docs.map(doc => ({\n data: doc.data() as T,\n id: doc.id,\n }))\n\n return {\n data: data as unknown as (T & {\n id: string\n })[],\n querySnapshot,\n empty: querySnapshot.empty,\n }\n }\n\n async addDoc<T extends WithFieldValue<DocumentData>>(\n path: FirebasePath,\n data: T,\n ): Promise<{ id: string } & T> {\n const { addDoc, collection } = this.helpers\n const collectionRef = collection(this.db, path)\n const docRef = await addDoc(collectionRef, data)\n\n return {\n ...data,\n id: docRef.id,\n }\n }\n\n async setDoc<T extends WithFieldValue<DocumentData>>(\n path: FirebasePath,\n data: T,\n options: SetOptions = {},\n ): Promise<void> {\n const { setDoc, doc } = this.helpers\n const docRef = doc(this.db, path)\n\n await setDoc(docRef, data, options)\n }\n\n async updateDoc(path: FirebasePath, data: any): Promise<void> {\n const { updateDoc, doc } = this.helpers\n\n const docRef = doc(this.db, path)\n\n await updateDoc(docRef, data)\n }\n\n async deleteDoc(path: FirebasePath): Promise<void> {\n const { deleteDoc, doc } = this.helpers\n const docRef = doc(this.db, path)\n\n await deleteDoc(docRef)\n }\n\n async runTransaction<T>(updateFunction: (transaction: any) => Promise<T>): Promise<T> {\n const { runTransaction } = this.helpers\n\n return runTransaction(this.db, updateFunction)\n }\n\n async runBatch(operations: (() => Promise<void>)[]): Promise<void> {\n const { writeBatch } = this.helpers\n const batch = writeBatch(this.db)\n\n await Promise.all(operations.map(op => op()))\n await batch.commit()\n }\n\n writeBatch() {\n const { writeBatch } = this.helpers\n\n const batch = writeBatch(this.db)\n\n return batch\n }\n}\n\nexport const api = FirebaseAPI.getInstance()\n","import { api } from '@core/lib/firebase/api'\n\nimport { type Score } from '../assignment.model'\n\nexport const defaultScore = (props: {\n owners: string[]\n courseId?: string\n userId: string\n googleClassroomUserId?: string\n}): Score => {\n const { serverTimestamp } = api.accessHelpers()\n\n const score = {\n progress: 0,\n score: 0,\n startDate: serverTimestamp(),\n status: 'IN_PROGRESS',\n submitted: false,\n cards: {},\n lastPlayed: serverTimestamp(),\n owners: props.owners,\n userId: props.userId,\n } as Score\n\n if (props.googleClassroomUserId) {\n score.googleClassroomUserId = props.googleClassroomUserId\n }\n\n if (props.courseId) {\n score.courseId = props.courseId\n }\n\n return score\n}\n","import { type VerificationCardStatus } from './card.constants'\n\n/* eslint-disable @typescript-eslint/naming-convention */\nexport interface PageActivityWithId extends PageActivity {\n id: string\n}\n\nexport interface PageActivity {\n owners: string[]\n checked?: boolean\n completed?: boolean\n media_area_id?: string | null\n media_area_layout?: 'left' | 'right' | null\n score?: number\n verificationStatus?: VerificationCardStatus\n native_text?: string\n repeat?: number\n language?: string | null\n image?: {\n path?: string | null\n url?: string\n }\n audio?: {\n path?: string | null\n url?: string\n } | null\n notes?: string\n difficulty?: string\n default_language?: string\n target_text?: string\n type: ActivityPageType\n grading_criteria?: string\n scoring_type?: string\n grading_method?: 'simple' | 'rubric' | 'manual' | 'standards_based'\n feedback_types?: string[]\n rubricId?: string\n prompt?: string\n title?: string\n passing_score?: number\n maxCharacters?: number\n answer?: string[]\n choices?: {\n value: string\n option: string\n }[]\n MCQType?: string\n multipleAttemptsAllowed?: boolean\n allowRetries?: boolean\n question?: string\n respondTime?: number\n hidePrompt?: boolean\n videoUrl?: string\n link?: string\n text?: string\n isListenAloud?: boolean\n embedCode?: string\n attempt?: number\n correct?: number\n autoGrade?: boolean\n points?: number\n shuffle?: boolean\n translation?: string\n includeAIContext?: boolean\n media_area_context_ref?: string | null\n standardId?: string\n target_proficiency_level?: string\n allowTTS?: boolean\n feedback_language?: string | null\n correct_answer?: string | null\n limit_attempts?: boolean\n max_attempts?: number\n rich_text?: string\n}\n\nexport enum ActivityPageType {\n // DEFAULT = 'READ_REPEAT',\n READ_REPEAT = 'READ_REPEAT',\n VIDEO = 'VIDEO',\n TEXT = 'TEXT',\n READ_RESPOND = 'READ_RESPOND',\n FREE_RESPONSE = 'FREE_RESPONSE',\n REPEAT = 'REPEAT',\n RESPOND = 'RESPOND',\n RESPOND_WRITE = 'RESPOND_WRITE',\n TEXT_TO_SPEECH = 'TEXT_TO_SPEECH',\n MULTIPLE_CHOICE = 'MULTIPLE_CHOICE',\n PODCAST = 'PODCAST',\n MEDIA_PAGE = 'MEDIA_PAGE',\n WRITE = 'WRITE',\n SHORT_ANSWER = 'SHORT_ANSWER',\n SHORT_STORY = 'SHORT_STORY',\n SPEAK = 'SPEAK',\n CONVERSATION = 'CONVERSATION',\n CONVERSATION_WRITE = 'CONVERSATION_WRITE',\n DIALOGUE = 'DIALOGUE',\n INSTRUCTION = 'INSTRUCTION',\n LISTEN = 'LISTEN',\n READ = 'READ',\n ANSWER = 'ANSWER',\n}\n\nexport const RESPOND_PAGE_ACTIVITY_TYPES = [\n ActivityPageType.READ_RESPOND,\n ActivityPageType.RESPOND,\n ActivityPageType.RESPOND_WRITE,\n ActivityPageType.FREE_RESPONSE,\n]\n\nexport const MULTIPLE_CHOICE_PAGE_ACTIVITY_TYPES = [ActivityPageType.MULTIPLE_CHOICE]\n\nexport const REPEAT_PAGE_ACTIVITY_TYPES = [ActivityPageType.READ_REPEAT, ActivityPageType.REPEAT]\n\nexport const RESPOND_WRITE_PAGE_ACTIVITY_TYPES = [\n ActivityPageType.RESPOND_WRITE,\n ActivityPageType.FREE_RESPONSE,\n]\n\nexport const RESPOND_AUDIO_PAGE_ACTIVITY_TYPES = [\n ActivityPageType.RESPOND,\n ActivityPageType.READ_RESPOND,\n]\n","import {\n ActivityPageType,\n REPEAT_PAGE_ACTIVITY_TYPES,\n MULTIPLE_CHOICE_PAGE_ACTIVITY_TYPES,\n RESPOND_PAGE_ACTIVITY_TYPES,\n RESPOND_WRITE_PAGE_ACTIVITY_TYPES,\n RESPOND_AUDIO_PAGE_ACTIVITY_TYPES,\n} from '../card.model'\n\nfunction checkIsRepeatPage(cardType: ActivityPageType | undefined) {\n if (cardType === undefined) return false\n\n return REPEAT_PAGE_ACTIVITY_TYPES.includes(cardType)\n}\n\nfunction checkIsMCPage(cardType: ActivityPageType | undefined) {\n if (cardType === undefined) return false\n\n return MULTIPLE_CHOICE_PAGE_ACTIVITY_TYPES.includes(cardType)\n}\n\nfunction checkIsRespondPage(cardType: ActivityPageType | undefined) {\n if (cardType === undefined) return false\n\n return RESPOND_PAGE_ACTIVITY_TYPES.includes(cardType)\n}\n\nfunction checkIsRespondWrittenPage(cardType: ActivityPageType | undefined) {\n if (cardType === undefined) return false\n\n return RESPOND_WRITE_PAGE_ACTIVITY_TYPES.includes(cardType)\n}\n\nfunction checkIsRespondAudioPage(cardType: ActivityPageType | undefined) {\n if (cardType === undefined) return false\n\n return RESPOND_AUDIO_PAGE_ACTIVITY_TYPES.includes(cardType)\n}\n\nconst checkIsMediaPage = (cardType: ActivityPageType | undefined) => {\n if (cardType === undefined) return false\n\n return cardType === ActivityPageType.MEDIA_PAGE\n}\n\nconst checkIsShortAnswerPage = (cardType: ActivityPageType | undefined) => {\n if (cardType === undefined) return false\n\n return cardType === ActivityPageType.SHORT_ANSWER\n}\n\nexport const checkTypePageActivity = (cardType: ActivityPageType | undefined) => {\n const isRespondAudio = checkIsRespondAudioPage(cardType)\n const isRespondWritten = checkIsRespondWrittenPage(cardType)\n\n const isRespond = checkIsRespondPage(cardType)\n const isMC = checkIsMCPage(cardType)\n const isRepeat = checkIsRepeatPage(cardType)\n const isMediaPage = checkIsMediaPage(cardType)\n\n const isShortAnswer = checkIsShortAnswerPage(cardType)\n\n return {\n isRespondAudio,\n isRespondWritten,\n isRespond,\n isMC,\n isRepeat,\n isMediaPage,\n isShortAnswer,\n }\n}\n","import { type PageActivityWithId } from '../card.model'\n\nimport { checkTypePageActivity } from './check-page-type'\n\nfunction extractTextFromRichText(richText: string | undefined): string {\n if (!richText) return ''\n\n return richText\n .replace(/<[^>]*>/g, '')\n .replace(/&nbsp;/g, ' ')\n .replace(/&amp;/g, '&')\n .replace(/&lt;/g, '<')\n .replace(/&gt;/g, '>')\n .replace(/&quot;/g, '\"')\n .replace(/&#39;/g, \"'\")\n .trim()\n}\n\nexport function getPagePrompt(card: PageActivityWithId | undefined) {\n if (!card) return { has: false, text: '', rich_text: '', isTextEqualToRichText: false }\n\n const { isMC, isRepeat, isRespond, isShortAnswer } = checkTypePageActivity(card?.type)\n const hidePrompt = card?.hidePrompt === true\n\n const createReturnObject = (text: string | undefined, richText: string | undefined) => {\n const plainText = text || ''\n const richTextPlain = extractTextFromRichText(richText)\n\n return {\n has: true,\n text: plainText,\n rich_text: richText || '',\n isTextEqualToRichText: plainText.trim() === richTextPlain.trim(),\n }\n }\n\n if (isRepeat) {\n return createReturnObject(card?.target_text, card?.rich_text)\n }\n\n if (isRespond && !hidePrompt) {\n return createReturnObject(card?.prompt, card?.rich_text)\n }\n\n if (isMC) {\n return createReturnObject(card?.question, card?.rich_text)\n }\n\n if (isShortAnswer && !hidePrompt) {\n return createReturnObject(card?.prompt, card?.rich_text)\n }\n\n return {\n has: false,\n text: '',\n rich_text: '',\n isTextEqualToRichText: false,\n }\n}\n","import { type Score } from '@core/domains/assignment/assignment.model'\n\nexport const getTotalCompletedCards = (pageScores: Score['cards'] | undefined) => {\n return Object.values(pageScores ?? {}).reduce((acc, cardScore) => {\n if (\n (cardScore.completed ?? cardScore.score ?? cardScore.score === 0) &&\n !cardScore.media_area_opened\n ) {\n acc++\n }\n\n return acc\n }, 0)\n}\n","import { type ActivityPageType } from '../card.model'\n\nimport { checkTypePageActivity } from './check-page-type'\n\nconst labels = {\n repeat: {\n short: 'Repeat',\n long: 'Listen & Repeat',\n },\n mc: {\n short: 'Multiple Choice',\n long: 'Multiple Choice',\n },\n mediaPage: {\n short: 'Media Page',\n long: 'Media Page',\n },\n shortAnswer: {\n short: 'Short Answer',\n long: 'Short Answer',\n },\n respondWritten: {\n short: 'Open Response',\n long: 'Written Open Response',\n },\n respondAudio: {\n short: 'Open Response',\n long: 'Spoken Open Response',\n },\n}\n\nexport const getLabelPage = (pageType: ActivityPageType | undefined) => {\n if (!pageType) {\n return {\n short: '',\n long: '',\n }\n }\n\n const { isRepeat, isMC, isMediaPage, isShortAnswer, isRespondWritten, isRespondAudio } =\n checkTypePageActivity(pageType)\n\n if (isRepeat) {\n return labels.repeat\n }\n\n if (isMC) {\n return labels.mc\n }\n\n if (isMediaPage) {\n return labels.mediaPage\n }\n\n if (isShortAnswer) {\n return labels.shortAnswer\n }\n\n if (isRespondWritten) {\n return labels.respondWritten\n }\n\n if (isRespondAudio) {\n return labels.respondAudio\n }\n\n return {\n short: '',\n long: '',\n }\n}\n"],"mappings":"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","names":["dayjs"]}
package/dist/utils.d.mts DELETED
@@ -1,39 +0,0 @@
1
- import { b as CustomTimestamp, e as Score, c as ActivityPageType, d as PageActivityWithId } from './assignment.model-Lu21tZCh.mjs';
2
- import '@react-native-firebase/firestore';
3
- import 'firebase/firestore';
4
- import './card.constants-DhKFipX3.mjs';
5
-
6
- declare const checkAssignmentAvailability: (scheduledTime: string | CustomTimestamp | null | undefined) => boolean;
7
-
8
- declare const defaultScore: (props: {
9
- owners: string[];
10
- courseId?: string;
11
- userId: string;
12
- googleClassroomUserId?: string;
13
- }) => Score;
14
-
15
- declare const checkTypePageActivity: (cardType: ActivityPageType | undefined) => {
16
- isRespondAudio: boolean;
17
- isRespondWritten: boolean;
18
- isRespond: boolean;
19
- isMC: boolean;
20
- isRepeat: boolean;
21
- isMediaPage: boolean;
22
- isShortAnswer: boolean;
23
- };
24
-
25
- declare function getPagePrompt(card: PageActivityWithId | undefined): {
26
- has: boolean;
27
- text: string;
28
- rich_text: string;
29
- isTextEqualToRichText: boolean;
30
- };
31
-
32
- declare const getTotalCompletedCards: (pageScores: Score["cards"] | undefined) => number;
33
-
34
- declare const getLabelPage: (pageType: ActivityPageType | undefined) => {
35
- short: string;
36
- long: string;
37
- };
38
-
39
- export { checkAssignmentAvailability, checkTypePageActivity, defaultScore, getLabelPage, getPagePrompt, getTotalCompletedCards };