cotomy 0.1.59 → 0.1.62

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.
@@ -0,0 +1,383 @@
1
+ import dayjs from "dayjs";
2
+ import { StatusCodes } from "http-status-codes";
3
+ import { CotomyApi, CotomyApiException, CotomyApiResponse, CotomyBracketBindNameGenerator, CotomyNotFoundException, CotomyViewRenderer } from "./api";
4
+ import { CotomyDebugFeature, CotomyDebugSettings } from "./debug";
5
+ import { CotomyElement, CotomyWindow } from "./view";
6
+ export class CotomyForm extends CotomyElement {
7
+ generateId(prefix = "__cotomy_form__") {
8
+ return super.generateId(prefix);
9
+ }
10
+ method() {
11
+ return this.attribute("method") ?? "get";
12
+ }
13
+ actionUrl() {
14
+ return this.attribute("action") ?? location.pathname + location.search;
15
+ }
16
+ async reloadAsync() {
17
+ CotomyWindow.instance.reload();
18
+ }
19
+ get autoReload() {
20
+ return this.attribute("data-cotomy-autoreload") !== "false";
21
+ }
22
+ set autoReload(value) {
23
+ if (value) {
24
+ this.attribute("data-cotomy-autoreload", null);
25
+ }
26
+ else {
27
+ this.attribute("data-cotomy-autoreload", "false");
28
+ }
29
+ }
30
+ get initialized() {
31
+ return this.hasAttribute("data-cotomy-initialized");
32
+ }
33
+ initialize() {
34
+ if (!this.initialized) {
35
+ this.on("submit", async (e) => {
36
+ e.preventDefault();
37
+ e.stopPropagation();
38
+ await this.submitAsync();
39
+ });
40
+ this.attribute("data-cotomy-initialized", "");
41
+ }
42
+ return this;
43
+ }
44
+ }
45
+ export class CotomyQueryForm extends CotomyForm {
46
+ method() {
47
+ return "get";
48
+ }
49
+ async submitAsync() {
50
+ const url = this.actionUrl();
51
+ const queryParams = {};
52
+ const queryString = url.split("?")[1];
53
+ if (queryString) {
54
+ queryString.split("&").forEach(param => {
55
+ const [key, value] = param.split("=");
56
+ if (key && value) {
57
+ queryParams[key] = decodeURIComponent(value);
58
+ }
59
+ });
60
+ }
61
+ this.find("[name]").forEach(input => {
62
+ const name = input.attribute("name");
63
+ if (name) {
64
+ const value = input.value;
65
+ if (value) {
66
+ queryParams[name] = encodeURIComponent(value);
67
+ }
68
+ else {
69
+ delete queryParams[name];
70
+ }
71
+ }
72
+ });
73
+ const newQueryString = Object.entries(queryParams)
74
+ .map(([key, value]) => `${key}=${value}`)
75
+ .join("&");
76
+ location.href = `${url.split("?")[0]}?${newQueryString}`;
77
+ }
78
+ }
79
+ export class CotomyApiFailedEvent extends Event {
80
+ constructor(_response, eventName = "cotomy:apifailed") {
81
+ super(eventName, { bubbles: true, cancelable: true });
82
+ this._response = _response;
83
+ }
84
+ get response() {
85
+ return this._response;
86
+ }
87
+ }
88
+ export class CotomyApiForm extends CotomyForm {
89
+ apiClient() {
90
+ return new CotomyApi();
91
+ }
92
+ actionUrl() {
93
+ return this.attribute("action");
94
+ }
95
+ apiFailed(handle) {
96
+ this.on("cotomy:apifailed", async (e) => {
97
+ await handle(e);
98
+ });
99
+ return this;
100
+ }
101
+ triggerApiFailedEvent(response) {
102
+ this.trigger("cotomy:apifailed", new CotomyApiFailedEvent(response));
103
+ if (CotomyDebugSettings.isEnabled(CotomyDebugFeature.Api)) {
104
+ console.error("API request failed:", response);
105
+ }
106
+ }
107
+ submitFailed(handle) {
108
+ this.on("cotomy:submitfailed", async (e) => {
109
+ await handle(e);
110
+ });
111
+ return this;
112
+ }
113
+ triggerSubmitFailedEvent(response) {
114
+ this.trigger("cotomy:submitfailed", new CotomyApiFailedEvent(response, "cotomy:submitfailed"));
115
+ if (CotomyDebugSettings.isEnabled(CotomyDebugFeature.Api)) {
116
+ console.error("Submit failed:", response);
117
+ }
118
+ }
119
+ method() {
120
+ return this.attribute("method") ?? "post";
121
+ }
122
+ formData() {
123
+ const formElement = this.element;
124
+ const formData = new FormData(formElement);
125
+ this.find("input[type=datetime-local][name]:not([disabled])").forEach(input => {
126
+ const localDateTime = input.value;
127
+ if (localDateTime) {
128
+ const date = new Date(localDateTime);
129
+ if (!isNaN(date.getTime())) {
130
+ formData.set(input.attribute("name"), dayjs(date).format("YYYY-MM-DDTHH:mmZ"));
131
+ }
132
+ }
133
+ });
134
+ if (CotomyDebugSettings.isEnabled(CotomyDebugFeature.FormData)) {
135
+ console.debug("FormData:", Array.from(formData.entries()));
136
+ }
137
+ return formData;
138
+ }
139
+ ;
140
+ async submitAsync() {
141
+ const formData = this.formData();
142
+ await this.submitToApiAsync(formData);
143
+ }
144
+ async submitToApiAsync(formData) {
145
+ const api = this.apiClient();
146
+ try {
147
+ const response = await api.submitAsync({
148
+ method: this.method(),
149
+ action: this.actionUrl(),
150
+ body: formData,
151
+ });
152
+ return response;
153
+ }
154
+ catch (error) {
155
+ if (error instanceof CotomyApiException) {
156
+ this.triggerApiFailedEvent(error.response);
157
+ this.triggerSubmitFailedEvent(error.response);
158
+ }
159
+ throw error;
160
+ }
161
+ }
162
+ }
163
+ export class CotomyEntityApiForm extends CotomyApiForm {
164
+ actionUrl() {
165
+ const base = this.attribute("action");
166
+ const keys = this.externalKey ? [this.externalKey] : this.pathKeyInputs.map(e => encodeURIComponent(e.value));
167
+ return `${base}/${keys.join("/")}`;
168
+ }
169
+ method() {
170
+ if (this.hasAttribute("method") && this.attribute("method") !== "") {
171
+ return this.attribute("method");
172
+ }
173
+ if (this.externalKey)
174
+ return "put";
175
+ if (this.pathKeyInputs.length > 0 && this.pathKeyInputs.every(e => e.readonly))
176
+ return "put";
177
+ if (this.keyInputs.length > 0 && this.keyInputs.every(e => e.readonly))
178
+ return "put";
179
+ return "post";
180
+ }
181
+ get externalKey() {
182
+ return this.attribute("data-cotomy-key") || undefined;
183
+ }
184
+ setExternalKey(response) {
185
+ if (this.requiresExternalKey && response.status === StatusCodes.CREATED) {
186
+ if (this.hasExternalKey) {
187
+ if (CotomyDebugSettings.isEnabled(CotomyDebugFeature.FormLoad)) {
188
+ console.warn("External key already exists, but server responded with 201 Created. Possible duplicate POST.");
189
+ }
190
+ return;
191
+ }
192
+ const location = response.headers.get("Location");
193
+ if (!location)
194
+ return;
195
+ const normalize = (url) => {
196
+ const s = url.replace(/[?#].*$/, "");
197
+ return s.endsWith("/") ? s.slice(0, -1) : s;
198
+ };
199
+ const toPath = (u) => {
200
+ try {
201
+ return new URL(u, location).pathname;
202
+ }
203
+ catch {
204
+ return u;
205
+ }
206
+ };
207
+ const baseAction = normalize(toPath(this.attribute("action")));
208
+ const locPath = normalize(toPath(location));
209
+ const actionParts = baseAction.split("/");
210
+ const locationParts = locPath.split("/");
211
+ const isPrefix = locationParts.length >= actionParts.length && actionParts.every((p, i) => p === locationParts[i]);
212
+ if (!isPrefix) {
213
+ throw new Error(`Location path does not start with action path. action="${baseAction}", location="${locPath}"`);
214
+ }
215
+ const addedParts = locationParts.slice(actionParts.length).filter(Boolean);
216
+ if (addedParts.length === 1 && addedParts[0]) {
217
+ this.attribute("data-cotomy-key", addedParts[0]);
218
+ }
219
+ else {
220
+ const msg = `Location does not contain a single external key segment.
221
+ action="${baseAction}", location="${locPath}", added=["${addedParts.join('","')}"]`;
222
+ throw new Error(msg);
223
+ }
224
+ }
225
+ }
226
+ get requiresExternalKey() {
227
+ return this.attribute("data-cotomy-identify") !== "false" && this.keyInputs.length == 0 && this.pathKeyInputs.length == 0;
228
+ }
229
+ get hasExternalKey() {
230
+ return !!this.externalKey;
231
+ }
232
+ get pathKeyInputs() {
233
+ return this.find("[data-cotomy-keyindex]").sort((a, b) => {
234
+ const aIndex = parseInt(a.attribute("data-cotomy-keyindex") ?? "0");
235
+ const bIndex = parseInt(b.attribute("data-cotomy-keyindex") ?? "0");
236
+ return aIndex - bIndex;
237
+ });
238
+ }
239
+ get keyInputs() {
240
+ return this.contains("[data-cotomy-key]") ? this.find("[data-cotomy-key]").sort((a, b) => {
241
+ const aIndex = parseInt(a.attribute("data-cotomy-key") ?? "0");
242
+ const bIndex = parseInt(b.attribute("data-cotomy-key") ?? "0");
243
+ return aIndex - bIndex;
244
+ }) : this.find("[name][data-cotomy-key]");
245
+ }
246
+ get usePathKey() {
247
+ const use = this.pathKeyInputs.length > 0 || this.requiresExternalKey;
248
+ if (use && this.hasExternalKey && CotomyDebugSettings.isEnabled(CotomyDebugFeature.FormLoad)) {
249
+ console.warn("Both externalKey and pathKeyInputs are present. Using externalKey and ignoring pathKeyInputs.");
250
+ }
251
+ return use;
252
+ }
253
+ get pathKeyString() {
254
+ return this.externalKey || this.pathKeyInputs.map(e => e.value).join("/");
255
+ }
256
+ async submitToApiAsync(formData) {
257
+ const response = await super.submitToApiAsync(formData);
258
+ if (this.requiresExternalKey && response.status === StatusCodes.CREATED) {
259
+ this.setExternalKey(response);
260
+ }
261
+ return response;
262
+ }
263
+ }
264
+ export class CotomyEntityFillApiForm extends CotomyEntityApiForm {
265
+ constructor() {
266
+ super(...arguments);
267
+ this._fillers = {};
268
+ }
269
+ filler(type, func) {
270
+ this._fillers[type] = func;
271
+ return this;
272
+ }
273
+ initialize() {
274
+ if (!this.initialized) {
275
+ super.initialize();
276
+ this.filler("datetime-local", (input, value) => {
277
+ const hasOffset = /[+-]\d{2}:\d{2}$/.test(value);
278
+ const date = hasOffset ? new Date(value) : new Date(`${value}Z`);
279
+ if (!isNaN(date.getTime())) {
280
+ input.value = dayjs(date).format("YYYY-MM-DDTHH:mm");
281
+ }
282
+ else {
283
+ input.value = "";
284
+ }
285
+ });
286
+ this.filler("checkbox", (input, value) => {
287
+ input.attribute("checked", null);
288
+ if (value) {
289
+ input.attribute("checked", "");
290
+ }
291
+ });
292
+ this.filler("radio", (input, value) => {
293
+ input.attribute("checked", null);
294
+ if (input.value === value) {
295
+ input.attribute("checked", "");
296
+ }
297
+ });
298
+ CotomyWindow.instance.ready(async () => {
299
+ await this.loadAsync();
300
+ });
301
+ }
302
+ return this;
303
+ }
304
+ async submitToApiAsync(formData) {
305
+ const response = await super.submitToApiAsync(formData);
306
+ if (response.ok) {
307
+ await this.fillAsync(response);
308
+ }
309
+ return response;
310
+ }
311
+ async reloadAsync() {
312
+ await this.loadAsync();
313
+ }
314
+ loadActionUrl() {
315
+ return this.actionUrl();
316
+ }
317
+ bindNameGenerator() {
318
+ return new CotomyBracketBindNameGenerator();
319
+ }
320
+ renderer() {
321
+ return new CotomyViewRenderer(this, this.bindNameGenerator());
322
+ }
323
+ async loadAsync() {
324
+ const hasPathKeys = this.pathKeyInputs.length > 0 && this.pathKeyInputs.every(e => !!e.value);
325
+ const hasKeyInputs = this.keyInputs.length > 0 && this.keyInputs.every(e => !!e.value);
326
+ if (!this.hasExternalKey && !hasPathKeys && !hasKeyInputs) {
327
+ return new CotomyApiResponse();
328
+ }
329
+ const api = this.apiClient();
330
+ try {
331
+ const response = await api.getAsync(this.loadActionUrl());
332
+ await this.fillAsync(response);
333
+ return response;
334
+ }
335
+ catch (error) {
336
+ if (error instanceof CotomyApiException) {
337
+ this.triggerApiFailedEvent(error.response);
338
+ }
339
+ if (error instanceof CotomyNotFoundException) {
340
+ return error.response;
341
+ }
342
+ throw error;
343
+ }
344
+ }
345
+ async fillObjectAsync(bindNameGenerator, target, propertyName = undefined) {
346
+ for (const [key, value] of Object.entries(target)) {
347
+ if (key.endsWith('[]')) {
348
+ continue;
349
+ }
350
+ const pname = bindNameGenerator.create(key, propertyName);
351
+ if (Array.isArray(value))
352
+ continue;
353
+ if (value && typeof value === "object") {
354
+ await this.fillObjectAsync(bindNameGenerator, value, pname);
355
+ continue;
356
+ }
357
+ this.find(`input[name="${pname}" i]:not([data-cotomy-fill="false"]):not([multiple]),
358
+ textarea[name="${pname}" i]:not([data-cotomy-fill="false"]),
359
+ select[name="${pname}" i]:not([data-cotomy-fill="false"]):not([multiple])`).forEach(input => {
360
+ if (CotomyDebugSettings.isEnabled(CotomyDebugFeature.Fill)) {
361
+ console.debug(`Filling input[name="${pname}"] with value:`, value);
362
+ }
363
+ const type = input.attribute("type")?.toLowerCase();
364
+ if (type && this._fillers[type]) {
365
+ this._fillers[type](input, value);
366
+ }
367
+ else {
368
+ input.value = String(value || "");
369
+ }
370
+ });
371
+ }
372
+ }
373
+ async fillAsync(response) {
374
+ if (response.ok && response.available) {
375
+ await this.fillObjectAsync(this.bindNameGenerator(), await response.objectAsync());
376
+ await this.renderer().applyAsync(response);
377
+ }
378
+ this.pathKeyInputs.forEach(e => e.readonly = true);
379
+ this.keyInputs.forEach(e => e.readonly = true);
380
+ this.find("textarea").forEach(e => e.input());
381
+ }
382
+ }
383
+ //# sourceMappingURL=form.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form.js","sourceRoot":"","sources":["../../src/form.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export { CotomyApi, CotomyApiException, CotomyApiResponse, CotomyBracketBindNameGenerator, CotomyConflictException, CotomyDotBindNameGenerator, CotomyForbiddenException, CotomyHttpClientError, CotomyHttpServerError, CotomyInvalidFormDataBodyException, CotomyNotFoundException, CotomyRequestInvalidException, CotomyResponseJsonParseException, CotomyTooManyRequestsException, CotomyUnauthorizedException, CotomyViewRenderer } from "./api";
2
+ export { CotomyDebugFeature, CotomyDebugSettings } from "./debug";
3
+ export { CotomyApiFailedEvent, CotomyApiForm, CotomyEntityApiForm, CotomyEntityFillApiForm, CotomyForm, CotomyQueryForm } from "./form";
4
+ export { CotomyPageController, CotomyUrl } from "./page";
5
+ export { CotomyElement, CotomyMetaElement, CotomyWindow } from "./view";
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,SAAS,EACT,kBAAkB,EAClB,iBAAiB,EACjB,8BAA8B,EAC9B,uBAAuB,EACvB,0BAA0B,EAC1B,wBAAwB,EACxB,qBAAqB,EACrB,qBAAqB,EACrB,kCAAkC,EAClC,uBAAuB,EACvB,6BAA6B,EAAE,gCAAgC,EAAE,8BAA8B,EAAE,2BAA2B,EAC5H,kBAAkB,EAErB,MAAM,OAAO,CAAC;AACf,OAAO,EACH,kBAAkB,EAClB,mBAAmB,EACtB,MAAM,SAAS,CAAC;AACjB,OAAO,EACH,oBAAoB,EAAE,aAAa,EAAE,mBAAmB,EAAE,uBAAuB,EACjF,UAAU,EACV,eAAe,EAClB,MAAM,QAAQ,CAAC;AAChB,OAAO,EACH,oBAAoB,EACpB,SAAS,EACZ,MAAM,QAAQ,CAAC;AAChB,OAAO,EACH,aAAa,EACb,iBAAiB,EACjB,YAAY,EACf,MAAM,QAAQ,CAAC"}
@@ -0,0 +1,128 @@
1
+ import dayjs from "dayjs";
2
+ import timezone from 'dayjs/plugin/timezone';
3
+ import utc from 'dayjs/plugin/utc';
4
+ import { CotomyDebugFeature, CotomyDebugSettings } from "./debug";
5
+ import { CotomyWindow } from "./view";
6
+ dayjs.extend(utc);
7
+ dayjs.extend(timezone);
8
+ export class CotomyUrl {
9
+ static location() {
10
+ return new CotomyUrl();
11
+ }
12
+ constructor(url = null) {
13
+ this._url = new URL(url ?? (location.pathname + location.search), location.origin);
14
+ }
15
+ get url() {
16
+ return this._url.pathname + this._url.search;
17
+ }
18
+ get path() {
19
+ return this._url.pathname;
20
+ }
21
+ get segments() {
22
+ return this._url.pathname.split("/").filter(s => s.length > 0);
23
+ }
24
+ get query() {
25
+ return this._url.search.replace(/^\?/, "");
26
+ }
27
+ get parameters() {
28
+ const dict = {};
29
+ this._url.searchParams.forEach((value, key) => { dict[key] = value; });
30
+ return dict;
31
+ }
32
+ redirect() {
33
+ window.location.href = this.url;
34
+ }
35
+ }
36
+ export class CotomyPageController {
37
+ constructor() {
38
+ this._forms = {};
39
+ }
40
+ static set(type) {
41
+ if (this._instance) {
42
+ throw new Error("PageController is already initialized.");
43
+ }
44
+ this._instance = new type();
45
+ CotomyWindow.instance.load(async () => {
46
+ if (CotomyDebugSettings.isEnabled(CotomyDebugFeature.Page)) {
47
+ console.debug("CotomyPageController initialize.");
48
+ }
49
+ CotomyWindow.instance.initialize();
50
+ await CotomyPageController._instance.initializeAsync();
51
+ CotomyWindow.instance.trigger("cotomy:ready");
52
+ });
53
+ return this._instance;
54
+ }
55
+ static get() {
56
+ if (!(this._instance instanceof CotomyPageController)) {
57
+ throw new Error("PageController is not initialized. Use CotomyPageController.set() to initialize it.");
58
+ }
59
+ return this._instance;
60
+ }
61
+ setForm(form) {
62
+ if (!form.id) {
63
+ form.generateId();
64
+ }
65
+ this._forms[form.id] = form;
66
+ form.removed(() => {
67
+ delete this._forms[form.id];
68
+ });
69
+ return form.initialize();
70
+ }
71
+ getForm(id, type) {
72
+ const form = this._forms[id];
73
+ if (!form)
74
+ return undefined;
75
+ if (type && !(form instanceof type)) {
76
+ throw new Error(`Form "${id}" is not instance of expected type.`);
77
+ }
78
+ return form;
79
+ }
80
+ forms() {
81
+ return Object.values(this._forms);
82
+ }
83
+ async restoreAsync() {
84
+ for (const f of this.forms()) {
85
+ if (CotomyWindow.instance.reloading) {
86
+ break;
87
+ }
88
+ if (f.autoReload) {
89
+ await f.reloadAsync();
90
+ }
91
+ }
92
+ }
93
+ isValidUtcDateString(value) {
94
+ return dayjs(value).isValid() && (value.endsWith("Z") || /[+-]\d{2}:\d{2}$/.test(value));
95
+ }
96
+ initializeDateTimeElements() {
97
+ CotomyWindow.instance.body.find("[data-cotomy-datetime]:not([data-cotomy-formatted])").forEach(e => {
98
+ if (dayjs(e.text).isValid()) {
99
+ const timezone = e.attribute("data-cotomy-timezone")
100
+ || e.closest("[data-cotomy-timezone]")?.attribute("data-cotomy-timezone");
101
+ const format = e.attribute("data-cotomy-format") ?? "YYYY-MM-DD HH:mm";
102
+ const lt = this.isValidUtcDateString(e.text) ? dayjs(e.text) : dayjs(`${dayjs(e.text).format("YYYY-MM-DDTHH:mm:ss")}Z`);
103
+ const dt = e.attribute("data-cotomy-datetime") === "local" ? lt : lt.utc();
104
+ e.text = (timezone && timezone.trim() !== "") ? dt.tz(timezone).format(format) : dt.format(format);
105
+ e.attribute("data-cotomy-formatted", "");
106
+ }
107
+ });
108
+ }
109
+ async initializeAsync() {
110
+ this.initializeDateTimeElements();
111
+ CotomyWindow.instance.pageshow(async (e) => {
112
+ if (e.persisted) {
113
+ await this.restoreAsync();
114
+ if (CotomyWindow.instance.reloading) {
115
+ e.stopImmediatePropagation();
116
+ }
117
+ }
118
+ });
119
+ }
120
+ get body() {
121
+ return CotomyWindow.instance.body;
122
+ }
123
+ get url() {
124
+ return new CotomyUrl();
125
+ }
126
+ }
127
+ CotomyPageController._instance = null;
128
+ //# sourceMappingURL=page.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page.js","sourceRoot":"","sources":["../../src/page.ts"],"names":[],"mappings":"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"}