@oktis-works/core 0.8.0 → 0.10.0

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/bootstrap/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAK7D,MAAM,WAAW,gBAAgB;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAsB,SAAS,CAAC,QAAQ,GAAE,gBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAkB9F;AAED,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAIxF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/bootstrap/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAM7D,MAAM,WAAW,gBAAgB;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAsB,SAAS,CAAC,QAAQ,GAAE,gBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAqB9F;AAED,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAIxF"}
@@ -4,7 +4,10 @@ import { ApplicationLifecycle } from '../lifecycle/index.js';
4
4
  import { establishTenantContext } from '../tenant/context.js';
5
5
  import { syncEnabledPlugins } from '../plugin/load.js';
6
6
  import { installHookRuntimeWiring } from '../hooks/wiring.js';
7
+ import { okForceUtcRuntime } from '../timezone/index.js';
7
8
  export async function bootstrap(_options = {}) {
9
+ // WordPress-style: força UTC no runtime ANTES de qualquer operação de data
10
+ okForceUtcRuntime();
8
11
  const config = loadConfig();
9
12
  const lifecycle = new ApplicationLifecycle(config);
10
13
  await lifecycle.start();
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/bootstrap/index.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAE5C,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAM9D,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,WAA6B,EAAE;IAC7D,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,MAAM,SAAS,GAAG,IAAI,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAEnD,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC;IAExB,8EAA8E;IAC9E,6DAA6D;IAC7D,wBAAwB,EAAE,CAAC;IAE3B,yEAAyE;IACzE,wEAAwE;IACxE,wEAAwE;IACxE,yEAAyE;IACzE,wCAAwC;IACxC,MAAM,kBAAkB,EAAE,CAAC;IAE3B,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,QAAgB;IACvD,MAAM,SAAS,GAAG,MAAM,SAAS,EAAE,CAAC;IACpC,MAAM,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IACvC,OAAO,SAAS,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/bootstrap/index.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAE5C,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAMzD,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,WAA6B,EAAE;IAC7D,2EAA2E;IAC3E,iBAAiB,EAAE,CAAC;IAEpB,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,MAAM,SAAS,GAAG,IAAI,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAEnD,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC;IAExB,8EAA8E;IAC9E,6DAA6D;IAC7D,wBAAwB,EAAE,CAAC;IAE3B,yEAAyE;IACzE,wEAAwE;IACxE,wEAAwE;IACxE,yEAAyE;IACzE,wCAAwC;IACxC,MAAM,kBAAkB,EAAE,CAAC;IAE3B,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,QAAgB;IACvD,MAAM,SAAS,GAAG,MAAM,SAAS,EAAE,CAAC;IACpC,MAAM,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IACvC,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { okForceUtcRuntime, okGetSiteTimezoneConfig, okLoadSiteTimezoneConfig, okClearTimezoneCache, okGetTimezoneOffset, okIsDstActive, okConvertToGmt, okConvertFromGmt, okGetTimezoneAbbreviation, okDate, okCurrentTime, okGetCommonTimezones, okGetManualOffsets, } from './service.js';
2
+ export type { SiteTimezoneConfig } from './service.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/timezone/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,iBAAiB,EACjB,uBAAuB,EACvB,wBAAwB,EACxB,oBAAoB,EACpB,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,yBAAyB,EACzB,MAAM,EACN,aAAa,EACb,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,cAAc,CAAC;AAEtB,YAAY,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,3 @@
1
+ // @oktis-works/core - Timezone Service Exports
2
+ export { okForceUtcRuntime, okGetSiteTimezoneConfig, okLoadSiteTimezoneConfig, okClearTimezoneCache, okGetTimezoneOffset, okIsDstActive, okConvertToGmt, okConvertFromGmt, okGetTimezoneAbbreviation, okDate, okCurrentTime, okGetCommonTimezones, okGetManualOffsets, } from './service.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/timezone/index.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAE/C,OAAO,EACL,iBAAiB,EACjB,uBAAuB,EACvB,wBAAwB,EACxB,oBAAoB,EACpB,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,yBAAyB,EACzB,MAAM,EACN,aAAa,EACb,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,cAAc,CAAC"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * Configuração de fuso horário do site.
3
+ * timezoneString: identificador IANA (ex: 'America/Sao_Paulo') - tem DST automático
4
+ * gmtOffset: offset manual em horas (ex: -3) - estático, sem DST
5
+ */
6
+ export interface SiteTimezoneConfig {
7
+ timezoneString: string | null;
8
+ gmtOffset: number | null;
9
+ }
10
+ /**
11
+ * Força o runtime PHP/Node a usar UTC.
12
+ * Equivalente ao OK CMS: date_default_timezone_set('UTC')
13
+ * Deve ser chamado no bootstrap ANTES de qualquer operação de data.
14
+ */
15
+ export declare function okForceUtcRuntime(): void;
16
+ /**
17
+ * Obtém configuração efetiva do fuso horário do site (síncrono, com fallback).
18
+ * Prioridade: timezone_string (IANA) > gmt_offset (manual)
19
+ * Para versão assíncrona que carrega do banco, use okLoadSiteTimezoneConfig().
20
+ */
21
+ export declare function okGetSiteTimezoneConfig(): SiteTimezoneConfig;
22
+ /**
23
+ * Carrega configuração do banco de dados (assíncrono).
24
+ * Deve ser chamado quando o tenant context estiver disponível.
25
+ */
26
+ export declare function okLoadSiteTimezoneConfig(): Promise<SiteTimezoneConfig>;
27
+ /**
28
+ * Limpa cache (útil após update de settings)
29
+ */
30
+ export declare function okClearTimezoneCache(): void;
31
+ /**
32
+ * Retorna offset atual em segundos para o timezone configurado.
33
+ * Usa IANA database (Intl) para calcular DST automaticamente.
34
+ */
35
+ export declare function okGetTimezoneOffset(timezone?: string): number;
36
+ /**
37
+ * Verifica se DST está ativo para o timezone dado.
38
+ */
39
+ export declare function okIsDstActive(timezone?: string): boolean;
40
+ /**
41
+ * Converte data local para GMT/UTC.
42
+ */
43
+ export declare function okConvertToGmt(localDate: Date): Date;
44
+ /**
45
+ * Converte data GMT/UTC para local.
46
+ */
47
+ export declare function okConvertFromGmt(gmtDate: Date): Date;
48
+ /**
49
+ * Retorna abreviação do timezone (ex: BRT, BRST, EST, EDT).
50
+ */
51
+ export declare function okGetTimezoneAbbreviation(): string;
52
+ /**
53
+ * Formata data no timezone do site.
54
+ * Equivalente ao OK CMS okDate().
55
+ */
56
+ export declare function okDate(date: Date | string | number, format?: string, timezone?: string): string;
57
+ /**
58
+ * Retorna hora atual no timezone do site.
59
+ * Equivalente ao OK CMS okCurrentTime().
60
+ */
61
+ export declare function okCurrentTime(format?: string): string;
62
+ /**
63
+ * Lista de timezones IANA comuns para o select do admin.
64
+ */
65
+ export declare function okGetCommonTimezones(): Array<{
66
+ value: string;
67
+ label: string;
68
+ region: string;
69
+ }>;
70
+ /**
71
+ * Offsets manuais UTC-12 a UTC+14
72
+ */
73
+ export declare function okGetManualOffsets(): Array<{
74
+ value: string;
75
+ label: string;
76
+ }>;
77
+ //# sourceMappingURL=service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/timezone/service.ts"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAmDD;;;;GAIG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAOxC;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,IAAI,kBAAkB,CAM5D;AAED;;;GAGG;AACH,wBAAsB,wBAAwB,IAAI,OAAO,CAAC,kBAAkB,CAAC,CA8B5E;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAE3C;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CA8C7D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAoBxD;AA0BD;;GAEG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,IAAI,GAAG,IAAI,CAGpD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,IAAI,GAAG,IAAI,CAGpD;AAED;;GAEG;AACH,wBAAgB,yBAAyB,IAAI,MAAM,CAsBlD;AAED;;;GAGG;AACH,wBAAgB,MAAM,CACpB,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,EAC5B,MAAM,GAAE,MAAsB,EAC9B,QAAQ,CAAC,EAAE,MAAM,GAChB,MAAM,CAWR;AAuDD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,GAAE,MAAsB,GAAG,MAAM,CAEpE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAuE9F;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAQ5E"}
@@ -0,0 +1,407 @@
1
+ // @oktis-works/core - Timezone Service (OK CMS versatility)
2
+ // Isolamento completo do servidor/SO: força UTC no runtime, usa IANA database para DST
3
+ import { getConnection } from '@oktis-works/database';
4
+ let siteTimezoneCache = null;
5
+ // IANA timezone database (subset das mais comuns)
6
+ // Em produção, usar Intl.DateTimeFormat().resolvedOptions().timeZone ou biblioteca completa
7
+ const _COMMON_TIMEZONES = [
8
+ 'UTC',
9
+ 'America/Sao_Paulo',
10
+ 'America/New_York',
11
+ 'America/Los_Angeles',
12
+ 'America/Chicago',
13
+ 'America/Denver',
14
+ 'America/Toronto',
15
+ 'America/Vancouver',
16
+ 'America/Mexico_City',
17
+ 'America/Argentina/Buenos_Aires',
18
+ 'America/Lima',
19
+ 'America/Bogota',
20
+ 'America/Caracas',
21
+ 'Europe/London',
22
+ 'Europe/Paris',
23
+ 'Europe/Berlin',
24
+ 'Europe/Rome',
25
+ 'Europe/Madrid',
26
+ 'Europe/Amsterdam',
27
+ 'Europe/Stockholm',
28
+ 'Europe/Oslo',
29
+ 'Europe/Copenhagen',
30
+ 'Europe/Helsinki',
31
+ 'Europe/Warsaw',
32
+ 'Europe/Moscow',
33
+ 'Europe/Istanbul',
34
+ 'Asia/Tokyo',
35
+ 'Asia/Shanghai',
36
+ 'Asia/Hong_Kong',
37
+ 'Asia/Singapore',
38
+ 'Asia/Seoul',
39
+ 'Asia/Dubai',
40
+ 'Asia/Kolkata',
41
+ 'Asia/Bangkok',
42
+ 'Asia/Jakarta',
43
+ 'Asia/Manila',
44
+ 'Australia/Sydney',
45
+ 'Australia/Melbourne',
46
+ 'Australia/Perth',
47
+ 'Australia/Brisbane',
48
+ 'Pacific/Auckland',
49
+ 'Pacific/Fiji',
50
+ ];
51
+ /**
52
+ * Força o runtime PHP/Node a usar UTC.
53
+ * Equivalente ao OK CMS: date_default_timezone_set('UTC')
54
+ * Deve ser chamado no bootstrap ANTES de qualquer operação de data.
55
+ */
56
+ export function okForceUtcRuntime() {
57
+ // Node.js: define TZ global
58
+ process.env.TZ = 'UTC';
59
+ // Para compatibilidade com bibliotecas que leem process.env.TZ
60
+ if (typeof Intl !== 'undefined') {
61
+ // Intl usa o TZ do ambiente
62
+ }
63
+ }
64
+ /**
65
+ * Obtém configuração efetiva do fuso horário do site (síncrono, com fallback).
66
+ * Prioridade: timezone_string (IANA) > gmt_offset (manual)
67
+ * Para versão assíncrona que carrega do banco, use okLoadSiteTimezoneConfig().
68
+ */
69
+ export function okGetSiteTimezoneConfig() {
70
+ if (siteTimezoneCache)
71
+ return siteTimezoneCache;
72
+ // Fallback padrão (Brasil) - o cache será atualizado quando okLoadSiteTimezoneConfig() for chamado
73
+ siteTimezoneCache = { timezoneString: 'America/Sao_Paulo', gmtOffset: -3 };
74
+ return siteTimezoneCache;
75
+ }
76
+ /**
77
+ * Carrega configuração do banco de dados (assíncrono).
78
+ * Deve ser chamado quando o tenant context estiver disponível.
79
+ */
80
+ export async function okLoadSiteTimezoneConfig() {
81
+ try {
82
+ const sql = getConnection();
83
+ const rows = await sql.unsafe(`SELECT key, value FROM settings
84
+ WHERE key IN ('timezone_string', 'gmt_offset')
85
+ AND (tenant_id IS NULL OR tenant_id = current_setting('app.current_tenant_id', true)::uuid)
86
+ ORDER BY tenant_id NULLS FIRST`);
87
+ let timezoneString = null;
88
+ let gmtOffset = null;
89
+ for (const row of rows) {
90
+ const key = row['key'];
91
+ const val = row['value'];
92
+ if (key === 'timezone_string') {
93
+ timezoneString = typeof val === 'string' ? val : null;
94
+ }
95
+ else if (key === 'gmt_offset') {
96
+ gmtOffset = typeof val === 'number' ? val : typeof val === 'string' ? parseFloat(val) : null;
97
+ }
98
+ }
99
+ siteTimezoneCache = { timezoneString, gmtOffset };
100
+ return siteTimezoneCache;
101
+ }
102
+ catch {
103
+ // Fallback silencioso
104
+ siteTimezoneCache = { timezoneString: 'America/Sao_Paulo', gmtOffset: -3 };
105
+ return siteTimezoneCache;
106
+ }
107
+ }
108
+ /**
109
+ * Limpa cache (útil após update de settings)
110
+ */
111
+ export function okClearTimezoneCache() {
112
+ siteTimezoneCache = null;
113
+ }
114
+ /**
115
+ * Retorna offset atual em segundos para o timezone configurado.
116
+ * Usa IANA database (Intl) para calcular DST automaticamente.
117
+ */
118
+ export function okGetTimezoneOffset(timezone) {
119
+ const tz = timezone ?? okGetSiteTimezoneConfig().timezoneString ?? 'UTC';
120
+ if (tz === 'UTC')
121
+ return 0;
122
+ // Se for offset manual (formato UTC+X ou UTC-X)
123
+ const manualMatch = tz.match(/^UTC([+-])(\d{1,2})(?::?(\d{2}))?$/i);
124
+ if (manualMatch) {
125
+ const sign = manualMatch[1] === '+' ? 1 : -1;
126
+ const hours = parseInt(manualMatch[2] ?? '0', 10);
127
+ const minutes = manualMatch[3] ? parseInt(manualMatch[3], 10) : 0;
128
+ return sign * (hours * 3600 + minutes * 60);
129
+ }
130
+ // IANA timezone: usar Intl para calcular offset atual (inclui DST)
131
+ try {
132
+ const now = new Date();
133
+ const formatter = new Intl.DateTimeFormat('en-US', {
134
+ timeZone: tz,
135
+ hour12: false,
136
+ hour: 'numeric',
137
+ minute: 'numeric',
138
+ second: 'numeric',
139
+ timeZoneName: 'shortOffset',
140
+ });
141
+ const parts = formatter.formatToParts(now);
142
+ const offsetStr = parts.find(p => p.type === 'timeZoneName')?.value ?? '';
143
+ // offsetStr formato: "GMT-3" ou "GMT-03:00"
144
+ const match = offsetStr.match(/GMT([+-])(\d{1,2})(?::(\d{2}))?/);
145
+ if (match) {
146
+ const sign = match[1] === '+' ? 1 : -1;
147
+ const hours = parseInt(match[2] ?? '0', 10);
148
+ const minutes = match[3] ? parseInt(match[3], 10) : 0;
149
+ return sign * (hours * 3600 + minutes * 60);
150
+ }
151
+ }
152
+ catch {
153
+ // Fallback
154
+ }
155
+ // Fallback: tentar parsear offset do gmt_offset setting
156
+ const config = okGetSiteTimezoneConfig();
157
+ if (config.gmtOffset !== null) {
158
+ return config.gmtOffset * 3600;
159
+ }
160
+ return 0;
161
+ }
162
+ /**
163
+ * Verifica se DST está ativo para o timezone dado.
164
+ */
165
+ export function okIsDstActive(timezone) {
166
+ const tz = timezone ?? okGetSiteTimezoneConfig().timezoneString ?? 'UTC';
167
+ if (tz === 'UTC')
168
+ return false;
169
+ // Offsets manuais nunca têm DST
170
+ if (/^UTC[+-]/.test(tz))
171
+ return false;
172
+ try {
173
+ const january = new Date(Date.UTC(new Date().getFullYear(), 0, 1));
174
+ const july = new Date(Date.UTC(new Date().getFullYear(), 6, 1));
175
+ const janOffset = getTimezoneOffsetForDate(january, tz);
176
+ const julOffset = getTimezoneOffsetForDate(july, tz);
177
+ const nowOffset = getTimezoneOffsetForDate(new Date(), tz);
178
+ // DST ativo se offset atual difere do offset padrão (janeiro no hemisfério norte, julho no sul)
179
+ return nowOffset !== Math.min(janOffset, julOffset);
180
+ }
181
+ catch {
182
+ return false;
183
+ }
184
+ }
185
+ function getTimezoneOffsetForDate(date, timezone) {
186
+ try {
187
+ const formatter = new Intl.DateTimeFormat('en-US', {
188
+ timeZone: timezone,
189
+ hour12: false,
190
+ hour: 'numeric',
191
+ minute: 'numeric',
192
+ timeZoneName: 'shortOffset',
193
+ });
194
+ const parts = formatter.formatToParts(date);
195
+ const offsetStr = parts.find(p => p.type === 'timeZoneName')?.value ?? '';
196
+ const match = offsetStr.match(/GMT([+-])(\d{1,2})(?::(\d{2}))?/);
197
+ if (match) {
198
+ const sign = match[1] === '+' ? 1 : -1;
199
+ const hours = parseInt(match[2] ?? '0', 10);
200
+ const minutes = match[3] ? parseInt(match[3], 10) : 0;
201
+ return sign * (hours * 3600 + minutes * 60);
202
+ }
203
+ }
204
+ catch {
205
+ // ignore
206
+ }
207
+ return 0;
208
+ }
209
+ /**
210
+ * Converte data local para GMT/UTC.
211
+ */
212
+ export function okConvertToGmt(localDate) {
213
+ const offset = okGetTimezoneOffset();
214
+ return new Date(localDate.getTime() - offset * 1000);
215
+ }
216
+ /**
217
+ * Converte data GMT/UTC para local.
218
+ */
219
+ export function okConvertFromGmt(gmtDate) {
220
+ const offset = okGetTimezoneOffset();
221
+ return new Date(gmtDate.getTime() + offset * 1000);
222
+ }
223
+ /**
224
+ * Retorna abreviação do timezone (ex: BRT, BRST, EST, EDT).
225
+ */
226
+ export function okGetTimezoneAbbreviation() {
227
+ const config = okGetSiteTimezoneConfig();
228
+ const tz = config.timezoneString ?? 'UTC';
229
+ if (tz === 'UTC')
230
+ return 'UTC';
231
+ if (/^UTC[+-]/.test(tz))
232
+ return tz;
233
+ try {
234
+ const now = new Date();
235
+ const formatter = new Intl.DateTimeFormat('en-US', {
236
+ timeZone: tz,
237
+ timeZoneName: 'short',
238
+ hour12: false,
239
+ hour: 'numeric',
240
+ });
241
+ const parts = formatter.formatToParts(now);
242
+ const tzName = parts.find(p => p.type === 'timeZoneName')?.value ?? '';
243
+ // tzName pode ser "BRT" ou "GMT-3"
244
+ return tzName.replace('GMT', 'UTC');
245
+ }
246
+ catch {
247
+ return tz;
248
+ }
249
+ }
250
+ /**
251
+ * Formata data no timezone do site.
252
+ * Equivalente ao OK CMS okDate().
253
+ */
254
+ export function okDate(date, format = 'Y-m-d H:i:s', timezone) {
255
+ const tz = timezone ?? okGetSiteTimezoneConfig().timezoneString ?? 'UTC';
256
+ const d = date instanceof Date ? date : new Date(date);
257
+ if (isNaN(d.getTime()))
258
+ return 'Invalid Date';
259
+ // Converter para o timezone alvo
260
+ const offset = timezone ? getTimezoneOffsetForTimezone(timezone) : okGetTimezoneOffset(timezone);
261
+ const localTime = new Date(d.getTime() + offset * 1000);
262
+ return formatDate(localTime, format, tz);
263
+ }
264
+ function getTimezoneOffsetForTimezone(timezone) {
265
+ if (timezone === 'UTC')
266
+ return 0;
267
+ const manualMatch = timezone.match(/^UTC([+-])(\d{1,2})(?::?(\d{2}))?$/i);
268
+ if (manualMatch) {
269
+ const sign = manualMatch[1] === '+' ? 1 : -1;
270
+ const hours = parseInt(manualMatch[2] ?? '0', 10);
271
+ const minutes = manualMatch[3] ? parseInt(manualMatch[3], 10) : 0;
272
+ return sign * (hours * 3600 + minutes * 60);
273
+ }
274
+ return 0; // IANA handled by Intl in formatDate
275
+ }
276
+ function formatDate(date, format, timezone) {
277
+ // Simple format replacement (subset of PHP date format)
278
+ const pad = (n) => n.toString().padStart(2, '0');
279
+ // Use Intl for proper timezone formatting
280
+ try {
281
+ const options = {
282
+ timeZone: timezone === 'UTC' || /^UTC[+-]/.test(timezone) ? 'UTC' : timezone,
283
+ year: 'numeric',
284
+ month: '2-digit',
285
+ day: '2-digit',
286
+ hour: '2-digit',
287
+ minute: '2-digit',
288
+ second: '2-digit',
289
+ hour12: false,
290
+ };
291
+ const formatted = new Intl.DateTimeFormat('en-CA', options).format(date);
292
+ // en-CA gives YYYY-MM-DD, HH:MM:SS
293
+ if (format === 'Y-m-d H:i:s')
294
+ return formatted.replace(',', '');
295
+ // For other formats, fallback to manual
296
+ }
297
+ catch {
298
+ // fallback
299
+ }
300
+ // Manual fallback
301
+ const year = date.getUTCFullYear();
302
+ const month = pad(date.getUTCMonth() + 1);
303
+ const day = pad(date.getUTCDate());
304
+ const hours = pad(date.getUTCHours());
305
+ const minutes = pad(date.getUTCMinutes());
306
+ const seconds = pad(date.getUTCSeconds());
307
+ return format
308
+ .replace('Y', year.toString())
309
+ .replace('m', month)
310
+ .replace('d', day)
311
+ .replace('H', hours)
312
+ .replace('i', minutes)
313
+ .replace('s', seconds);
314
+ }
315
+ /**
316
+ * Retorna hora atual no timezone do site.
317
+ * Equivalente ao OK CMS okCurrentTime().
318
+ */
319
+ export function okCurrentTime(format = 'Y-m-d H:i:s') {
320
+ return okDate(new Date(), format);
321
+ }
322
+ /**
323
+ * Lista de timezones IANA comuns para o select do admin.
324
+ */
325
+ export function okGetCommonTimezones() {
326
+ const regions = {
327
+ 'América': [
328
+ 'America/Sao_Paulo',
329
+ 'America/New_York',
330
+ 'America/Chicago',
331
+ 'America/Denver',
332
+ 'America/Los_Angeles',
333
+ 'America/Toronto',
334
+ 'America/Vancouver',
335
+ 'America/Mexico_City',
336
+ 'America/Argentina/Buenos_Aires',
337
+ 'America/Lima',
338
+ 'America/Bogota',
339
+ ],
340
+ 'Europa': [
341
+ 'Europe/London',
342
+ 'Europe/Paris',
343
+ 'Europe/Berlin',
344
+ 'Europe/Rome',
345
+ 'Europe/Madrid',
346
+ 'Europe/Amsterdam',
347
+ 'Europe/Stockholm',
348
+ 'Europe/Warsaw',
349
+ 'Europe/Moscow',
350
+ ],
351
+ 'Ásia': [
352
+ 'Asia/Tokyo',
353
+ 'Asia/Shanghai',
354
+ 'Asia/Hong_Kong',
355
+ 'Asia/Singapore',
356
+ 'Asia/Dubai',
357
+ 'Asia/Kolkata',
358
+ 'Asia/Bangkok',
359
+ ],
360
+ 'Oceania': [
361
+ 'Australia/Sydney',
362
+ 'Australia/Melbourne',
363
+ 'Australia/Perth',
364
+ 'Pacific/Auckland',
365
+ ],
366
+ 'UTC': ['UTC'],
367
+ };
368
+ const result = [];
369
+ for (const [region, zones] of Object.entries(regions)) {
370
+ for (const zone of zones) {
371
+ try {
372
+ const formatter = new Intl.DateTimeFormat('pt-BR', {
373
+ timeZone: zone,
374
+ timeZoneName: 'shortOffset',
375
+ hour12: false,
376
+ hour: 'numeric',
377
+ });
378
+ const parts = formatter.formatToParts(new Date());
379
+ const offsetStr = parts.find(p => p.type === 'timeZoneName')?.value ?? '';
380
+ const isDst = okIsDstActive(zone);
381
+ const dstLabel = isDst ? ' (Horário de verão)' : '';
382
+ result.push({
383
+ value: zone,
384
+ label: `${zone} — ${offsetStr}${dstLabel}`,
385
+ region,
386
+ });
387
+ }
388
+ catch {
389
+ result.push({ value: zone, label: zone, region });
390
+ }
391
+ }
392
+ }
393
+ return result;
394
+ }
395
+ /**
396
+ * Offsets manuais UTC-12 a UTC+14
397
+ */
398
+ export function okGetManualOffsets() {
399
+ const offsets = [];
400
+ for (let h = -12; h <= 14; h++) {
401
+ const sign = h >= 0 ? '+' : '';
402
+ const value = `UTC${sign}${h}`;
403
+ offsets.push({ value, label: value });
404
+ }
405
+ return offsets;
406
+ }
407
+ //# sourceMappingURL=service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/timezone/service.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,uFAAuF;AAEvF,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAYtD,IAAI,iBAAiB,GAA8B,IAAI,CAAC;AAExD,kDAAkD;AAClD,4FAA4F;AAC5F,MAAM,iBAAiB,GAAG;IACxB,KAAK;IACL,mBAAmB;IACnB,kBAAkB;IAClB,qBAAqB;IACrB,iBAAiB;IACjB,gBAAgB;IAChB,iBAAiB;IACjB,mBAAmB;IACnB,qBAAqB;IACrB,gCAAgC;IAChC,cAAc;IACd,gBAAgB;IAChB,iBAAiB;IACjB,eAAe;IACf,cAAc;IACd,eAAe;IACf,aAAa;IACb,eAAe;IACf,kBAAkB;IAClB,kBAAkB;IAClB,aAAa;IACb,mBAAmB;IACnB,iBAAiB;IACjB,eAAe;IACf,eAAe;IACf,iBAAiB;IACjB,YAAY;IACZ,eAAe;IACf,gBAAgB;IAChB,gBAAgB;IAChB,YAAY;IACZ,YAAY;IACZ,cAAc;IACd,cAAc;IACd,cAAc;IACd,aAAa;IACb,kBAAkB;IAClB,qBAAqB;IACrB,iBAAiB;IACjB,oBAAoB;IACpB,kBAAkB;IAClB,cAAc;CACf,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,iBAAiB;IAC/B,4BAA4B;IAC5B,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC;IACvB,+DAA+D;IAC/D,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE,CAAC;QAChC,4BAA4B;IAC9B,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,uBAAuB;IACrC,IAAI,iBAAiB;QAAE,OAAO,iBAAiB,CAAC;IAEhD,mGAAmG;IACnG,iBAAiB,GAAG,EAAE,cAAc,EAAE,mBAAmB,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC;IAC3E,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB;IAC5C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,aAAa,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,MAAM,CAC3B;;;sCAGgC,CACjC,CAAC;QAEF,IAAI,cAAc,GAAkB,IAAI,CAAC;QACzC,IAAI,SAAS,GAAkB,IAAI,CAAC;QAEpC,KAAK,MAAM,GAAG,IAAI,IAAsC,EAAE,CAAC;YACzD,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAuB,CAAC;YAC7C,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;YACzB,IAAI,GAAG,KAAK,iBAAiB,EAAE,CAAC;gBAC9B,cAAc,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;YACxD,CAAC;iBAAM,IAAI,GAAG,KAAK,YAAY,EAAE,CAAC;gBAChC,SAAS,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC/F,CAAC;QACH,CAAC;QAED,iBAAiB,GAAG,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC;QAClD,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,sBAAsB;QACtB,iBAAiB,GAAG,EAAE,cAAc,EAAE,mBAAmB,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC;QAC3E,OAAO,iBAAiB,CAAC;IAC3B,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB;IAClC,iBAAiB,GAAG,IAAI,CAAC;AAC3B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAiB;IACnD,MAAM,EAAE,GAAG,QAAQ,IAAI,uBAAuB,EAAE,CAAC,cAAc,IAAI,KAAK,CAAC;IAEzE,IAAI,EAAE,KAAK,KAAK;QAAE,OAAO,CAAC,CAAC;IAE3B,gDAAgD;IAChD,MAAM,WAAW,GAAG,EAAE,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACpE,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7C,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;QAClD,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClE,OAAO,IAAI,GAAG,CAAC,KAAK,GAAG,IAAI,GAAG,OAAO,GAAG,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED,mEAAmE;IACnE,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;YACjD,QAAQ,EAAE,EAAE;YACZ,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,SAAS;YACjB,YAAY,EAAE,aAAa;SAC5B,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAC3C,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;QAC1E,4CAA4C;QAC5C,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACjE,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACvC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;YAC5C,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACtD,OAAO,IAAI,GAAG,CAAC,KAAK,GAAG,IAAI,GAAG,OAAO,GAAG,EAAE,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,WAAW;IACb,CAAC;IAED,wDAAwD;IACxD,MAAM,MAAM,GAAG,uBAAuB,EAAE,CAAC;IACzC,IAAI,MAAM,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;QAC9B,OAAO,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;IACjC,CAAC;IAED,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,QAAiB;IAC7C,MAAM,EAAE,GAAG,QAAQ,IAAI,uBAAuB,EAAE,CAAC,cAAc,IAAI,KAAK,CAAC;IACzE,IAAI,EAAE,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC;IAE/B,gCAAgC;IAChC,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAAE,OAAO,KAAK,CAAC;IAEtC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACnE,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAEhE,MAAM,SAAS,GAAG,wBAAwB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACxD,MAAM,SAAS,GAAG,wBAAwB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACrD,MAAM,SAAS,GAAG,wBAAwB,CAAC,IAAI,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QAE3D,gGAAgG;QAChG,OAAO,SAAS,KAAK,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACtD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,wBAAwB,CAAC,IAAU,EAAE,QAAgB;IAC5D,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;YACjD,QAAQ,EAAE,QAAQ;YAClB,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,SAAS;YACjB,YAAY,EAAE,aAAa;SAC5B,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;QAC1E,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACjE,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACvC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;YAC5C,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACtD,OAAO,IAAI,GAAG,CAAC,KAAK,GAAG,IAAI,GAAG,OAAO,GAAG,EAAE,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,SAAS;IACX,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,SAAe;IAC5C,MAAM,MAAM,GAAG,mBAAmB,EAAE,CAAC;IACrC,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,MAAM,GAAG,IAAI,CAAC,CAAC;AACvD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAa;IAC5C,MAAM,MAAM,GAAG,mBAAmB,EAAE,CAAC;IACrC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,MAAM,GAAG,IAAI,CAAC,CAAC;AACrD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,yBAAyB;IACvC,MAAM,MAAM,GAAG,uBAAuB,EAAE,CAAC;IACzC,MAAM,EAAE,GAAG,MAAM,CAAC,cAAc,IAAI,KAAK,CAAC;IAE1C,IAAI,EAAE,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC;IAC/B,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAAE,OAAO,EAAE,CAAC;IAEnC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;YACjD,QAAQ,EAAE,EAAE;YACZ,YAAY,EAAE,OAAO;YACrB,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,SAAS;SAChB,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAC3C,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;QACvE,mCAAmC;QACnC,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,MAAM,CACpB,IAA4B,EAC5B,SAAiB,aAAa,EAC9B,QAAiB;IAEjB,MAAM,EAAE,GAAG,QAAQ,IAAI,uBAAuB,EAAE,CAAC,cAAc,IAAI,KAAK,CAAC;IACzE,MAAM,CAAC,GAAG,IAAI,YAAY,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;IAEvD,IAAI,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QAAE,OAAO,cAAc,CAAC;IAE9C,iCAAiC;IACjC,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,4BAA4B,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IACjG,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,MAAM,GAAG,IAAI,CAAC,CAAC;IAExD,OAAO,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,4BAA4B,CAAC,QAAgB;IACpD,IAAI,QAAQ,KAAK,KAAK;QAAE,OAAO,CAAC,CAAC;IACjC,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;IAC1E,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7C,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;QAClD,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClE,OAAO,IAAI,GAAG,CAAC,KAAK,GAAG,IAAI,GAAG,OAAO,GAAG,EAAE,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,CAAC,CAAC,CAAC,qCAAqC;AACjD,CAAC;AAED,SAAS,UAAU,CAAC,IAAU,EAAE,MAAc,EAAE,QAAgB;IAC9D,wDAAwD;IACxD,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAEzD,0CAA0C;IAC1C,IAAI,CAAC;QACH,MAAM,OAAO,GAA+B;YAC1C,QAAQ,EAAE,QAAQ,KAAK,KAAK,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ;YAC5E,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,SAAS;YAChB,GAAG,EAAE,SAAS;YACd,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,KAAK;SACd,CAAC;QACF,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACzE,mCAAmC;QACnC,IAAI,MAAM,KAAK,aAAa;YAAE,OAAO,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAChE,wCAAwC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACP,WAAW;IACb,CAAC;IAED,kBAAkB;IAClB,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;IACnC,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC;IAC1C,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;IACnC,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;IAE1C,OAAO,MAAM;SACV,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;SAC7B,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC;SACnB,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC;SACjB,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC;SACnB,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC;SACrB,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAC3B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,SAAiB,aAAa;IAC1D,OAAO,MAAM,CAAC,IAAI,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB;IAClC,MAAM,OAAO,GAA6B;QACxC,SAAS,EAAE;YACT,mBAAmB;YACnB,kBAAkB;YAClB,iBAAiB;YACjB,gBAAgB;YAChB,qBAAqB;YACrB,iBAAiB;YACjB,mBAAmB;YACnB,qBAAqB;YACrB,gCAAgC;YAChC,cAAc;YACd,gBAAgB;SACjB;QACD,QAAQ,EAAE;YACR,eAAe;YACf,cAAc;YACd,eAAe;YACf,aAAa;YACb,eAAe;YACf,kBAAkB;YAClB,kBAAkB;YAClB,eAAe;YACf,eAAe;SAChB;QACD,MAAM,EAAE;YACN,YAAY;YACZ,eAAe;YACf,gBAAgB;YAChB,gBAAgB;YAChB,YAAY;YACZ,cAAc;YACd,cAAc;SACf;QACD,SAAS,EAAE;YACT,kBAAkB;YAClB,qBAAqB;YACrB,iBAAiB;YACjB,kBAAkB;SACnB;QACD,KAAK,EAAE,CAAC,KAAK,CAAC;KACf,CAAC;IAEF,MAAM,MAAM,GAA4D,EAAE,CAAC;IAE3E,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACtD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;oBACjD,QAAQ,EAAE,IAAI;oBACd,YAAY,EAAE,aAAa;oBAC3B,MAAM,EAAE,KAAK;oBACb,IAAI,EAAE,SAAS;iBAChB,CAAC,CAAC;gBACH,MAAM,KAAK,GAAG,SAAS,CAAC,aAAa,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;gBAClD,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;gBAC1E,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;gBAClC,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpD,MAAM,CAAC,IAAI,CAAC;oBACV,KAAK,EAAE,IAAI;oBACX,KAAK,EAAE,GAAG,IAAI,MAAM,SAAS,GAAG,QAAQ,EAAE;oBAC1C,MAAM;iBACP,CAAC,CAAC;YACL,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;YACpD,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAChC,MAAM,OAAO,GAA4C,EAAE,CAAC;IAC5D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,MAAM,IAAI,GAAG,CAAC,EAAE,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oktis-works/core",
3
- "version": "0.8.0",
3
+ "version": "0.10.0",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -24,7 +24,7 @@
24
24
  "@oktis-works/types": "^0.9.0",
25
25
  "@oktis-works/validation": "^0.7.0",
26
26
  "@oktis-works/config": "^0.6.4",
27
- "@oktis-works/database": "^0.8.0",
27
+ "@oktis-works/database": "^0.10.0",
28
28
  "@oktis-works/plugin-runtime": "^0.7.0",
29
29
  "@aws-sdk/client-s3": "3.700.0",
30
30
  "bullmq": "5.0.0",