tja-parser 0.1.0 → 0.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.
Files changed (49) hide show
  1. package/dist/class/Bar.d.ts +25 -0
  2. package/dist/class/Bar.d.ts.map +1 -0
  3. package/dist/class/Bar.js +96 -0
  4. package/dist/class/Bar.js.map +1 -0
  5. package/dist/class/BarLine.d.ts +14 -0
  6. package/dist/class/BarLine.d.ts.map +1 -0
  7. package/dist/class/BarLine.js +26 -0
  8. package/dist/class/BarLine.js.map +1 -0
  9. package/dist/class/Branch.d.ts +27 -0
  10. package/dist/class/Branch.d.ts.map +1 -0
  11. package/dist/class/Branch.js +38 -0
  12. package/dist/class/Branch.js.map +1 -0
  13. package/dist/class/Command.d.ts +65 -0
  14. package/dist/class/Command.d.ts.map +1 -0
  15. package/dist/class/Command.js +172 -0
  16. package/dist/class/Command.js.map +1 -0
  17. package/dist/class/Course.d.ts +47 -0
  18. package/dist/class/Course.d.ts.map +1 -0
  19. package/dist/class/Course.js +396 -0
  20. package/dist/class/Course.js.map +1 -0
  21. package/dist/class/Item.d.ts +12 -0
  22. package/dist/class/Item.d.ts.map +1 -0
  23. package/dist/class/Item.js +59 -0
  24. package/dist/class/Item.js.map +1 -0
  25. package/dist/class/Note.d.ts +88 -0
  26. package/dist/class/Note.d.ts.map +1 -0
  27. package/dist/class/Note.js +188 -0
  28. package/dist/class/Note.js.map +1 -0
  29. package/dist/class/Song.d.ts +31 -0
  30. package/dist/class/Song.d.ts.map +1 -0
  31. package/dist/class/Song.js +72 -0
  32. package/dist/class/Song.js.map +1 -0
  33. package/dist/exception/ParseException.d.ts +12 -0
  34. package/dist/exception/ParseException.d.ts.map +1 -0
  35. package/dist/exception/ParseException.js +26 -0
  36. package/dist/exception/ParseException.js.map +1 -0
  37. package/dist/exception/TjaException.d.ts +3 -0
  38. package/dist/exception/TjaException.d.ts.map +1 -0
  39. package/dist/exception/TjaException.js +8 -0
  40. package/dist/exception/TjaException.js.map +1 -0
  41. package/dist/index.d.ts +4 -0
  42. package/dist/index.d.ts.map +1 -0
  43. package/dist/index.js +19 -0
  44. package/dist/index.js.map +1 -0
  45. package/dist/types.d.ts +2 -0
  46. package/dist/types.d.ts.map +1 -0
  47. package/dist/types.js +3 -0
  48. package/dist/types.js.map +1 -0
  49. package/package.json +2 -1
@@ -0,0 +1,188 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.RollEndNote = exports.EmptyNote = exports.BalloonNote = exports.RollNote = exports.HitNote = exports.Note = void 0;
37
+ const Item_js_1 = require("./Item.js");
38
+ const math = __importStar(require("mathjs"));
39
+ class Note extends Item_js_1.Item {
40
+ static parse(char) {
41
+ if (char === "0") {
42
+ return new EmptyNote(Note.Type.EMPTY, math.fraction(0), math.fraction(0));
43
+ }
44
+ else if (char === "1") {
45
+ return new HitNote(Note.Type.DON_SMALL, math.fraction(0), math.fraction(0));
46
+ }
47
+ else if (char === "2") {
48
+ return new HitNote(Note.Type.KA_SMALL, math.fraction(0), math.fraction(0));
49
+ }
50
+ else if (char === "3") {
51
+ return new HitNote(Note.Type.DON_BIG, math.fraction(0), math.fraction(0));
52
+ }
53
+ else if (char === "4") {
54
+ return new HitNote(Note.Type.KA_BIG, math.fraction(0), math.fraction(0));
55
+ }
56
+ else if (char === "5") {
57
+ return new RollNote(Note.Type.ROLL_SMALL, math.fraction(0), math.fraction(0), math.fraction(0));
58
+ }
59
+ else if (char === "6") {
60
+ return new RollNote(Note.Type.ROLL_BIG, math.fraction(0), math.fraction(0), math.fraction(0));
61
+ }
62
+ else if (char === "7") {
63
+ return new BalloonNote(0, math.fraction(0), math.fraction(0), math.fraction(0));
64
+ }
65
+ else if (char === "8") {
66
+ return new RollEndNote(math.fraction(0), math.fraction(0));
67
+ }
68
+ return null;
69
+ }
70
+ type;
71
+ delay;
72
+ scroll = 1;
73
+ bpm = 160;
74
+ noteLength = 1;
75
+ constructor(type, timing, delay) {
76
+ super(timing);
77
+ this.type = type;
78
+ this.delay = delay;
79
+ }
80
+ getScroll() {
81
+ return this.scroll;
82
+ }
83
+ setScroll(scroll) {
84
+ this.scroll = scroll;
85
+ }
86
+ getBPM() {
87
+ return this.bpm;
88
+ }
89
+ setBpm(bpm) {
90
+ this.bpm = bpm;
91
+ }
92
+ getDelay() {
93
+ return math.fraction(this.delay);
94
+ }
95
+ setDelay(delay) {
96
+ this.delay = math.fraction(delay);
97
+ }
98
+ getNoteLength() {
99
+ return this.noteLength;
100
+ }
101
+ setNoteLength(noteLength) {
102
+ this.noteLength = noteLength;
103
+ }
104
+ toJSON() {
105
+ return {
106
+ ...super.toJSON(),
107
+ type: this.type,
108
+ delay: this.delay.valueOf(),
109
+ scroll: this.scroll,
110
+ bpm: this.bpm,
111
+ noteLength: this.noteLength
112
+ };
113
+ }
114
+ }
115
+ exports.Note = Note;
116
+ (function (Note) {
117
+ let Type;
118
+ (function (Type) {
119
+ Type[Type["EMPTY"] = 0] = "EMPTY";
120
+ Type[Type["DON_SMALL"] = 1] = "DON_SMALL";
121
+ Type[Type["KA_SMALL"] = 2] = "KA_SMALL";
122
+ Type[Type["DON_BIG"] = 3] = "DON_BIG";
123
+ Type[Type["KA_BIG"] = 4] = "KA_BIG";
124
+ Type[Type["ROLL_SMALL"] = 5] = "ROLL_SMALL";
125
+ Type[Type["ROLL_BIG"] = 6] = "ROLL_BIG";
126
+ Type[Type["BALLOON"] = 7] = "BALLOON";
127
+ Type[Type["ROLL_END"] = 8] = "ROLL_END";
128
+ })(Type = Note.Type || (Note.Type = {}));
129
+ })(Note || (exports.Note = Note = {}));
130
+ class HitNote extends Note {
131
+ constructor(type, timing, delay) {
132
+ super(type, timing, delay);
133
+ }
134
+ }
135
+ exports.HitNote = HitNote;
136
+ class RollNote extends Note {
137
+ end;
138
+ constructor(type, timing, end, delay) {
139
+ super(type, timing, delay);
140
+ this.end = end;
141
+ }
142
+ getEnd() {
143
+ return math.fraction(this.end);
144
+ }
145
+ setEnd(end) {
146
+ this.end = math.fraction(end);
147
+ }
148
+ toJSON() {
149
+ return {
150
+ ...super.toJSON(),
151
+ end: this.end.valueOf()
152
+ };
153
+ }
154
+ }
155
+ exports.RollNote = RollNote;
156
+ class BalloonNote extends RollNote {
157
+ count;
158
+ constructor(count, timing, end, delay) {
159
+ super(Note.Type.BALLOON, timing, end, delay);
160
+ this.count = count;
161
+ }
162
+ getCount() {
163
+ return this.count;
164
+ }
165
+ setCount(count) {
166
+ this.count = count;
167
+ }
168
+ toJSON() {
169
+ return {
170
+ ...super.toJSON(),
171
+ count: this.count
172
+ };
173
+ }
174
+ }
175
+ exports.BalloonNote = BalloonNote;
176
+ class EmptyNote extends Note {
177
+ constructor(type, timing, delay) {
178
+ super(type, timing, delay);
179
+ }
180
+ }
181
+ exports.EmptyNote = EmptyNote;
182
+ class RollEndNote extends Note {
183
+ constructor(timing, delay) {
184
+ super(Note.Type.ROLL_END, timing, delay);
185
+ }
186
+ }
187
+ exports.RollEndNote = RollEndNote;
188
+ //# sourceMappingURL=Note.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Note.js","sourceRoot":"","sources":["../../src/class/Note.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAiC;AACjC,6CAA+B;AAE/B,MAAsB,IAAK,SAAQ,cAAI;IACnC,MAAM,CAAC,KAAK,CAAC,IAAY;QACrB,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACf,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9E,CAAC;aACI,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACpB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAChF,CAAC;aACI,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACpB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/E,CAAC;aACI,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACpB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9E,CAAC;aACI,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACpB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7E,CAAC;aACI,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACpB,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACpG,CAAC;aACI,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACpB,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAClG,CAAC;aACI,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACpB,OAAO,IAAI,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACpF,CAAC;aACI,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACpB,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/D,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAES,IAAI,CAAY;IAClB,KAAK,CAAgB;IACrB,MAAM,GAAW,CAAC,CAAC;IACnB,GAAG,GAAW,GAAG,CAAC;IAClB,UAAU,GAAW,CAAC,CAAC;IAC/B,YAAY,IAAe,EAAE,MAAqB,EAAE,KAAoB;QACpE,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;IAED,SAAS;QACL,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IACD,SAAS,CAAC,MAAc;QACpB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IACD,MAAM;QACF,OAAO,IAAI,CAAC,GAAG,CAAC;IACpB,CAAC;IACD,MAAM,CAAC,GAAW;QACd,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACnB,CAAC;IACD,QAAQ;QACJ,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IACD,QAAQ,CAAC,KAAoB;QACzB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;IACD,aAAa;QACT,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IACD,aAAa,CAAC,UAAkB;QAC5B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IACjC,CAAC;IAED,MAAM;QACF,OAAO;YACH,GAAG,KAAK,CAAC,MAAM,EAAE;YACjB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;YAC3B,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,UAAU,EAAE,IAAI,CAAC,UAAU;SAC9B,CAAA;IACL,CAAC;CACJ;AA9ED,oBA8EC;AAED,WAAiB,IAAI;IACjB,IAAY,IAUX;IAVD,WAAY,IAAI;QACZ,iCAAK,CAAA;QACL,yCAAS,CAAA;QACT,uCAAQ,CAAA;QACR,qCAAO,CAAA;QACP,mCAAM,CAAA;QACN,2CAAU,CAAA;QACV,uCAAQ,CAAA;QACR,qCAAO,CAAA;QACP,uCAAQ,CAAA;IACZ,CAAC,EAVW,IAAI,GAAJ,SAAI,KAAJ,SAAI,QAUf;AAIL,CAAC,EAfgB,IAAI,oBAAJ,IAAI,QAepB;AAED,MAAa,OAAQ,SAAQ,IAAI;IAE7B,YAAY,IAAkB,EAAE,MAAqB,EAAE,KAAoB;QACvE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAC/B,CAAC;CACJ;AALD,0BAKC;AAED,MAAa,QAAS,SAAQ,IAAI;IAE9B,GAAG,CAAgB;IACnB,YAAY,IAAmB,EAAE,MAAqB,EAAE,GAAkB,EAAE,KAAoB;QAC5F,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QAC3B,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACnB,CAAC;IAED,MAAM;QACF,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC;IACD,MAAM,CAAC,GAAkB;QACrB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IAED,MAAM;QACF,OAAO;YACH,GAAG,KAAK,CAAC,MAAM,EAAE;YACjB,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE;SAC1B,CAAA;IACL,CAAC;CACJ;AArBD,4BAqBC;AAED,MAAa,WAAY,SAAQ,QAAQ;IAE7B,KAAK,CAAS;IACtB,YAAY,KAAa,EAAE,MAAqB,EAAE,GAAkB,EAAE,KAAoB;QACtF,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;QAC7C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;IAED,QAAQ;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IACD,QAAQ,CAAC,KAAa;QAClB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;IAED,MAAM;QACF,OAAO;YACH,GAAG,KAAK,CAAC,MAAM,EAAE;YACjB,KAAK,EAAE,IAAI,CAAC,KAAK;SACpB,CAAA;IACL,CAAC;CACJ;AArBD,kCAqBC;AAKD,MAAa,SAAU,SAAQ,IAAI;IAE/B,YAAY,IAAqB,EAAE,MAAqB,EAAE,KAAoB;QAC1E,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAC/B,CAAC;CACJ;AALD,8BAKC;AAKD,MAAa,WAAY,SAAQ,IAAI;IAEjC,YAAY,MAAqB,EAAE,KAAoB;QACnD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAC7C,CAAC;CACJ;AALD,kCAKC"}
@@ -0,0 +1,31 @@
1
+ import { Course } from './Course.js';
2
+ import type { Difficulty } from '../types.js';
3
+ export declare class Song {
4
+ static parse(tja: string): Song;
5
+ static parseMetadata(line: string): {
6
+ key: string;
7
+ value: string;
8
+ };
9
+ metadata: Song.Metadata;
10
+ course: Partial<Record<Difficulty, Course>>;
11
+ constructor(metadata: Song.Metadata);
12
+ getBPM(): number;
13
+ toJSON(): {
14
+ metadata: Song.Metadata;
15
+ course: Partial<Record<Difficulty, Course>>;
16
+ };
17
+ }
18
+ export declare namespace Song {
19
+ class Metadata {
20
+ title?: string;
21
+ subtitle?: string;
22
+ bpm?: number;
23
+ offset?: number;
24
+ wave?: string;
25
+ songvol?: number;
26
+ sevol?: number;
27
+ demostart?: number;
28
+ [key: string]: string | number | undefined;
29
+ }
30
+ }
31
+ //# sourceMappingURL=Song.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Song.d.ts","sourceRoot":"","sources":["../../src/class/Song.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAG9C,qBAAa,IAAI;IAIb,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IA+B/B,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;IAalE,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC;IACxB,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAM;gBAErC,QAAQ,EAAE,IAAI,CAAC,QAAQ;IAQnC,MAAM;IAIN,MAAM;;;;CAMT;AAED,yBAAiB,IAAI,CAAC;IAClB,MAAa,QAAQ;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;KAC9C;CACJ"}
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Song = void 0;
4
+ const Course_js_1 = require("./Course.js");
5
+ const ParseException_js_1 = require("../exception/ParseException.js");
6
+ class Song {
7
+ static parse(tja) {
8
+ const lines = tja.split('\n').map((e) => e.trim()).filter((e) => e);
9
+ const metadata = new this.Metadata();
10
+ const song = new Song(metadata);
11
+ let i = 0;
12
+ for (; i < lines.length; i++) {
13
+ if (lines[i].startsWith('COURSE')) {
14
+ break;
15
+ }
16
+ const parsedMetadata = this.parseMetadata(lines[i]);
17
+ metadata[parsedMetadata.key] = parsedMetadata.value;
18
+ }
19
+ let courseTja = [];
20
+ for (; i < lines.length; i++) {
21
+ courseTja.push(lines[i]);
22
+ if (lines[i].startsWith('#END')) {
23
+ const course = Course_js_1.Course.parse(courseTja, song);
24
+ song.course[course.difficulty] = course;
25
+ courseTja = [];
26
+ }
27
+ }
28
+ ;
29
+ return song;
30
+ }
31
+ static parseMetadata(line) {
32
+ const colonIndex = line.indexOf(':');
33
+ if (colonIndex < 0) {
34
+ throw new ParseException_js_1.MetadataParseException(line);
35
+ }
36
+ const key = line.slice(0, colonIndex).toLowerCase();
37
+ const value = line.slice(colonIndex + 1);
38
+ return {
39
+ key: key.trim(),
40
+ value: value.trim()
41
+ };
42
+ }
43
+ metadata;
44
+ course = {};
45
+ constructor(metadata) {
46
+ this.metadata = metadata;
47
+ }
48
+ getBPM() {
49
+ return Number(this.metadata.bpm) || 160;
50
+ }
51
+ toJSON() {
52
+ return {
53
+ metadata: this.metadata,
54
+ course: this.course
55
+ };
56
+ }
57
+ }
58
+ exports.Song = Song;
59
+ (function (Song) {
60
+ class Metadata {
61
+ title;
62
+ subtitle;
63
+ bpm;
64
+ offset;
65
+ wave;
66
+ songvol;
67
+ sevol;
68
+ demostart;
69
+ }
70
+ Song.Metadata = Metadata;
71
+ })(Song || (exports.Song = Song = {}));
72
+ //# sourceMappingURL=Song.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Song.js","sourceRoot":"","sources":["../../src/class/Song.ts"],"names":[],"mappings":";;;AAAA,2CAAqC;AAErC,sEAAwE;AAExE,MAAa,IAAI;IAIb,MAAM,CAAC,KAAK,CAAC,GAAW;QACpB,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QAEpE,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEhC,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3B,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAChC,MAAM;YACV,CAAC;YACD,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACpD,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC;QACxD,CAAC;QAED,IAAI,SAAS,GAAa,EAAE,CAAC;QAC7B,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3B,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACzB,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC9B,MAAM,MAAM,GAAG,kBAAM,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;gBAC7C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC;gBACxC,SAAS,GAAG,EAAE,CAAC;YACnB,CAAC;QACL,CAAC;QAAA,CAAC;QAEF,OAAO,IAAI,CAAC;IAChB,CAAC;IAKD,MAAM,CAAC,aAAa,CAAC,IAAY;QAC7B,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;YACjB,MAAM,IAAI,0CAAsB,CAAC,IAAI,CAAC,CAAC;QAC3C,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;QACpD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;QACzC,OAAO;YACH,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE;YACf,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE;SACtB,CAAA;IACL,CAAC;IAED,QAAQ,CAAgB;IACxB,MAAM,GAAwC,EAAE,CAAC;IAEjD,YAAY,QAAuB;QAC/B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;IAMD,MAAM;QACF,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;IAC5C,CAAC;IAED,MAAM;QACF,OAAO;YACH,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,MAAM,EAAE,IAAI,CAAC,MAAM;SACtB,CAAA;IACL,CAAC;CACJ;AArED,oBAqEC;AAED,WAAiB,IAAI;IACjB,MAAa,QAAQ;QACjB,KAAK,CAAU;QACf,QAAQ,CAAU;QAClB,GAAG,CAAU;QACb,MAAM,CAAU;QAChB,IAAI,CAAU;QACd,OAAO,CAAU;QACjB,KAAK,CAAU;QACf,SAAS,CAAU;KAEtB;IAVY,aAAQ,WAUpB,CAAA;AACL,CAAC,EAZgB,IAAI,oBAAJ,IAAI,QAYpB"}
@@ -0,0 +1,12 @@
1
+ import { TjaException } from './TjaException.js';
2
+ export declare class ParseException extends TjaException {
3
+ line?: string;
4
+ constructor(line?: string);
5
+ }
6
+ export declare class MetadataParseException extends ParseException {
7
+ }
8
+ export declare class CourseParseException extends ParseException {
9
+ }
10
+ export declare class UnknownCourseDifficultyException extends CourseParseException {
11
+ }
12
+ //# sourceMappingURL=ParseException.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ParseException.d.ts","sourceRoot":"","sources":["../../src/exception/ParseException.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,qBAAa,cAAe,SAAQ,YAAY;IAC5C,IAAI,CAAC,EAAE,MAAM,CAAC;gBAEF,IAAI,CAAC,EAAE,MAAM;CAI5B;AACD,qBAAa,sBAAuB,SAAQ,cAAc;CAAI;AAC9D,qBAAa,oBAAqB,SAAQ,cAAc;CAAI;AAC5D,qBAAa,gCAAiC,SAAQ,oBAAoB;CAAI"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UnknownCourseDifficultyException = exports.CourseParseException = exports.MetadataParseException = exports.ParseException = void 0;
4
+ const TjaException_js_1 = require("./TjaException.js");
5
+ class ParseException extends TjaException_js_1.TjaException {
6
+ line;
7
+ constructor(line) {
8
+ super();
9
+ this.line = line;
10
+ }
11
+ }
12
+ exports.ParseException = ParseException;
13
+ ;
14
+ class MetadataParseException extends ParseException {
15
+ }
16
+ exports.MetadataParseException = MetadataParseException;
17
+ ;
18
+ class CourseParseException extends ParseException {
19
+ }
20
+ exports.CourseParseException = CourseParseException;
21
+ ;
22
+ class UnknownCourseDifficultyException extends CourseParseException {
23
+ }
24
+ exports.UnknownCourseDifficultyException = UnknownCourseDifficultyException;
25
+ ;
26
+ //# sourceMappingURL=ParseException.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ParseException.js","sourceRoot":"","sources":["../../src/exception/ParseException.ts"],"names":[],"mappings":";;;AAAA,uDAAiD;AAEjD,MAAa,cAAe,SAAQ,8BAAY;IAC5C,IAAI,CAAU;IAEd,YAAY,IAAa;QACrB,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC;CACJ;AAPD,wCAOC;AAAA,CAAC;AACF,MAAa,sBAAuB,SAAQ,cAAc;CAAI;AAA9D,wDAA8D;AAAA,CAAC;AAC/D,MAAa,oBAAqB,SAAQ,cAAc;CAAI;AAA5D,oDAA4D;AAAA,CAAC;AAC7D,MAAa,gCAAiC,SAAQ,oBAAoB;CAAI;AAA9E,4EAA8E;AAAA,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare class TjaException {
2
+ }
3
+ //# sourceMappingURL=TjaException.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TjaException.d.ts","sourceRoot":"","sources":["../../src/exception/TjaException.ts"],"names":[],"mappings":"AAAA,qBAAa,YAAY;CAAE"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TjaException = void 0;
4
+ class TjaException {
5
+ }
6
+ exports.TjaException = TjaException;
7
+ ;
8
+ //# sourceMappingURL=TjaException.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TjaException.js","sourceRoot":"","sources":["../../src/exception/TjaException.ts"],"names":[],"mappings":";;;AAAA,MAAa,YAAY;CAAE;AAA3B,oCAA2B;AAAA,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from './class/Song.js';
2
+ export * from './class/Course.js';
3
+ export type * from './types.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAElC,mBAAmB,YAAY,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./class/Song.js"), exports);
18
+ __exportStar(require("./class/Course.js"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAAgC;AAChC,oDAAkC"}
@@ -0,0 +1,2 @@
1
+ export type Difficulty = 'easy' | 'normal' | 'hard' | 'oni' | 'edit';
2
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC"}
package/dist/types.js ADDED
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -3,10 +3,11 @@
3
3
  "author": {
4
4
  "name": "hotsixman"
5
5
  },
6
- "version": "0.1.0",
6
+ "version": "0.1.1",
7
7
  "dependencies": {
8
8
  "mathjs": "^15.1.0"
9
9
  },
10
+ "main": "./dist/index.js",
10
11
  "devDependencies": {
11
12
  "@types/bun": "^1.3.4",
12
13
  "@types/node": "^25.0.0"