rrule-rust 1.0.0 → 1.1.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/README.md CHANGED
@@ -15,7 +15,7 @@
15
15
 
16
16
  ## Quick Start
17
17
 
18
- See [__test__ folder](https://github.com/lsndr/rrule-rust/tree/master/__test__) to see more use cases
18
+ See [test folder](https://github.com/lsndr/rrule-rust/tree/master/__test__) to find more use cases
19
19
 
20
20
  ```
21
21
  npm install rrule-rust
@@ -26,7 +26,7 @@ See [__test__ folder](https://github.com/lsndr/rrule-rust/tree/master/__test__)
26
26
  import { RRule, RRuleSet, Frequency } from 'rrule-rust';
27
27
 
28
28
  const rrule = new RRule(Frequency.Daily).setCount(5);
29
- const set = new RRuleSet(873205200000, 'US/Eastern').rrule(rrule);
29
+ const set = new RRuleSet(873205200000, 'US/Eastern').addRrule(rrule);
30
30
 
31
31
  const dates = set.all(); // [ 873205200000, 873291600000, 873378000000, 873464400000, 873550800000 ]
32
32
  const asString = set.toString(); // DTSTART;TZID=US/Eastern:19970902T090000\nFREQ=daily;COUNT=5;BYHOUR=9;BYMINUTE=0;BYSECOND=0
package/index.d.ts CHANGED
@@ -70,13 +70,13 @@ export class RRule {
70
70
  export type JsRRuleSet = RRuleSet
71
71
  export class RRuleSet {
72
72
  constructor(dtstart: number, tzid: string)
73
+ static parse(str: string): JsRRuleSet
73
74
  toString(): string
74
- rrule(jsRrule: RRule): this
75
- exrule(jsRrule: RRule): this
76
- after(timestamp: number): this
77
- before(timestamp: number): this
78
- exdate(timestamp: number): this
79
- getDtstart(): number
80
- getTzid(): string
75
+ addRrule(jsRrule: RRule): this
76
+ addExrule(jsRrule: RRule): this
77
+ addExdate(timestamp: number): this
78
+ get dtstart(): number
79
+ get tzid(): string
81
80
  all(limit?: number | undefined | null): number[]
81
+ between(after: number, before: number, inclusive?: boolean | undefined | null): number[]
82
82
  }
package/index.js CHANGED
@@ -1,3 +1,9 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+ /* prettier-ignore */
4
+
5
+ /* auto-generated by NAPI-RS */
6
+
1
7
  const { existsSync, readFileSync } = require('fs')
2
8
  const { join } = require('path')
3
9
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rrule-rust",
3
- "version": "1.0.0",
3
+ "version": "1.1.1",
4
4
  "main": "index.js",
5
5
  "types": "index.d.ts",
6
6
  "keywords": [
@@ -39,7 +39,7 @@
39
39
  },
40
40
  "license": "MIT",
41
41
  "devDependencies": {
42
- "@napi-rs/cli": "^2.14.8",
42
+ "@napi-rs/cli": "^2.15.1",
43
43
  "ava": "^5.1.1"
44
44
  },
45
45
  "ava": {
@@ -58,19 +58,19 @@
58
58
  "version": "napi version"
59
59
  },
60
60
  "optionalDependencies": {
61
- "@rrule-rust/lib-win32-x64-msvc": "1.0.0",
62
- "@rrule-rust/lib-darwin-x64": "1.0.0",
63
- "@rrule-rust/lib-linux-x64-gnu": "1.0.0",
64
- "@rrule-rust/lib-darwin-arm64": "1.0.0",
65
- "@rrule-rust/lib-android-arm64": "1.0.0",
66
- "@rrule-rust/lib-linux-arm64-gnu": "1.0.0",
67
- "@rrule-rust/lib-linux-arm64-musl": "1.0.0",
68
- "@rrule-rust/lib-win32-arm64-msvc": "1.0.0",
69
- "@rrule-rust/lib-linux-arm-gnueabihf": "1.0.0",
70
- "@rrule-rust/lib-linux-x64-musl": "1.0.0",
71
- "@rrule-rust/lib-freebsd-x64": "1.0.0",
72
- "@rrule-rust/lib-win32-ia32-msvc": "1.0.0",
73
- "@rrule-rust/lib-android-arm-eabi": "1.0.0",
74
- "@rrule-rust/lib-darwin-universal": "1.0.0"
61
+ "@rrule-rust/lib-win32-x64-msvc": "1.1.1",
62
+ "@rrule-rust/lib-darwin-x64": "1.1.1",
63
+ "@rrule-rust/lib-linux-x64-gnu": "1.1.1",
64
+ "@rrule-rust/lib-darwin-arm64": "1.1.1",
65
+ "@rrule-rust/lib-android-arm64": "1.1.1",
66
+ "@rrule-rust/lib-linux-arm64-gnu": "1.1.1",
67
+ "@rrule-rust/lib-linux-arm64-musl": "1.1.1",
68
+ "@rrule-rust/lib-win32-arm64-msvc": "1.1.1",
69
+ "@rrule-rust/lib-linux-arm-gnueabihf": "1.1.1",
70
+ "@rrule-rust/lib-linux-x64-musl": "1.1.1",
71
+ "@rrule-rust/lib-freebsd-x64": "1.1.1",
72
+ "@rrule-rust/lib-win32-ia32-msvc": "1.1.1",
73
+ "@rrule-rust/lib-android-arm-eabi": "1.1.1",
74
+ "@rrule-rust/lib-darwin-universal": "1.1.1"
75
75
  }
76
76
  }
package/src/lib.rs CHANGED
@@ -284,8 +284,6 @@ impl JsRRule {
284
284
  pub struct JsRRuleSet {
285
285
  tz: Tz,
286
286
  rrule_set: RRuleSet,
287
- before: Option<i64>,
288
- after: Option<i64>,
289
287
  }
290
288
 
291
289
  #[napi]
@@ -296,12 +294,16 @@ impl JsRRuleSet {
296
294
  let date = timestamp_to_date_with_tz(dtstart, &tz);
297
295
  let rrule_set = RRuleSet::new(date);
298
296
 
299
- JsRRuleSet {
300
- rrule_set,
301
- tz,
302
- before: None,
303
- after: None,
304
- }
297
+ JsRRuleSet { rrule_set, tz }
298
+ }
299
+
300
+ #[napi(factory)]
301
+ pub fn parse(str: String) -> Self {
302
+ let rrule_set: RRuleSet = str.parse().unwrap();
303
+ let dtstart = rrule_set.get_dt_start();
304
+ let tz = dtstart.timezone();
305
+
306
+ JsRRuleSet { rrule_set, tz }
305
307
  }
306
308
 
307
309
  #[napi]
@@ -310,7 +312,7 @@ impl JsRRuleSet {
310
312
  }
311
313
 
312
314
  #[napi]
313
- pub fn rrule(&mut self, js_rrule: &JsRRule) -> napi::Result<&Self> {
315
+ pub fn add_rrule(&mut self, js_rrule: &JsRRule) -> napi::Result<&Self> {
314
316
  let dt_start = self.rrule_set.get_dt_start().clone();
315
317
  let rrule = js_rrule.validate(dt_start);
316
318
 
@@ -320,7 +322,7 @@ impl JsRRuleSet {
320
322
  }
321
323
 
322
324
  #[napi]
323
- pub fn exrule(&mut self, js_rrule: &JsRRule) -> napi::Result<&Self> {
325
+ pub fn add_exrule(&mut self, js_rrule: &JsRRule) -> napi::Result<&Self> {
324
326
  let rrule = js_rrule.validate(*self.rrule_set.get_dt_start());
325
327
 
326
328
  replace_with_or_abort(&mut self.rrule_set, |self_| self_.exrule(rrule));
@@ -329,21 +331,7 @@ impl JsRRuleSet {
329
331
  }
330
332
 
331
333
  #[napi]
332
- pub fn after(&mut self, timestamp: i64) -> napi::Result<&Self> {
333
- self.after = Some(timestamp);
334
-
335
- Ok(self)
336
- }
337
-
338
- #[napi]
339
- pub fn before(&mut self, timestamp: i64) -> napi::Result<&Self> {
340
- self.before = Some(timestamp);
341
-
342
- Ok(self)
343
- }
344
-
345
- #[napi]
346
- pub fn exdate(&mut self, timestamp: i64) -> napi::Result<&Self> {
334
+ pub fn add_exdate(&mut self, timestamp: i64) -> napi::Result<&Self> {
347
335
  replace_with_or_abort(&mut self.rrule_set, |self_| {
348
336
  self_.exdate(timestamp_to_date_with_tz(timestamp, &self.tz))
349
337
  });
@@ -351,13 +339,13 @@ impl JsRRuleSet {
351
339
  Ok(self)
352
340
  }
353
341
 
354
- #[napi]
355
- pub fn get_dtstart(&self) -> napi::Result<i64> {
342
+ #[napi(getter)]
343
+ pub fn dtstart(&self) -> napi::Result<i64> {
356
344
  Ok(self.rrule_set.get_dt_start().timestamp_millis())
357
345
  }
358
346
 
359
- #[napi]
360
- pub fn get_tzid(&self) -> napi::Result<String> {
347
+ #[napi(getter)]
348
+ pub fn tzid(&self) -> napi::Result<String> {
361
349
  Ok(String::from(self.tz.name()))
362
350
  }
363
351
 
@@ -375,21 +363,25 @@ impl JsRRuleSet {
375
363
  Ok(arr)
376
364
  }*/
377
365
 
378
- fn is_after(&self, timestamp: i64) -> bool {
379
- if let Some(after) = self.after {
380
- if timestamp <= after {
381
- return false;
382
- }
366
+ fn is_after(&self, timestamp: i64, after_timestamp: i64, inclusive: Option<bool>) -> bool {
367
+ let inclusive = inclusive.unwrap_or(false);
368
+
369
+ if inclusive && timestamp < after_timestamp {
370
+ return false;
371
+ } else if !inclusive && timestamp <= after_timestamp {
372
+ return false;
383
373
  }
384
374
 
385
375
  true
386
376
  }
387
377
 
388
- fn is_before(&self, timestamp: i64) -> bool {
389
- if let Some(before) = self.before {
390
- if timestamp >= before {
391
- return false;
392
- }
378
+ fn is_before(&self, timestamp: i64, before_timestamp: i64, inclusive: Option<bool>) -> bool {
379
+ let inclusive = inclusive.unwrap_or(false);
380
+
381
+ if inclusive && timestamp > before_timestamp {
382
+ return false;
383
+ } else if !inclusive && timestamp >= before_timestamp {
384
+ return false;
393
385
  }
394
386
 
395
387
  true
@@ -411,8 +403,20 @@ impl JsRRuleSet {
411
403
  }
412
404
 
413
405
  let timestamp = date.timestamp_millis();
414
- let is_after = self.is_after(timestamp);
415
- let is_before = self.is_before(timestamp);
406
+ arr.insert(timestamp).unwrap();
407
+ }
408
+
409
+ Ok(arr)
410
+ }
411
+
412
+ #[napi(ts_return_type = "number[]")]
413
+ pub fn between(&self, env: Env, after: i64, before: i64, inclusive: Option<bool>) -> napi::Result<Array> {
414
+ let mut arr = env.create_array(0).unwrap();
415
+
416
+ for date in self.rrule_set.into_iter() {
417
+ let timestamp = date.timestamp_millis();
418
+ let is_after = self.is_after(timestamp, after, inclusive);
419
+ let is_before = self.is_before(timestamp, before, inclusive);
416
420
 
417
421
  if is_after && is_before {
418
422
  arr.insert(timestamp).unwrap();