waha-shared 1.0.428 → 1.0.429
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.
- package/dist/data/bibleAudios/bibleAudios.json +12 -0
- package/dist/data/bibleTexts/bibleTexts.json +11 -0
- package/dist/data/dblAudioLicenses/dblAudioLicenses.json +29 -0
- package/dist/data/dblTextLicenses/dblTextLicenses.json +30 -0
- package/dist/data/languages/languages.json +1 -0
- package/dist/data/translationsApp/index.d.ts +2 -0
- package/dist/data/translationsApp/translationsApp.json +122 -40
- package/dist/data/translationsApp/translationsApp.schema.json +3 -1
- package/dist/data/translationsApp/translationsApp.zod.d.ts +4 -0
- package/dist/data/translationsApp/translationsApp.zod.js +2 -0
- package/dist/data/translationsFtb/translationsFtb.json +11 -11
- package/dist/data/translationsQuestion/translationsQuestion.json +12 -12
- package/dist/data/translationsSpokenQuestion/translationsSpokenQuestion.json +18 -18
- package/dist/functions/magicLink.d.ts +31 -0
- package/dist/functions/magicLink.js +51 -0
- package/dist/types/socialProof.d.ts +30 -0
- package/dist/types/socialProof.js +23 -0
- package/package.json +4 -4
|
@@ -530,7 +530,9 @@
|
|
|
530
530
|
"choose_read_along_bible": { "type": "string" },
|
|
531
531
|
"exit": { "type": "string" },
|
|
532
532
|
"stay": { "type": "string" },
|
|
533
|
-
"popups_exit_micro_lesson": { "type": "string" }
|
|
533
|
+
"popups_exit_micro_lesson": { "type": "string" },
|
|
534
|
+
"finish_signing_in": { "type": "string" },
|
|
535
|
+
"open_in_waha": { "type": "string" }
|
|
534
536
|
},
|
|
535
537
|
"required": [
|
|
536
538
|
"name",
|
|
@@ -341,6 +341,8 @@ export declare const LanguageTranslationsApp: z.ZodObject<{
|
|
|
341
341
|
exit: z.ZodString;
|
|
342
342
|
stay: z.ZodString;
|
|
343
343
|
popups_exit_micro_lesson: z.ZodString;
|
|
344
|
+
finish_signing_in: z.ZodOptional<z.ZodString>;
|
|
345
|
+
open_in_waha: z.ZodOptional<z.ZodString>;
|
|
344
346
|
}, z.core.$strip>;
|
|
345
347
|
export type LanguageTranslationsApp = z.infer<typeof LanguageTranslationsApp>;
|
|
346
348
|
export declare const TranslationsApp: z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
@@ -685,5 +687,7 @@ export declare const TranslationsApp: z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
|
685
687
|
exit: z.ZodString;
|
|
686
688
|
stay: z.ZodString;
|
|
687
689
|
popups_exit_micro_lesson: z.ZodString;
|
|
690
|
+
finish_signing_in: z.ZodOptional<z.ZodString>;
|
|
691
|
+
open_in_waha: z.ZodOptional<z.ZodString>;
|
|
688
692
|
}, z.core.$strip>>;
|
|
689
693
|
export type TranslationsApp = z.infer<typeof TranslationsApp>;
|
|
@@ -347,6 +347,8 @@ exports.LanguageTranslationsApp = zod_1.z.object({
|
|
|
347
347
|
exit: zod_1.z.string(),
|
|
348
348
|
stay: zod_1.z.string(),
|
|
349
349
|
popups_exit_micro_lesson: zod_1.z.string(),
|
|
350
|
+
finish_signing_in: zod_1.z.string().optional(),
|
|
351
|
+
open_in_waha: zod_1.z.string().optional(),
|
|
350
352
|
});
|
|
351
353
|
exports.TranslationsApp = zod_1.z
|
|
352
354
|
.record(zod_1.z.string(), exports.LanguageTranslationsApp.describe('Translations for a single language (identified by a 3-letter code)_'))
|
|
@@ -71,34 +71,34 @@
|
|
|
71
71
|
},
|
|
72
72
|
"ahv": {
|
|
73
73
|
"1CH": "من سفر أخبار الأيام الأول",
|
|
74
|
-
"1CO": "من الرسالة كورنثوس
|
|
74
|
+
"1CO": "من الرسالة الأولى إلى كورنثوس",
|
|
75
75
|
"1JN": "من رسالة يوحنا الأولى",
|
|
76
76
|
"1KI": "من سفر الملوك الأول",
|
|
77
77
|
"1PE": "من رسالة بطرس الأولى",
|
|
78
78
|
"1SA": "من سفر صموئيل الأول",
|
|
79
|
-
"1TH": "من الرسالة تسالونيكي
|
|
80
|
-
"1TI": "من الرسالة تيموثاوس
|
|
79
|
+
"1TH": "من الرسالة الأولى إلى تسالونيكي",
|
|
80
|
+
"1TI": "من الرسالة الأولى إلى تيموثاوس",
|
|
81
81
|
"2CH": "من سفر أخبار الأيام الثاني",
|
|
82
|
-
"2CO": "من الرسالة كورنثوس
|
|
82
|
+
"2CO": "من الرسالة الثانية إلى كورنثوس",
|
|
83
83
|
"2JN": "من رسالة يوحنا الثانية",
|
|
84
84
|
"2KI": "من سفر الملوك الثاني",
|
|
85
85
|
"2PE": "من رسالة بطرس الثانية",
|
|
86
86
|
"2SA": "من سفر صموئيل الثاني",
|
|
87
|
-
"2TH": "من الرسالة تسالونيكي
|
|
88
|
-
"2TI": "من الرسالة تيموثاوس
|
|
87
|
+
"2TH": "من الرسالة الثانية إلى تسالونيكي",
|
|
88
|
+
"2TI": "من الرسالة الثانية إلى تيموثاوس",
|
|
89
89
|
"3JN": "من رسالة يوحنا الثالثة",
|
|
90
90
|
"ACT": "من سفر أعمال الرسل",
|
|
91
91
|
"AMO": "من سفر عاموس",
|
|
92
|
-
"COL": "من الرسالة كولوسي",
|
|
92
|
+
"COL": "من الرسالة إلى كولوسي",
|
|
93
93
|
"DAN": "من سفر دانيال",
|
|
94
94
|
"DEU": "من سفر التثنية",
|
|
95
95
|
"ECC": "من سفر الجامعة",
|
|
96
|
-
"EPH": "من الرسالة أفسس",
|
|
96
|
+
"EPH": "من الرسالة إلى أفسس",
|
|
97
97
|
"EST": "من سفر أستير",
|
|
98
98
|
"EXO": "من سفر الخروج",
|
|
99
99
|
"EZK": "من سفر حزقيال",
|
|
100
100
|
"EZR": "من سفر عزرا",
|
|
101
|
-
"GAL": "من الرسالة غلاطية",
|
|
101
|
+
"GAL": "من الرسالة إلى غلاطية",
|
|
102
102
|
"GEN": "من سفر التكوين",
|
|
103
103
|
"HAB": "من سفر حبقوق",
|
|
104
104
|
"HAG": "من سفر حجي",
|
|
@@ -126,11 +126,11 @@
|
|
|
126
126
|
"NUM": "من سفر العدد",
|
|
127
127
|
"OBA": "من سفر عوبديا",
|
|
128
128
|
"PHM": "من الرسالة إلى فليمون",
|
|
129
|
-
"PHP": "من الرسالة فيلبي",
|
|
129
|
+
"PHP": "من الرسالة إلى فيلبي",
|
|
130
130
|
"PRO": "من سفر الأمثال",
|
|
131
131
|
"PSA": "من سفر المزامير",
|
|
132
132
|
"REV": "من رؤيا يوحنا",
|
|
133
|
-
"ROM": "من الرسالة إلى
|
|
133
|
+
"ROM": "من الرسالة إلى رومية",
|
|
134
134
|
"RUT": "من سفر راعوث",
|
|
135
135
|
"SNG": "من سفر نشيد الأنشاد",
|
|
136
136
|
"TIT": "من الرسالة إلى تيطس",
|
|
@@ -85,34 +85,34 @@
|
|
|
85
85
|
"f.008": "والحين، خلونا نقرأ مع بعض من كلام الله الموحى"
|
|
86
86
|
},
|
|
87
87
|
"ahv": {
|
|
88
|
-
"a.001": "
|
|
88
|
+
"a.001": "والآن، ليروِ أحدنا هذا المقطع بكلماته الخاصة، كما لو كان يرويه لصديق لم يسمعه من قبل. ولنساعده إذا أغفل شيئًا أو أضاف شيئًا بالخطأ. وإذا حدث ذلك، يمكننا أن نسأله: «أين تجد ذلك في القصة؟»",
|
|
89
89
|
"a.002": "ماذا تعلمنا من هذه القصة عن الله، وعن صفاته وأفعاله؟",
|
|
90
90
|
"a.003": "ماذا نتعلم من هذه القصة عن الناس، بما في ذلك أنفسنا؟",
|
|
91
91
|
"a.004": "كيف ستطبّق الحق الإلهي المستفاد من هذه القصة في حياتك هذا الأسبوع؟ ما العمل المحدد الذي ستقوم به؟",
|
|
92
92
|
"a.005": "مع من ستشارك إحدى الحقائق التي تعلمتها من هذه القصة قبل لقائنا القادم؟ وهل تعرف أشخاصًا آخرين يرغبون، مثلنا، في اكتشاف كلمة الله من خلال هذا التطبيق؟",
|
|
93
|
-
"a.006": "
|
|
93
|
+
"a.006": "مع اقتراب اجتماعنا من نهايته، لنحدد موعد لقائنا القادم ومن سييسّره.",
|
|
94
94
|
"a.007": "نشجعكم على تدوين ما قلتم إنكم ستفعلونه، وعلى قراءة هذه القصة مرة أخرى في الأيام التي تسبق لقاءنا القادم. يمكن للميسّر مشاركة نص القصة أو تسجيلها الصوتي مع من لا يملكها. وقبل أن ننصرف، لنسأل الرب أن يعيننا.",
|
|
95
|
-
"a.008": "ماذا
|
|
96
|
-
"a.009": "ماذا
|
|
97
|
-
"a.010": "ماذا
|
|
98
|
-
"a.011": "ماذا
|
|
99
|
-
"a.012": "كيف ستطبّق ما
|
|
95
|
+
"a.008": "ماذا نتعلم من هذه القصة عن كوننا حواريين؟",
|
|
96
|
+
"a.009": "ماذا نتعلّم من هذه القصة عن كوننا الكنيسة؟",
|
|
97
|
+
"a.010": "ماذا نتعلم من هذه القصة بصفتنا قادة؟",
|
|
98
|
+
"a.011": "ماذا نتعلم من هذه القصة عن صنع الحواريين؟",
|
|
99
|
+
"a.012": "كيف ستطبّق ما أظهره الله لك من هذه القصة في حياتك هذا الأسبوع؟ ما الخطوة المحددة التي ستتخذها؟",
|
|
100
100
|
"a.013": "والآن، لنشاهد فيديو التدريب لهذا اليوم...",
|
|
101
|
-
"a.014": "
|
|
102
|
-
"a.015": "مع من
|
|
101
|
+
"a.014": "لنتناقش فيما تعلمناه للتو، وكيف يمكننا تطبيقه في سعينا إلى صنع الحواريين.",
|
|
102
|
+
"a.015": "مع من ستشاركون شيئًا تعلمتموه من هذا اللقاء قبل اجتماعنا القادم؟",
|
|
103
103
|
"a.016": "والآن، لنتحدث عن التواصل مع الضالين. مع من أجرينا محادثات منذ لقائنا الأخير؟ وكيف يمكننا أن نصلّي من أجلهم؟",
|
|
104
104
|
"a.017": "كيف سنتواصل مع هؤلاء الأشخاص وغيرهم لإجراء حوارات جيدة معهم هذا الأسبوع؟",
|
|
105
105
|
"f.001": "بناءً على ما حدث معكم منذ لقائنا الأخير، ما الشيء الذي تشكرون الله عليه؟",
|
|
106
106
|
"f.002": "ما الذي سبّب لكم ضغطًا هذا الأسبوع؟ وما الذي تحتاجون إليه لكي تتحسن الأمور؟",
|
|
107
|
-
"f.003": "ما
|
|
107
|
+
"f.003": "ما احتياجات الناس في مجتمعكم؟ وكيف يمكننا أن نساعد بعضنا بعضًا على تلبية الاحتياجات التي ذكرناها؟",
|
|
108
108
|
"f.004": "ما هي القصة التي تعلمناها في لقائنا الأخير؟ وماذا تعلمنا عن الله والبشر؟",
|
|
109
109
|
"f.005": "في لقائنا السابق، قررتم تطبيق ما تعلمتموه. ماذا فعلتم؟ وكيف سارت الأمور؟",
|
|
110
110
|
"f.006": "مع من شاركتم شيئًا من القصة السابقة؟ وكيف كانت استجابتهم؟",
|
|
111
111
|
"f.007": "حددنا عدة احتياجات في لقائنا السابق وخططنا لتلبيتها. كيف سارت الأمور؟",
|
|
112
112
|
"f.008": "الآن، لنقرأ قصة اليوم من كلام الله...",
|
|
113
113
|
"f.009": "بناءً على ما حدث معكم منذ لقائنا الأخير، ما الشيء الذي تشكرون الله عليه؟",
|
|
114
|
-
"f.010": "ما
|
|
115
|
-
"f.011": "كيف عمل الله من خلال جهودكم لتوسيع دائرة الصلاة؟ وهل
|
|
114
|
+
"f.010": "ما احتياجات الضالين في مجتمعكم؟ وكيف يمكننا أن نساعد بعضنا بعضًا على تلبية الاحتياجات التي ذكرناها؟",
|
|
115
|
+
"f.011": "كيف عمل الله من خلال جهودكم لتوسيع دائرة الصلاة؟ وهل من قصص عن صلوات مستجابة يمكننا أن نسبّحه من أجلها؟",
|
|
116
116
|
"f.012": "ماذا تعلمنا في لقائنا الأخير عن صنع الحواريين؟",
|
|
117
117
|
"f.013": "الآن، لنقرأ حقًا جديدًا من الله..."
|
|
118
118
|
},
|
|
@@ -85,36 +85,36 @@
|
|
|
85
85
|
"f.008": "دلوقتي يالا بينا نسمع قصه جديده من الله..."
|
|
86
86
|
},
|
|
87
87
|
"ahv": {
|
|
88
|
-
"a.001": "
|
|
88
|
+
"a.001": "والآن، ليروِ أحدنا هذا المقطع بكلماته الخاصة، كما لو كان يرويه لصديق لم يسمعه من قبل. ولنساعده إذا أغفل شيئًا أو أضاف شيئًا بالخطأ. وإذا حدث ذلك، يمكننا أن نسأله: «أين تجد ذلك في القصة؟»",
|
|
89
89
|
"a.002": "ماذا تعلمنا من هذه القصة عن الله، وعن صفاته وأفعاله؟",
|
|
90
90
|
"a.003": "ماذا نتعلم من هذه القصة عن الناس، بما في ذلك أنفسنا؟",
|
|
91
|
-
"a.004": "كيف ستطبّق الحق الإلهي
|
|
91
|
+
"a.004": "كيف ستطبّق الحق الإلهي المستفاد من هذه القصة في حياتك هذا الأسبوع؟ ما العمل المحدد الذي ستقوم به؟",
|
|
92
92
|
"a.005": "مع من ستشارك إحدى الحقائق التي تعلمتها من هذه القصة قبل لقائنا القادم؟ وهل تعرف أشخاصًا آخرين يرغبون، مثلنا، في اكتشاف كلمة الله من خلال هذا التطبيق؟",
|
|
93
|
-
"a.006": "
|
|
94
|
-
"a.007": "قضينا
|
|
95
|
-
"a.008": "ماذا
|
|
96
|
-
"a.009": "ماذا
|
|
97
|
-
"a.010": "ماذا
|
|
98
|
-
"a.011": "ماذا
|
|
99
|
-
"a.012": "كيف ستطبّق ما
|
|
93
|
+
"a.006": "مع اقتراب اجتماعنا من نهايته، لنحدد موعد لقائنا القادم ومن سييسّره.",
|
|
94
|
+
"a.007": "لقد قضينا وقتًا طيبًا معًا. نشجعكم على تدوين ما قلتم إنكم ستفعلونه، وعلى الاستماع إلى هذه القصة مرة أخرى في الأيام التي تسبق لقاءنا القادم. يمكن للميسّر مشاركة نص القصة أو تسجيلها الصوتي مع من لا يملكها. وقبل أن ننصرف، لنسأل الرب أن يعيننا.",
|
|
95
|
+
"a.008": "ماذا نتعلم من هذه القصة عن كوننا حواريين؟",
|
|
96
|
+
"a.009": "ماذا نتعلّم من هذه القصة عن كوننا الكنيسة؟",
|
|
97
|
+
"a.010": "ماذا نتعلم من هذه القصة بصفتنا قادة؟",
|
|
98
|
+
"a.011": "ماذا نتعلم من هذه القصة عن صنع الحواريين؟",
|
|
99
|
+
"a.012": "كيف ستطبّق ما أظهره الله لك من هذه القصة في حياتك هذا الأسبوع؟ ما الخطوة المحددة التي ستتخذها؟",
|
|
100
100
|
"a.013": "والآن، لنشاهد فيديو التدريب لهذا اليوم...",
|
|
101
|
-
"a.014": "
|
|
102
|
-
"a.015": "مع من
|
|
101
|
+
"a.014": "لنتناقش فيما تعلمناه للتو، وكيف يمكننا تطبيقه في سعينا إلى صنع الحواريين.",
|
|
102
|
+
"a.015": "مع من ستشاركون شيئًا تعلمتموه من هذا اللقاء قبل اجتماعنا القادم؟",
|
|
103
103
|
"a.016": "والآن، لنتحدث عن التواصل مع الضالين. مع من أجرينا محادثات منذ لقائنا الأخير؟ وكيف يمكننا أن نصلّي من أجلهم؟",
|
|
104
104
|
"a.017": "كيف سنتواصل مع هؤلاء الأشخاص وغيرهم لإجراء حوارات جيدة معهم هذا الأسبوع؟",
|
|
105
|
-
"f.001": "مرحبًا بكم في جلسة جديدة من «اكتشاف الله». لنبدأ بالاطمئنان
|
|
105
|
+
"f.001": "مرحبًا بكم في جلسة جديدة من «اكتشاف الله». لنبدأ بالاطمئنان إلى أحوالنا. بناءً على ما حدث معكم منذ لقائنا الأخير، ما الشيء الذي تشكرون الله عليه؟",
|
|
106
106
|
"f.002": "ما الذي سبّب لكم ضغطًا هذا الأسبوع؟ وما الذي تحتاجون إليه لكي تتحسن الأمور؟",
|
|
107
|
-
"f.003": "ما
|
|
107
|
+
"f.003": "ما احتياجات الناس في مجتمعكم؟ وكيف يمكننا أن نساعد بعضنا بعضًا على تلبية الاحتياجات التي ذكرناها؟",
|
|
108
108
|
"f.004": "ما هي القصة التي تعلمناها في لقائنا الأخير؟ وماذا تعلمنا عن الله والبشر؟",
|
|
109
109
|
"f.005": "في لقائنا السابق، قررتم تطبيق ما تعلمتموه. ماذا فعلتم؟ وكيف سارت الأمور؟",
|
|
110
110
|
"f.006": "مع من شاركتم شيئًا من القصة السابقة؟ وكيف كانت استجابتهم؟",
|
|
111
111
|
"f.007": "حددنا عدة احتياجات في لقائنا السابق وخططنا لتلبيتها. كيف سارت الأمور؟",
|
|
112
|
-
"f.008": "الآن، فلنستمع إلى قصة جديدة من
|
|
113
|
-
"f.009": "مرحبًا بكم في جلسة جديدة
|
|
114
|
-
"f.010": "ما
|
|
115
|
-
"f.011": "كيف عمل الله من خلال جهودكم لتوسيع دائرة الصلاة؟ وهل
|
|
112
|
+
"f.008": "الآن، فلنستمع إلى قصة جديدة من كلام الله...",
|
|
113
|
+
"f.009": "مرحبًا بكم في جلسة جديدة لجماعتنا لصنع الحواريين. لنبدأ بالاطمئنان على أحوال بعضنا بعضًا. بناءً على ما حدث معكم منذ لقائنا الأخير، ما الشيء الذي تشكرون الله عليه؟",
|
|
114
|
+
"f.010": "ما احتياجات الضالين في مجتمعكم؟ وكيف يمكننا أن نساعد بعضنا بعضًا على تلبية الاحتياجات التي ذكرناها؟",
|
|
115
|
+
"f.011": "كيف عمل الله من خلال جهودكم لتوسيع دائرة الصلاة؟ وهل من قصص عن صلوات مستجابة يمكننا أن نسبّحه من أجلها؟",
|
|
116
116
|
"f.012": "ماذا تعلمنا في لقائنا الأخير عن صنع الحواريين؟",
|
|
117
|
-
"f.013": "الآن، لنستمع إلى حق جديد من
|
|
117
|
+
"f.013": "الآن، لنستمع إلى حق جديد من الله..."
|
|
118
118
|
},
|
|
119
119
|
"ais": {
|
|
120
120
|
"a.001": "هلأ، تعوا نطلب من يعيدلنا الحكاية ويخبرنا ياها بطريقته. كأنه عم يئولا لحدا مو سامعها بحياته. اذا حكا زيادة او نسي منها شي بنساعده.",
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared Firebase passwordless ("magic link") helpers used by both the app
|
|
3
|
+
* (`waha-app`) and the web fallback page (`waha-web`). Sharing keeps the
|
|
4
|
+
* sign-in-link detection and the deep-link token encoding from drifting between
|
|
5
|
+
* the two, which would silently break the hand-off between them.
|
|
6
|
+
*
|
|
7
|
+
* Relies on `btoa`/`atob`, which every target runtime provides (Hermes, Node
|
|
8
|
+
* ≥16, browsers) and the DOM lib types.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Whether a URL is a Firebase passwordless sign-in link — i.e. carries the
|
|
12
|
+
* `mode=signIn` + `oobCode` action params at the top level. Used by the app's
|
|
13
|
+
* `+native-intent` (to route a reopened link to `auth-callback`) and by the web
|
|
14
|
+
* fallback page (to decide whether to show its "finish signing in" UI).
|
|
15
|
+
*/
|
|
16
|
+
export declare function isMagicSignInLink(url: URL): boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Base64url-encodes a Firebase sign-in URL for transport in a deep-link query
|
|
19
|
+
* param.
|
|
20
|
+
*
|
|
21
|
+
* The sign-in URL contains its own `?`, `&` and `=`. Nesting it in a query
|
|
22
|
+
* param and percent-encoding isn't enough: deep links get URL-decoded an
|
|
23
|
+
* unpredictable number of times before the app's router reads them
|
|
24
|
+
* (expo-router's query parser ultimately splits on a literal `&`), so an inner
|
|
25
|
+
* `&` re-emerges and the value is truncated at it. base64url carries none of
|
|
26
|
+
* those characters, so it survives intact through any number of decode passes.
|
|
27
|
+
* Sign-in URLs are ASCII, so `btoa`/`atob` round-trip them exactly.
|
|
28
|
+
*/
|
|
29
|
+
export declare function encodeMagicLinkToken(url: string): string;
|
|
30
|
+
/** Reverses {@link encodeMagicLinkToken}; null on a malformed token. */
|
|
31
|
+
export declare function decodeMagicLinkToken(token: string): string | null;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Shared Firebase passwordless ("magic link") helpers used by both the app
|
|
4
|
+
* (`waha-app`) and the web fallback page (`waha-web`). Sharing keeps the
|
|
5
|
+
* sign-in-link detection and the deep-link token encoding from drifting between
|
|
6
|
+
* the two, which would silently break the hand-off between them.
|
|
7
|
+
*
|
|
8
|
+
* Relies on `btoa`/`atob`, which every target runtime provides (Hermes, Node
|
|
9
|
+
* ≥16, browsers) and the DOM lib types.
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.isMagicSignInLink = isMagicSignInLink;
|
|
13
|
+
exports.encodeMagicLinkToken = encodeMagicLinkToken;
|
|
14
|
+
exports.decodeMagicLinkToken = decodeMagicLinkToken;
|
|
15
|
+
/**
|
|
16
|
+
* Whether a URL is a Firebase passwordless sign-in link — i.e. carries the
|
|
17
|
+
* `mode=signIn` + `oobCode` action params at the top level. Used by the app's
|
|
18
|
+
* `+native-intent` (to route a reopened link to `auth-callback`) and by the web
|
|
19
|
+
* fallback page (to decide whether to show its "finish signing in" UI).
|
|
20
|
+
*/
|
|
21
|
+
function isMagicSignInLink(url) {
|
|
22
|
+
return (url.searchParams.get('mode') === 'signIn' &&
|
|
23
|
+
!!url.searchParams.get('oobCode'));
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Base64url-encodes a Firebase sign-in URL for transport in a deep-link query
|
|
27
|
+
* param.
|
|
28
|
+
*
|
|
29
|
+
* The sign-in URL contains its own `?`, `&` and `=`. Nesting it in a query
|
|
30
|
+
* param and percent-encoding isn't enough: deep links get URL-decoded an
|
|
31
|
+
* unpredictable number of times before the app's router reads them
|
|
32
|
+
* (expo-router's query parser ultimately splits on a literal `&`), so an inner
|
|
33
|
+
* `&` re-emerges and the value is truncated at it. base64url carries none of
|
|
34
|
+
* those characters, so it survives intact through any number of decode passes.
|
|
35
|
+
* Sign-in URLs are ASCII, so `btoa`/`atob` round-trip them exactly.
|
|
36
|
+
*/
|
|
37
|
+
function encodeMagicLinkToken(url) {
|
|
38
|
+
return btoa(url).replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '');
|
|
39
|
+
}
|
|
40
|
+
/** Reverses {@link encodeMagicLinkToken}; null on a malformed token. */
|
|
41
|
+
function decodeMagicLinkToken(token) {
|
|
42
|
+
try {
|
|
43
|
+
const b64 = token.replace(/-/g, '+').replace(/_/g, '/');
|
|
44
|
+
const padded = b64 + '='.repeat((4 - (b64.length % 4)) % 4);
|
|
45
|
+
return atob(padded);
|
|
46
|
+
}
|
|
47
|
+
catch (e) {
|
|
48
|
+
console.error('[auth] failed to decode magic link token:', e);
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import z from 'zod';
|
|
2
|
+
export declare const SocialProofBase: z.ZodObject<{
|
|
3
|
+
lastUpdated: z.ZodNumber;
|
|
4
|
+
weekStartDate: z.ZodNumber;
|
|
5
|
+
}, z.core.$strip>;
|
|
6
|
+
export type SocialProofBase = z.infer<typeof SocialProofBase>;
|
|
7
|
+
export declare const ShareSocialProof: z.ZodObject<{
|
|
8
|
+
lastUpdated: z.ZodNumber;
|
|
9
|
+
weekStartDate: z.ZodNumber;
|
|
10
|
+
totalWeeklyShares: z.ZodNumber;
|
|
11
|
+
}, z.core.$strip>;
|
|
12
|
+
export type ShareSocialProof = z.infer<typeof ShareSocialProof>;
|
|
13
|
+
export declare const MeetingsSocialProof: z.ZodObject<{
|
|
14
|
+
lastUpdated: z.ZodNumber;
|
|
15
|
+
weekStartDate: z.ZodNumber;
|
|
16
|
+
totalWeeklyMeetings: z.ZodNumber;
|
|
17
|
+
}, z.core.$strip>;
|
|
18
|
+
export type MeetingsSocialProof = z.infer<typeof MeetingsSocialProof>;
|
|
19
|
+
export declare const BibleSessionsSocialProof: z.ZodObject<{
|
|
20
|
+
lastUpdated: z.ZodNumber;
|
|
21
|
+
weekStartDate: z.ZodNumber;
|
|
22
|
+
totalWeeklyBibleSessions: z.ZodNumber;
|
|
23
|
+
}, z.core.$strip>;
|
|
24
|
+
export type BibleSessionsSocialProof = z.infer<typeof BibleSessionsSocialProof>;
|
|
25
|
+
export declare const ArticleSessionsSocialProof: z.ZodObject<{
|
|
26
|
+
lastUpdated: z.ZodNumber;
|
|
27
|
+
weekStartDate: z.ZodNumber;
|
|
28
|
+
totalWeeklyArticleSessions: z.ZodNumber;
|
|
29
|
+
}, z.core.$strip>;
|
|
30
|
+
export type ArticleSessionsSocialProof = z.infer<typeof ArticleSessionsSocialProof>;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.ArticleSessionsSocialProof = exports.BibleSessionsSocialProof = exports.MeetingsSocialProof = exports.ShareSocialProof = exports.SocialProofBase = void 0;
|
|
7
|
+
const zod_1 = __importDefault(require("zod"));
|
|
8
|
+
exports.SocialProofBase = zod_1.default.object({
|
|
9
|
+
lastUpdated: zod_1.default.number(),
|
|
10
|
+
weekStartDate: zod_1.default.number(),
|
|
11
|
+
});
|
|
12
|
+
exports.ShareSocialProof = exports.SocialProofBase.extend({
|
|
13
|
+
totalWeeklyShares: zod_1.default.number(),
|
|
14
|
+
});
|
|
15
|
+
exports.MeetingsSocialProof = exports.SocialProofBase.extend({
|
|
16
|
+
totalWeeklyMeetings: zod_1.default.number(),
|
|
17
|
+
});
|
|
18
|
+
exports.BibleSessionsSocialProof = exports.SocialProofBase.extend({
|
|
19
|
+
totalWeeklyBibleSessions: zod_1.default.number(),
|
|
20
|
+
});
|
|
21
|
+
exports.ArticleSessionsSocialProof = exports.SocialProofBase.extend({
|
|
22
|
+
totalWeeklyArticleSessions: zod_1.default.number(),
|
|
23
|
+
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "waha-shared",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.429",
|
|
4
4
|
"author": "Waha",
|
|
5
5
|
"dependencies": {
|
|
6
6
|
"@types/signale": "^1.4.7",
|
|
@@ -26,8 +26,8 @@
|
|
|
26
26
|
],
|
|
27
27
|
"license": "MIT",
|
|
28
28
|
"scripts": {
|
|
29
|
-
"build": "npx tsc && copyfiles \"data/**/*.json\" dist",
|
|
30
|
-
"update": "yarn build && REGISTRY_VERSION=$(npm view waha-shared version) && npm version $REGISTRY_VERSION --no-git-tag-version --allow-same-version && npm version patch --no-git-tag-version && git add . && (git commit -m 'chore:
|
|
31
|
-
"updateManual": "(npm whoami || npm login) && yarn build && REGISTRY_VERSION=$(npm view waha-shared version) && npm version $REGISTRY_VERSION --no-git-tag-version --allow-same-version && npm version patch --no-git-tag-version && git add dist package.json && (git commit -m 'chore:
|
|
29
|
+
"build": "npx tsc && npx copyfiles \"data/**/*.json\" dist",
|
|
30
|
+
"update": "yarn build && REGISTRY_VERSION=$(npm view waha-shared version) && npm version $REGISTRY_VERSION --no-git-tag-version --allow-same-version && npm version patch --no-git-tag-version && git add . && (git commit -m 'chore: build waha-shared' || true) && bash -c 'npm publish --access public --registry https://registry.npmjs.org --//registry.npmjs.org/:_authToken=$(grep NPM_TOKEN= ../.env | cut -d \"=\" -f2-)'",
|
|
31
|
+
"updateManual": "(npm whoami || npm login) && yarn build && REGISTRY_VERSION=$(npm view waha-shared version) && npm version $REGISTRY_VERSION --no-git-tag-version --allow-same-version && npm version patch --no-git-tag-version && git add dist package.json && (git commit -m 'chore: build waha-shared' || true) && npm publish"
|
|
32
32
|
}
|
|
33
33
|
}
|