waha-shared 1.0.533 → 1.0.534

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.
@@ -31,7 +31,7 @@
31
31
  "maximum": 9007199254740991
32
32
  },
33
33
  "dmc": {
34
- "description": "Asset version for Training lessons, including compressed training videos, music-ified narration audio, and production-ready disciple making course video lessons.",
34
+ "description": "Asset version for the disciple making course full lesson videos and their lesson and story audio. Training videos (compressed videos and narration audio in `course/`) are not versioned, so it does not cover lessons that play the training video directly.",
35
35
  "type": "integer",
36
36
  "minimum": -9007199254740991,
37
37
  "maximum": 9007199254740991
@@ -41,7 +41,7 @@ exports.AssetVersions = zod_1.z
41
41
  dmc: zod_1.z
42
42
  .int()
43
43
  .optional()
44
- .describe('Asset version for Training lessons, including compressed training videos, music-ified narration audio, and production-ready disciple making course video lessons.'),
44
+ .describe('Asset version for the disciple making course full lesson videos and their lesson and story audio. Training videos (compressed videos and narration audio in `course/`) are not versioned, so it does not cover lessons that play the training video directly.'),
45
45
  cast: zod_1.z
46
46
  .int()
47
47
  .optional()
@@ -16382,8 +16382,8 @@
16382
16382
  "cmn.02.035.032.mp3": 434.620227,
16383
16383
  "cmn.02.035.032.story.mp3": 0,
16384
16384
  "cmn.03.009.001.mp4": 267.5,
16385
- "cmn.03.009.002.mp4": 2530.6,
16386
- "cmn.03.009.003.mp4": 1503.666984,
16385
+ "cmn.03.009.002.mp4": 2551.566667,
16386
+ "cmn.03.009.003.mp4": 1524.833333,
16387
16387
  "cmn.03.009.004.mp4": 630.833333,
16388
16388
  "cmn.03.009.004.story.mp3": 0,
16389
16389
  "cmn.03.009.005.mp4": 523.8,
@@ -16394,9 +16394,9 @@
16394
16394
  "cmn.03.009.007.story.mp3": 0,
16395
16395
  "cmn.03.009.008.mp4": 833.4,
16396
16396
  "cmn.03.009.008.story.mp3": 0,
16397
- "cmn.03.009.009.mp4": 734.366984,
16397
+ "cmn.03.009.009.mp4": 734.366667,
16398
16398
  "cmn.03.009.009.story.mp3": 0,
16399
- "cmn.03.009.010.mp4": 491.766984,
16399
+ "cmn.03.009.010.mp4": 491.766667,
16400
16400
  "cmn.03.009.010.story.mp3": 0,
16401
16401
  "cmn.1CH.mp3": 3.306667,
16402
16402
  "cmn.1CO.mp3": 3.754667,
@@ -19853,58 +19853,58 @@
19853
19853
  "esp.02.035.031.story.mp3": 0,
19854
19854
  "esp.02.035.032.mp3": 328.457324,
19855
19855
  "esp.02.035.032.story.mp3": 0,
19856
- "esp.03.005.001.intro.mp3": 66.31619,
19857
- "esp.03.005.002.intro.mp3": 57.028209,
19856
+ "esp.03.005.001.intro.mp3": 67.84,
19857
+ "esp.03.005.002.intro.mp3": 51.826938,
19858
19858
  "esp.03.005.003.intro.mp3": 47.415147,
19859
19859
  "esp.03.005.004.intro.mp3": 49.504943,
19860
- "esp.03.005.005.intro.mp3": 33.250975,
19860
+ "esp.03.005.005.intro.mp3": 30.119125,
19861
19861
  "esp.03.005.006.intro.mp3": 41.656599,
19862
19862
  "esp.03.005.007.intro.mp3": 35.480091,
19863
19863
  "esp.03.005.008.intro.mp3": 55.681451,
19864
- "esp.03.005.009.intro.mp3": 52.802177,
19865
- "esp.03.005.010.intro.mp3": 54.241814,
19866
- "esp.03.005.011.intro.mp3": 52.755737,
19867
- "esp.03.005.012.intro.mp3": 57.492608,
19864
+ "esp.03.005.009.intro.mp3": 52.3755,
19865
+ "esp.03.005.010.intro.mp3": 54.230188,
19866
+ "esp.03.005.011.intro.mp3": 51.226063,
19867
+ "esp.03.005.012.intro.mp3": 55.431813,
19868
19868
  "esp.03.006.001.intro.mp3": 53.823855,
19869
19869
  "esp.03.006.002.intro.mp3": 56.23873,
19870
19870
  "esp.03.006.003.intro.mp3": 59.953923,
19871
- "esp.03.006.004.intro.mp3": 55.542132,
19871
+ "esp.03.006.004.intro.mp3": 53.864438,
19872
19872
  "esp.03.006.005.intro.mp3": 59.071565,
19873
- "esp.03.006.006.intro.mp3": 61.48644,
19874
- "esp.03.006.007.intro.mp3": 50.062222,
19873
+ "esp.03.006.006.intro.mp3": 62.693875,
19874
+ "esp.03.006.007.intro.mp3": 48.901188,
19875
19875
  "esp.03.006.008.intro.mp3": 62.136599,
19876
- "esp.03.006.009.intro.mp3": 88.978866,
19876
+ "esp.03.006.009.intro.mp3": 84.42775,
19877
19877
  "esp.03.006.010.intro.mp3": 65.898231,
19878
19878
  "esp.03.006.011.intro.mp3": 41.703039,
19879
- "esp.03.006.012.intro.mp3": 46.393469,
19880
- "esp.03.007.001.intro.mp3": 54.056054,
19879
+ "esp.03.006.012.intro.mp3": 42.448938,
19880
+ "esp.03.007.001.intro.mp3": 49.34525,
19881
19881
  "esp.03.007.002.intro.mp3": 49.272744,
19882
19882
  "esp.03.007.003.intro.mp3": 48.343946,
19883
- "esp.03.007.004.intro.mp3": 42.028118,
19884
- "esp.03.007.005.intro.mp3": 76.85805,
19883
+ "esp.03.007.004.intro.mp3": 43.4155,
19884
+ "esp.03.007.005.intro.mp3": 69.616313,
19885
19885
  "esp.03.007.006.intro.mp3": 32.786576,
19886
19886
  "esp.03.007.007.intro.mp3": 50.340862,
19887
- "esp.03.007.008.intro.mp3": 34.644172,
19888
- "esp.03.007.009.intro.mp3": 40.542041,
19889
- "esp.03.007.010.intro.mp3": 48.901224,
19887
+ "esp.03.007.008.intro.mp3": 33.671813,
19888
+ "esp.03.007.009.intro.mp3": 40.672625,
19889
+ "esp.03.007.010.intro.mp3": 48.248125,
19890
19890
  "esp.03.007.011.intro.mp3": 32.322177,
19891
- "esp.03.007.012.intro.mp3": 49.365624,
19892
- "esp.03.009.001.mp4": 272.138005,
19893
- "esp.03.009.002.mp4": 2677.800998,
19894
- "esp.03.009.003.mp4": 1522.157007,
19895
- "esp.03.009.004.mp4": 141.013016,
19891
+ "esp.03.007.012.intro.mp3": 50.155063,
19892
+ "esp.03.009.001.mp4": 275.833333,
19893
+ "esp.03.009.002.mp4": 2684.8,
19894
+ "esp.03.009.003.mp4": 1528.933333,
19895
+ "esp.03.009.004.mp4": 612.766667,
19896
19896
  "esp.03.009.004.story.mp3": 0,
19897
- "esp.03.009.005.mp4": 505.68,
19897
+ "esp.03.009.005.mp4": 510.9,
19898
19898
  "esp.03.009.005.story.mp3": 0,
19899
- "esp.03.009.006.mp4": 360.779002,
19899
+ "esp.03.009.006.mp4": 364.466667,
19900
19900
  "esp.03.009.006.story.mp3": 0,
19901
- "esp.03.009.007.mp4": 645.773991,
19901
+ "esp.03.009.007.mp4": 649.566667,
19902
19902
  "esp.03.009.007.story.mp3": 0,
19903
- "esp.03.009.008.mp4": 797.702993,
19903
+ "esp.03.009.008.mp4": 797.703375,
19904
19904
  "esp.03.009.008.story.mp3": 0,
19905
- "esp.03.009.009.mp4": 727.016009,
19905
+ "esp.03.009.009.mp4": 730.8,
19906
19906
  "esp.03.009.009.story.mp3": 0,
19907
- "esp.03.009.010.mp4": 482.744989,
19907
+ "esp.03.009.010.mp4": 486.4,
19908
19908
  "esp.03.009.010.story.mp3": 0,
19909
19909
  "esp.1CH.mp3": 1.959126,
19910
19910
  "esp.1CO.mp3": 2.279246,
@@ -29339,13 +29339,13 @@
29339
29339
  "jpn.03.007.012.mp3": 684.649932,
29340
29340
  "jpn.03.007.012.story.mp3": 0,
29341
29341
  "jpn.03.009.001.mp4": 375.233333,
29342
- "jpn.03.009.002.mp4": 3857.4,
29342
+ "jpn.03.009.002.mp4": 3856.9,
29343
29343
  "jpn.03.009.003.mp4": 2013.2,
29344
29344
  "jpn.03.009.004.mp4": 885,
29345
29345
  "jpn.03.009.004.story.mp3": 0,
29346
- "jpn.03.009.005.mp4": 666.466984,
29346
+ "jpn.03.009.005.mp4": 666.466667,
29347
29347
  "jpn.03.009.005.story.mp3": 0,
29348
- "jpn.03.009.006.mp4": 456.966984,
29348
+ "jpn.03.009.006.mp4": 456.966667,
29349
29349
  "jpn.03.009.006.story.mp3": 0,
29350
29350
  "jpn.03.009.007.mp4": 926.7,
29351
29351
  "jpn.03.009.007.story.mp3": 0,
@@ -62464,22 +62464,22 @@
62464
62464
  "tha.03.007.005.story.mp3": 0,
62465
62465
  "tha.03.007.006.story.mp3": 0,
62466
62466
  "tha.03.007.007.story.mp3": 0,
62467
- "tha.03.009.001.mp4": 370.3,
62468
- "tha.03.009.002.mp4": 3948.333333,
62469
- "tha.03.009.003.mp4": 1793.1,
62470
- "tha.03.009.004.mp4": 739.066667,
62467
+ "tha.03.009.001.mp4": 370.366667,
62468
+ "tha.03.009.002.mp4": 3948.4,
62469
+ "tha.03.009.003.mp4": 1793.166667,
62470
+ "tha.03.009.004.mp4": 739.133333,
62471
62471
  "tha.03.009.004.story.mp3": 0,
62472
- "tha.03.009.005.mp4": 656.9,
62472
+ "tha.03.009.005.mp4": 656.966667,
62473
62473
  "tha.03.009.005.story.mp3": 0,
62474
- "tha.03.009.006.mp4": 476.2,
62474
+ "tha.03.009.006.mp4": 476.266667,
62475
62475
  "tha.03.009.006.story.mp3": 0,
62476
- "tha.03.009.007.mp4": 798.083333,
62476
+ "tha.03.009.007.mp4": 798.133333,
62477
62477
  "tha.03.009.007.story.mp3": 0,
62478
- "tha.03.009.008.mp4": 968.133333,
62478
+ "tha.03.009.008.mp4": 968.2,
62479
62479
  "tha.03.009.008.story.mp3": 0,
62480
- "tha.03.009.009.mp4": 833.066667,
62480
+ "tha.03.009.009.mp4": 833.133333,
62481
62481
  "tha.03.009.009.story.mp3": 0,
62482
- "tha.03.009.010.mp4": 533,
62482
+ "tha.03.009.010.mp4": 533.066667,
62483
62483
  "tha.03.009.010.story.mp3": 0,
62484
62484
  "tha.1CH.mp3": 3.067846,
62485
62485
  "tha.1CO.mp3": 2.572336,
@@ -36,6 +36,9 @@ export declare function normalizeAudio(input: string): Promise<string>;
36
36
  *
37
37
  * The settings are tuned for concat-safe output:
38
38
  *
39
+ * - `fps` of 30 matches Remotion's renders. Some Keynote exports are 60fps, and
40
+ * mixing frame rates in a `-c:v copy` concat makes a variable-frame-rate file
41
+ * whose header still claims the first input's rate
39
42
  * - `gop` of 30 puts a keyframe every 1s at 30fps, required for seekability and
40
43
  * `-c:v copy` concat
41
44
  * - `bFrames: 0` prevents non-monotonic DTS at concat seams
@@ -50,6 +53,7 @@ export declare const VIDEO_ENCODE_SETTINGS: {
50
53
  readonly remotionCodec: "h264";
51
54
  readonly crf: 23;
52
55
  readonly x264Preset: "medium";
56
+ readonly fps: 30;
53
57
  readonly gop: 30;
54
58
  readonly bFrames: 0;
55
59
  readonly pixelFormat: "yuv420p";
@@ -189,6 +189,9 @@ async function normalizeAudio(input) {
189
189
  *
190
190
  * The settings are tuned for concat-safe output:
191
191
  *
192
+ * - `fps` of 30 matches Remotion's renders. Some Keynote exports are 60fps, and
193
+ * mixing frame rates in a `-c:v copy` concat makes a variable-frame-rate file
194
+ * whose header still claims the first input's rate
192
195
  * - `gop` of 30 puts a keyframe every 1s at 30fps, required for seekability and
193
196
  * `-c:v copy` concat
194
197
  * - `bFrames: 0` prevents non-monotonic DTS at concat seams
@@ -203,6 +206,7 @@ exports.VIDEO_ENCODE_SETTINGS = {
203
206
  remotionCodec: 'h264',
204
207
  crf: 23,
205
208
  x264Preset: 'medium',
209
+ fps: 30,
206
210
  gop: 30,
207
211
  bFrames: 0,
208
212
  pixelFormat: 'yuv420p',
@@ -222,6 +226,8 @@ exports.VIDEO_ENCODE_ARGS = [
222
226
  String(exports.VIDEO_ENCODE_SETTINGS.crf),
223
227
  '-preset',
224
228
  exports.VIDEO_ENCODE_SETTINGS.x264Preset,
229
+ '-r',
230
+ String(exports.VIDEO_ENCODE_SETTINGS.fps),
225
231
  '-g',
226
232
  String(exports.VIDEO_ENCODE_SETTINGS.gop),
227
233
  '-bf',
@@ -54,7 +54,12 @@ export declare const Article: z.ZodObject<{
54
54
  }>>;
55
55
  }, z.core.$strip>;
56
56
  export type Article = z.infer<typeof Article>;
57
- export declare const ResponseArticle: z.ZodObject<{
57
+ /**
58
+ * An article as the app gets it from the website: its frontmatter as `data`,
59
+ * plus Astro's `id` (the file path, like `eng/some-article`) and the markdown
60
+ * `body`.
61
+ */
62
+ export declare const ArticleEntry: z.ZodObject<{
58
63
  id: z.ZodString;
59
64
  data: z.ZodObject<{
60
65
  title: z.ZodString;
@@ -112,7 +117,7 @@ export declare const ResponseArticle: z.ZodObject<{
112
117
  }, z.core.$strip>;
113
118
  body: z.ZodString;
114
119
  }, z.core.$strip>;
115
- export type ResponseArticle = z.infer<typeof ResponseArticle>;
120
+ export type ArticleEntry = z.infer<typeof ArticleEntry>;
116
121
  export declare const ArticlesResponse: z.ZodObject<{
117
122
  data: z.ZodArray<z.ZodObject<{
118
123
  id: z.ZodString;
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.ArticleLanguagesResponse = exports.ArticlesResponse = exports.ResponseArticle = exports.Article = void 0;
6
+ exports.ArticleLanguagesResponse = exports.ArticlesResponse = exports.ArticleEntry = exports.Article = void 0;
7
7
  const v4_1 = __importDefault(require("zod/v4"));
8
8
  const webContent_1 = require("./webContent");
9
9
  exports.Article = v4_1.default.object({
@@ -19,13 +19,18 @@ exports.Article = v4_1.default.object({
19
19
  video: webContent_1.Video,
20
20
  impactStoryRegion: webContent_1.ImpactStoryRegion,
21
21
  });
22
- exports.ResponseArticle = v4_1.default.object({
22
+ /**
23
+ * An article as the app gets it from the website: its frontmatter as `data`,
24
+ * plus Astro's `id` (the file path, like `eng/some-article`) and the markdown
25
+ * `body`.
26
+ */
27
+ exports.ArticleEntry = v4_1.default.object({
23
28
  id: v4_1.default.string(),
24
29
  data: exports.Article,
25
30
  body: v4_1.default.string(),
26
31
  });
27
32
  exports.ArticlesResponse = v4_1.default.object({
28
- data: v4_1.default.array(exports.ResponseArticle),
33
+ data: v4_1.default.array(exports.ArticleEntry),
29
34
  });
30
35
  exports.ArticleLanguagesResponse = v4_1.default.object({
31
36
  data: v4_1.default.array(v4_1.default.string()),
@@ -97,7 +97,12 @@ export declare const MicroLesson: z.ZodObject<{
97
97
  }, z.core.$strip>>;
98
98
  }, z.core.$strip>;
99
99
  export type MicroLesson = z.infer<typeof MicroLesson>;
100
- export declare const ResponseMicroLesson: z.ZodObject<{
100
+ /**
101
+ * A micro-lesson as the app gets it from the website: its frontmatter as
102
+ * `data`, plus Astro's `id` (the file path, like `eng/some-lesson`). There's
103
+ * no `body`, because a micro-lesson's content is all in its frontmatter.
104
+ */
105
+ export declare const MicroLessonEntry: z.ZodObject<{
101
106
  id: z.ZodString;
102
107
  data: z.ZodObject<{
103
108
  title: z.ZodString;
@@ -186,7 +191,7 @@ export declare const ResponseMicroLesson: z.ZodObject<{
186
191
  }, z.core.$strip>>;
187
192
  }, z.core.$strip>;
188
193
  }, z.core.$strip>;
189
- export type ResponseMicroLesson = z.infer<typeof ResponseMicroLesson>;
194
+ export type MicroLessonEntry = z.infer<typeof MicroLessonEntry>;
190
195
  export declare const MicroLessonsResponse: z.ZodObject<{
191
196
  data: z.ZodArray<z.ZodObject<{
192
197
  id: z.ZodString;
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.MicroLessonLanguagesResponse = exports.MicroLessonSubmission = exports.MicroLessonsResponse = exports.ResponseMicroLesson = exports.MicroLesson = exports.MicroLessonCtaButton = exports.MicroLessonRadioButton = void 0;
6
+ exports.MicroLessonLanguagesResponse = exports.MicroLessonSubmission = exports.MicroLessonsResponse = exports.MicroLessonEntry = exports.MicroLesson = exports.MicroLessonCtaButton = exports.MicroLessonRadioButton = void 0;
7
7
  const v4_1 = __importDefault(require("zod/v4"));
8
8
  const languages_zod_1 = require("../data/languages/languages.zod");
9
9
  const location_1 = require("./location");
@@ -94,12 +94,17 @@ exports.MicroLesson = v4_1.default.object({
94
94
  .describe('A single page of the micro lesson.'))
95
95
  .describe('The pages that make up the micro lesson. The last page is the completion page and will always have a button redirecting the user back.'),
96
96
  });
97
- exports.ResponseMicroLesson = v4_1.default.object({
97
+ /**
98
+ * A micro-lesson as the app gets it from the website: its frontmatter as
99
+ * `data`, plus Astro's `id` (the file path, like `eng/some-lesson`). There's
100
+ * no `body`, because a micro-lesson's content is all in its frontmatter.
101
+ */
102
+ exports.MicroLessonEntry = v4_1.default.object({
98
103
  id: v4_1.default.string(),
99
104
  data: exports.MicroLesson,
100
105
  });
101
106
  exports.MicroLessonsResponse = v4_1.default.object({
102
- data: v4_1.default.array(exports.ResponseMicroLesson),
107
+ data: v4_1.default.array(exports.MicroLessonEntry),
103
108
  });
104
109
  exports.MicroLessonSubmission = location_1.WahaUserLocation.extend({
105
110
  microLessonId: v4_1.default.string(),
@@ -65,6 +65,11 @@ export declare const DevicePlatform: z.ZodEnum<{
65
65
  windows: "windows";
66
66
  }>;
67
67
  export type DevicePlatform = z.infer<typeof DevicePlatform>;
68
+ /**
69
+ * The device id an iOS install falls back to when identifierForVendor is
70
+ * unavailable. Every such install shares it, so it identifies nothing.
71
+ */
72
+ export declare const UNKNOWN_IOS_DEVICE_ID = "unknown-ios";
68
73
  /**
69
74
  * Everything known about a single device/install. One doc per device in the
70
75
  * `users2/{uid}/devices/{deviceId}` subcollection.
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
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;
6
+ exports.LegacyWahaUserFields = exports.LegacyWahaUser = exports.WahaUserFields = exports.WahaUser = exports.DeviceInfoFields = exports.DeviceInfo = exports.UNKNOWN_IOS_DEVICE_ID = exports.DevicePlatform = exports.WahaAppVersion = exports.UserReduxState = exports.DeviceUserReduxState = exports.SharedUserReduxState = exports.NotificationPermission = void 0;
7
7
  const zod_1 = __importDefault(require("zod"));
8
8
  const languages_zod_1 = require("../data/languages/languages.zod");
9
9
  const completions_1 = require("./completions");
@@ -54,6 +54,11 @@ exports.DevicePlatform = zod_1.default.enum([
54
54
  'windows',
55
55
  'web',
56
56
  ]);
57
+ /**
58
+ * The device id an iOS install falls back to when identifierForVendor is
59
+ * unavailable. Every such install shares it, so it identifies nothing.
60
+ */
61
+ exports.UNKNOWN_IOS_DEVICE_ID = 'unknown-ios';
57
62
  /**
58
63
  * Everything known about a single device/install. One doc per device in the
59
64
  * `users2/{uid}/devices/{deviceId}` subcollection.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "waha-shared",
3
- "version": "1.0.533",
3
+ "version": "1.0.534",
4
4
  "author": "Waha",
5
5
  "dependencies": {
6
6
  "@types/signale": "^1.4.7",