@devoplus/one-sdk 0.0.0-stage → 0.2.0-next.112
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 +268 -0
- package/README.md +894 -2
- package/bin/accessRequest.d.mts +96 -0
- package/bin/accessRequest.mjs +340 -0
- package/bin/appOps.d.mts +97 -0
- package/bin/appOps.mjs +336 -0
- package/bin/dataCommand.mjs +131 -0
- package/bin/devConfig.mjs +132 -0
- package/bin/one.mjs +341 -0
- package/bin/session.mjs +239 -0
- package/dist/agentInput.d.ts +9 -0
- package/dist/agentInput.d.ts.map +1 -0
- package/dist/agentInput.js +102 -0
- package/dist/agentInput.js.map +1 -0
- package/dist/agentTools.d.ts +83 -0
- package/dist/agentTools.d.ts.map +1 -0
- package/dist/agentTools.js +164 -0
- package/dist/agentTools.js.map +1 -0
- package/dist/ai.d.ts +67 -0
- package/dist/ai.d.ts.map +1 -0
- package/dist/ai.js +129 -0
- package/dist/ai.js.map +1 -0
- package/dist/audit.d.ts +21 -0
- package/dist/audit.d.ts.map +1 -0
- package/dist/audit.js +58 -0
- package/dist/audit.js.map +1 -0
- package/dist/backend.d.ts +27 -0
- package/dist/backend.d.ts.map +1 -0
- package/dist/backend.js +63 -0
- package/dist/backend.js.map +1 -0
- package/dist/cache.d.ts +20 -0
- package/dist/cache.d.ts.map +1 -0
- package/dist/cache.js +84 -0
- package/dist/cache.js.map +1 -0
- package/dist/client.d.ts +147 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +469 -0
- package/dist/client.js.map +1 -0
- package/dist/components.d.ts +235 -0
- package/dist/components.d.ts.map +1 -0
- package/dist/components.js +1491 -0
- package/dist/components.js.map +1 -0
- package/dist/context.d.ts +110 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +126 -0
- package/dist/context.js.map +1 -0
- package/dist/data/crud.d.ts +74 -0
- package/dist/data/crud.d.ts.map +1 -0
- package/dist/data/crud.js +614 -0
- package/dist/data/crud.js.map +1 -0
- package/dist/data/ddl.d.ts +76 -0
- package/dist/data/ddl.d.ts.map +1 -0
- package/dist/data/ddl.js +362 -0
- package/dist/data/ddl.js.map +1 -0
- package/dist/data/fold.d.ts +14 -0
- package/dist/data/fold.d.ts.map +1 -0
- package/dist/data/fold.js +76 -0
- package/dist/data/fold.js.map +1 -0
- package/dist/data/model.d.ts +113 -0
- package/dist/data/model.d.ts.map +1 -0
- package/dist/data/model.js +408 -0
- package/dist/data/model.js.map +1 -0
- package/dist/data/values.d.ts +29 -0
- package/dist/data/values.d.ts.map +1 -0
- package/dist/data/values.js +152 -0
- package/dist/data/values.js.map +1 -0
- package/dist/dexa.d.ts +44 -0
- package/dist/dexa.d.ts.map +1 -0
- package/dist/dexa.js +74 -0
- package/dist/dexa.js.map +1 -0
- package/dist/dexaCommand.d.ts +116 -0
- package/dist/dexaCommand.d.ts.map +1 -0
- package/dist/dexaCommand.js +226 -0
- package/dist/dexaCommand.js.map +1 -0
- package/dist/export/columns.d.ts +62 -0
- package/dist/export/columns.d.ts.map +1 -0
- package/dist/export/columns.js +127 -0
- package/dist/export/columns.js.map +1 -0
- package/dist/export/csv.d.ts +10 -0
- package/dist/export/csv.d.ts.map +1 -0
- package/dist/export/csv.js +30 -0
- package/dist/export/csv.js.map +1 -0
- package/dist/export/report.d.ts +19 -0
- package/dist/export/report.d.ts.map +1 -0
- package/dist/export/report.js +91 -0
- package/dist/export/report.js.map +1 -0
- package/dist/export/response.d.ts +14 -0
- package/dist/export/response.d.ts.map +1 -0
- package/dist/export/response.js +70 -0
- package/dist/export/response.js.map +1 -0
- package/dist/export/xlsx.d.ts +15 -0
- package/dist/export/xlsx.d.ts.map +1 -0
- package/dist/export/xlsx.js +167 -0
- package/dist/export/xlsx.js.map +1 -0
- package/dist/export/zip.d.ts +7 -0
- package/dist/export/zip.d.ts.map +1 -0
- package/dist/export/zip.js +83 -0
- package/dist/export/zip.js.map +1 -0
- package/dist/files.d.ts +52 -0
- package/dist/files.d.ts.map +1 -0
- package/dist/files.js +137 -0
- package/dist/files.js.map +1 -0
- package/dist/index.d.ts +31 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +35 -0
- package/dist/index.js.map +1 -0
- package/dist/jobs.d.ts +57 -0
- package/dist/jobs.d.ts.map +1 -0
- package/dist/jobs.js +157 -0
- package/dist/jobs.js.map +1 -0
- package/dist/log.d.ts +22 -0
- package/dist/log.d.ts.map +1 -0
- package/dist/log.js +107 -0
- package/dist/log.js.map +1 -0
- package/dist/notify.d.ts +41 -0
- package/dist/notify.d.ts.map +1 -0
- package/dist/notify.js +11 -0
- package/dist/notify.js.map +1 -0
- package/dist/org.d.ts +184 -0
- package/dist/org.d.ts.map +1 -0
- package/dist/org.js +114 -0
- package/dist/org.js.map +1 -0
- package/dist/people.d.ts +39 -0
- package/dist/people.d.ts.map +1 -0
- package/dist/people.js +88 -0
- package/dist/people.js.map +1 -0
- package/dist/problem.d.ts +12 -0
- package/dist/problem.d.ts.map +1 -0
- package/dist/problem.js +33 -0
- package/dist/problem.js.map +1 -0
- package/dist/runtime.d.ts +92 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +8 -0
- package/dist/runtime.js.map +1 -0
- package/dist/scenarios.d.ts +125 -0
- package/dist/scenarios.d.ts.map +1 -0
- package/dist/scenarios.js +251 -0
- package/dist/scenarios.js.map +1 -0
- package/package.json +55 -3
package/dist/org.d.ts
ADDED
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
import type { BackendClient } from './backend.ts';
|
|
2
|
+
/** Çok dilli ad: backend `LocalizedTextResponse` → `{ values: { <dil>: metin } }`. Anahtar biçimi ÖLÇÜLMEDİ (bkz. `localizedText`). */
|
|
3
|
+
export interface LocalizedText {
|
|
4
|
+
values: Record<string, string>;
|
|
5
|
+
}
|
|
6
|
+
interface Audit {
|
|
7
|
+
createdDate?: string | null;
|
|
8
|
+
createdBy?: string | null;
|
|
9
|
+
updatedDate?: string | null;
|
|
10
|
+
updatedBy?: string | null;
|
|
11
|
+
}
|
|
12
|
+
export interface OrgCompany extends Audit {
|
|
13
|
+
id: string;
|
|
14
|
+
companyCode: string | null;
|
|
15
|
+
companyName: string | null;
|
|
16
|
+
portalId: string | null;
|
|
17
|
+
isActive: boolean;
|
|
18
|
+
}
|
|
19
|
+
export interface OrgDepartment extends Audit {
|
|
20
|
+
id: string;
|
|
21
|
+
departmentCode: string;
|
|
22
|
+
departmentName: string;
|
|
23
|
+
isActive: boolean;
|
|
24
|
+
}
|
|
25
|
+
export interface OrgNamedItem extends Audit {
|
|
26
|
+
id: string;
|
|
27
|
+
portalId: string | null;
|
|
28
|
+
isActive: boolean;
|
|
29
|
+
}
|
|
30
|
+
export interface OrgEmployeeType extends OrgNamedItem {
|
|
31
|
+
employeeTypeCode: string;
|
|
32
|
+
employeeTypeName: LocalizedText;
|
|
33
|
+
}
|
|
34
|
+
export interface OrgPosition extends OrgNamedItem {
|
|
35
|
+
positionCode: string;
|
|
36
|
+
positionName: LocalizedText;
|
|
37
|
+
}
|
|
38
|
+
export interface OrgTitle extends OrgNamedItem {
|
|
39
|
+
titleCode: string;
|
|
40
|
+
titleName: LocalizedText;
|
|
41
|
+
}
|
|
42
|
+
export interface OrgWorkplace extends OrgNamedItem {
|
|
43
|
+
workplaceCode: string;
|
|
44
|
+
workplaceName: LocalizedText;
|
|
45
|
+
companyId: string;
|
|
46
|
+
storeCode: string | null;
|
|
47
|
+
}
|
|
48
|
+
export interface OrgUserGroup extends OrgNamedItem {
|
|
49
|
+
userGroupName: string;
|
|
50
|
+
companyIds: string[];
|
|
51
|
+
departmentIds: string[];
|
|
52
|
+
employeeTypeIds: string[];
|
|
53
|
+
titleIds: string[];
|
|
54
|
+
workplaceIds: string[];
|
|
55
|
+
positionIds: string[];
|
|
56
|
+
userIds: string[];
|
|
57
|
+
userGroupIds: string[];
|
|
58
|
+
}
|
|
59
|
+
/** Şemadaki kullanıcı — `id` legacy `User._id`'dir (org kimliği), `sub` DEĞİL. */
|
|
60
|
+
export interface OrgSchemaUser extends Audit {
|
|
61
|
+
id: string;
|
|
62
|
+
fullName: string | null;
|
|
63
|
+
userCode: string | null;
|
|
64
|
+
profilePicture: string | null;
|
|
65
|
+
companyId: string | null;
|
|
66
|
+
departmentId: string | null;
|
|
67
|
+
workplaceId: string | null;
|
|
68
|
+
positionId: string | null;
|
|
69
|
+
titleId: string | null;
|
|
70
|
+
employeeTypeId: string | null;
|
|
71
|
+
portalId: string | null;
|
|
72
|
+
isActive: boolean;
|
|
73
|
+
}
|
|
74
|
+
/** `GET OrganizationManagement/organization-schema` — aktif portalın AKTİF kayıtları, sayfasız. */
|
|
75
|
+
export interface OrgSchema {
|
|
76
|
+
companies: OrgCompany[];
|
|
77
|
+
departments: OrgDepartment[];
|
|
78
|
+
employeeTypes: OrgEmployeeType[];
|
|
79
|
+
positions: OrgPosition[];
|
|
80
|
+
titles: OrgTitle[];
|
|
81
|
+
workplaces: OrgWorkplace[];
|
|
82
|
+
userGroups: OrgUserGroup[];
|
|
83
|
+
users: OrgSchemaUser[];
|
|
84
|
+
}
|
|
85
|
+
/** `GET OrganizationManagement/users` öğesi — yönetici alanlarını taşıyan TEK uç. Boş metin = yönetici yok. */
|
|
86
|
+
export interface OrgUserWithManagers {
|
|
87
|
+
id: string;
|
|
88
|
+
userCode: string | null;
|
|
89
|
+
fullName: string | null;
|
|
90
|
+
companyId: string;
|
|
91
|
+
workplaceId: string;
|
|
92
|
+
departmentId: string;
|
|
93
|
+
employeeTypeId: string;
|
|
94
|
+
titleId: string;
|
|
95
|
+
positionId: string;
|
|
96
|
+
functionalManager: string;
|
|
97
|
+
operationalManager: string;
|
|
98
|
+
isEmployee: boolean;
|
|
99
|
+
isActive: boolean;
|
|
100
|
+
}
|
|
101
|
+
/** Oturumdaki kişinin aktif portaldaki org bağlamı (`Users/me` → `orgContext`). */
|
|
102
|
+
export interface MyOrgContext {
|
|
103
|
+
/** Org kimliği (legacy `User._id`) — şemadaki `users[].id` ile eşleşen değer. */
|
|
104
|
+
orgUserId: string;
|
|
105
|
+
userCode: string | null;
|
|
106
|
+
workplaceId: string | null;
|
|
107
|
+
fullName: string | null;
|
|
108
|
+
departmentId: string | null;
|
|
109
|
+
titleId: string | null;
|
|
110
|
+
}
|
|
111
|
+
export declare function getOrgSchema(api: BackendClient): Promise<OrgSchema>;
|
|
112
|
+
export interface OrgUsersOptions {
|
|
113
|
+
/**
|
|
114
|
+
* Pasif (ayrılmış) kişileri de getir. Uç varsayılan olarak YALNIZ aktifleri döner (`hideInactiveDocuments=true`);
|
|
115
|
+
* `approvalChain`'in pasif yöneticiyi atlayıp üstüne çıkabilmesi için pasif kayıt listede olmalıdır — aksi hâlde
|
|
116
|
+
* zincir pasif yöneticide "bilinmeyen kişi" diye durur (inceleme bulgusu P2-3). Portal kapsamı değişmez.
|
|
117
|
+
*/
|
|
118
|
+
includeInactive?: boolean;
|
|
119
|
+
}
|
|
120
|
+
/** Org kullanıcıları + yönetici alanları. ⚠️ Yanıt iletişim bilgisi de taşır (backend ucunun kendi şekli) — saklamayın. */
|
|
121
|
+
export declare function getOrgUsersWithManagers(api: BackendClient, options?: OrgUsersOptions): Promise<OrgUserWithManagers[]>;
|
|
122
|
+
/**
|
|
123
|
+
* Oturumdaki kişinin org bağlamı. Kişinin aktif portalda org kaydı yoksa `null` (backend `orgContext` alanı boş) —
|
|
124
|
+
* "yönetici yok" ya da "yetki yok" ile karıştırılmaz.
|
|
125
|
+
*/
|
|
126
|
+
export declare function getMyOrgContext(api: BackendClient): Promise<MyOrgContext | null>;
|
|
127
|
+
/** Grubun SUNUCUDA çözülen üyeleri (yedi boyut + iç içe gruplar). */
|
|
128
|
+
export declare function getUserGroupMembers(api: BackendClient, groupId: string): Promise<Array<{
|
|
129
|
+
id: string;
|
|
130
|
+
fullName: string;
|
|
131
|
+
isActive: boolean;
|
|
132
|
+
}>>;
|
|
133
|
+
/** Kişinin üye olduğu gruplar (sunucuda çözülür). */
|
|
134
|
+
export declare function getUserGroupsOfUser(api: BackendClient, orgUserId: string): Promise<Array<{
|
|
135
|
+
id: string;
|
|
136
|
+
name: string;
|
|
137
|
+
}>>;
|
|
138
|
+
/** Çok dilli addan istenen dili seçer; yoksa öteki dil, o da yoksa dolu ilk değer, hiçbiri yoksa boş metin. */
|
|
139
|
+
export declare function localizedText(text: LocalizedText | null | undefined, lang?: 'tr' | 'en'): string;
|
|
140
|
+
export type ManagerKind = 'functional' | 'operational';
|
|
141
|
+
/** Kişinin doğrudan yöneticisinin org kimliği; yoksa `null`. */
|
|
142
|
+
export declare function managerOf(users: readonly OrgUserWithManagers[], orgUserId: string, kind?: ManagerKind): string | null;
|
|
143
|
+
export interface ApprovalChainOptions {
|
|
144
|
+
kind?: ManagerKind;
|
|
145
|
+
/** En çok kaç basamak çıkılır (varsayılan 5, en çok 20). */
|
|
146
|
+
maxDepth?: number;
|
|
147
|
+
/** Pasif yöneticiler atlanıp üstüne çıkılsın mı (varsayılan evet — ayrılmış kişiye onay gitmesin). */
|
|
148
|
+
skipInactive?: boolean;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Zincirin neden durduğu: `top` (yöneticisi olmayan kişiye ulaşıldı — doğal son) · `depth` (istenen basamak sayısı
|
|
152
|
+
* doldu) · `unknown` (yönetici kimliği listede yok — çoğunlukla pasif kişi aktif-yalnız listede aranmıştır ya da
|
|
153
|
+
* başka portalın kaydıdır) · `cycle` (A → B → A).
|
|
154
|
+
*/
|
|
155
|
+
export type ApprovalChainEnd = 'top' | 'depth' | 'unknown' | 'cycle';
|
|
156
|
+
export interface ApprovalChainReport {
|
|
157
|
+
chain: string[];
|
|
158
|
+
end: ApprovalChainEnd;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Onay zinciri: kişinin yöneticisinden başlayarak yukarı doğru org kimlikleri. Döngüye (A → B → A) ve kendine
|
|
162
|
+
* yöneticiye karşı güvenlidir; bilinmeyen kimlikte durur. Pasif yönetici varsayılan olarak ATLANIR ama zincir onun
|
|
163
|
+
* yöneticisinden sürer — ayrılmış bir kişiye onay göndermek formu sessizce kilitlerdi. Bunun için liste pasifleri de
|
|
164
|
+
* taşımalıdır: `getOrgUsersWithManagers(api, { includeInactive: true })`. Boş zinciri "onaycı yok" diye okumadan önce
|
|
165
|
+
* `approvalChainReport(...).end` ile durma nedenine bakın.
|
|
166
|
+
*/
|
|
167
|
+
export declare function approvalChainReport(users: readonly OrgUserWithManagers[], orgUserId: string, options?: ApprovalChainOptions): ApprovalChainReport;
|
|
168
|
+
/** `approvalChainReport(...).chain` — durma nedeni gerekmiyorsa. */
|
|
169
|
+
export declare function approvalChain(users: readonly OrgUserWithManagers[], orgUserId: string, options?: ApprovalChainOptions): string[];
|
|
170
|
+
export interface OrgUserCriteria {
|
|
171
|
+
companyId?: string;
|
|
172
|
+
departmentId?: string;
|
|
173
|
+
workplaceId?: string;
|
|
174
|
+
positionId?: string;
|
|
175
|
+
titleId?: string;
|
|
176
|
+
employeeTypeId?: string;
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Verilen boyutların HEPSİNE uyan (VE) aktif şema kullanıcıları. Kullanıcı grubu üyeliği DEĞİLDİR (o VEYA'dır ve
|
|
180
|
+
* iç içe gruplar içerir — `getUserGroupMembers`). Hiç ölçüt verilmezse hata: "herkes" yanlışlıkla seçilmesin.
|
|
181
|
+
*/
|
|
182
|
+
export declare function orgUsersMatching(schema: Pick<OrgSchema, 'users'>, criteria: OrgUserCriteria): OrgSchemaUser[];
|
|
183
|
+
export {};
|
|
184
|
+
//# sourceMappingURL=org.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"org.d.ts","sourceRoot":"","sources":["../src/org.ts"],"names":[],"mappings":"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"}
|
package/dist/org.js
ADDED
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { OneError } from './context.js';
|
|
2
|
+
const ID_RE = /^[0-9a-f]{24}$/i;
|
|
3
|
+
function requireId(id, field) {
|
|
4
|
+
if (typeof id !== 'string' || !ID_RE.test(id))
|
|
5
|
+
throw new OneError(400, 'ONE-SDK-E-050', `${field} 24 karakterlik onaltılık bir kimlik olmalı.`);
|
|
6
|
+
return id;
|
|
7
|
+
}
|
|
8
|
+
export function getOrgSchema(api) {
|
|
9
|
+
return api.get('OrganizationManagement/organization-schema');
|
|
10
|
+
}
|
|
11
|
+
/** Org kullanıcıları + yönetici alanları. ⚠️ Yanıt iletişim bilgisi de taşır (backend ucunun kendi şekli) — saklamayın. */
|
|
12
|
+
export function getOrgUsersWithManagers(api, options = {}) {
|
|
13
|
+
return api.get(options.includeInactive ? 'OrganizationManagement/users?hideInactiveDocuments=false' : 'OrganizationManagement/users');
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Oturumdaki kişinin org bağlamı. Kişinin aktif portalda org kaydı yoksa `null` (backend `orgContext` alanı boş) —
|
|
17
|
+
* "yönetici yok" ya da "yetki yok" ile karıştırılmaz.
|
|
18
|
+
*/
|
|
19
|
+
export async function getMyOrgContext(api) {
|
|
20
|
+
const me = await api.get('Users/me');
|
|
21
|
+
const c = me?.orgContext;
|
|
22
|
+
if (!c || typeof c.legacyUserId !== 'string' || !ID_RE.test(c.legacyUserId))
|
|
23
|
+
return null;
|
|
24
|
+
return {
|
|
25
|
+
orgUserId: c.legacyUserId,
|
|
26
|
+
userCode: c.userCode ?? null,
|
|
27
|
+
workplaceId: c.workplaceId ?? null,
|
|
28
|
+
fullName: c.fullName ?? null,
|
|
29
|
+
departmentId: c.departmentId ?? null,
|
|
30
|
+
titleId: c.titleId ?? null,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
/** Grubun SUNUCUDA çözülen üyeleri (yedi boyut + iç içe gruplar). */
|
|
34
|
+
export function getUserGroupMembers(api, groupId) {
|
|
35
|
+
return api.get(`OrganizationManagement/user-groups/${encodeURIComponent(requireId(groupId, 'Grup kimliği'))}/users`);
|
|
36
|
+
}
|
|
37
|
+
/** Kişinin üye olduğu gruplar (sunucuda çözülür). */
|
|
38
|
+
export function getUserGroupsOfUser(api, orgUserId) {
|
|
39
|
+
return api.get(`OrganizationManagement/users/${encodeURIComponent(requireId(orgUserId, 'Org kullanıcı kimliği'))}/user-groups`);
|
|
40
|
+
}
|
|
41
|
+
// ── Saf yardımcılar (ağ yok; testlenir) ─────────────────────────────────────────────────────────────────────────
|
|
42
|
+
const LANG_KEYS = {
|
|
43
|
+
// Anahtar backend enum'u `OrganizationLanguage`'dir (Turkish=1, English=2 …); JSON'da adla mı sayıyla mı yazıldığı
|
|
44
|
+
// ÖLÇÜLMEDİ — iki biçim de denenir, ikisi de yoksa dolu ilk değer döner.
|
|
45
|
+
tr: ['Turkish', 'turkish', '1'],
|
|
46
|
+
en: ['English', 'english', '2'],
|
|
47
|
+
};
|
|
48
|
+
/** Çok dilli addan istenen dili seçer; yoksa öteki dil, o da yoksa dolu ilk değer, hiçbiri yoksa boş metin. */
|
|
49
|
+
export function localizedText(text, lang = 'tr') {
|
|
50
|
+
const values = text?.values ?? {};
|
|
51
|
+
for (const key of [...LANG_KEYS[lang], ...LANG_KEYS[lang === 'tr' ? 'en' : 'tr']]) {
|
|
52
|
+
const v = values[key];
|
|
53
|
+
if (typeof v === 'string' && v.trim() !== '')
|
|
54
|
+
return v;
|
|
55
|
+
}
|
|
56
|
+
return Object.values(values).find((v) => typeof v === 'string' && v.trim() !== '') ?? '';
|
|
57
|
+
}
|
|
58
|
+
/** Kişinin doğrudan yöneticisinin org kimliği; yoksa `null`. */
|
|
59
|
+
export function managerOf(users, orgUserId, kind = 'functional') {
|
|
60
|
+
const u = users.find((x) => x.id === orgUserId);
|
|
61
|
+
if (!u)
|
|
62
|
+
return null;
|
|
63
|
+
const m = kind === 'functional' ? u.functionalManager : u.operationalManager;
|
|
64
|
+
return typeof m === 'string' && ID_RE.test(m) ? m : null;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Onay zinciri: kişinin yöneticisinden başlayarak yukarı doğru org kimlikleri. Döngüye (A → B → A) ve kendine
|
|
68
|
+
* yöneticiye karşı güvenlidir; bilinmeyen kimlikte durur. Pasif yönetici varsayılan olarak ATLANIR ama zincir onun
|
|
69
|
+
* yöneticisinden sürer — ayrılmış bir kişiye onay göndermek formu sessizce kilitlerdi. Bunun için liste pasifleri de
|
|
70
|
+
* taşımalıdır: `getOrgUsersWithManagers(api, { includeInactive: true })`. Boş zinciri "onaycı yok" diye okumadan önce
|
|
71
|
+
* `approvalChainReport(...).end` ile durma nedenine bakın.
|
|
72
|
+
*/
|
|
73
|
+
export function approvalChainReport(users, orgUserId, options = {}) {
|
|
74
|
+
const kind = options.kind ?? 'functional';
|
|
75
|
+
const maxDepth = Math.min(Math.max(options.maxDepth ?? 5, 1), 20);
|
|
76
|
+
const skipInactive = options.skipInactive ?? true;
|
|
77
|
+
const byId = new Map(users.map((u) => [u.id, u]));
|
|
78
|
+
const seen = new Set([orgUserId]);
|
|
79
|
+
const chain = [];
|
|
80
|
+
let current = orgUserId;
|
|
81
|
+
for (let step = 0; step < maxDepth * 4; step++) {
|
|
82
|
+
if (chain.length >= maxDepth)
|
|
83
|
+
return { chain, end: 'depth' };
|
|
84
|
+
const next = managerOf(users, current, kind);
|
|
85
|
+
// Başlangıç kişisi listede yoksa "en üst" değil "bilinmiyor"dur (ikinci inceleme P3): yöneticisi okunamadı.
|
|
86
|
+
if (!next)
|
|
87
|
+
return { chain, end: byId.has(current) ? 'top' : 'unknown' };
|
|
88
|
+
if (seen.has(next))
|
|
89
|
+
return { chain, end: 'cycle' };
|
|
90
|
+
seen.add(next);
|
|
91
|
+
const u = byId.get(next);
|
|
92
|
+
if (!u)
|
|
93
|
+
return { chain, end: 'unknown' };
|
|
94
|
+
if (u.isActive || !skipInactive)
|
|
95
|
+
chain.push(next);
|
|
96
|
+
current = next;
|
|
97
|
+
}
|
|
98
|
+
return { chain, end: 'depth' };
|
|
99
|
+
}
|
|
100
|
+
/** `approvalChainReport(...).chain` — durma nedeni gerekmiyorsa. */
|
|
101
|
+
export function approvalChain(users, orgUserId, options = {}) {
|
|
102
|
+
return approvalChainReport(users, orgUserId, options).chain;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Verilen boyutların HEPSİNE uyan (VE) aktif şema kullanıcıları. Kullanıcı grubu üyeliği DEĞİLDİR (o VEYA'dır ve
|
|
106
|
+
* iç içe gruplar içerir — `getUserGroupMembers`). Hiç ölçüt verilmezse hata: "herkes" yanlışlıkla seçilmesin.
|
|
107
|
+
*/
|
|
108
|
+
export function orgUsersMatching(schema, criteria) {
|
|
109
|
+
const entries = Object.entries(criteria).filter(([, v]) => v !== undefined);
|
|
110
|
+
if (entries.length === 0)
|
|
111
|
+
throw new OneError(400, 'ONE-SDK-E-051', 'En az bir organizasyon ölçütü verilmelidir.');
|
|
112
|
+
return schema.users.filter((u) => u.isActive && entries.every(([k, v]) => u[k] === v));
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=org.js.map
|
package/dist/org.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"org.js","sourceRoot":"","sources":["../src/org.ts"],"names":[],"mappings":"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"}
|
package/dist/people.d.ts
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { BackendClient } from './backend.ts';
|
|
2
|
+
import { type OneContext } from './context.ts';
|
|
3
|
+
import { type OrgSchema } from './org.ts';
|
|
4
|
+
/** Aramanın en kısa metni (daha kısası tüm portalı listelemeye yaklaşırdı). */
|
|
5
|
+
export declare const PEOPLE_SEARCH_MIN_QUERY = 2;
|
|
6
|
+
/** Aramanın en uzun metni; uzunu reddedilir. */
|
|
7
|
+
export declare const PEOPLE_SEARCH_MAX_QUERY = 100;
|
|
8
|
+
/** Yanıttaki en çok kişi. */
|
|
9
|
+
export declare const PEOPLE_SEARCH_MAX_RESULTS = 20;
|
|
10
|
+
/** Arama sonucu — bileşenin `OnePerson` tipiyle aynı şekil. */
|
|
11
|
+
export interface PeopleSearchItem {
|
|
12
|
+
/** Org kimliği (Organization Schema `User._id`) — `sub` DEĞİL. */
|
|
13
|
+
id: string;
|
|
14
|
+
name: string;
|
|
15
|
+
title: string | null;
|
|
16
|
+
department: string | null;
|
|
17
|
+
}
|
|
18
|
+
export interface PeopleSearchEnv {
|
|
19
|
+
/** CA backend tabanı (create-one-app iskeletindeki `env.API_BASE`). */
|
|
20
|
+
API_BASE: string;
|
|
21
|
+
}
|
|
22
|
+
export interface PeopleSearchOptions {
|
|
23
|
+
/** Şemanın nasıl okunacağı (varsayılan `getOrgSchema`); önbellek eklemek ya da testte sahte şema vermek için. */
|
|
24
|
+
loadSchema?: (api: BackendClient) => Promise<OrgSchema>;
|
|
25
|
+
}
|
|
26
|
+
/** Türkçe harf duyarsız karşılaştırma anahtarı ("şükrü" ~ "SUKRU", "İ"/"I" doğru küçülür). */
|
|
27
|
+
export declare function foldPersonText(value: string): string;
|
|
28
|
+
/**
|
|
29
|
+
* Saf arama (ağ yok): yalnız AKTİF kişiler; aranan her sözcük adda geçmeli (VE). Sıra: adı aramayla başlayan →
|
|
30
|
+
* bir sözcüğü aramayla başlayan → diğerleri; eşitlikte Türkçe alfabetik. En çok `limit` kişi.
|
|
31
|
+
*/
|
|
32
|
+
export declare function searchPeople(schema: Pick<OrgSchema, 'users' | 'titles' | 'departments'>, query: string, lang?: 'tr' | 'en', limit?: number): PeopleSearchItem[];
|
|
33
|
+
/**
|
|
34
|
+
* `GET /api/one/people?q=&lang=` → `{ items: PeopleSearchItem[] }`. Oturum zorunlu (401), manifest scope'u
|
|
35
|
+
* `orgschema.read` zorunlu (403); `q` 2–100 karakter (400 `ONE-SDK-E-130`); yalnız `GET` (405 `ONE-SDK-E-131`).
|
|
36
|
+
* Hatalar RFC 9457 gövdesiyle döner (`problemResponse`).
|
|
37
|
+
*/
|
|
38
|
+
export declare function peopleSearchHandler(request: Request, env: PeopleSearchEnv, ctx: OneContext, options?: PeopleSearchOptions): Promise<Response>;
|
|
39
|
+
//# sourceMappingURL=people.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"people.d.ts","sourceRoot":"","sources":["../src/people.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,EAA0B,KAAK,UAAU,EAAE,MAAM,cAAc,CAAA;AACtE,OAAO,EAA+B,KAAK,SAAS,EAAE,MAAM,UAAU,CAAA;AAGtE,+EAA+E;AAC/E,eAAO,MAAM,uBAAuB,IAAI,CAAA;AACxC,gDAAgD;AAChD,eAAO,MAAM,uBAAuB,MAAM,CAAA;AAC1C,6BAA6B;AAC7B,eAAO,MAAM,yBAAyB,KAAK,CAAA;AAE3C,+DAA+D;AAC/D,MAAM,WAAW,gBAAgB;IAC/B,kEAAkE;IAClE,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CAC1B;AAED,MAAM,WAAW,eAAe;IAC9B,uEAAuE;IACvE,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,iHAAiH;IACjH,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,OAAO,CAAC,SAAS,CAAC,CAAA;CACxD;AAID,8FAA8F;AAC9F,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,GAAG,QAAQ,GAAG,aAAa,CAAC,EAC3D,KAAK,EAAE,MAAM,EACb,IAAI,GAAE,IAAI,GAAG,IAAW,EACxB,KAAK,SAA4B,GAChC,gBAAgB,EAAE,CA4BpB;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAkBvJ"}
|
package/dist/people.js
ADDED
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
// Kişi arama ucu (D-83 `<one-person-picker>`). Uygulama bu yardımcıyı KENDİ adresinde sunar:
|
|
2
|
+
// if (pathname === PEOPLE_SEARCH_PATH) return peopleSearchHandler(request, env, ctx)
|
|
3
|
+
// Tarayıcıdaki bileşen yalnız uygulamanın kendi origin'ine konuşur (`connect-src 'self'`); arama sunucuda, kullanıcının
|
|
4
|
+
// uygulama belirteciyle organizasyon şemasından yapılır (scope `orgschema.read` — D-47; backend "kullanıcı yetkisi ∩
|
|
5
|
+
// scope ∩ portal" kuralını kendisi uygular, kiracı belirteçtedir — istekten okunmaz).
|
|
6
|
+
//
|
|
7
|
+
// ⛔ KVKK veri en azaltma: yanıt yalnız org kimliği + ad + unvan + departman taşır. E-posta, telefon, kullanıcı kodu,
|
|
8
|
+
// fotoğraf ve iletişim bilgisi DÖNMEZ (şema bazılarını taşısa bile — alan alan kopyalanır, nesne olduğu gibi aktarılmaz).
|
|
9
|
+
// ⚠️ Dönen `id` ORG kimliğidir (Organization Schema `User._id`); devoplus-auth `sub` DEĞİLDİR (org.ts "İKİ KİMLİK
|
|
10
|
+
// UZAYI"). Şemada `sub` yoktur ve uydurulmaz. Bildirim gönderirken `toOrgUserIds` alanını kullanın.
|
|
11
|
+
import { BackendClient } from './backend.js';
|
|
12
|
+
import { OneError, requireScope } from './context.js';
|
|
13
|
+
import { getOrgSchema, localizedText } from './org.js';
|
|
14
|
+
import { problemResponse } from './problem.js';
|
|
15
|
+
/** Aramanın en kısa metni (daha kısası tüm portalı listelemeye yaklaşırdı). */
|
|
16
|
+
export const PEOPLE_SEARCH_MIN_QUERY = 2;
|
|
17
|
+
/** Aramanın en uzun metni; uzunu reddedilir. */
|
|
18
|
+
export const PEOPLE_SEARCH_MAX_QUERY = 100;
|
|
19
|
+
/** Yanıttaki en çok kişi. */
|
|
20
|
+
export const PEOPLE_SEARCH_MAX_RESULTS = 20;
|
|
21
|
+
const FOLD = { ç: 'c', ğ: 'g', ı: 'i', ö: 'o', ş: 's', ü: 'u', â: 'a', î: 'i', û: 'u' };
|
|
22
|
+
/** Türkçe harf duyarsız karşılaştırma anahtarı ("şükrü" ~ "SUKRU", "İ"/"I" doğru küçülür). */
|
|
23
|
+
export function foldPersonText(value) {
|
|
24
|
+
return value.toLocaleLowerCase('tr-TR').replace(/[çğıöşüâîû]/g, (c) => FOLD[c] ?? c);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Saf arama (ağ yok): yalnız AKTİF kişiler; aranan her sözcük adda geçmeli (VE). Sıra: adı aramayla başlayan →
|
|
28
|
+
* bir sözcüğü aramayla başlayan → diğerleri; eşitlikte Türkçe alfabetik. En çok `limit` kişi.
|
|
29
|
+
*/
|
|
30
|
+
export function searchPeople(schema, query, lang = 'tr', limit = PEOPLE_SEARCH_MAX_RESULTS) {
|
|
31
|
+
const q = foldPersonText(query.trim());
|
|
32
|
+
const parts = q.split(/\s+/).filter(Boolean);
|
|
33
|
+
if (parts.length === 0)
|
|
34
|
+
return [];
|
|
35
|
+
const titles = new Map((schema.titles ?? []).map((x) => [x.id, x]));
|
|
36
|
+
const departments = new Map((schema.departments ?? []).map((x) => [x.id, x]));
|
|
37
|
+
const hits = [];
|
|
38
|
+
for (const u of schema.users ?? []) {
|
|
39
|
+
if (!u || u.isActive !== true || typeof u.id !== 'string' || typeof u.fullName !== 'string' || u.fullName.trim() === '')
|
|
40
|
+
continue;
|
|
41
|
+
const name = foldPersonText(u.fullName);
|
|
42
|
+
if (!parts.every((p) => name.includes(p)))
|
|
43
|
+
continue;
|
|
44
|
+
const words = name.split(/\s+/);
|
|
45
|
+
const rank = name.startsWith(q) ? 0 : parts.every((p) => words.some((w) => w.startsWith(p))) ? 1 : 2;
|
|
46
|
+
const title = u.titleId ? titles.get(u.titleId) : undefined;
|
|
47
|
+
const department = u.departmentId ? departments.get(u.departmentId) : undefined;
|
|
48
|
+
// Alan alan kopyalanır: şema nesnesi (kullanıcı kodu, fotoğraf …) yanıta SIZMAZ.
|
|
49
|
+
hits.push({
|
|
50
|
+
rank,
|
|
51
|
+
item: {
|
|
52
|
+
id: u.id,
|
|
53
|
+
name: u.fullName.trim(),
|
|
54
|
+
title: title ? localizedText(title.titleName, lang) || null : null,
|
|
55
|
+
department: department && typeof department.departmentName === 'string' && department.departmentName.trim() !== '' ? department.departmentName.trim() : null,
|
|
56
|
+
},
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
hits.sort((a, b) => a.rank - b.rank || a.item.name.localeCompare(b.item.name, 'tr'));
|
|
60
|
+
return hits.slice(0, Math.max(0, Math.min(limit, PEOPLE_SEARCH_MAX_RESULTS))).map((h) => h.item);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* `GET /api/one/people?q=&lang=` → `{ items: PeopleSearchItem[] }`. Oturum zorunlu (401), manifest scope'u
|
|
64
|
+
* `orgschema.read` zorunlu (403); `q` 2–100 karakter (400 `ONE-SDK-E-130`); yalnız `GET` (405 `ONE-SDK-E-131`).
|
|
65
|
+
* Hatalar RFC 9457 gövdesiyle döner (`problemResponse`).
|
|
66
|
+
*/
|
|
67
|
+
export async function peopleSearchHandler(request, env, ctx, options = {}) {
|
|
68
|
+
try {
|
|
69
|
+
if (request.method !== 'GET')
|
|
70
|
+
throw new OneError(405, 'ONE-SDK-E-131', 'Kişi araması yalnız GET ile yapılır.');
|
|
71
|
+
requireScope(ctx, 'orgschema.read');
|
|
72
|
+
const params = new URL(request.url).searchParams;
|
|
73
|
+
const q = (params.get('q') ?? '').trim();
|
|
74
|
+
if (q.length < PEOPLE_SEARCH_MIN_QUERY || q.length > PEOPLE_SEARCH_MAX_QUERY)
|
|
75
|
+
throw new OneError(400, 'ONE-SDK-E-130', `Arama metni ${PEOPLE_SEARCH_MIN_QUERY}–${PEOPLE_SEARCH_MAX_QUERY} karakter olmalı.`);
|
|
76
|
+
const lang = /^en(?:$|[-_])/i.test(params.get('lang') ?? '') ? 'en' : 'tr';
|
|
77
|
+
const api = new BackendClient({ baseUrl: env.API_BASE, authorization: request.headers.get('authorization') });
|
|
78
|
+
const schema = await (options.loadSchema ?? getOrgSchema)(api);
|
|
79
|
+
const items = searchPeople(schema, q, lang);
|
|
80
|
+
return new Response(JSON.stringify({ items }), {
|
|
81
|
+
headers: { 'content-type': 'application/json; charset=utf-8', 'cache-control': 'no-store' },
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
return problemResponse(error, ctx);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=people.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"people.js","sourceRoot":"","sources":["../src/people.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type OneContext } from './context.ts';
|
|
2
|
+
/**
|
|
3
|
+
* OneError → RFC 9457 yanıtı; bilinmeyen hata 500 + sabit metin (iç mesaj sızmaz). Bilinmeyen hata Event Logger'a
|
|
4
|
+
* (D-45) ad · ileti · kırpılmış yığınla yazılır; `ctx` verilirse satır uygulama ve portal bağlamını da taşır.
|
|
5
|
+
*
|
|
6
|
+
* `OneError.retryAfterSeconds` pozitif bir tam sayıysa (ör. DEXA işlemi 409 `ERPCMD-APP-E-016`) yanıt onu hem
|
|
7
|
+
* `Retry-After` başlığında hem gövdedeki `retryAfterSeconds` alanında taşır — tarayıcıdaki kod "ne kadar beklenmeli"
|
|
8
|
+
* bilgisini kaybetmesin. Değer yoksa ya da pozitif tam sayı değilse ikisi de YAZILMAZ; gövdenin diğer alanları
|
|
9
|
+
* (`type` · `title` · `status` · `detail` · `code`) değişmez.
|
|
10
|
+
*/
|
|
11
|
+
export declare function problemResponse(error: unknown, ctx?: OneContext): Response;
|
|
12
|
+
//# sourceMappingURL=problem.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"problem.d.ts","sourceRoot":"","sources":["../src/problem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,UAAU,EAAE,MAAM,cAAc,CAAA;AAGxD;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,UAAU,GAAG,QAAQ,CAc1E"}
|
package/dist/problem.js
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { OneError } from './context.js';
|
|
2
|
+
import { describeError, logError } from './log.js';
|
|
3
|
+
/**
|
|
4
|
+
* OneError → RFC 9457 yanıtı; bilinmeyen hata 500 + sabit metin (iç mesaj sızmaz). Bilinmeyen hata Event Logger'a
|
|
5
|
+
* (D-45) ad · ileti · kırpılmış yığınla yazılır; `ctx` verilirse satır uygulama ve portal bağlamını da taşır.
|
|
6
|
+
*
|
|
7
|
+
* `OneError.retryAfterSeconds` pozitif bir tam sayıysa (ör. DEXA işlemi 409 `ERPCMD-APP-E-016`) yanıt onu hem
|
|
8
|
+
* `Retry-After` başlığında hem gövdedeki `retryAfterSeconds` alanında taşır — tarayıcıdaki kod "ne kadar beklenmeli"
|
|
9
|
+
* bilgisini kaybetmesin. Değer yoksa ya da pozitif tam sayı değilse ikisi de YAZILMAZ; gövdenin diğer alanları
|
|
10
|
+
* (`type` · `title` · `status` · `detail` · `code`) değişmez.
|
|
11
|
+
*/
|
|
12
|
+
export function problemResponse(error, ctx) {
|
|
13
|
+
const e = error instanceof OneError ? error : new OneError(500, 'ONE-SDK-E-999', 'Beklenmeyen bir hata oluştu.');
|
|
14
|
+
if (!(error instanceof OneError)) {
|
|
15
|
+
if (ctx)
|
|
16
|
+
logError(ctx, 'beklenmeyen hata', error);
|
|
17
|
+
else
|
|
18
|
+
console.error(JSON.stringify({ kind: 'event', level: 'error', message: 'beklenmeyen hata', error: describeError(error) }));
|
|
19
|
+
}
|
|
20
|
+
const retryAfterSeconds = retryAfterHint(e.retryAfterSeconds);
|
|
21
|
+
const body = { type: 'about:blank', title: e.code, status: e.status, detail: e.message, code: e.code };
|
|
22
|
+
const headers = new Headers({ 'content-type': 'application/problem+json; charset=utf-8' });
|
|
23
|
+
if (retryAfterSeconds !== undefined) {
|
|
24
|
+
body.retryAfterSeconds = retryAfterSeconds;
|
|
25
|
+
headers.set('retry-after', String(retryAfterSeconds));
|
|
26
|
+
}
|
|
27
|
+
return new Response(JSON.stringify(body), { status: e.status, headers });
|
|
28
|
+
}
|
|
29
|
+
/** Yalnız pozitif (güvenli) tam sayı geçer; `0`, kesirli, negatif ya da sayı olmayan değer ipucu sayılmaz. */
|
|
30
|
+
function retryAfterHint(value) {
|
|
31
|
+
return typeof value === 'number' && Number.isSafeInteger(value) && value > 0 ? value : undefined;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=problem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"problem.js","sourceRoot":"","sources":["../src/problem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAmB,MAAM,cAAc,CAAA;AACxD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAElD;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAAC,KAAc,EAAE,GAAgB;IAC9D,MAAM,CAAC,GAAG,KAAK,YAAY,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,GAAG,EAAE,eAAe,EAAE,8BAA8B,CAAC,CAAA;IAChH,IAAI,CAAC,CAAC,KAAK,YAAY,QAAQ,CAAC,EAAE,CAAC;QACjC,IAAI,GAAG;YAAE,QAAQ,CAAC,GAAG,EAAE,kBAAkB,EAAE,KAAK,CAAC,CAAA;;YAC5C,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAA;IACjI,CAAC;IACD,MAAM,iBAAiB,GAAG,cAAc,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAA;IAC7D,MAAM,IAAI,GAA4B,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;IAC/H,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,EAAE,cAAc,EAAE,yCAAyC,EAAE,CAAC,CAAA;IAC1F,IAAI,iBAAiB,KAAK,SAAS,EAAE,CAAC;QACpC,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAA;QAC1C,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAA;IACvD,CAAC;IACD,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAA;AAC1E,CAAC;AAED,8GAA8G;AAC9G,SAAS,cAAc,CAAC,KAAc;IACpC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;AAClG,CAAC"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
export type OneDatabaseValue = string | number | boolean | null | ArrayBuffer | ArrayBufferView;
|
|
2
|
+
export interface OneQueryMeta {
|
|
3
|
+
/** Sorgunun süresi (ms). */
|
|
4
|
+
duration?: number;
|
|
5
|
+
/** Değişen satır sayısı (INSERT/UPDATE/DELETE). */
|
|
6
|
+
changes?: number;
|
|
7
|
+
/** Son eklenen satırın kimliği. */
|
|
8
|
+
last_row_id?: number;
|
|
9
|
+
[key: string]: unknown;
|
|
10
|
+
}
|
|
11
|
+
export interface OneQueryResult<T = Record<string, unknown>> {
|
|
12
|
+
results: T[];
|
|
13
|
+
success: boolean;
|
|
14
|
+
meta: OneQueryMeta;
|
|
15
|
+
}
|
|
16
|
+
export interface OneStatement {
|
|
17
|
+
/** Soru işaretli (`?` / `?1`) parametreleri sırayla bağlar. Değerler SQL metnine EKLENMEZ — enjeksiyona kapalı yol budur. */
|
|
18
|
+
bind(...values: OneDatabaseValue[]): OneStatement;
|
|
19
|
+
/** İlk satır (yoksa `null`); `column` verilirse yalnız o kolonun değeri. */
|
|
20
|
+
first<T = Record<string, unknown>>(): Promise<T | null>;
|
|
21
|
+
first<T = unknown>(column: string): Promise<T | null>;
|
|
22
|
+
all<T = Record<string, unknown>>(): Promise<OneQueryResult<T>>;
|
|
23
|
+
run<T = Record<string, unknown>>(): Promise<OneQueryResult<T>>;
|
|
24
|
+
raw<T = unknown[]>(): Promise<T[]>;
|
|
25
|
+
}
|
|
26
|
+
export interface OneDatabase {
|
|
27
|
+
prepare(query: string): OneStatement;
|
|
28
|
+
/** İfadeleri tek işlemde (transaction) sırayla çalıştırır; biri düşerse hiçbiri kalıcı olmaz. */
|
|
29
|
+
batch<T = Record<string, unknown>>(statements: OneStatement[]): Promise<OneQueryResult<T>[]>;
|
|
30
|
+
}
|
|
31
|
+
export interface OneStoredFile {
|
|
32
|
+
key: string;
|
|
33
|
+
size: number;
|
|
34
|
+
etag: string;
|
|
35
|
+
/** `etag` tırnaklı biçimde; doğrudan `ETag` yanıt başlığına yazılır. */
|
|
36
|
+
httpEtag: string;
|
|
37
|
+
uploaded: Date;
|
|
38
|
+
httpMetadata?: {
|
|
39
|
+
contentType?: string;
|
|
40
|
+
};
|
|
41
|
+
customMetadata?: Record<string, string>;
|
|
42
|
+
}
|
|
43
|
+
export interface OneStoredFileBody extends OneStoredFile {
|
|
44
|
+
body: ReadableStream;
|
|
45
|
+
/** Yüklemede saklanan HTTP üst verisini (ör. `content-type`) yanıt başlıklarına yazar. */
|
|
46
|
+
writeHttpMetadata(headers: Headers): void;
|
|
47
|
+
arrayBuffer(): Promise<ArrayBuffer>;
|
|
48
|
+
text(): Promise<string>;
|
|
49
|
+
json<T = unknown>(): Promise<T>;
|
|
50
|
+
}
|
|
51
|
+
export interface OneFilesPutOptions {
|
|
52
|
+
httpMetadata?: {
|
|
53
|
+
contentType?: string;
|
|
54
|
+
};
|
|
55
|
+
customMetadata?: Record<string, string>;
|
|
56
|
+
}
|
|
57
|
+
export interface OneFilesListOptions {
|
|
58
|
+
limit?: number;
|
|
59
|
+
prefix?: string;
|
|
60
|
+
cursor?: string;
|
|
61
|
+
}
|
|
62
|
+
export type OneFilesListResult = {
|
|
63
|
+
objects: OneStoredFile[];
|
|
64
|
+
truncated: true;
|
|
65
|
+
cursor: string;
|
|
66
|
+
} | {
|
|
67
|
+
objects: OneStoredFile[];
|
|
68
|
+
truncated: false;
|
|
69
|
+
};
|
|
70
|
+
export interface OneFilesBinding {
|
|
71
|
+
put(key: string, value: ArrayBuffer | ArrayBufferView | string | Blob, options?: OneFilesPutOptions): Promise<OneStoredFile | null>;
|
|
72
|
+
get(key: string): Promise<OneStoredFileBody | null>;
|
|
73
|
+
head(key: string): Promise<OneStoredFile | null>;
|
|
74
|
+
delete(key: string): Promise<void>;
|
|
75
|
+
list(options?: OneFilesListOptions): Promise<OneFilesListResult>;
|
|
76
|
+
}
|
|
77
|
+
export interface OneCacheBinding {
|
|
78
|
+
get(key: string, type: 'text'): Promise<string | null>;
|
|
79
|
+
put(key: string, value: string, options?: {
|
|
80
|
+
expirationTtl?: number;
|
|
81
|
+
}): Promise<void>;
|
|
82
|
+
delete(key: string): Promise<void>;
|
|
83
|
+
}
|
|
84
|
+
export interface OneExecutionContext {
|
|
85
|
+
/** Yanıt döndükten sonra da sürmesi gereken işi (ör. denetim kaydı) çalışma ortamına bildirir. */
|
|
86
|
+
waitUntil(promise: Promise<unknown>): void;
|
|
87
|
+
}
|
|
88
|
+
/** Uygulamanın varsayılan dışa aktarımı: `export default { fetch(request, env, ctx) { … } } satisfies OneApp<Env>`. */
|
|
89
|
+
export interface OneApp<Env = unknown> {
|
|
90
|
+
fetch(request: Request, env: Env, ctx: OneExecutionContext): Response | Promise<Response>;
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
|
package/dist/runtime.js
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
// Devoplus One çalışma ortamı tipleri (D-72 white label).
|
|
2
|
+
//
|
|
3
|
+
// Uygulamanın `env` nesnesindeki bağlamalar (veritabanı, dosya, önbellek) ve giriş noktası bu adlarla tanımlanır.
|
|
4
|
+
// Çalışma ortamı bu nesneleri hazırlar; burada yalnız uygulamanın kullanabileceği yüzey tanımlıdır — tanımlı olmayan
|
|
5
|
+
// bir yöntem Devoplus One sözleşmesinin parçası değildir. Standart Web API'leri (fetch, Request, Response, URL,
|
|
6
|
+
// crypto, ReadableStream, TextEncoder …) TypeScript'in `WebWorker` kütüphanesinden gelir.
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAC1D,EAAE;AACF,kHAAkH;AAClH,qHAAqH;AACrH,gHAAgH;AAChH,0FAA0F"}
|