adofai 2.9.12 → 2.9.14
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 +186 -1
- package/dist/src/effectProcessor.d.ts +32 -0
- package/dist/src/effectProcessor.js +90 -0
- package/dist/src/effectProcessor.js.map +1 -0
- package/dist/src/format.d.ts +8 -0
- package/dist/src/format.js +47 -0
- package/dist/src/format.js.map +1 -0
- package/dist/src/index.d.ts +5 -0
- package/dist/src/index.js +49 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/parser/ArrayBufferParser.d.ts +9 -0
- package/dist/src/parser/ArrayBufferParser.js +109 -0
- package/dist/src/parser/ArrayBufferParser.js.map +1 -0
- package/dist/src/parser/BufferParser.d.ts +9 -0
- package/dist/src/parser/BufferParser.js +103 -0
- package/dist/src/parser/BufferParser.js.map +1 -0
- package/{src/parser/Parser.ts → dist/src/parser/Parser.d.ts} +5 -6
- package/dist/src/parser/Parser.js +6 -0
- package/dist/src/parser/Parser.js.map +1 -0
- package/dist/src/parser/StringParser.d.ts +7 -0
- package/{src/parser/StringParser.ts → dist/src/parser/StringParser.js} +449 -438
- package/dist/src/parser/StringParser.js.map +1 -0
- package/dist/src/parser/index.d.ts +16 -0
- package/dist/src/parser/index.js +29 -0
- package/dist/src/parser/index.js.map +1 -0
- package/{src/parser.ts → dist/src/parser.d.ts} +1 -2
- package/dist/src/parser.js +15 -0
- package/dist/src/parser.js.map +1 -0
- package/dist/src/pathdata.d.ts +13 -0
- package/dist/src/pathdata.js +17 -0
- package/dist/src/pathdata.js.map +1 -0
- package/dist/src/presets.d.ts +10 -0
- package/{src/presets.ts → dist/src/presets.js} +13 -19
- package/dist/src/presets.js.map +1 -0
- package/dist/src/structure/Level.d.ts +54 -0
- package/dist/src/structure/Level.js +388 -0
- package/dist/src/structure/Level.js.map +1 -0
- package/{src/structure/interfaces.ts → dist/src/structure/interfaces.d.ts} +33 -38
- package/dist/src/structure/interfaces.js +3 -0
- package/dist/src/structure/interfaces.js.map +1 -0
- package/{src/structure.ts → dist/src/structure.d.ts} +4 -6
- package/dist/src/structure.js +5 -0
- package/dist/src/structure.js.map +1 -0
- package/package.json +12 -4
- package/.babelrc +0 -5
- package/index.ts +0 -12
- package/src/effectProcessor.ts +0 -82
- package/src/format.ts +0 -69
- package/src/parser/ArrayBufferParser.ts +0 -101
- package/src/parser/BufferParser.ts +0 -93
- package/src/parser/index.ts +0 -28
- package/src/pathdata.ts +0 -20
- package/src/structure/Level.ts +0 -351
- package/src/structure.ts.bak +0 -412
- package/test/Buffer.js +0 -2030
- package/test/editor.html +0 -501
- package/test/index.html +0 -31
- package/tsconfig.json +0 -17
- package/webpack.config.mjs +0 -35
package/README.md
CHANGED
|
@@ -17,4 +17,189 @@ yarn add adofai
|
|
|
17
17
|
pnpm install adofai
|
|
18
18
|
```
|
|
19
19
|
|
|
20
|
-
if you want to display highlight of adofai file, you can use `Rhythm Game Syntax Highlighter` vscode extension.
|
|
20
|
+
if you want to display highlight of adofai file, you can use `Rhythm Game Syntax Highlighter` vscode extension.
|
|
21
|
+
|
|
22
|
+
## Got Started
|
|
23
|
+
|
|
24
|
+
### Import
|
|
25
|
+
|
|
26
|
+
For Commonjs:
|
|
27
|
+
```ts
|
|
28
|
+
const adofai = require('adofai');
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
For ES6 Modules:
|
|
32
|
+
```ts
|
|
33
|
+
import * as adofai from 'adofai';
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### Create a Level
|
|
37
|
+
|
|
38
|
+
```ts
|
|
39
|
+
const file = new adofai.Level(adofaiFileContent);
|
|
40
|
+
|
|
41
|
+
//or
|
|
42
|
+
|
|
43
|
+
const parser = new adofai.Parsers.StringParser();
|
|
44
|
+
const file = new adofai.Level(adofaiFileContent,parser);
|
|
45
|
+
|
|
46
|
+
//The advantage of the latter over the former is that it pre-initializes the Parser, avoiding multiple instantiations.
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Format:
|
|
50
|
+
```ts
|
|
51
|
+
class Level {
|
|
52
|
+
constructor(opt: string | LevelOptions, provider?: ParseProvider)
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
```
|
|
56
|
+
Available ParseProviders:
|
|
57
|
+
`StringParser` `ArrayBufferParser` `BufferParser`
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
Usually,only `StringParser` is needed.
|
|
61
|
+
but you can use `BufferParser` to parse ADOFAI files in Node environment.
|
|
62
|
+
|
|
63
|
+
On browser, you can also use `ArrayBuffer` to parse ADOFAI files.
|
|
64
|
+
(`BufferParser` is not available in browser,but you can use browserify `Buffer` to polyfill)
|
|
65
|
+
|
|
66
|
+
### Load Level
|
|
67
|
+
```ts
|
|
68
|
+
file.on('load'() => {
|
|
69
|
+
//logic...
|
|
70
|
+
})
|
|
71
|
+
file.load()
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
or you can use `then()`
|
|
75
|
+
```ts
|
|
76
|
+
file.load().then(() => {
|
|
77
|
+
|
|
78
|
+
})
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### Export Level
|
|
82
|
+
```ts
|
|
83
|
+
type FileType = 'string'|'object'
|
|
84
|
+
|
|
85
|
+
file.export(type: FileType = 'string',indent?:number,useAdofaiStyle:boolean = true)
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
method `export()` returns a Object or String.
|
|
89
|
+
|
|
90
|
+
Object: return ADOFAI Object.
|
|
91
|
+
String: return ADOFAI String.
|
|
92
|
+
|
|
93
|
+
```ts
|
|
94
|
+
import fs from 'fs'
|
|
95
|
+
type FileType = 'string'|'object'
|
|
96
|
+
|
|
97
|
+
const content = file.export('string',null,true);
|
|
98
|
+
fs.writeFileSync('output.adofai',content)
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
## Data Operation
|
|
103
|
+
|
|
104
|
+
See interfaces to see all data.
|
|
105
|
+
|
|
106
|
+
```ts
|
|
107
|
+
export interface AdofaiEvent {
|
|
108
|
+
eventType: string;
|
|
109
|
+
[key: string]: any;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
export interface LevelOptions {
|
|
113
|
+
pathData?: string;
|
|
114
|
+
angleData?: number[];
|
|
115
|
+
actions: AdofaiEvent[];
|
|
116
|
+
settings: Record<string, any>;
|
|
117
|
+
decorations: AdofaiEvent[];
|
|
118
|
+
[key: string]: any;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
export interface EventCallback {
|
|
122
|
+
guid: string;
|
|
123
|
+
callback: Function;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
export interface GuidCallback {
|
|
127
|
+
eventName: string;
|
|
128
|
+
callback: Function;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
export interface Tile {
|
|
132
|
+
direction?: number;
|
|
133
|
+
angle?: number;
|
|
134
|
+
actions: AdofaiEvent[];
|
|
135
|
+
addDecorations?: AdofaiEvent[];
|
|
136
|
+
_lastdir?: number;
|
|
137
|
+
twirl?: number;
|
|
138
|
+
position?: number[];
|
|
139
|
+
extraProps?: Record<string, any>;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
export interface ParseProvider {
|
|
143
|
+
parse(t: string): LevelOptions;
|
|
144
|
+
}
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
For Level:
|
|
148
|
+
|
|
149
|
+
```ts
|
|
150
|
+
import { AdofaiEvent, LevelOptions, Tile, ParseProvider } from './interfaces';
|
|
151
|
+
export declare class Level {
|
|
152
|
+
private _events;
|
|
153
|
+
private guidCallbacks;
|
|
154
|
+
private guidCounter;
|
|
155
|
+
private _options;
|
|
156
|
+
private _provider?;
|
|
157
|
+
angleData: number[];
|
|
158
|
+
actions: AdofaiEvent[];
|
|
159
|
+
settings: Record<string, any>;
|
|
160
|
+
__decorations: AdofaiEvent[];
|
|
161
|
+
tiles: Tile[];
|
|
162
|
+
private _angleDir;
|
|
163
|
+
private _twirlCount;
|
|
164
|
+
constructor(opt: string | LevelOptions, provider?: ParseProvider);
|
|
165
|
+
generateGUID(): string;
|
|
166
|
+
load(): Promise<boolean>;
|
|
167
|
+
on(eventName: string, callback: Function): string;
|
|
168
|
+
trigger(eventName: string, data: any): void;
|
|
169
|
+
off(guid: string): void;
|
|
170
|
+
private _createArray;
|
|
171
|
+
private _changeAngle;
|
|
172
|
+
private _parsechangedAngle;
|
|
173
|
+
private _filterByFloor;
|
|
174
|
+
private _flattenAngleDatas;
|
|
175
|
+
private _flattenActionsWithFloor;
|
|
176
|
+
private _filterByFloorwithDeco;
|
|
177
|
+
private _flattenDecorationsWithFloor;
|
|
178
|
+
private _parseAngle;
|
|
179
|
+
filterActionsByEventType(en: string): {
|
|
180
|
+
index: number;
|
|
181
|
+
action: AdofaiEvent;
|
|
182
|
+
}[];
|
|
183
|
+
getActionsByIndex(en: string, index: number): {
|
|
184
|
+
count: number;
|
|
185
|
+
actions: AdofaiEvent[];
|
|
186
|
+
};
|
|
187
|
+
calculateTileCoordinates(): void;
|
|
188
|
+
floorOperation(info?: {
|
|
189
|
+
type: 'append' | 'insert' | 'delete';
|
|
190
|
+
direction: number;
|
|
191
|
+
id?: number;
|
|
192
|
+
}): void;
|
|
193
|
+
appendFloor(args: {
|
|
194
|
+
direction: number;
|
|
195
|
+
}): void;
|
|
196
|
+
clearDeco(): boolean;
|
|
197
|
+
clearEffect(presetName: string): void;
|
|
198
|
+
clearEvent(preset: {
|
|
199
|
+
type: string;
|
|
200
|
+
events: string[];
|
|
201
|
+
}): void;
|
|
202
|
+
export(type: 'string' | 'object', indent?: number, useAdofaiStyle?: boolean): string | Record<string, any>;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
```
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
interface Tile {
|
|
2
|
+
addDecorations?: any[];
|
|
3
|
+
actions?: Action[];
|
|
4
|
+
[key: string]: any;
|
|
5
|
+
}
|
|
6
|
+
interface Action {
|
|
7
|
+
eventType: string;
|
|
8
|
+
[key: string]: any;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* @param {Array} tiles ADOFAI Tiles from ADOFAI.Level
|
|
12
|
+
* @returns {Array} new Tiles
|
|
13
|
+
*/
|
|
14
|
+
declare function clearDecorations(tiles: Tile[]): Tile[];
|
|
15
|
+
/**
|
|
16
|
+
* @param {Array} eventTypes Eventlist to remove
|
|
17
|
+
* @param {Array} tiles ADOFAI Tiles from ADOFAI.Level
|
|
18
|
+
* @returns {Array} new Tiles
|
|
19
|
+
*/
|
|
20
|
+
declare function clearEvents(eventTypes: string[], tiles: Tile[]): Tile[];
|
|
21
|
+
/**
|
|
22
|
+
* @param {Array} eventTypes Eventlist to keep
|
|
23
|
+
* @param {Array} tiles ADOFAI Tiles from ADOFAI.Level
|
|
24
|
+
* @returns {Array} new Tiles
|
|
25
|
+
*/
|
|
26
|
+
declare function keepEvents(eventTypes: string[], tiles: Tile[]): Tile[];
|
|
27
|
+
declare const effectProcessor: {
|
|
28
|
+
clearDecorations: typeof clearDecorations;
|
|
29
|
+
clearEvents: typeof clearEvents;
|
|
30
|
+
keepEvents: typeof keepEvents;
|
|
31
|
+
};
|
|
32
|
+
export default effectProcessor;
|
|
@@ -0,0 +1,90 @@
|
|
|
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
|
+
const presets = __importStar(require("./presets"));
|
|
37
|
+
/**
|
|
38
|
+
* @param {Array} tiles ADOFAI Tiles from ADOFAI.Level
|
|
39
|
+
* @returns {Array} new Tiles
|
|
40
|
+
*/
|
|
41
|
+
function clearDecorations(tiles) {
|
|
42
|
+
if (!Array.isArray(tiles)) {
|
|
43
|
+
throw new Error('Arguments are not supported.');
|
|
44
|
+
}
|
|
45
|
+
return tiles.map(tile => {
|
|
46
|
+
const newTile = Object.assign({}, tile);
|
|
47
|
+
if (newTile.hasOwnProperty('addDecorations')) {
|
|
48
|
+
newTile.addDecorations = [];
|
|
49
|
+
}
|
|
50
|
+
if (Array.isArray(newTile.actions)) {
|
|
51
|
+
newTile.actions = newTile.actions.filter(action => !presets.preset_inner_no_deco.events.includes(action.eventType));
|
|
52
|
+
}
|
|
53
|
+
return newTile;
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* @param {Array} eventTypes Eventlist to remove
|
|
58
|
+
* @param {Array} tiles ADOFAI Tiles from ADOFAI.Level
|
|
59
|
+
* @returns {Array} new Tiles
|
|
60
|
+
*/
|
|
61
|
+
function clearEvents(eventTypes, tiles) {
|
|
62
|
+
return tiles.map(tile => {
|
|
63
|
+
const newTile = Object.assign({}, tile);
|
|
64
|
+
if (Array.isArray(newTile.actions)) {
|
|
65
|
+
newTile.actions = newTile.actions.filter(action => !eventTypes.includes(action.eventType));
|
|
66
|
+
}
|
|
67
|
+
return newTile;
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* @param {Array} eventTypes Eventlist to keep
|
|
72
|
+
* @param {Array} tiles ADOFAI Tiles from ADOFAI.Level
|
|
73
|
+
* @returns {Array} new Tiles
|
|
74
|
+
*/
|
|
75
|
+
function keepEvents(eventTypes, tiles) {
|
|
76
|
+
return tiles.map(tile => {
|
|
77
|
+
const newTile = Object.assign({}, tile);
|
|
78
|
+
if (Array.isArray(newTile.actions)) {
|
|
79
|
+
newTile.actions = newTile.actions.filter(action => eventTypes.includes(action.eventType));
|
|
80
|
+
}
|
|
81
|
+
return newTile;
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
const effectProcessor = {
|
|
85
|
+
clearDecorations,
|
|
86
|
+
clearEvents,
|
|
87
|
+
keepEvents
|
|
88
|
+
};
|
|
89
|
+
exports.default = effectProcessor;
|
|
90
|
+
//# sourceMappingURL=effectProcessor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"effectProcessor.js","sourceRoot":"","sources":["../../src/effectProcessor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mDAAoC;AAapC;;;EAGE;AACF,SAAS,gBAAgB,CAAC,KAAa;IACrC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAClD,CAAC;IAED,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QACtB,MAAM,OAAO,qBAAQ,IAAI,CAAE,CAAC;QAE5B,IAAI,OAAO,CAAC,cAAc,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAC7C,OAAO,CAAC,cAAc,GAAG,EAAE,CAAC;QAC9B,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACnC,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAChD,CAAC,OAAO,CAAC,oBAAoB,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAChE,CAAC;QACJ,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;EAIE;AACF,SAAS,WAAW,CAAC,UAAoB,EAAE,KAAa;IACtD,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QACtB,MAAM,OAAO,qBAAQ,IAAI,CAAE,CAAC;QAC5B,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACnC,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAC/C,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CACxC,CAAC;QACJ,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;EAIE;AACF,SAAS,UAAU,CAAC,UAAoB,EAAE,KAAa;IACrD,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QACtB,MAAM,OAAO,qBAAQ,IAAI,CAAE,CAAC;QAC5B,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACnC,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAChD,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CACtC,CAAC;QACJ,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC,CAAC;AACL,CAAC;AAGD,MAAM,eAAe,GAAG;IACtB,gBAAgB;IAChB,WAAW;IACX,UAAU;CACX,CAAA;AACD,kBAAe,eAAe,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @param {object} obj - JSON Object
|
|
3
|
+
* @param {number} indent - No usage
|
|
4
|
+
* @param {boolean} isRoot - Is JSON the Root?
|
|
5
|
+
* @returns ADOFAI File Content or Object
|
|
6
|
+
*/
|
|
7
|
+
declare function exportAsADOFAI(obj: any, indent?: number, isRoot?: boolean): string;
|
|
8
|
+
export default exportAsADOFAI;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
/**
|
|
4
|
+
* @param {object} obj - JSON Object
|
|
5
|
+
* @param {number} indent - No usage
|
|
6
|
+
* @param {boolean} isRoot - Is JSON the Root?
|
|
7
|
+
* @returns ADOFAI File Content or Object
|
|
8
|
+
*/
|
|
9
|
+
function exportAsADOFAI(obj, indent = 0, isRoot = false) {
|
|
10
|
+
if (typeof obj !== 'object' || obj === null) {
|
|
11
|
+
return JSON.stringify(obj);
|
|
12
|
+
}
|
|
13
|
+
if (Array.isArray(obj)) {
|
|
14
|
+
const allPrimitives = obj.every(item => typeof item !== 'object' || item === null);
|
|
15
|
+
if (allPrimitives) {
|
|
16
|
+
return '[' + obj.map(item => exportAsADOFAI(item)).join(',') + ']';
|
|
17
|
+
}
|
|
18
|
+
const spaces = ' '.repeat(indent);
|
|
19
|
+
const arrayItems = obj.map(item => spaces + ' ' + formatAsSingleLine(item)).join(',\n');
|
|
20
|
+
return '[\n' + arrayItems + '\n' + spaces + ']';
|
|
21
|
+
}
|
|
22
|
+
const spaces = ' '.repeat(indent);
|
|
23
|
+
const keys = Object.keys(obj);
|
|
24
|
+
if (isRoot) {
|
|
25
|
+
const objectItems = keys.map(key => ' ' + JSON.stringify(key) + ': ' + exportAsADOFAI(obj[key], 2)).join(',\n');
|
|
26
|
+
return '{\n' + objectItems + '\n}';
|
|
27
|
+
}
|
|
28
|
+
const objectItems = keys.map(key => spaces + ' ' + JSON.stringify(key) + ': ' + exportAsADOFAI(obj[key], indent + 2)).join(',\n');
|
|
29
|
+
return '{\n' + objectItems + '\n' + spaces + '}';
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* @param {Array} obj Eventlist to keep
|
|
33
|
+
* @returns {string} JSON formated as singleline
|
|
34
|
+
*/
|
|
35
|
+
function formatAsSingleLine(obj) {
|
|
36
|
+
if (typeof obj !== 'object' || obj === null) {
|
|
37
|
+
return exportAsADOFAI(obj);
|
|
38
|
+
}
|
|
39
|
+
if (Array.isArray(obj)) {
|
|
40
|
+
return '[' + obj.map(formatAsSingleLine).join(',') + ']';
|
|
41
|
+
}
|
|
42
|
+
const keys = Object.keys(obj);
|
|
43
|
+
const entries = keys.map(key => JSON.stringify(key) + ': ' + formatAsSingleLine(obj[key])).join(', ');
|
|
44
|
+
return '{' + entries + '}';
|
|
45
|
+
}
|
|
46
|
+
exports.default = exportAsADOFAI;
|
|
47
|
+
//# sourceMappingURL=format.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/format.ts"],"names":[],"mappings":";;AAAA;;;;;EAKE;AACF,SAAS,cAAc,CAAC,GAAQ,EAAE,SAAiB,CAAC,EAAE,SAAkB,KAAK;IAE3E,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QAC5C,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,aAAa,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CACrC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,CAC1C,CAAC;QAEF,IAAI,aAAa,EAAE,CAAC;YAClB,OAAO,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;QACrE,CAAC;QAED,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAClC,MAAM,UAAU,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAChC,MAAM,GAAG,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,CACzC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEd,OAAO,KAAK,GAAG,UAAU,GAAG,IAAI,GAAG,MAAM,GAAG,GAAG,CAAC;IAClD,CAAC;IAED,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE9B,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CACjC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,cAAc,CAAE,GAA2B,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CACzF,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEd,OAAO,KAAK,GAAG,WAAW,GAAG,KAAK,CAAC;IACrC,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CACjC,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,cAAc,CAAE,GAA2B,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,CAC3G,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAEd,OAAO,KAAK,GAAG,WAAW,GAAG,IAAI,GAAG,MAAM,GAAG,GAAG,CAAC;AACnD,CAAC;AAED;;;EAGE;AACF,SAAS,kBAAkB,CAAC,GAAQ;IAClC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QAC5C,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IAC3D,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAC7B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,kBAAkB,CAAE,GAA2B,CAAC,GAAG,CAAC,CAAC,CACnF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,OAAO,GAAG,GAAG,OAAO,GAAG,GAAG,CAAC;AAC7B,CAAC;AAED,kBAAe,cAAc,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
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
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.Presets = exports.Structure = exports.Level = exports.Parsers = exports.pathData = void 0;
|
|
40
|
+
const pathdata_1 = __importDefault(require("./pathdata"));
|
|
41
|
+
exports.pathData = pathdata_1.default;
|
|
42
|
+
const Parsers = __importStar(require("./parser"));
|
|
43
|
+
exports.Parsers = Parsers;
|
|
44
|
+
const structure_1 = __importStar(require("./structure")), Structure = structure_1;
|
|
45
|
+
exports.Level = structure_1.default;
|
|
46
|
+
exports.Structure = Structure;
|
|
47
|
+
const Presets = __importStar(require("./presets"));
|
|
48
|
+
exports.Presets = Presets;
|
|
49
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,0DAAiC;AAM7B,mBANG,kBAAQ,CAMH;AALZ,kDAAmC;AAM/B,0BAAO;AALX,kFAA8C;AAM1C,gBANG,mBAAK,CAMH;AACL,8BAAS;AANb,mDAAoC;AAOhC,0BAAO"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import Parser from "./Parser";
|
|
2
|
+
export declare class ArrayBufferParser extends Parser<ArrayBuffer | string, any> {
|
|
3
|
+
parse(input: ArrayBuffer | string): any;
|
|
4
|
+
stringify(obj: any): string;
|
|
5
|
+
}
|
|
6
|
+
export declare function stripBOM(buffer: ArrayBuffer): ArrayBuffer;
|
|
7
|
+
export declare function normalizeJsonArrayBuffer(buffer: ArrayBuffer): ArrayBuffer;
|
|
8
|
+
export declare function decodeStringFromUTF8BOM(buffer: ArrayBuffer): string;
|
|
9
|
+
export default ArrayBufferParser;
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.ArrayBufferParser = void 0;
|
|
7
|
+
exports.stripBOM = stripBOM;
|
|
8
|
+
exports.normalizeJsonArrayBuffer = normalizeJsonArrayBuffer;
|
|
9
|
+
exports.decodeStringFromUTF8BOM = decodeStringFromUTF8BOM;
|
|
10
|
+
const Parser_1 = __importDefault(require("./Parser"));
|
|
11
|
+
const StringParser_1 = __importDefault(require("./StringParser"));
|
|
12
|
+
const BOM = new Uint8Array([0xef, 0xbb, 0xbf]);
|
|
13
|
+
const COMMA = new Uint8Array([44]); // ASCII for ','
|
|
14
|
+
class ArrayBufferParser extends Parser_1.default {
|
|
15
|
+
parse(input) {
|
|
16
|
+
if (typeof input === "string") {
|
|
17
|
+
return StringParser_1.default.prototype.parse.call(StringParser_1.default.prototype, input);
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
return StringParser_1.default.prototype.parse.call(StringParser_1.default.prototype, decodeStringFromUTF8BOM(normalizeJsonArrayBuffer(stripBOM(input))));
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
stringify(obj) {
|
|
24
|
+
return JSON.stringify(obj);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
exports.ArrayBufferParser = ArrayBufferParser;
|
|
28
|
+
function stripBOM(buffer) {
|
|
29
|
+
const view = new Uint8Array(buffer);
|
|
30
|
+
if (view.length >= 3 && view[0] === BOM[0] && view[1] === BOM[1] && view[2] === BOM[2]) {
|
|
31
|
+
return buffer.slice(3);
|
|
32
|
+
}
|
|
33
|
+
return buffer;
|
|
34
|
+
}
|
|
35
|
+
function normalizeJsonArrayBuffer(buffer) {
|
|
36
|
+
const view = new Uint8Array(buffer);
|
|
37
|
+
let builder = [];
|
|
38
|
+
let last = "other";
|
|
39
|
+
let from = 0;
|
|
40
|
+
for (let i = 0; i < view.length; i++) {
|
|
41
|
+
const charCode = view[i];
|
|
42
|
+
if (last == "escape") {
|
|
43
|
+
last = "string";
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
switch (charCode) {
|
|
47
|
+
case 34: // "
|
|
48
|
+
switch (last) {
|
|
49
|
+
case "string":
|
|
50
|
+
last = "other";
|
|
51
|
+
break;
|
|
52
|
+
case "comma":
|
|
53
|
+
builder.push(COMMA);
|
|
54
|
+
default:
|
|
55
|
+
last = "string";
|
|
56
|
+
break;
|
|
57
|
+
}
|
|
58
|
+
break;
|
|
59
|
+
case 92: // \
|
|
60
|
+
if (last === "string")
|
|
61
|
+
last = "escape";
|
|
62
|
+
break;
|
|
63
|
+
case 44: // ,
|
|
64
|
+
builder.push(view.subarray(from, i));
|
|
65
|
+
from = i + 1;
|
|
66
|
+
if (last === "other")
|
|
67
|
+
last = "comma";
|
|
68
|
+
break;
|
|
69
|
+
case 93: // ]
|
|
70
|
+
case 125: // }
|
|
71
|
+
if (last === "comma")
|
|
72
|
+
last = "other";
|
|
73
|
+
break;
|
|
74
|
+
case 9: // \t
|
|
75
|
+
case 10: // \n
|
|
76
|
+
case 11: // \v
|
|
77
|
+
case 12: // \f
|
|
78
|
+
case 13: // \r
|
|
79
|
+
case 32: // space
|
|
80
|
+
break;
|
|
81
|
+
default:
|
|
82
|
+
if (last === "comma") {
|
|
83
|
+
builder.push(COMMA);
|
|
84
|
+
last = "other";
|
|
85
|
+
}
|
|
86
|
+
break;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
builder.push(view.subarray(from));
|
|
91
|
+
let totalLength = 0;
|
|
92
|
+
for (const arr of builder) {
|
|
93
|
+
totalLength += arr.length;
|
|
94
|
+
}
|
|
95
|
+
const result = new Uint8Array(totalLength);
|
|
96
|
+
let offset = 0;
|
|
97
|
+
for (const arr of builder) {
|
|
98
|
+
result.set(arr, offset);
|
|
99
|
+
offset += arr.length;
|
|
100
|
+
}
|
|
101
|
+
return result.buffer;
|
|
102
|
+
}
|
|
103
|
+
function decodeStringFromUTF8BOM(buffer) {
|
|
104
|
+
const strippedBuffer = stripBOM(buffer);
|
|
105
|
+
const decoder = new TextDecoder('utf-8');
|
|
106
|
+
return decoder.decode(strippedBuffer);
|
|
107
|
+
}
|
|
108
|
+
exports.default = ArrayBufferParser;
|
|
109
|
+
//# sourceMappingURL=ArrayBufferParser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ArrayBufferParser.js","sourceRoot":"","sources":["../../../src/parser/ArrayBufferParser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import Parser from "./Parser";
|
|
2
|
+
export declare class BufferParser extends Parser<Buffer | string, any> {
|
|
3
|
+
parse(input: Buffer | string): any;
|
|
4
|
+
stringify(obj: any): string;
|
|
5
|
+
}
|
|
6
|
+
export declare function stripBOM(buffer: Buffer): Buffer;
|
|
7
|
+
export declare function normalizeJsonBuffer(text: Buffer): Buffer;
|
|
8
|
+
export declare function decodeStringFromUTF8BOM(buffer: Buffer): string;
|
|
9
|
+
export default BufferParser;
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.BufferParser = void 0;
|
|
7
|
+
exports.stripBOM = stripBOM;
|
|
8
|
+
exports.normalizeJsonBuffer = normalizeJsonBuffer;
|
|
9
|
+
exports.decodeStringFromUTF8BOM = decodeStringFromUTF8BOM;
|
|
10
|
+
const Parser_1 = __importDefault(require("./Parser"));
|
|
11
|
+
const StringParser_1 = __importDefault(require("./StringParser"));
|
|
12
|
+
let BOM;
|
|
13
|
+
let COMMA;
|
|
14
|
+
try {
|
|
15
|
+
BOM = Buffer.of(0xef, 0xbb, 0xbf);
|
|
16
|
+
COMMA = Buffer.from(",");
|
|
17
|
+
}
|
|
18
|
+
catch (e) {
|
|
19
|
+
console.warn('Buffer is not available in current environment, try to use ArrayBufferParser');
|
|
20
|
+
BOM = { equals: () => false, subarray: () => null };
|
|
21
|
+
COMMA = { equals: () => false, subarray: () => null };
|
|
22
|
+
}
|
|
23
|
+
class BufferParser extends Parser_1.default {
|
|
24
|
+
parse(input) {
|
|
25
|
+
if (typeof input === "string") {
|
|
26
|
+
return StringParser_1.default.prototype.parse.call(StringParser_1.default.prototype, input);
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
return StringParser_1.default.prototype.parse.call(StringParser_1.default.prototype, decodeStringFromUTF8BOM(normalizeJsonBuffer(stripBOM(input))));
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
stringify(obj) {
|
|
33
|
+
return JSON.stringify(obj);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
exports.BufferParser = BufferParser;
|
|
37
|
+
function stripBOM(buffer) {
|
|
38
|
+
if (buffer.length >= 3 && BOM.equals(buffer.subarray(0, 3))) {
|
|
39
|
+
return buffer.subarray(3);
|
|
40
|
+
}
|
|
41
|
+
return buffer;
|
|
42
|
+
}
|
|
43
|
+
function normalizeJsonBuffer(text) {
|
|
44
|
+
let builder = [];
|
|
45
|
+
let last = "other";
|
|
46
|
+
let from = 0;
|
|
47
|
+
text.forEach((charCode, i) => {
|
|
48
|
+
if (last == "escape") {
|
|
49
|
+
last = "string";
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
switch (charCode) {
|
|
53
|
+
case 34:
|
|
54
|
+
switch (last) {
|
|
55
|
+
case "string":
|
|
56
|
+
last = "other";
|
|
57
|
+
break;
|
|
58
|
+
case "comma":
|
|
59
|
+
builder.push(COMMA);
|
|
60
|
+
default:
|
|
61
|
+
last = "string";
|
|
62
|
+
break;
|
|
63
|
+
}
|
|
64
|
+
break;
|
|
65
|
+
case 92:
|
|
66
|
+
if (last === "string")
|
|
67
|
+
last = "escape";
|
|
68
|
+
break;
|
|
69
|
+
case 44:
|
|
70
|
+
builder.push(text.subarray(from, i));
|
|
71
|
+
from = i + 1;
|
|
72
|
+
if (last === "other")
|
|
73
|
+
last = "comma";
|
|
74
|
+
break;
|
|
75
|
+
case 93:
|
|
76
|
+
case 125:
|
|
77
|
+
if (last === "comma")
|
|
78
|
+
last = "other";
|
|
79
|
+
break;
|
|
80
|
+
case 9:
|
|
81
|
+
case 10:
|
|
82
|
+
case 11:
|
|
83
|
+
case 12:
|
|
84
|
+
case 13:
|
|
85
|
+
case 32:
|
|
86
|
+
break;
|
|
87
|
+
default:
|
|
88
|
+
if (last === "comma") {
|
|
89
|
+
builder.push(COMMA);
|
|
90
|
+
last = "other";
|
|
91
|
+
}
|
|
92
|
+
break;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
builder.push(text.subarray(from));
|
|
97
|
+
return Buffer.concat(builder);
|
|
98
|
+
}
|
|
99
|
+
function decodeStringFromUTF8BOM(buffer) {
|
|
100
|
+
return stripBOM(buffer).toString("utf-8");
|
|
101
|
+
}
|
|
102
|
+
exports.default = BufferParser;
|
|
103
|
+
//# sourceMappingURL=BufferParser.js.map
|