@operato/scene-restful 1.1.23 → 1.1.26

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/CHANGELOG.md CHANGED
@@ -3,6 +3,15 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ### [1.1.26](https://github.com/things-scene/operato-scene/compare/v1.1.25...v1.1.26) (2023-01-11)
7
+
8
+
9
+ ### :bug: Bug Fix
10
+
11
+ * reinvent scene-restful component ([91097d0](https://github.com/things-scene/operato-scene/commit/91097d0c20948c0cdfd31e47a24f621613c4870a))
12
+
13
+
14
+
6
15
  ### [1.1.23](https://github.com/things-scene/operato-scene/compare/v1.1.22...v1.1.23) (2022-12-18)
7
16
 
8
17
 
Binary file
Binary file
package/dist/restful.d.ts CHANGED
@@ -7,29 +7,22 @@ declare const Restful_base: (new (...args: any[]) => {
7
7
  export default class Restful extends Restful_base {
8
8
  static _image: HTMLImageElement;
9
9
  static get image(): HTMLImageElement;
10
+ private _repeatTimer;
11
+ private _isStarted;
10
12
  get url(): any;
11
13
  set url(url: any);
12
14
  get period(): number;
13
15
  set period(period: number);
14
16
  get withCredentials(): boolean;
15
17
  set withCredentials(withCredentials: boolean);
16
- _repeatTimer: NodeJS.Timeout;
17
- _httpRequest?: any;
18
- _isStarted: boolean;
19
18
  get repeatTimer(): NodeJS.Timeout;
20
19
  set repeatTimer(repeatTimer: NodeJS.Timeout);
21
- get httpRequest(): any;
22
- set httpRequest(httpRequest: any);
23
20
  ready(): void;
24
21
  _initRestful(): void;
25
22
  dispose(): void;
26
23
  _startRepeater(): void;
27
24
  _stopRepeater(): void;
28
- _makeRequest(url: string): boolean;
29
- _makeRequestJsonp(url: string): void;
30
- _abortRequest(): void;
31
- onDataReceived(): void;
32
- callAjax(): void;
25
+ fetch(): Promise<void>;
33
26
  _draw(context: CanvasRenderingContext2D): void;
34
27
  ondblclick(e: Event): void;
35
28
  get controls(): never[];
package/dist/restful.js CHANGED
@@ -5,16 +5,40 @@ const NATURE = {
5
5
  resizable: true,
6
6
  rotatable: true,
7
7
  properties: [
8
+ {
9
+ type: 'select',
10
+ label: 'method',
11
+ name: 'method',
12
+ property: {
13
+ options: [
14
+ {
15
+ display: 'GET',
16
+ value: 'GET'
17
+ },
18
+ {
19
+ display: 'POST',
20
+ value: 'POST'
21
+ },
22
+ {
23
+ display: 'PUT',
24
+ value: 'PUT'
25
+ },
26
+ {
27
+ display: 'DELETE',
28
+ value: 'DELETE'
29
+ }
30
+ ]
31
+ }
32
+ },
8
33
  {
9
34
  type: 'string',
10
35
  label: 'url',
11
36
  name: 'url'
12
37
  },
13
38
  {
14
- type: 'number',
15
- label: 'period',
16
- name: 'period',
17
- placeholder: 'SECONDS'
39
+ type: 'string',
40
+ label: 'authorization',
41
+ name: 'authorization'
18
42
  },
19
43
  {
20
44
  type: 'select',
@@ -23,27 +47,181 @@ const NATURE = {
23
47
  property: {
24
48
  options: [
25
49
  {
26
- display: 'Plain Text',
50
+ display: 'json',
51
+ value: 'json'
52
+ },
53
+ {
54
+ display: 'jsonp',
55
+ value: 'jsonp'
56
+ },
57
+ {
58
+ display: 'text',
27
59
  value: 'text'
60
+ }
61
+ ]
62
+ }
63
+ },
64
+ {
65
+ type: 'select',
66
+ label: 'content-type',
67
+ name: 'contentType',
68
+ property: {
69
+ options: [
70
+ {
71
+ display: 'application/json',
72
+ value: 'application/json'
28
73
  },
29
74
  {
30
- display: 'JSON',
31
- value: 'json'
75
+ display: 'application/x-www-form-urlencoded',
76
+ value: 'application/x-www-form-urlencoded'
32
77
  },
33
78
  {
34
- display: 'JSONP',
35
- value: 'jsonp'
79
+ display: 'text/plain',
80
+ value: 'text/plain'
81
+ }
82
+ ]
83
+ }
84
+ },
85
+ {
86
+ type: 'select',
87
+ label: 'mode',
88
+ name: 'mode',
89
+ property: {
90
+ options: [
91
+ {
92
+ display: 'cors',
93
+ value: 'cors'
94
+ },
95
+ {
96
+ display: 'no-cors',
97
+ value: 'no-cors'
98
+ },
99
+ {
100
+ display: 'same-origin',
101
+ value: 'same-origin'
102
+ }
103
+ ]
104
+ }
105
+ },
106
+ {
107
+ type: 'select',
108
+ label: 'credentials',
109
+ name: 'credentials',
110
+ property: {
111
+ options: [
112
+ {
113
+ display: 'same-origin',
114
+ value: 'same-origin'
115
+ },
116
+ {
117
+ display: 'include',
118
+ value: 'include'
119
+ },
120
+ {
121
+ display: 'omit',
122
+ value: 'omit'
123
+ }
124
+ ]
125
+ }
126
+ },
127
+ {
128
+ type: 'select',
129
+ label: 'cache',
130
+ name: 'cache',
131
+ property: {
132
+ options: [
133
+ {
134
+ display: 'default',
135
+ value: 'default'
136
+ },
137
+ {
138
+ display: 'no-cache',
139
+ value: 'no-cache'
140
+ },
141
+ {
142
+ display: 'reload',
143
+ value: 'reload'
144
+ },
145
+ {
146
+ display: 'force-cache',
147
+ value: 'force-cache'
148
+ },
149
+ {
150
+ display: 'only-if-cached',
151
+ value: 'only-if-cached'
152
+ }
153
+ ]
154
+ }
155
+ },
156
+ {
157
+ type: 'select',
158
+ label: 'redirect',
159
+ name: 'redirect',
160
+ property: {
161
+ options: [
162
+ {
163
+ display: 'follow',
164
+ value: 'follow'
165
+ },
166
+ {
167
+ display: 'manual',
168
+ value: 'manual'
169
+ },
170
+ {
171
+ display: 'error',
172
+ value: 'error'
173
+ }
174
+ ]
175
+ }
176
+ },
177
+ {
178
+ type: 'select',
179
+ label: 'referrer-policy',
180
+ name: 'referrerPolicy',
181
+ property: {
182
+ options: [
183
+ {
184
+ display: 'no-referrer-when-downgrade',
185
+ value: 'no-referrer-when-downgrade'
186
+ },
187
+ {
188
+ display: 'no-referrer',
189
+ value: 'no-referrer'
190
+ },
191
+ {
192
+ display: 'origin',
193
+ value: 'origin'
194
+ },
195
+ {
196
+ display: 'origin-when-cross-origin',
197
+ value: 'origin-when-cross-origin'
198
+ },
199
+ {
200
+ display: 'same-origin',
201
+ value: 'same-origin'
202
+ },
203
+ {
204
+ display: 'strict-origin',
205
+ value: 'strict-origin'
206
+ },
207
+ {
208
+ display: 'strict-origin-when-cross-origin',
209
+ value: 'strict-origin-when-cross-origin'
210
+ },
211
+ {
212
+ display: 'unsafe-url',
213
+ value: 'unsafe-url'
36
214
  }
37
215
  ]
38
216
  }
39
217
  },
40
218
  {
41
- type: 'checkbox',
42
- label: 'with-credentials',
43
- name: 'withCredentials'
219
+ type: 'number',
220
+ label: 'period',
221
+ name: 'period',
222
+ placeholder: 'SECONDS'
44
223
  }
45
224
  ],
46
- 'value-property': 'url',
47
225
  help: 'scene/component/restful'
48
226
  };
49
227
  const REST_IMAGE = 'data:image/png;base64,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';
@@ -88,12 +266,6 @@ export default class Restful extends DataSource(RectPath(Shape)) {
88
266
  this._stopRepeater();
89
267
  this._repeatTimer = repeatTimer;
90
268
  }
91
- get httpRequest() {
92
- return this._httpRequest;
93
- }
94
- set httpRequest(httpRequest) {
95
- this._httpRequest = httpRequest;
96
- }
97
269
  ready() {
98
270
  this._initRestful();
99
271
  }
@@ -105,7 +277,7 @@ export default class Restful extends DataSource(RectPath(Shape)) {
105
277
  return;
106
278
  }
107
279
  this._stopRepeater();
108
- this._startRepeater();
280
+ this.period > 0 && this._startRepeater();
109
281
  }
110
282
  dispose() {
111
283
  super.dispose();
@@ -114,12 +286,11 @@ export default class Restful extends DataSource(RectPath(Shape)) {
114
286
  _startRepeater() {
115
287
  this._isStarted = true;
116
288
  var self = this;
117
- // requestAnimationFrame 이 호출되지 않을 때는 ajax 호출도 하지 않도록 함.
118
289
  function _() {
119
290
  if (!self._isStarted) {
120
291
  return;
121
292
  }
122
- self.callAjax();
293
+ self.fetch();
123
294
  if (!self.period) {
124
295
  self._stopRepeater();
125
296
  return;
@@ -131,73 +302,49 @@ export default class Restful extends DataSource(RectPath(Shape)) {
131
302
  requestAnimationFrame(_);
132
303
  }
133
304
  _stopRepeater() {
134
- this._abortRequest();
135
- if (this.repeatTimer)
136
- clearTimeout(this._repeatTimer);
137
305
  this._isStarted = false;
306
+ if (this.repeatTimer) {
307
+ clearTimeout(this._repeatTimer);
308
+ }
138
309
  }
139
- _makeRequest(url) {
140
- if (window.XMLHttpRequest) {
141
- // Mozilla, Safari, ...
142
- this.httpRequest = new XMLHttpRequest();
143
- // @ts-ignore
310
+ async fetch() {
311
+ const { url, method = 'GET', mode = 'cors', cache = 'default', credentials = 'same-origin', redirect = 'follow', referrerPolicy = 'no-referrer-when-downgrade', contentType = 'application/json', dataFormat = 'json' } = this.state;
312
+ if (dataFormat == 'jsonp') {
313
+ jsonp(url, {}, (self, data) => {
314
+ if (this._isStarted && data) {
315
+ this.data = data;
316
+ }
317
+ });
318
+ return;
144
319
  }
145
- else if (window.ActiveXObject) {
146
- // IE
147
- try {
148
- // @ts-ignore
149
- this.httpRequest = new ActiveXObject('Msxml2.XMLHTTP');
320
+ var options = {
321
+ method,
322
+ mode,
323
+ cache,
324
+ credentials,
325
+ headers: {
326
+ 'Content-Type': contentType
327
+ },
328
+ redirect,
329
+ referrerPolicy
330
+ };
331
+ if (method != 'GET' && method != 'HEAD') {
332
+ if (contentType == 'application/json') {
333
+ options.body = JSON.stringify(this.value);
150
334
  }
151
- catch (e) {
152
- try {
153
- // @ts-ignore
154
- this.httpRequest = new ActiveXObject('Microsoft.XMLHTTP');
155
- }
156
- catch (e) { }
335
+ else {
336
+ options.body = this.value;
157
337
  }
158
338
  }
159
- if (!this.httpRequest) {
160
- warn('Giving up :( Cannot create an XMLHTTP instance');
161
- return false;
162
- }
163
- this.httpRequest.withCredentials = this.withCredentials;
164
- this.httpRequest.open('GET', url);
165
- this.httpRequest.onreadystatechange = this.onDataReceived.bind(this);
166
- return true;
167
- }
168
- _makeRequestJsonp(url) {
169
- jsonp(url, {}, (self, data) => {
170
- if (!data)
171
- return;
172
- this.data = data;
173
- });
174
- }
175
- _abortRequest() {
176
- if (this.httpRequest)
177
- this.httpRequest.abort();
178
- }
179
- onDataReceived() {
180
- var { dataFormat = 'text' } = this.state;
181
- if (this.httpRequest.readyState === 4) {
182
- if (this.httpRequest.status === 200) {
183
- var data = this.httpRequest.responseText;
184
- if (!data)
185
- return;
186
- this.data = this._convertDataFormat(data, dataFormat);
187
- }
339
+ const response = await fetch(url, options);
340
+ if (!this._isStarted) {
341
+ return;
188
342
  }
189
- }
190
- callAjax() {
191
- var { dataFormat = 'text' } = this.state;
192
- if (dataFormat == 'jsonp') {
193
- // @ts-ignore TODO add substitute property to things-scene.d.ts
194
- this._makeRequestJsonp(this.substitute(this.url, this));
343
+ if (dataFormat === 'json') {
344
+ this.data = response.json();
195
345
  }
196
- else {
197
- // @ts-ignore TODO add substitute property to things-scene.d.ts
198
- if (!this._makeRequest(this.substitute(this.url, this)))
199
- return;
200
- this.httpRequest.send();
346
+ else if (dataFormat === 'text') {
347
+ this.data = response.text();
201
348
  }
202
349
  }
203
350
  _draw(context) {
@@ -210,7 +357,7 @@ export default class Restful extends DataSource(RectPath(Shape)) {
210
357
  warn(WARN_NO_URL);
211
358
  return;
212
359
  }
213
- this.callAjax();
360
+ this.fetch();
214
361
  }
215
362
  get controls() {
216
363
  return [];
@@ -1 +1 @@
1
- {"version":3,"file":"restful.js","sourceRoot":"","sources":["../src/restful.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, ComponentNature, DataSource, RectPath, Shape, warn } from '@hatiolab/things-scene'\n\nimport jsonp from './jsonp'\n\nconst NATURE: ComponentNature = {\n mutable: false,\n resizable: true,\n rotatable: true,\n properties: [\n {\n type: 'string',\n label: 'url',\n name: 'url'\n },\n {\n type: 'number',\n label: 'period',\n name: 'period',\n placeholder: 'SECONDS'\n },\n {\n type: 'select',\n label: 'data-format',\n name: 'dataFormat',\n property: {\n options: [\n {\n display: 'Plain Text',\n value: 'text'\n },\n {\n display: 'JSON',\n value: 'json'\n },\n {\n display: 'JSONP',\n value: 'jsonp'\n }\n ]\n }\n },\n {\n type: 'checkbox',\n label: 'with-credentials',\n name: 'withCredentials'\n }\n ],\n 'value-property': 'url',\n help: 'scene/component/restful'\n}\n\nconst REST_IMAGE =\n 'data:image/png;base64,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'\n\nconst WARN_NO_URL = 'Valid URL property required'\n\nexport default class Restful extends DataSource(RectPath(Shape)) {\n static _image: HTMLImageElement\n\n static get image() {\n if (!Restful._image) {\n Restful._image = new Image()\n Restful._image.src = REST_IMAGE\n }\n\n return Restful._image\n }\n\n get url() {\n return this.getState('url')\n }\n\n set url(url) {\n this.setState('url', url)\n this._initRestful()\n }\n\n get period() {\n return this.state.period * 1000\n }\n\n set period(period) {\n this.setState('period', period)\n this._initRestful()\n }\n\n get withCredentials() {\n return !!this.getState('withCredentials')\n }\n\n set withCredentials(withCredentials) {\n this.setState('withCredentials', withCredentials)\n this._initRestful()\n }\n\n _repeatTimer!: NodeJS.Timeout\n _httpRequest?: any\n _isStarted = false\n\n get repeatTimer() {\n return this._repeatTimer\n }\n\n set repeatTimer(repeatTimer) {\n this._stopRepeater()\n this._repeatTimer = repeatTimer\n }\n\n get httpRequest() {\n return this._httpRequest\n }\n\n set httpRequest(httpRequest) {\n this._httpRequest = httpRequest\n }\n\n ready() {\n this._initRestful()\n }\n\n _initRestful() {\n if (!this.app.isViewMode) return\n\n if (!this.url) {\n warn(WARN_NO_URL)\n return\n }\n\n this._stopRepeater()\n this._startRepeater()\n }\n\n dispose() {\n super.dispose()\n this._stopRepeater()\n }\n\n _startRepeater() {\n this._isStarted = true\n\n var self = this\n\n // requestAnimationFrame 이 호출되지 않을 때는 ajax 호출도 하지 않도록 함.\n function _() {\n if (!self._isStarted) {\n return\n }\n self.callAjax()\n\n if (!self.period) {\n self._stopRepeater()\n return\n }\n\n self._repeatTimer = setTimeout(() => {\n requestAnimationFrame(_)\n }, self.period)\n }\n\n requestAnimationFrame(_)\n }\n\n _stopRepeater() {\n this._abortRequest()\n\n if (this.repeatTimer) clearTimeout(this._repeatTimer)\n this._isStarted = false\n }\n\n _makeRequest(url: string) {\n if (window.XMLHttpRequest) {\n // Mozilla, Safari, ...\n this.httpRequest = new XMLHttpRequest()\n // @ts-ignore\n } else if (window.ActiveXObject) {\n // IE\n try {\n // @ts-ignore\n this.httpRequest = new ActiveXObject('Msxml2.XMLHTTP')\n } catch (e) {\n try {\n // @ts-ignore\n this.httpRequest = new ActiveXObject('Microsoft.XMLHTTP')\n } catch (e) {}\n }\n }\n\n if (!this.httpRequest) {\n warn('Giving up :( Cannot create an XMLHTTP instance')\n return false\n }\n this.httpRequest.withCredentials = this.withCredentials\n this.httpRequest.open('GET', url)\n this.httpRequest.onreadystatechange = this.onDataReceived.bind(this)\n\n return true\n }\n\n _makeRequestJsonp(url: string) {\n jsonp(url, {}, (self, data) => {\n if (!data) return\n\n this.data = data\n })\n }\n\n _abortRequest() {\n if (this.httpRequest) this.httpRequest.abort()\n }\n\n onDataReceived() {\n var { dataFormat = 'text' } = this.state\n\n if (this.httpRequest.readyState === 4) {\n if (this.httpRequest.status === 200) {\n var data = this.httpRequest.responseText\n\n if (!data) return\n\n this.data = this._convertDataFormat(data, dataFormat)\n }\n }\n }\n\n callAjax() {\n var { dataFormat = 'text' } = this.state\n\n if (dataFormat == 'jsonp') {\n // @ts-ignore TODO add substitute property to things-scene.d.ts\n this._makeRequestJsonp(this.substitute(this.url, this))\n } else {\n // @ts-ignore TODO add substitute property to things-scene.d.ts\n if (!this._makeRequest(this.substitute(this.url, this))) return\n\n this.httpRequest.send()\n }\n }\n\n _draw(context: CanvasRenderingContext2D) {\n var { left, top, width, height } = this.bounds\n\n context.beginPath()\n this.drawImage(context, Restful.image, left, top, width, height)\n }\n\n ondblclick(e: Event) {\n if (!this.url) {\n warn(WARN_NO_URL)\n return\n }\n\n this.callAjax()\n }\n\n get controls() {\n return []\n }\n\n get nature() {\n return NATURE\n }\n}\n\nComponent.register('restful', Restful)\n"]}
1
+ {"version":3,"file":"restful.js","sourceRoot":"","sources":["../src/restful.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, ComponentNature, DataSource, RectPath, Shape, warn } from '@hatiolab/things-scene'\n\nimport jsonp from './jsonp'\n\nconst NATURE: ComponentNature = {\n mutable: false,\n resizable: true,\n rotatable: true,\n properties: [\n {\n type: 'select',\n label: 'method',\n name: 'method',\n property: {\n options: [\n {\n display: 'GET',\n value: 'GET'\n },\n {\n display: 'POST',\n value: 'POST'\n },\n {\n display: 'PUT',\n value: 'PUT'\n },\n {\n display: 'DELETE',\n value: 'DELETE'\n }\n ]\n }\n },\n {\n type: 'string',\n label: 'url',\n name: 'url'\n },\n {\n type: 'string',\n label: 'authorization',\n name: 'authorization'\n },\n {\n type: 'select',\n label: 'data-format',\n name: 'dataFormat',\n property: {\n options: [\n {\n display: 'json',\n value: 'json'\n },\n {\n display: 'jsonp',\n value: 'jsonp'\n },\n {\n display: 'text',\n value: 'text'\n }\n ]\n }\n },\n {\n type: 'select',\n label: 'content-type',\n name: 'contentType',\n property: {\n options: [\n {\n display: 'application/json',\n value: 'application/json'\n },\n {\n display: 'application/x-www-form-urlencoded',\n value: 'application/x-www-form-urlencoded'\n },\n {\n display: 'text/plain',\n value: 'text/plain'\n }\n ]\n }\n },\n {\n type: 'select',\n label: 'mode',\n name: 'mode',\n property: {\n options: [\n {\n display: 'cors',\n value: 'cors'\n },\n {\n display: 'no-cors',\n value: 'no-cors'\n },\n {\n display: 'same-origin',\n value: 'same-origin'\n }\n ]\n }\n },\n {\n type: 'select',\n label: 'credentials',\n name: 'credentials',\n property: {\n options: [\n {\n display: 'same-origin',\n value: 'same-origin'\n },\n {\n display: 'include',\n value: 'include'\n },\n {\n display: 'omit',\n value: 'omit'\n }\n ]\n }\n },\n {\n type: 'select',\n label: 'cache',\n name: 'cache',\n property: {\n options: [\n {\n display: 'default',\n value: 'default'\n },\n {\n display: 'no-cache',\n value: 'no-cache'\n },\n {\n display: 'reload',\n value: 'reload'\n },\n {\n display: 'force-cache',\n value: 'force-cache'\n },\n {\n display: 'only-if-cached',\n value: 'only-if-cached'\n }\n ]\n }\n },\n {\n type: 'select',\n label: 'redirect',\n name: 'redirect',\n property: {\n options: [\n {\n display: 'follow',\n value: 'follow'\n },\n {\n display: 'manual',\n value: 'manual'\n },\n {\n display: 'error',\n value: 'error'\n }\n ]\n }\n },\n {\n type: 'select',\n label: 'referrer-policy',\n name: 'referrerPolicy',\n property: {\n options: [\n {\n display: 'no-referrer-when-downgrade',\n value: 'no-referrer-when-downgrade'\n },\n {\n display: 'no-referrer',\n value: 'no-referrer'\n },\n {\n display: 'origin',\n value: 'origin'\n },\n {\n display: 'origin-when-cross-origin',\n value: 'origin-when-cross-origin'\n },\n {\n display: 'same-origin',\n value: 'same-origin'\n },\n {\n display: 'strict-origin',\n value: 'strict-origin'\n },\n {\n display: 'strict-origin-when-cross-origin',\n value: 'strict-origin-when-cross-origin'\n },\n {\n display: 'unsafe-url',\n value: 'unsafe-url'\n }\n ]\n }\n },\n {\n type: 'number',\n label: 'period',\n name: 'period',\n placeholder: 'SECONDS'\n }\n ],\n help: 'scene/component/restful'\n}\n\nconst REST_IMAGE =\n 'data:image/png;base64,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'\n\nconst WARN_NO_URL = 'Valid URL property required'\n\nexport default class Restful extends DataSource(RectPath(Shape)) {\n static _image: HTMLImageElement\n\n static get image() {\n if (!Restful._image) {\n Restful._image = new Image()\n Restful._image.src = REST_IMAGE\n }\n\n return Restful._image\n }\n\n private _repeatTimer!: NodeJS.Timeout\n private _isStarted = false\n\n get url() {\n return this.getState('url')\n }\n\n set url(url) {\n this.setState('url', url)\n this._initRestful()\n }\n\n get period() {\n return this.state.period * 1000\n }\n\n set period(period) {\n this.setState('period', period)\n this._initRestful()\n }\n\n get withCredentials() {\n return !!this.getState('withCredentials')\n }\n\n set withCredentials(withCredentials) {\n this.setState('withCredentials', withCredentials)\n this._initRestful()\n }\n\n get repeatTimer() {\n return this._repeatTimer\n }\n\n set repeatTimer(repeatTimer) {\n this._stopRepeater()\n this._repeatTimer = repeatTimer\n }\n\n ready() {\n this._initRestful()\n }\n\n _initRestful() {\n if (!this.app.isViewMode) return\n\n if (!this.url) {\n warn(WARN_NO_URL)\n return\n }\n\n this._stopRepeater()\n this.period > 0 && this._startRepeater()\n }\n\n dispose() {\n super.dispose()\n this._stopRepeater()\n }\n\n _startRepeater() {\n this._isStarted = true\n\n var self = this\n\n function _() {\n if (!self._isStarted) {\n return\n }\n self.fetch()\n\n if (!self.period) {\n self._stopRepeater()\n return\n }\n\n self._repeatTimer = setTimeout(() => {\n requestAnimationFrame(_)\n }, self.period)\n }\n\n requestAnimationFrame(_)\n }\n\n _stopRepeater() {\n this._isStarted = false\n if (this.repeatTimer) {\n clearTimeout(this._repeatTimer)\n }\n }\n\n async fetch() {\n const {\n url,\n method = 'GET',\n mode = 'cors',\n cache = 'default',\n credentials = 'same-origin',\n redirect = 'follow',\n referrerPolicy = 'no-referrer-when-downgrade',\n contentType = 'application/json',\n dataFormat = 'json'\n } = this.state\n\n if (dataFormat == 'jsonp') {\n jsonp(url, {}, (self, data) => {\n if (this._isStarted && data) {\n this.data = data\n }\n })\n\n return\n }\n\n var options: any = {\n method,\n mode,\n cache,\n credentials,\n headers: {\n 'Content-Type': contentType\n },\n redirect,\n referrerPolicy\n }\n\n if (method != 'GET' && method != 'HEAD') {\n if (contentType == 'application/json') {\n options.body = JSON.stringify(this.value)\n } else {\n options.body = this.value\n }\n }\n\n const response = await fetch(url, options)\n\n if (!this._isStarted) {\n return\n }\n\n if (dataFormat === 'json') {\n this.data = response.json()\n } else if (dataFormat === 'text') {\n this.data = response.text()\n }\n }\n\n _draw(context: CanvasRenderingContext2D) {\n var { left, top, width, height } = this.bounds\n\n context.beginPath()\n this.drawImage(context, Restful.image, left, top, width, height)\n }\n\n ondblclick(e: Event) {\n if (!this.url) {\n warn(WARN_NO_URL)\n return\n }\n\n this.fetch()\n }\n\n get controls() {\n return []\n }\n\n get nature() {\n return NATURE\n }\n}\n\nComponent.register('restful', Restful)\n"]}
@@ -1,12 +1,14 @@
1
1
  # restful
2
- URL를 제공 받고 URL로만 데이터를 조회할 경우 사용하는 컴포넌트.
3
2
 
4
- ## properties
3
+ 브라우저의 Fetch API를 활용해서, HTTP request 기능을 제공하는 컴포넌트이다.
5
4
 
6
- - url : 데이터 조회 URL
7
- - period : 데이터 조회 주기
8
- - data format : Plain Text, JSON, JSONP등 데이터 포멧
9
- - Plain Text : 서버에서 데이터를 Plain Text로 반환할 경우 사용
10
- - JSON : 서버에서 데이터를 JSON으로 제공할 경우
11
- - JSONP : 데이터를 function형태로 전달 받을 경우 해당 function을 받아서 처리해 주는 기능
12
- - with credentials : Cross site request 설정
5
+ 호출 기능과 속성값은 아래 링크된 문서에서 참조할 수 있다.
6
+
7
+ https://developer.mozilla.org/ko/docs/Web/API/Fetch_API/Using_Fetch
8
+
9
+ 예외) dataFormat이 jsonp(JSON with Padding)인 경우에는, Fetch API를 사용하지 않는다. 이 경우에는 URL 파라미터만 의미를 갖는다.
10
+
11
+ ## value property
12
+
13
+ 이 컴포넌트의 value 속성은 HTTP request 과정에서 body나 URL parameter로 사용된다.
14
+ GET 메쏘드에서는 URL parameter로 활용되며, 그 밖의 메쏘드에서는 body에 사용된다.
@@ -1,11 +1,14 @@
1
1
  # restful
2
- A component used when a URL is provided and data is retrieved only with a URL.
3
-
4
- ## properties
5
- - url : Data inquiry URL
6
- - period : Data inquiry cycle
7
- - data format : Plain Text, JSON, JSONP Data format
8
- - Plain Text : Used when the server returns data in Plain Text.
9
- - JSON : When the server provides data as JSON
10
- - JSONP : When data is received in the form of a function, the function is received and processed.
11
- - with credentials : Cross site request
2
+
3
+ "restful" is a component that provides HTTP request function by utilizing the browser's Fetch API.
4
+
5
+ You can refer to the calling function and each property value in the document linked below.
6
+
7
+ https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch
8
+
9
+ Exception case) When dataFormat is jsonp (JSON with Padding), Fetch API is not used. In this case, only the URL parameters have meaning.
10
+
11
+ ## value property
12
+
13
+ The value property of this component is used as a body or URL parameter in the HTTP request process.
14
+ In the GET method, it is used as a URL parameter, and in other methods, it is used as the body.
@@ -1,13 +1,14 @@
1
1
  # restful
2
- 提供URL且仅通过URL检索数据时使用的组件。
3
2
 
4
- ## properties
3
+ “restful”是利用浏览器的 Fetch API 提供 HTTP 请求功能的组件。
5
4
 
6
- - 访问地址 : 数据查询网址
7
- - 周期 : 数据查询周期
8
- - 数据格式 : Plain Text,JSON,JSONP数据格式
9
- - Plain Text : 服务器以纯文本格式返回数据时使用。
10
- - JSON : 当服务器以JSON形式提供数据时
11
- - JSONP : 当以函数形式接收数据时,将接收并处理该函数。
5
+ 您可以参考下面链接的文档中的调用函数和每个属性值。
12
6
 
13
- - 允许跨网 : 是否允许跨网
7
+ https://developer.mozilla.org/zh-CN/docs/Web/API/Fetch_API/Using_Fetch
8
+
9
+ 例外)当 dataFormat 是 jsonp(带填充的 JSON)时,不使用 Fetch API。 在这种情况下,只有 URL 参数才有意义。
10
+
11
+ ## value property
12
+
13
+ 该组件的 value 属性用作 HTTP 请求过程中的正文或 URL 参数。
14
+ 在 GET 方法中,它用作 URL 参数,在其他方法中,它用作正文。
@@ -0,0 +1,20 @@
1
+ {
2
+ "keep": {
3
+ "days": true,
4
+ "amount": 2
5
+ },
6
+ "auditLog": "logs/.08636eb59927f12972f6774f5947c8507b3564c2-audit.json",
7
+ "files": [
8
+ {
9
+ "date": 1673384602553,
10
+ "name": "logs/application-2023-01-11-06.log",
11
+ "hash": "3d9686fbb35df488eba187acdab6ce4b720ff09f4f19a6539ad3638f99f2755f"
12
+ },
13
+ {
14
+ "date": 1673395277552,
15
+ "name": "logs/application-2023-01-11-09.log",
16
+ "hash": "5d6f40e1c646df1e5b0c7fcd23e354480f3d085cbab8885c5705262b2fcaf1f8"
17
+ }
18
+ ],
19
+ "hashType": "sha256"
20
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "keep": {
3
+ "days": true,
4
+ "amount": 14
5
+ },
6
+ "auditLog": "logs/.5e5d741d8b7784a2fbad65eedc0fd46946aaf6f2-audit.json",
7
+ "files": [
8
+ {
9
+ "date": 1673384603916,
10
+ "name": "logs/connections-2023-01-11-06.log",
11
+ "hash": "e4cd4d89cfbcf7a47f621cc7971532bc8b72e13820c79b04f9f131f20654aab7"
12
+ }
13
+ ],
14
+ "hashType": "sha256"
15
+ }
@@ -0,0 +1,12 @@
1
+ 2023-01-11T06:03:22+09:00 info: File Storage is Ready.
2
+ 2023-01-11T06:03:24+09:00 error: oracledb module loading failed
3
+ 2023-01-11T06:03:34+09:00 info: File Storage is Ready.
4
+ 2023-01-11T06:03:35+09:00 error: oracledb module loading failed
5
+ 2023-01-11T06:03:36+09:00 info: Default DataSource established
6
+ 2023-01-11T06:03:36+09:00 info: Transaction DataSource established
7
+ 2023-01-11T06:03:51+09:00 info: File Storage is Ready.
8
+ 2023-01-11T06:03:52+09:00 error: oracledb module loading failed
9
+ 2023-01-11T06:03:52+09:00 info: Default DataSource established
10
+ 2023-01-11T06:03:52+09:00 info: Transaction DataSource established
11
+ 2023-01-11T06:03:53+09:00 info: 🚀 Server ready at http://0.0.0.0:3000/graphql
12
+ 2023-01-11T06:03:53+09:00 info: 🚀 Subscriptions ready at ws://0.0.0.0:3000/graphql