rrule-rust 2.0.0 → 2.0.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/LICENSE.md CHANGED
@@ -19,4 +19,4 @@ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
19
19
  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
20
20
  CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
21
21
  TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
22
- SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
package/README.md CHANGED
@@ -5,33 +5,30 @@
5
5
  [![npm downloads](https://img.shields.io/npm/dt/rrule-rust.svg)](https://www.npmjs.com/package/rrule-rust)
6
6
  [![license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/lsndr/rrule-rust/blob/master/LICENSE.md)
7
7
 
8
-
9
8
  `rrule-rust` is a library for working with recurrence rules based on Rust's [rrule](https://crates.io/crates/rrule) crate
10
9
 
11
-
12
10
  1. [Quick Start](#quick-start)
13
- 2. [Perfomance](#perfomance)
11
+ 2. [Performance](#performance)
14
12
 
15
13
  ## Quick Start
16
14
 
17
15
  See [test folder](https://github.com/lsndr/rrule-rust/tree/master/tests) to find more use cases
18
16
 
19
17
  ```
20
- npm i rrule-rust
18
+ npm i rrule-rust
21
19
  ```
22
20
 
23
-
24
21
  ```typescript
25
22
  import { RRule, RRuleSet, Frequency, DateTime } from 'rrule-rust';
26
23
 
27
24
  const rrule = new RRule({
28
25
  frequency: Frequency.Daily,
29
- count: 5
26
+ count: 5,
30
27
  });
31
28
  const set = new RRuleSet({
32
29
  dtstart: DateTime.create(1997, 9, 2, 9, 0, 0, false),
33
30
  tzid: 'US/Eastern',
34
- rrules: [rrule]
31
+ rrules: [rrule],
35
32
  });
36
33
 
37
34
  const dates = set.all(); // [ DateTime, DateTime, DateTime, DateTime, DateTime ]
@@ -47,10 +44,10 @@ const asString = set.toString(); // DTSTART;TZID=US/Eastern:19970902T090000\nFRE
47
44
  Memory: 36 GB LPDDR5
48
45
  ```
49
46
 
50
- | | rrule | rrule-rust | |
51
- | -------- | -------------- | ------------- | ------------ |
52
- | UTC TZ | 15 904 ops/s | 108 538 ops/s | ~6x faster |
53
- | Other TZ | 260 ops/s | 106 034 ops/s | ~400x faster |
47
+ | | rrule | rrule-rust | |
48
+ | -------- | ------------ | ------------- | ------------ |
49
+ | UTC TZ | 15 904 ops/s | 108 538 ops/s | ~6x faster |
50
+ | Other TZ | 260 ops/s | 106 034 ops/s | ~400x faster |
54
51
 
55
52
  You can run benchmarks using `npm run benchmark`
56
53
 
@@ -14,6 +14,7 @@ export interface FromObjectOptions {
14
14
  */
15
15
  export declare class DateTime implements DateTimeLike {
16
16
  private readonly numeric;
17
+ private constructor();
17
18
  get year(): number;
18
19
  get month(): number;
19
20
  get day(): number;
@@ -21,17 +22,6 @@ export declare class DateTime implements DateTimeLike {
21
22
  get minute(): number;
22
23
  get second(): number;
23
24
  get utc(): boolean;
24
- private constructor();
25
- /**
26
- * Converts DateTime into a plain object.
27
- */
28
- toObject(): DateTimeLike;
29
- /**
30
- * Converts DateTime into ISO 8601 string:
31
- * - `YYYYMMDDTHHMMSSZ` for UTC
32
- * - `YYYYMMDDTHHMMSS` for local
33
- */
34
- toString(): string;
35
25
  /**
36
26
  * Creates a new DateTime object from the given date and time components.
37
27
  */
@@ -52,4 +42,14 @@ export declare class DateTime implements DateTimeLike {
52
42
  * Creates a new DateTime object from provided string representation of a date according to RFC 5545.
53
43
  */
54
44
  static fromString(str: string): DateTime;
45
+ /**
46
+ * Converts DateTime into a plain object.
47
+ */
48
+ toObject(): DateTimeLike;
49
+ /**
50
+ * Converts DateTime into ISO 8601 string:
51
+ * - `YYYYMMDDTHHMMSSZ` for UTC
52
+ * - `YYYYMMDDTHHMMSS` for local
53
+ */
54
+ toString(): string;
55
55
  }
package/dist/datetime.js CHANGED
@@ -5,6 +5,9 @@ exports.DateTime = void 0;
5
5
  * Represents a date and time. Either local or UTC.
6
6
  */
7
7
  class DateTime {
8
+ constructor(numeric) {
9
+ this.numeric = numeric;
10
+ }
8
11
  get year() {
9
12
  return Math.floor(this.numeric / 100000000000);
10
13
  }
@@ -26,36 +29,6 @@ class DateTime {
26
29
  get utc() {
27
30
  return this.numeric % 10 == 1;
28
31
  }
29
- constructor(numeric) {
30
- this.numeric = numeric;
31
- }
32
- /**
33
- * Converts DateTime into a plain object.
34
- */
35
- toObject() {
36
- return {
37
- year: this.year,
38
- month: this.month,
39
- day: this.day,
40
- hour: this.hour,
41
- minute: this.minute,
42
- second: this.second,
43
- };
44
- }
45
- /**
46
- * Converts DateTime into ISO 8601 string:
47
- * - `YYYYMMDDTHHMMSSZ` for UTC
48
- * - `YYYYMMDDTHHMMSS` for local
49
- */
50
- toString() {
51
- const year = this.year.toString().padStart(4, '0');
52
- const month = this.month.toString().padStart(2, '0');
53
- const day = this.day.toString().padStart(2, '0');
54
- const hour = this.hour.toString().padStart(2, '0');
55
- const minute = this.minute.toString().padStart(2, '0');
56
- const second = this.second.toString().padStart(2, '0');
57
- return `${year}${month}${day}T${hour}${minute}${second}${this.utc ? 'Z' : ''}`;
58
- }
59
32
  /**
60
33
  * Creates a new DateTime object from the given date and time components.
61
34
  */
@@ -116,6 +89,33 @@ class DateTime {
116
89
  static fromNumeric(numeric) {
117
90
  return new DateTime(numeric);
118
91
  }
92
+ /**
93
+ * Converts DateTime into a plain object.
94
+ */
95
+ toObject() {
96
+ return {
97
+ year: this.year,
98
+ month: this.month,
99
+ day: this.day,
100
+ hour: this.hour,
101
+ minute: this.minute,
102
+ second: this.second,
103
+ };
104
+ }
105
+ /**
106
+ * Converts DateTime into ISO 8601 string:
107
+ * - `YYYYMMDDTHHMMSSZ` for UTC
108
+ * - `YYYYMMDDTHHMMSS` for local
109
+ */
110
+ toString() {
111
+ const year = this.year.toString().padStart(4, '0');
112
+ const month = this.month.toString().padStart(2, '0');
113
+ const day = this.day.toString().padStart(2, '0');
114
+ const hour = this.hour.toString().padStart(2, '0');
115
+ const minute = this.minute.toString().padStart(2, '0');
116
+ const second = this.second.toString().padStart(2, '0');
117
+ return `${year}${month}${day}T${hour}${minute}${second}${this.utc ? 'Z' : ''}`;
118
+ }
119
119
  /** @internal */
120
120
  toNumeric() {
121
121
  return this.numeric;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rrule-rust",
3
- "version": "2.0.0",
3
+ "version": "2.0.1",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "keywords": [
@@ -48,20 +48,19 @@
48
48
  "@types/jest": "^29.5.0",
49
49
  "@types/luxon": "^3.4.2",
50
50
  "@types/node": "^20.12.8",
51
- "@typescript-eslint/eslint-plugin": "^5.50.0",
52
- "@typescript-eslint/parser": "^5.50.0",
51
+ "@typescript-eslint/eslint-plugin": "^7.12.0",
52
+ "@typescript-eslint/parser": "^7.12.0",
53
53
  "benny": "^3.7.1",
54
54
  "conventional-changelog-conventionalcommits": "^7.0.2",
55
55
  "cpy-cli": "^5.0.0",
56
56
  "cross-env": "^7.0.3",
57
- "eslint": "^8.33.0",
58
- "eslint-config-prettier": "^8.6.0",
57
+ "eslint": "^8.57.0",
58
+ "eslint-config-prettier": "^9.1.0",
59
59
  "eslint-plugin-eslint-comments": "^3.2.0",
60
- "eslint-plugin-import": "^2.27.5",
61
- "eslint-plugin-prettier": "^4.2.1",
60
+ "eslint-plugin-import": "^2.29.1",
61
+ "eslint-plugin-json": "^3.1.0",
62
62
  "husky": "^9.0.11",
63
63
  "jest": "^29.5.0",
64
- "lint-staged": "^15.2.2",
65
64
  "luxon": "^3.4.4",
66
65
  "mkdirp": "^3.0.1",
67
66
  "prettier": "^2.8.3",
@@ -72,10 +71,6 @@
72
71
  "ts-node": "^10.9.1",
73
72
  "typescript": "^5.4.5"
74
73
  },
75
- "lint-staged": {
76
- "**/*.{js,ts,json}": "eslint --fix --max-warnings=0",
77
- "**/*.rs": "rustfmt"
78
- },
79
74
  "engines": {
80
75
  "node": ">= 10"
81
76
  },
@@ -91,27 +86,28 @@
91
86
  "universal": "napi universal",
92
87
  "version": "napi version",
93
88
  "benchmark": "ts-node ./benchmark/index.ts",
94
- "lint": "cargo fmt --all -- --check && eslint \"**/*.{js,ts,json}\" --max-warnings=0",
95
- "lint:fix": "cargo fmt --all && npm run lint -- --fix",
96
- "lint:fix-staged": "lint-staged",
89
+ "format": "cargo fmt --all --check && prettier --check .",
90
+ "format:fix": "cargo fmt --all && prettier --write .",
91
+ "lint": "eslint \"**/*.{js,ts,json}\" --max-warnings=0",
92
+ "lint:fix": "npm run lint -- --fix",
97
93
  "prepare": "husky && npm run build"
98
94
  },
99
95
  "optionalDependencies": {
100
- "@rrule-rust/lib-win32-x64-msvc": "2.0.0",
101
- "@rrule-rust/lib-darwin-x64": "2.0.0",
102
- "@rrule-rust/lib-linux-x64-gnu": "2.0.0",
103
- "@rrule-rust/lib-darwin-arm64": "2.0.0",
104
- "@rrule-rust/lib-android-arm64": "2.0.0",
105
- "@rrule-rust/lib-linux-arm64-gnu": "2.0.0",
106
- "@rrule-rust/lib-linux-arm64-musl": "2.0.0",
107
- "@rrule-rust/lib-win32-arm64-msvc": "2.0.0",
108
- "@rrule-rust/lib-linux-arm-gnueabihf": "2.0.0",
109
- "@rrule-rust/lib-linux-arm-musleabihf": "2.0.0",
110
- "@rrule-rust/lib-linux-x64-musl": "2.0.0",
111
- "@rrule-rust/lib-freebsd-x64": "2.0.0",
112
- "@rrule-rust/lib-win32-ia32-msvc": "2.0.0",
113
- "@rrule-rust/lib-android-arm-eabi": "2.0.0",
114
- "@rrule-rust/lib-darwin-universal": "2.0.0",
115
- "@rrule-rust/lib-linux-riscv64-gnu": "2.0.0"
96
+ "@rrule-rust/lib-win32-x64-msvc": "2.0.1",
97
+ "@rrule-rust/lib-darwin-x64": "2.0.1",
98
+ "@rrule-rust/lib-linux-x64-gnu": "2.0.1",
99
+ "@rrule-rust/lib-darwin-arm64": "2.0.1",
100
+ "@rrule-rust/lib-android-arm64": "2.0.1",
101
+ "@rrule-rust/lib-linux-arm64-gnu": "2.0.1",
102
+ "@rrule-rust/lib-linux-arm64-musl": "2.0.1",
103
+ "@rrule-rust/lib-win32-arm64-msvc": "2.0.1",
104
+ "@rrule-rust/lib-linux-arm-gnueabihf": "2.0.1",
105
+ "@rrule-rust/lib-linux-arm-musleabihf": "2.0.1",
106
+ "@rrule-rust/lib-linux-x64-musl": "2.0.1",
107
+ "@rrule-rust/lib-freebsd-x64": "2.0.1",
108
+ "@rrule-rust/lib-win32-ia32-msvc": "2.0.1",
109
+ "@rrule-rust/lib-android-arm-eabi": "2.0.1",
110
+ "@rrule-rust/lib-darwin-universal": "2.0.1",
111
+ "@rrule-rust/lib-linux-riscv64-gnu": "2.0.1"
116
112
  }
117
113
  }