epublib 0.2.0 → 0.2.1

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/epub.d.ts CHANGED
@@ -264,6 +264,10 @@ export declare class EpubFile {
264
264
  getISBN13(): ISBN13 | undefined;
265
265
  getLanguage(): BCP47LanguageTag;
266
266
  getCollection(): EpubFileGetCollection | undefined;
267
+ /**
268
+ *
269
+ * @returns {string} ISO partial date (possible formats: `2010-01-12`, `2010-01`, `2010`)
270
+ */
267
271
  getDate(config?: Partial<{
268
272
  stripTime: boolean;
269
273
  }>): string | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"epub.d.ts","sourceRoot":"","sources":["../src/epub.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,SAAS,CAAC;AAiB7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAI9C,UAAU,gBAAgB;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3B;AAED,UAAU,qBAAqB;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,mBAAmB;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,IAAI,EAAE,UAAU,GAAG,SAAS,CAAC;CAC7B;AAED,qBAAa,QAAQ;;IASpB,IAAI,QAAQ,WAEX;IAED,IAAI,GAAG,WAEN;IAED,IAAI,YAAY;;;;;;;;;;;;;;MAEf;IAED,IAAI,OAAO,cAEV;IAED,IAAI,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAEb;gBAqGW,QAAQ,EAAE,MAAM,EAAE,GAAG,UAAQ;IAgBzC,aAAa,IAAI,IAAI,GAAG,SAAS;IAqGjC,aAAa,IAAI,OAAO;IAIxB,QAAQ,IAAI,gBAAgB;IAmE5B,SAAS,IAAI,MAAM,GAAG,SAAS;IAgE/B,WAAW,IAAI,gBAAgB;IAa/B,aAAa,IAAI,qBAAqB,GAAG,SAAS;IAmFlD,OAAO,CACN,MAAM,GAAE,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,CAAuB,GAC3D,MAAM,GAAG,SAAS;IAmCrB,YAAY,IAAI,MAAM,GAAG,SAAS;IAMlC,cAAc,CAAC,YAAY,GAAE,OAAc,GAAG,MAAM,GAAG,SAAS;IAWhE,eAAe,CACd,aAAa,GAAE,UAAU,EAAY,GACnC,mBAAmB,EAAE,GAAG,SAAS;CAwEpC"}
1
+ {"version":3,"file":"epub.d.ts","sourceRoot":"","sources":["../src/epub.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,SAAS,CAAC;AAiB7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAI9C,UAAU,gBAAgB;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3B;AAED,UAAU,qBAAqB;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,mBAAmB;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,IAAI,EAAE,UAAU,GAAG,SAAS,CAAC;CAC7B;AAED,qBAAa,QAAQ;;IASpB,IAAI,QAAQ,WAEX;IAED,IAAI,GAAG,WAEN;IAED,IAAI,YAAY;;;;;;;;;;;;;;MAEf;IAED,IAAI,OAAO,cAEV;IAED,IAAI,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAEb;gBAqGW,QAAQ,EAAE,MAAM,EAAE,GAAG,UAAQ;IAgBzC,aAAa,IAAI,IAAI,GAAG,SAAS;IAqGjC,aAAa,IAAI,OAAO;IAIxB,QAAQ,IAAI,gBAAgB;IAmE5B,SAAS,IAAI,MAAM,GAAG,SAAS;IAgE/B,WAAW,IAAI,gBAAgB;IAa/B,aAAa,IAAI,qBAAqB,GAAG,SAAS;IAmFlD;;;OAGG;IACH,OAAO,CACN,MAAM,GAAE,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,CAAuB,GAC3D,MAAM,GAAG,SAAS;IAgFrB,YAAY,IAAI,MAAM,GAAG,SAAS;IAMlC,cAAc,CAAC,YAAY,GAAE,OAAc,GAAG,MAAM,GAAG,SAAS;IAWhE,eAAe,CACd,aAAa,GAAE,UAAU,EAAY,GACnC,mBAAmB,EAAE,GAAG,SAAS;CAwEpC"}
package/dist/epub.js CHANGED
@@ -298,6 +298,10 @@ export class EpubFile {
298
298
  }
299
299
  return calibreGet(this);
300
300
  }
301
+ /**
302
+ *
303
+ * @returns {string} ISO partial date (possible formats: `2010-01-12`, `2010-01`, `2010`)
304
+ */
301
305
  getDate(config = { stripTime: true }) {
302
306
  const dublinCodeDate = this.#packageOpf.package.metadata?.["dc:date"];
303
307
  if (!dublinCodeDate) {
@@ -326,6 +330,40 @@ export class EpubFile {
326
330
  .substring(0, 10);
327
331
  }
328
332
  }
333
+ else if (dublinCodeDate["#text"].length > 4 &&
334
+ dublinCodeDate["#text"].length < 10) {
335
+ const splitDcDate = dublinCodeDate["#text"].split("-");
336
+ let temporalPlainDate = undefined;
337
+ try {
338
+ temporalPlainDate = new Temporal.PlainDate(Number(splitDcDate[0]), Number(splitDcDate[1] ?? 1), 1);
339
+ }
340
+ catch (e) {
341
+ if (this.#dev) {
342
+ console.error(splitDcDate, e);
343
+ }
344
+ }
345
+ if (temporalPlainDate) {
346
+ return temporalPlainDate
347
+ .toString({ calendarName: "never" })
348
+ .substring(0, 7);
349
+ }
350
+ }
351
+ else if (dublinCodeDate["#text"].length <= 4) {
352
+ let temporalPlainDate = undefined;
353
+ try {
354
+ temporalPlainDate = new Temporal.PlainDate(Number(dublinCodeDate["#text"]), 1, 1);
355
+ }
356
+ catch (e) {
357
+ if (this.#dev) {
358
+ console.error({ year: dublinCodeDate["#text"] }, e);
359
+ }
360
+ }
361
+ if (temporalPlainDate) {
362
+ return temporalPlainDate
363
+ .toString({ calendarName: "never" })
364
+ .substring(0, 4);
365
+ }
366
+ }
329
367
  return z.iso.date().safeParse(dublinCodeDate["#text"])?.data;
330
368
  }
331
369
  getPublisher() {
@@ -33,7 +33,7 @@ export declare const DublinCoreIdentifier: z.ZodObject<{
33
33
  }, z.z.core.$strip>;
34
34
  export type DublinCoreIdentifier = z.infer<typeof DublinCoreIdentifier>;
35
35
  export declare const DublinCoreDate: z.ZodObject<{
36
- "#text": z.ZodUnion<readonly [z.z.ZodISODate, z.z.ZodISODateTime]>;
36
+ "#text": z.ZodUnion<readonly [z.z.ZodISODate, z.z.ZodISODateTime, z.ZodString]>;
37
37
  }, z.z.core.$strip>;
38
38
  export type DublinCoreDate = z.infer<typeof DublinCoreDate>;
39
39
  export declare const DublinCoreDescription: z.ZodObject<{
@@ -1 +1 @@
1
- {"version":3,"file":"dublinCore.d.ts","sourceRoot":"","sources":["../../../src/schemas/epub/dublinCore.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AAKpB,eAAO,MAAM,oBAAoB;;;;;;;;;mBAQhC,CAAC;AACF,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAExE,eAAO,MAAM,kBAAkB;;;mBAM9B,CAAC;AACF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAEpE,eAAO,MAAM,eAAe;;;;;;;;;mBAG3B,CAAC;AACF,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE9D,eAAO,MAAM,oBAAoB;;;;mBAOhC,CAAC;AACF,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAExE,eAAO,MAAM,cAAc;;mBAc1B,CAAC;AACF,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAE5D,eAAO,MAAM,qBAAqB;;;;;;;;;mBAGjC,CAAC;AACF,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAE1E,eAAO,MAAM,mBAAmB;;;;;;;;;mBAG/B,CAAC;AACF,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEtE,eAAO,MAAM,gBAAgB;;;;;;;;;mBAG5B,CAAC;AACF,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAEhE,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAOjC,CAAC;AACF,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
1
+ {"version":3,"file":"dublinCore.d.ts","sourceRoot":"","sources":["../../../src/schemas/epub/dublinCore.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AAKpB,eAAO,MAAM,oBAAoB;;;;;;;;;mBAQhC,CAAC;AACF,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAExE,eAAO,MAAM,kBAAkB;;;mBAM9B,CAAC;AACF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAEpE,eAAO,MAAM,eAAe;;;;;;;;;mBAG3B,CAAC;AACF,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE9D,eAAO,MAAM,oBAAoB;;;;mBAOhC,CAAC;AACF,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAExE,eAAO,MAAM,cAAc;;mBAkB1B,CAAC;AACF,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAE5D,eAAO,MAAM,qBAAqB;;;;;;;;;mBAGjC,CAAC;AACF,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAE1E,eAAO,MAAM,mBAAmB;;;;;;;;;mBAG/B,CAAC;AACF,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEtE,eAAO,MAAM,gBAAgB;;;;;;;;;mBAG5B,CAAC;AACF,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAEhE,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAOjC,CAAC;AACF,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
@@ -27,6 +27,9 @@ export const DublinCoreDate = z.object({
27
27
  offset: true,
28
28
  error: (e) => `Not a valid iso datetime ("${String(e?.input)}")`,
29
29
  }),
30
+ z.string().regex(/^\d{4}(-\d{2})?$/, {
31
+ error: (e) => `Not a valid partial iso date ("${String(e?.input)}")`,
32
+ }),
30
33
  ]),
31
34
  }, "Not a valid dc:date");
32
35
  export const DublinCoreDescription = z.object({ ...DublinCoreCommonText.shape }, "Not a valid dc:description");
@@ -171,7 +171,7 @@ export declare const PackageMetadataCommonDublinCoreTerms: z.ZodObject<{
171
171
  "@_id"?: string | undefined;
172
172
  "@_opf:scheme"?: string | undefined;
173
173
  }[]>>, z.ZodObject<{
174
- "#text": z.ZodUnion<readonly [z.ZodISODate, z.ZodISODateTime]>;
174
+ "#text": z.ZodUnion<readonly [z.ZodISODate, z.ZodISODateTime, z.ZodString]>;
175
175
  }, z.core.$strip>>>;
176
176
  "dc:publisher": z.ZodOptional<z.ZodObject<{
177
177
  "@_id": z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
@@ -248,7 +248,7 @@ export declare const Epub2PackageOPF: z.ZodObject<{
248
248
  "@_id"?: string | undefined;
249
249
  "@_opf:scheme"?: string | undefined;
250
250
  }[]>>, z.ZodObject<{
251
- "#text": z.ZodUnion<readonly [z.z.ZodISODate, z.z.ZodISODateTime]>;
251
+ "#text": z.ZodUnion<readonly [z.z.ZodISODate, z.z.ZodISODateTime, z.ZodString]>;
252
252
  }, z.z.core.$strip>>>;
253
253
  "dc:publisher": z.ZodOptional<z.ZodObject<{
254
254
  "@_id": z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
@@ -380,7 +380,7 @@ export declare const Epub3PackageOPF: z.ZodObject<{
380
380
  "@_id"?: string | undefined;
381
381
  "@_opf:scheme"?: string | undefined;
382
382
  }[]>>, z.ZodObject<{
383
- "#text": z.ZodUnion<readonly [z.z.ZodISODate, z.z.ZodISODateTime]>;
383
+ "#text": z.ZodUnion<readonly [z.z.ZodISODate, z.z.ZodISODateTime, z.ZodString]>;
384
384
  }, z.z.core.$strip>>>;
385
385
  "dc:publisher": z.ZodOptional<z.ZodObject<{
386
386
  "@_id": z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "epublib",
3
- "version": "0.2.0",
3
+ "version": "0.2.1",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",