waha-shared 1.0.456 → 1.0.458

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 (35) hide show
  1. package/dist/data/bibleStatuses/bibleStatuses.json +198 -196
  2. package/dist/data/bibleTexts/bibleTexts.json +11 -0
  3. package/dist/data/languages/index.d.ts +5 -4
  4. package/dist/data/languages/languages.json +92 -20
  5. package/dist/data/languages/languages.schema.json +83 -3
  6. package/dist/data/languages/languages.zod.d.ts +94 -23
  7. package/dist/data/languages/languages.zod.js +78 -2
  8. package/dist/data/mediaDurations/mediaDurations.json +147 -128
  9. package/dist/data/releaseNotes/releaseNotes.json +56 -2
  10. package/dist/data/translationsApp/index.d.ts +33 -4
  11. package/dist/data/translationsApp/translationsApp.json +1190 -1
  12. package/dist/data/translationsApp/translationsApp.schema.json +85 -23
  13. package/dist/data/translationsApp/translationsApp.zod.d.ts +107 -18
  14. package/dist/data/translationsApp/translationsApp.zod.js +76 -30
  15. package/dist/functions/magicLink.d.ts +12 -22
  16. package/dist/functions/magicLink.js +19 -25
  17. package/dist/functions/sets.js +4 -4
  18. package/dist/functions/userPaths.d.ts +90 -0
  19. package/dist/functions/userPaths.js +55 -0
  20. package/dist/types/analytics.d.ts +3 -1
  21. package/dist/types/bibleChapters.d.ts +8 -0
  22. package/dist/types/bibleChapters.js +2 -1
  23. package/dist/types/bookmarks.d.ts +23 -0
  24. package/dist/types/bookmarks.js +19 -0
  25. package/dist/types/completions.d.ts +32 -1
  26. package/dist/types/completions.js +22 -0
  27. package/dist/types/logs.d.ts +83 -0
  28. package/dist/types/logs.js +52 -0
  29. package/dist/types/meetFavorites.d.ts +10 -0
  30. package/dist/types/meetFavorites.js +11 -0
  31. package/dist/types/notes.d.ts +10 -0
  32. package/dist/types/notes.js +13 -0
  33. package/dist/types/users.d.ts +189 -309
  34. package/dist/types/users.js +152 -135
  35. package/package.json +9 -9
@@ -1,149 +1,166 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PushEnabledWahaUser = exports.WahaUser = exports.ArticleSession = exports.BibleSession = exports.ShareLogEvent = exports.WahaShareContent = exports.CompletionEvent = exports.WahaAppVersion = exports.WahaUserState = exports.DesireId = void 0;
4
- const zod_1 = require("zod");
6
+ exports.LegacyWahaUserFields = exports.LegacyWahaUser = exports.WahaUserFields = exports.WahaUser = exports.DeviceInfoFields = exports.DeviceInfo = exports.DevicePlatform = exports.WahaAppVersion = exports.UserReduxState = exports.DeviceUserReduxState = exports.SharedUserReduxState = exports.NotificationPermission = void 0;
7
+ const zod_1 = __importDefault(require("zod"));
5
8
  const languages_zod_1 = require("../data/languages/languages.zod");
9
+ const completions_1 = require("./completions");
6
10
  const location_1 = require("./location");
11
+ const logs_1 = require("./logs");
7
12
  const microLessons_1 = require("./microLessons");
8
- const stoplight_1 = require("./stoplight");
9
- exports.DesireId = zod_1.z.enum([
10
- 'talk_to_others_about_jesus',
11
- 'build_a_team_of_disciple_makers',
12
- 'reach_my_entire_people_or_nation_for_god',
13
- 'understand_wahas_impact',
14
- 'understand_how_waha_works',
15
- 'get_coaching',
16
- 'see_god_transform_my_community',
17
- 'discover_whats_in_the_bible',
18
- 'find_hope_in_my_troubles',
19
- 'get_right_with_god',
20
- 'learn_more_about_jesus',
13
+ exports.NotificationPermission = zod_1.default.enum([
14
+ 'granted',
15
+ 'undetermined',
16
+ 'denied',
21
17
  ]);
22
- exports.WahaUserState = zod_1.z.object({
23
- wahaUserId: zod_1.z.string().optional(),
24
- name: zod_1.z.string().optional(),
25
- email: zod_1.z.email().optional(),
26
- location: location_1.WahaUserLocation.optional(),
27
- pastLocations: zod_1.z.array(location_1.WahaUserLocation).optional(),
28
- phoneLocation: zod_1.z.string().optional(),
29
- isSubscribedToEmailUpdates: zod_1.z.boolean().optional(),
30
- pushToken: zod_1.z.string().optional(),
31
- notificationPermission: zod_1.z.enum(['granted', 'undetermined', 'denied']),
32
- utm: zod_1.z.record(zod_1.z.string(), zod_1.z.string()).optional(),
33
- firstOpen: zod_1.z.number().optional(),
34
- finishedOnboarding: zod_1.z.number().optional(),
35
- howFamiliarWithBible: zod_1.z.number().optional(),
36
- followingFor2Years: zod_1.z.number().optional(),
37
- notificationsClicked: zod_1.z.number().optional(),
38
- notificationLinksClicked: zod_1.z.number().optional(),
39
- isBeliever: zod_1.z.boolean().optional(),
40
- isInAGroup: zod_1.z.boolean().optional(),
41
- desires: zod_1.z.array(exports.DesireId).optional(),
42
- customDesire: zod_1.z.string().optional(),
43
- isCCWorker: zod_1.z.boolean().optional(),
44
- isAdvocate: zod_1.z.boolean().optional(),
45
- phoneNumber: zod_1.z.string().optional(),
46
- engagementScore: zod_1.z.number().optional(),
47
- hasDonated: zod_1.z.boolean().optional(),
48
- lastDonationAsk: zod_1.z.number().optional(),
49
- numberOfDonationAsks: zod_1.z.number().optional(),
50
- lastSeenBannerAskNumber: zod_1.z.number().optional(),
51
- onboardingStatus: zod_1.z
52
- .enum([
53
- 'skipped-from-first',
54
- 'skipped-from-second',
55
- 'finished-from-first',
56
- 'finished-from-second',
57
- 'finished-from-languages',
58
- ])
59
- .optional(),
60
- });
61
- exports.WahaAppVersion = zod_1.z.string().regex(/^\d+\.\d+\.\d+$/);
62
- exports.CompletionEvent = zod_1.z.object({
63
- lessonId: zod_1.z.string(),
64
- meetLanguageId: languages_zod_1.LanguageId,
65
- time: zod_1.z.number(),
66
- country: zod_1.z.string().optional(),
67
- region: zod_1.z.string().optional(),
68
- city: zod_1.z.string().optional(),
69
- /**
70
- * Indicates that the lesson was completed manually from the lesson sheet
71
- * rather than automatically by doing the lesson on the lesson screen.
72
- */
73
- manual: zod_1.z.boolean().optional(),
74
- howManyObeyed: stoplight_1.StoplightOption.optional(),
75
- howManyShared: stoplight_1.StoplightOption.optional(),
18
+ /** User data that is shared across devices. */
19
+ exports.SharedUserReduxState = zod_1.default
20
+ .object({
21
+ email: zod_1.default.email(),
22
+ location: location_1.WahaUserLocation,
23
+ phoneNumber: zod_1.default.string(),
24
+ isInAGroup: zod_1.default.boolean(),
25
+ isSubscribedToEmailUpdates: zod_1.default.boolean(),
26
+ hasDonated: zod_1.default.boolean(),
27
+ })
28
+ .partial();
29
+ /**
30
+ * User data that is device-specific.
31
+ */
32
+ exports.DeviceUserReduxState = zod_1.default
33
+ .object({
34
+ pastLocations: zod_1.default.array(location_1.WahaUserLocation),
35
+ utm: zod_1.default.record(zod_1.default.string(), zod_1.default.string()),
36
+ engagementScore: zod_1.default.number(),
37
+ finishedOnboarding: zod_1.default.number(),
38
+ firstOpen: zod_1.default.number(),
39
+ })
40
+ .partial();
41
+ exports.UserReduxState = zod_1.default.object({
42
+ ...exports.SharedUserReduxState.shape,
43
+ ...exports.DeviceUserReduxState.shape,
76
44
  });
77
- exports.WahaShareContent = zod_1.z.enum([
78
- 'app',
79
- 'passcode',
80
- 'lessonAudio',
81
- 'lessonText',
82
- 'storyText',
83
- 'storyAudio',
84
- 'lessonLink',
85
- 'setLink',
86
- 'meetingInvite',
87
- 'meetingInviteOnboarding',
88
- 'articleLink',
89
- 'videoLink',
90
- 'notification',
91
- 'meetingSchedule',
92
- 'scriptureText',
93
- 'mt',
94
- 'scriptureAudio',
95
- 'inviteGroup',
96
- 'lesson',
97
- 'offlineVersionLink',
98
- 'note',
99
- 'customSet',
100
- 'microLesson',
45
+ exports.WahaAppVersion = zod_1.default.string().regex(/^\d+\.\d+\.\d+$/);
46
+ exports.DevicePlatform = zod_1.default.enum([
47
+ 'ios',
48
+ 'android',
49
+ 'macos',
50
+ 'windows',
51
+ 'web',
101
52
  ]);
102
- exports.ShareLogEvent = zod_1.z.object({
103
- time: zod_1.z.number(),
104
- content: exports.WahaShareContent,
105
- lessonId: zod_1.z.string().optional(),
106
- articleSlug: zod_1.z.string().optional(),
107
- microLessonSlug: zod_1.z.string().optional(),
108
- });
109
- exports.BibleSession = zod_1.z.object({
110
- chapter: zod_1.z.string(),
111
- timeSpent: zod_1.z.number(),
112
- startTime: zod_1.z.number(),
113
- translation: zod_1.z.string(),
53
+ /**
54
+ * Everything known about a single device/install. One doc per device in the
55
+ * `users2/{uid}/devices/{deviceId}` subcollection.
56
+ */
57
+ exports.DeviceInfo = exports.DeviceUserReduxState.extend({
58
+ phoneLocation: zod_1.default.string().optional(),
59
+ pushToken: zod_1.default.string().optional(),
60
+ notificationPermission: exports.NotificationPermission.optional(),
61
+ platform: exports.DevicePlatform,
62
+ osVersion: zod_1.default.union([zod_1.default.string(), zod_1.default.number()]),
63
+ appVersion: exports.WahaAppVersion,
64
+ securityModeOn: zod_1.default.boolean(),
65
+ lastUpdate: zod_1.default.number(),
114
66
  });
115
- exports.ArticleSession = zod_1.z.object({
116
- articleSlug: zod_1.z.string(),
117
- timeSpent: zod_1.z.number(),
118
- startTime: zod_1.z.number(),
67
+ exports.DeviceInfoFields = exports.DeviceInfo.keyof().enum;
68
+ /**
69
+ * User object in Firestore. Subcollections (devices, completions, etc.) are
70
+ * not included in this schema. One doc per user in the `users2/{uid}`
71
+ * collection.
72
+ */
73
+ exports.WahaUser = exports.SharedUserReduxState.extend({
74
+ /** Unique uid from Firebase auth state. */
75
+ wahaUserId: zod_1.default.string(),
76
+ /**
77
+ * The user's name. Sourced from Firebase auth `displayName`.
78
+ */
79
+ name: zod_1.default.string().optional(),
80
+ /** True once the user has a real (non-anonymous) credential attached. */
81
+ hasAccount: zod_1.default.boolean(),
82
+ /**
83
+ * User's most recently used meet language. Not synced between devices, only
84
+ * useful for CRM purposes. From meetLanguage redux reducer.
85
+ */
86
+ meet: languages_zod_1.LanguageId,
87
+ /** From `__DEV__`. */
88
+ isDev: zod_1.default.boolean(),
89
+ /**
90
+ * Whether user has done a lesson within the first 2 weeks of downloading the
91
+ * app. Derived from first open and completions. See useUpdateUserData.ts.
92
+ */
93
+ activated: zod_1.default.boolean().optional(),
94
+ /**
95
+ * See useUserScores.ts. Derived from completions.
96
+ */
97
+ obedienceScore: zod_1.default.number().optional(),
98
+ /**
99
+ * See useUserScores.ts. Derived from completions.
100
+ */
101
+ sharingScore: zod_1.default.number().optional(),
102
+ /**
103
+ * Whether the user is a potential Waha advocate. Phone location = US and IP
104
+ * location = US. Derived from location data.
105
+ */
106
+ isAdvocate: zod_1.default.boolean().optional(),
107
+ /**
108
+ * Whether the user is a potential cross-cultural worker. Phone location = US
109
+ * and IP location != US. Derived from location data.
110
+ */
111
+ isCCWorker: zod_1.default.boolean().optional(),
112
+ /** The last time the user's data was updated. Auto-set. */
113
+ lastUpdate: zod_1.default.number(),
119
114
  });
120
- exports.WahaUser = exports.WahaUserState.extend({
121
- pushToken: zod_1.z.string().optional(),
122
- securityModeOn: zod_1.z.boolean().optional(),
115
+ exports.WahaUserFields = exports.WahaUser.keyof().enum;
116
+ /**
117
+ * The legacy user object before version 9.
118
+ */
119
+ exports.LegacyWahaUser = zod_1.default.object({
120
+ wahaUserId: zod_1.default.string(),
121
+ name: zod_1.default.string().optional(),
122
+ email: zod_1.default.email().optional(),
123
+ location: location_1.WahaUserLocation.optional(),
124
+ pastLocations: zod_1.default.array(location_1.WahaUserLocation).optional(),
125
+ phoneLocation: zod_1.default.string().optional(),
126
+ isSubscribedToEmailUpdates: zod_1.default.boolean().optional(),
127
+ pushToken: zod_1.default.string().optional(),
128
+ notificationPermission: exports.NotificationPermission.optional(),
129
+ utm: zod_1.default.record(zod_1.default.string(), zod_1.default.string()).optional(),
130
+ firstOpen: zod_1.default.number().optional(),
131
+ finishedOnboarding: zod_1.default.number().optional(),
132
+ howFamiliarWithBible: zod_1.default.number().optional(),
133
+ followingFor2Years: zod_1.default.number().optional(),
134
+ notificationsClicked: zod_1.default.number().optional(),
135
+ notificationLinksClicked: zod_1.default.number().optional(),
136
+ isBeliever: zod_1.default.boolean().optional(),
137
+ isInAGroup: zod_1.default.boolean().optional(),
138
+ customDesire: zod_1.default.string().optional(),
139
+ isCCWorker: zod_1.default.boolean().optional(),
140
+ isAdvocate: zod_1.default.boolean().optional(),
141
+ phoneNumber: zod_1.default.string().optional(),
142
+ engagementScore: zod_1.default.number().optional(),
143
+ hasDonated: zod_1.default.boolean().optional(),
144
+ lastDonationAsk: zod_1.default.number().optional(),
145
+ numberOfDonationAsks: zod_1.default.number().optional(),
146
+ lastSeenBannerAskNumber: zod_1.default.number().optional(),
147
+ securityModeOn: zod_1.default.boolean().optional(),
123
148
  appVersion: exports.WahaAppVersion,
124
- lastUpdate: zod_1.z.number(),
125
- platform: zod_1.z.string(),
126
- completions: zod_1.z.array(exports.CompletionEvent),
127
- trainingUnlocked: zod_1.z.boolean().optional(),
149
+ lastUpdate: zod_1.default.number(),
150
+ platform: exports.DevicePlatform,
151
+ completions: zod_1.default.array(completions_1.CompletionEvent),
152
+ trainingUnlocked: zod_1.default.boolean().optional(),
128
153
  meet: languages_zod_1.LanguageId,
129
154
  appInterface: languages_zod_1.LanguageId,
130
- meetFavorites: zod_1.z.array(languages_zod_1.LanguageId),
131
- osVersion: zod_1.z.string().nullable(),
132
- isDev: zod_1.z.boolean(),
133
- shareLog: zod_1.z.array(exports.ShareLogEvent).optional(),
134
- bibleSessions: zod_1.z.array(exports.BibleSession).optional(),
135
- articleSessions: zod_1.z.array(exports.ArticleSession).optional(),
136
- activated: zod_1.z.boolean().optional(),
137
- microLessonCompletions: zod_1.z.array(microLessons_1.MicroLessonSubmission).optional(),
138
- obedienceScore: zod_1.z.number().optional(),
139
- sharingScore: zod_1.z.number().optional(),
140
- });
141
- exports.PushEnabledWahaUser = exports.WahaUser.omit({
142
- wahaUserId: true,
143
- pushToken: true,
144
- notificationPermission: true,
145
- }).extend({
146
- wahaUserId: zod_1.z.string(),
147
- pushToken: zod_1.z.string(),
148
- notificationPermission: zod_1.z.literal('granted'),
155
+ meetFavorites: zod_1.default.array(languages_zod_1.LanguageId),
156
+ osVersion: zod_1.default.union([zod_1.default.string(), zod_1.default.number()]).nullable(),
157
+ isDev: zod_1.default.boolean(),
158
+ shareLog: zod_1.default.array(logs_1.ShareLogEvent).optional(),
159
+ bibleSessions: zod_1.default.array(logs_1.BibleSession).optional(),
160
+ articleSessions: zod_1.default.array(logs_1.ArticleSession).optional(),
161
+ activated: zod_1.default.boolean().optional(),
162
+ microLessonCompletions: zod_1.default.array(microLessons_1.MicroLessonSubmission).optional(),
163
+ obedienceScore: zod_1.default.number().optional(),
164
+ sharingScore: zod_1.default.number().optional(),
149
165
  });
166
+ exports.LegacyWahaUserFields = exports.LegacyWahaUser.keyof().enum;
package/package.json CHANGED
@@ -1,23 +1,23 @@
1
1
  {
2
2
  "name": "waha-shared",
3
- "version": "1.0.456",
3
+ "version": "1.0.458",
4
4
  "author": "Waha",
5
5
  "dependencies": {
6
+ "@types/react": "^19.2.18",
6
7
  "@types/signale": "^1.4.7",
7
- "signale": "^1.4.0"
8
+ "react": "^19.2.8",
9
+ "signale": "^1.4.0",
10
+ "zod": "^4.5.4"
8
11
  },
9
12
  "peerDependencies": {
10
- "@types/react": "^18.2.0",
11
- "react": "^18.2.0",
12
- "zod": ">=4.0.0"
13
+ "@types/react": ">=18.2.0",
14
+ "react": ">=18.2.0",
15
+ "zod": ">=4.3.6"
13
16
  },
14
17
  "description": "Shared assets for Waha's various apps",
15
18
  "devDependencies": {
16
- "@types/react": "^18.2.0",
17
19
  "copyfiles": "^2.4.1",
18
- "react": "^18.2.0",
19
- "typescript": "~5.9.2",
20
- "zod": "^4.3.6"
20
+ "typescript": "~5.9.2"
21
21
  },
22
22
  "files": [
23
23
  "dist",