@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.
Files changed (139) hide show
  1. package/CHANGELOG.md +268 -0
  2. package/README.md +894 -2
  3. package/bin/accessRequest.d.mts +96 -0
  4. package/bin/accessRequest.mjs +340 -0
  5. package/bin/appOps.d.mts +97 -0
  6. package/bin/appOps.mjs +336 -0
  7. package/bin/dataCommand.mjs +131 -0
  8. package/bin/devConfig.mjs +132 -0
  9. package/bin/one.mjs +341 -0
  10. package/bin/session.mjs +239 -0
  11. package/dist/agentInput.d.ts +9 -0
  12. package/dist/agentInput.d.ts.map +1 -0
  13. package/dist/agentInput.js +102 -0
  14. package/dist/agentInput.js.map +1 -0
  15. package/dist/agentTools.d.ts +83 -0
  16. package/dist/agentTools.d.ts.map +1 -0
  17. package/dist/agentTools.js +164 -0
  18. package/dist/agentTools.js.map +1 -0
  19. package/dist/ai.d.ts +67 -0
  20. package/dist/ai.d.ts.map +1 -0
  21. package/dist/ai.js +129 -0
  22. package/dist/ai.js.map +1 -0
  23. package/dist/audit.d.ts +21 -0
  24. package/dist/audit.d.ts.map +1 -0
  25. package/dist/audit.js +58 -0
  26. package/dist/audit.js.map +1 -0
  27. package/dist/backend.d.ts +27 -0
  28. package/dist/backend.d.ts.map +1 -0
  29. package/dist/backend.js +63 -0
  30. package/dist/backend.js.map +1 -0
  31. package/dist/cache.d.ts +20 -0
  32. package/dist/cache.d.ts.map +1 -0
  33. package/dist/cache.js +84 -0
  34. package/dist/cache.js.map +1 -0
  35. package/dist/client.d.ts +147 -0
  36. package/dist/client.d.ts.map +1 -0
  37. package/dist/client.js +469 -0
  38. package/dist/client.js.map +1 -0
  39. package/dist/components.d.ts +235 -0
  40. package/dist/components.d.ts.map +1 -0
  41. package/dist/components.js +1491 -0
  42. package/dist/components.js.map +1 -0
  43. package/dist/context.d.ts +110 -0
  44. package/dist/context.d.ts.map +1 -0
  45. package/dist/context.js +126 -0
  46. package/dist/context.js.map +1 -0
  47. package/dist/data/crud.d.ts +74 -0
  48. package/dist/data/crud.d.ts.map +1 -0
  49. package/dist/data/crud.js +614 -0
  50. package/dist/data/crud.js.map +1 -0
  51. package/dist/data/ddl.d.ts +76 -0
  52. package/dist/data/ddl.d.ts.map +1 -0
  53. package/dist/data/ddl.js +362 -0
  54. package/dist/data/ddl.js.map +1 -0
  55. package/dist/data/fold.d.ts +14 -0
  56. package/dist/data/fold.d.ts.map +1 -0
  57. package/dist/data/fold.js +76 -0
  58. package/dist/data/fold.js.map +1 -0
  59. package/dist/data/model.d.ts +113 -0
  60. package/dist/data/model.d.ts.map +1 -0
  61. package/dist/data/model.js +408 -0
  62. package/dist/data/model.js.map +1 -0
  63. package/dist/data/values.d.ts +29 -0
  64. package/dist/data/values.d.ts.map +1 -0
  65. package/dist/data/values.js +152 -0
  66. package/dist/data/values.js.map +1 -0
  67. package/dist/dexa.d.ts +44 -0
  68. package/dist/dexa.d.ts.map +1 -0
  69. package/dist/dexa.js +74 -0
  70. package/dist/dexa.js.map +1 -0
  71. package/dist/dexaCommand.d.ts +116 -0
  72. package/dist/dexaCommand.d.ts.map +1 -0
  73. package/dist/dexaCommand.js +226 -0
  74. package/dist/dexaCommand.js.map +1 -0
  75. package/dist/export/columns.d.ts +62 -0
  76. package/dist/export/columns.d.ts.map +1 -0
  77. package/dist/export/columns.js +127 -0
  78. package/dist/export/columns.js.map +1 -0
  79. package/dist/export/csv.d.ts +10 -0
  80. package/dist/export/csv.d.ts.map +1 -0
  81. package/dist/export/csv.js +30 -0
  82. package/dist/export/csv.js.map +1 -0
  83. package/dist/export/report.d.ts +19 -0
  84. package/dist/export/report.d.ts.map +1 -0
  85. package/dist/export/report.js +91 -0
  86. package/dist/export/report.js.map +1 -0
  87. package/dist/export/response.d.ts +14 -0
  88. package/dist/export/response.d.ts.map +1 -0
  89. package/dist/export/response.js +70 -0
  90. package/dist/export/response.js.map +1 -0
  91. package/dist/export/xlsx.d.ts +15 -0
  92. package/dist/export/xlsx.d.ts.map +1 -0
  93. package/dist/export/xlsx.js +167 -0
  94. package/dist/export/xlsx.js.map +1 -0
  95. package/dist/export/zip.d.ts +7 -0
  96. package/dist/export/zip.d.ts.map +1 -0
  97. package/dist/export/zip.js +83 -0
  98. package/dist/export/zip.js.map +1 -0
  99. package/dist/files.d.ts +52 -0
  100. package/dist/files.d.ts.map +1 -0
  101. package/dist/files.js +137 -0
  102. package/dist/files.js.map +1 -0
  103. package/dist/index.d.ts +31 -0
  104. package/dist/index.d.ts.map +1 -0
  105. package/dist/index.js +35 -0
  106. package/dist/index.js.map +1 -0
  107. package/dist/jobs.d.ts +57 -0
  108. package/dist/jobs.d.ts.map +1 -0
  109. package/dist/jobs.js +157 -0
  110. package/dist/jobs.js.map +1 -0
  111. package/dist/log.d.ts +22 -0
  112. package/dist/log.d.ts.map +1 -0
  113. package/dist/log.js +107 -0
  114. package/dist/log.js.map +1 -0
  115. package/dist/notify.d.ts +41 -0
  116. package/dist/notify.d.ts.map +1 -0
  117. package/dist/notify.js +11 -0
  118. package/dist/notify.js.map +1 -0
  119. package/dist/org.d.ts +184 -0
  120. package/dist/org.d.ts.map +1 -0
  121. package/dist/org.js +114 -0
  122. package/dist/org.js.map +1 -0
  123. package/dist/people.d.ts +39 -0
  124. package/dist/people.d.ts.map +1 -0
  125. package/dist/people.js +88 -0
  126. package/dist/people.js.map +1 -0
  127. package/dist/problem.d.ts +12 -0
  128. package/dist/problem.d.ts.map +1 -0
  129. package/dist/problem.js +33 -0
  130. package/dist/problem.js.map +1 -0
  131. package/dist/runtime.d.ts +92 -0
  132. package/dist/runtime.d.ts.map +1 -0
  133. package/dist/runtime.js +8 -0
  134. package/dist/runtime.js.map +1 -0
  135. package/dist/scenarios.d.ts +125 -0
  136. package/dist/scenarios.d.ts.map +1 -0
  137. package/dist/scenarios.js +251 -0
  138. package/dist/scenarios.js.map +1 -0
  139. package/package.json +55 -3
@@ -0,0 +1,125 @@
1
+ import type { BackendClient } from './backend.ts';
2
+ import { OneError } from './context.ts';
3
+ import { type MailRequest, type NotifyResult, type PushRequest, type SmsRequest } from './notify.ts';
4
+ export type NotificationLang = 'tr' | 'en';
5
+ /** Sunucu sınırları (backend `OneServiceLimits`) — değişirse ikisi birlikte değişir. */
6
+ export declare const MAIL_SUBJECT_MAX_LENGTH = 200;
7
+ export declare const MAIL_TEXT_MAX_LENGTH = 10000;
8
+ export declare const SMS_TEXT_MAX_LENGTH = 300;
9
+ /** Mobil bildirim sınırları (D-55 sözleşmesi: başlık 1-100, metin 1-300; kırpılmış hâliyle). */
10
+ export declare const PUSH_TITLE_MAX_LENGTH = 100;
11
+ export declare const PUSH_TEXT_MAX_LENGTH = 300;
12
+ /** Serbest alanların (iş adı, uygulama adı, kişi adı) tek başına en çok uzunluğu. */
13
+ export declare const SCENARIO_FIELD_MAX_LENGTH = 120;
14
+ export declare const SCENARIO_NOTE_MAX_LENGTH = 1000;
15
+ /**
16
+ * SMS metninde uygulama ve kişi adlarının en çok uzunluğu. 120'lik iki ad tek başına 300'lük SMS sınırını aşabildiği
17
+ * için (bağlantı olmasa da) SMS'te kısaltılırlar — yalnız iş adını kısaltmak yetmiyordu (inceleme bulgusu).
18
+ */
19
+ export declare const SMS_NAME_MAX_LENGTH = 40;
20
+ /** Hazır mesaj: e-posta konusu + gövdesi ve SMS metni. Kanal seçimi çağıranındır (`toMail` / `toSms` / `toPush` / `notify`). */
21
+ export interface ScenarioMessage {
22
+ subject: string;
23
+ text: string;
24
+ smsText: string;
25
+ }
26
+ interface Common {
27
+ lang?: NotificationLang;
28
+ /** Bildirimi gönderen uygulamanın görünen adı (ör. "İzin Talepleri"). */
29
+ appName: string;
30
+ /** Alıcının işlemi açacağı adres — yalnız `https:`. */
31
+ link?: string;
32
+ }
33
+ export interface ApprovalRequestInput extends Common {
34
+ /** Onay bekleyen iş (ör. "3 günlük yıllık izin, 21-23 Ekim"). */
35
+ item: string;
36
+ /** Onay isteyen kişinin görünen adı. */
37
+ requester: string;
38
+ /** İsteğe bağlı son tarih (ISO tarih ya da metin; olduğu gibi yazılır). */
39
+ dueDate?: string;
40
+ }
41
+ export type ApprovalOutcome = 'approved' | 'rejected';
42
+ export interface ApprovalResultInput extends Common {
43
+ item: string;
44
+ outcome: ApprovalOutcome;
45
+ /** Kararı veren kişinin görünen adı. */
46
+ decidedBy?: string;
47
+ note?: string;
48
+ }
49
+ export interface ReminderInput extends Common {
50
+ item: string;
51
+ dueDate?: string;
52
+ }
53
+ export interface SystemNoticeInput extends Common {
54
+ title: string;
55
+ message: string;
56
+ }
57
+ export type OperationOutcome = 'succeeded' | 'failed';
58
+ export interface OperationResultInput extends Common {
59
+ /** İşlemin adı (ör. "Toplu fatura aktarımı"). */
60
+ operation: string;
61
+ outcome: OperationOutcome;
62
+ note?: string;
63
+ }
64
+ export interface VerificationCodeInput {
65
+ lang?: NotificationLang;
66
+ appName: string;
67
+ code: string;
68
+ /** Kodun geçerlilik süresi (dakika); metne yazılır, saklama ve süre denetimi uygulamanındır. */
69
+ validMinutes: number;
70
+ /** Kodun ne için olduğu (ör. "ödeme onayı"); verilmezse genel metin. */
71
+ purpose?: string;
72
+ }
73
+ /** Yalnız `https:` mutlak adres kabul edilir; dönen değer normalize edilmiş adrestir. */
74
+ export declare function normalizeLink(link: string | undefined): string | undefined;
75
+ export declare function approvalRequest(input: ApprovalRequestInput): ScenarioMessage;
76
+ export declare function approvalResult(input: ApprovalResultInput): ScenarioMessage;
77
+ export declare function reminder(input: ReminderInput): ScenarioMessage;
78
+ export declare function systemNotice(input: SystemNoticeInput): ScenarioMessage;
79
+ export declare function operationResult(input: OperationResultInput): ScenarioMessage;
80
+ export declare function verificationCode(input: VerificationCodeInput): ScenarioMessage;
81
+ /** Alıcılar: `sub` listesi ve/veya org kullanıcı kimlikleri (ör. `approvalChain` çıktısı). */
82
+ export interface Recipients {
83
+ toSubjects?: readonly string[];
84
+ toOrgUserIds?: readonly string[];
85
+ }
86
+ export declare function toMail(message: ScenarioMessage, to: Recipients): MailRequest;
87
+ export declare function toSms(message: ScenarioMessage, to: Recipients): SmsRequest;
88
+ /**
89
+ * Mobil bildirim isteği: başlık = e-posta konusu (≤ 100'e kırpılır), metin = SMS metni (≤ 300; hazır senaryolarda zaten
90
+ * sığar, elle kurulmuş `ScenarioMessage` için yine kırpılır). Kırpma bir vekil çifti (emoji) ortasından bölmez. Derin
91
+ * bağlantı taşınmaz (D-55); bağlantı yalnız SMS metninin içinde düz metin olarak durur.
92
+ */
93
+ export declare function toPush(message: ScenarioMessage, to: Recipients): PushRequest;
94
+ export type NotifyChannel = 'mail' | 'sms' | 'push';
95
+ /**
96
+ * Mesajı seçilen kanallardan gönderir. Kanallar BAĞIMSIZDIR: biri düşerse öteki yine denenir ve sonuçta hata kanal
97
+ * adıyla döner — bir SMS sağlayıcı arızası e-postayı da düşürmesin; push bugün her ortamda kapalıdır (`ONE-APP-E-029`)
98
+ * ve onu seçmek e-postayı/SMS'i etkilemez. Hiçbir kanal seçilmezse hata.
99
+ */
100
+ export declare function notify(api: BackendClient, message: ScenarioMessage, options: Recipients & {
101
+ channels: readonly NotifyChannel[];
102
+ }): Promise<Partial<Record<NotifyChannel, NotifyResult | {
103
+ error: OneError;
104
+ }>>>;
105
+ /** Düzgün dağılımlı sayısal kod (modulo yanlılığı reddetme örneklemesiyle giderilir). */
106
+ export declare function generateVerificationCode(digits?: number): string;
107
+ /** Rastgele tuz (hex, 16 bayt). Kodla birlikte değil, özetin yanında saklanır. */
108
+ export declare function generateSalt(): string;
109
+ /** `sha256(tuz | amaç | sub | kod)` hex. Amaç ve sub özete girer: bir işlem için üretilen kod başka bir işlemde ya da kişide geçmez. */
110
+ export declare function hashVerificationCode(args: {
111
+ code: string;
112
+ salt: string;
113
+ purpose: string;
114
+ sub: string;
115
+ }): Promise<string>;
116
+ /** Sabit zamanlı karşılaştırma (uzunluk farkında da tüm baytlar gezilir). */
117
+ export declare function verificationCodeMatches(args: {
118
+ code: string;
119
+ salt: string;
120
+ purpose: string;
121
+ sub: string;
122
+ hash: string;
123
+ }): Promise<boolean>;
124
+ export {};
125
+ //# sourceMappingURL=scenarios.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scenarios.d.ts","sourceRoot":"","sources":["../src/scenarios.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,251 @@
1
+ import { OneError } from './context.js';
2
+ import { sendMail, sendPush, sendSms } from './notify.js';
3
+ /** Sunucu sınırları (backend `OneServiceLimits`) — değişirse ikisi birlikte değişir. */
4
+ export const MAIL_SUBJECT_MAX_LENGTH = 200;
5
+ export const MAIL_TEXT_MAX_LENGTH = 10_000;
6
+ export const SMS_TEXT_MAX_LENGTH = 300;
7
+ /** Mobil bildirim sınırları (D-55 sözleşmesi: başlık 1-100, metin 1-300; kırpılmış hâliyle). */
8
+ export const PUSH_TITLE_MAX_LENGTH = 100;
9
+ export const PUSH_TEXT_MAX_LENGTH = 300;
10
+ /** Serbest alanların (iş adı, uygulama adı, kişi adı) tek başına en çok uzunluğu. */
11
+ export const SCENARIO_FIELD_MAX_LENGTH = 120;
12
+ export const SCENARIO_NOTE_MAX_LENGTH = 1_000;
13
+ /**
14
+ * SMS metninde uygulama ve kişi adlarının en çok uzunluğu. 120'lik iki ad tek başına 300'lük SMS sınırını aşabildiği
15
+ * için (bağlantı olmasa da) SMS'te kısaltılırlar — yalnız iş adını kısaltmak yetmiyordu (inceleme bulgusu).
16
+ */
17
+ export const SMS_NAME_MAX_LENGTH = 40;
18
+ /** UTF-16 kesimi bir vekil çiftini (emoji gibi) ortasından bölmez — yarım karakter sunucuya gitmesin. */
19
+ function cut(t, n) {
20
+ const s = t.slice(0, n);
21
+ const last = s.charCodeAt(s.length - 1);
22
+ return last >= 0xd800 && last <= 0xdbff ? s.slice(0, -1) : s;
23
+ }
24
+ function clip(text, max) {
25
+ const t = text.replace(/\s+/g, ' ').trim();
26
+ return t.length > max ? `${cut(t, max - 1)}…` : t;
27
+ }
28
+ function clipBlock(text, max) {
29
+ const t = text.trim();
30
+ return t.length > max ? `${cut(t, max - 1)}…` : t;
31
+ }
32
+ /** SMS'teki uygulama/kişi adı. */
33
+ function sms(name) {
34
+ return clip(name, SMS_NAME_MAX_LENGTH);
35
+ }
36
+ function requireText(value, field) {
37
+ if (typeof value !== 'string' || value.trim() === '')
38
+ throw new OneError(400, 'ONE-SDK-E-060', `Bildirim alanı boş olamaz: ${field}.`);
39
+ return value;
40
+ }
41
+ /** Yalnız `https:` mutlak adres kabul edilir; dönen değer normalize edilmiş adrestir. */
42
+ export function normalizeLink(link) {
43
+ if (link === undefined)
44
+ return undefined;
45
+ let url;
46
+ try {
47
+ url = new URL(link);
48
+ }
49
+ catch {
50
+ throw new OneError(400, 'ONE-SDK-E-061', 'Bildirim bağlantısı geçerli bir mutlak adres değil.');
51
+ }
52
+ if (url.protocol !== 'https:')
53
+ throw new OneError(400, 'ONE-SDK-E-061', 'Bildirim bağlantısı yalnız https adresi olabilir.');
54
+ if (url.username || url.password)
55
+ throw new OneError(400, 'ONE-SDK-E-061', 'Bildirim bağlantısı kullanıcı adı/parola taşıyamaz.');
56
+ return url.toString();
57
+ }
58
+ function lang(input) {
59
+ return input.lang === 'en' ? 'en' : 'tr';
60
+ }
61
+ /** Mesajı sunucu sınırlarına sığdırır; şablon metni sabit olduğu için ancak çok uzun bağlantı taşırabilir → hata. */
62
+ function finalize(subject, text, smsText) {
63
+ const s = clip(subject, MAIL_SUBJECT_MAX_LENGTH);
64
+ if (text.length > MAIL_TEXT_MAX_LENGTH)
65
+ throw new OneError(400, 'ONE-SDK-E-062', `E-posta metni ${MAIL_TEXT_MAX_LENGTH} karakteri aşıyor.`);
66
+ if (smsText.length > SMS_TEXT_MAX_LENGTH)
67
+ throw new OneError(400, 'ONE-SDK-E-062', `SMS metni ${SMS_TEXT_MAX_LENGTH} karakteri aşıyor (bağlantıyı kısaltın).`);
68
+ return { subject: s, text, smsText };
69
+ }
70
+ function lines(...parts) {
71
+ return parts.filter((p) => typeof p === 'string' && p !== '').join('\n');
72
+ }
73
+ /** SMS'e sığacak kadar kısaltılmış alan: sabit metin + bağlantı kalanıyla. */
74
+ function smsFit(build, field) {
75
+ let f = clip(field, SCENARIO_FIELD_MAX_LENGTH);
76
+ let out = build(f);
77
+ while (out.length > SMS_TEXT_MAX_LENGTH && f.length > 8) {
78
+ f = clip(f, Math.max(8, f.length - (out.length - SMS_TEXT_MAX_LENGTH) - 1));
79
+ out = build(f);
80
+ }
81
+ return out;
82
+ }
83
+ export function approvalRequest(input) {
84
+ const l = lang(input);
85
+ const app = clip(requireText(input.appName, 'appName'), SCENARIO_FIELD_MAX_LENGTH);
86
+ const item = requireText(input.item, 'item');
87
+ const requester = clip(requireText(input.requester, 'requester'), SCENARIO_FIELD_MAX_LENGTH);
88
+ const link = normalizeLink(input.link);
89
+ const due = input.dueDate ? clip(input.dueDate, 40) : undefined;
90
+ if (l === 'en') {
91
+ return finalize(`Approval required: ${clip(item, SCENARIO_FIELD_MAX_LENGTH)}`, lines(`${requester} is waiting for your approval in ${app}.`, '', `Item: ${clipBlock(item, SCENARIO_NOTE_MAX_LENGTH)}`, due && `Due: ${due}`, link && `\nReview it here: ${link}`), smsFit((f) => lines(`${sms(app)}: ${sms(requester)} is waiting for your approval — ${f}.`, due && `Due: ${due}`, link), item));
92
+ }
93
+ return finalize(`Onayınız bekleniyor: ${clip(item, SCENARIO_FIELD_MAX_LENGTH)}`, lines(`${requester}, ${app} uygulamasında onayınızı bekliyor.`, '', `Konu: ${clipBlock(item, SCENARIO_NOTE_MAX_LENGTH)}`, due && `Son tarih: ${due}`, link && `\nİncelemek için: ${link}`), smsFit((f) => lines(`${sms(app)}: ${sms(requester)} onayınızı bekliyor — ${f}.`, due && `Son tarih: ${due}`, link), item));
94
+ }
95
+ export function approvalResult(input) {
96
+ const l = lang(input);
97
+ const app = clip(requireText(input.appName, 'appName'), SCENARIO_FIELD_MAX_LENGTH);
98
+ const item = requireText(input.item, 'item');
99
+ if (input.outcome !== 'approved' && input.outcome !== 'rejected')
100
+ throw new OneError(400, 'ONE-SDK-E-060', 'Onay sonucu approved ya da rejected olmalı.');
101
+ const link = normalizeLink(input.link);
102
+ const by = input.decidedBy ? clip(input.decidedBy, SCENARIO_FIELD_MAX_LENGTH) : undefined;
103
+ const note = input.note ? clipBlock(input.note, SCENARIO_NOTE_MAX_LENGTH) : undefined;
104
+ const ok = input.outcome === 'approved';
105
+ if (l === 'en') {
106
+ const verb = ok ? 'approved' : 'rejected';
107
+ return finalize(`Request ${verb}: ${clip(item, SCENARIO_FIELD_MAX_LENGTH)}`, lines(`Your request in ${app} has been ${verb}${by ? ` by ${by}` : ''}.`, '', `Item: ${clipBlock(item, SCENARIO_NOTE_MAX_LENGTH)}`, note && `Note: ${note}`, link && `\nDetails: ${link}`), smsFit((f) => lines(`${sms(app)}: your request was ${verb}${by ? ` by ${sms(by)}` : ''} — ${f}.`, link), item));
108
+ }
109
+ const verb = ok ? 'onaylandı' : 'reddedildi';
110
+ return finalize(`Talebiniz ${verb}: ${clip(item, SCENARIO_FIELD_MAX_LENGTH)}`, lines(`${app} uygulamasındaki talebiniz ${by ? `${by} tarafından ` : ''}${verb}.`, '', `Konu: ${clipBlock(item, SCENARIO_NOTE_MAX_LENGTH)}`, note && `Not: ${note}`, link && `\nAyrıntılar: ${link}`), smsFit((f) => lines(`${sms(app)}: talebiniz ${by ? `${sms(by)} tarafından ` : ''}${verb} — ${f}.`, link), item));
111
+ }
112
+ export function reminder(input) {
113
+ const l = lang(input);
114
+ const app = clip(requireText(input.appName, 'appName'), SCENARIO_FIELD_MAX_LENGTH);
115
+ const item = requireText(input.item, 'item');
116
+ const link = normalizeLink(input.link);
117
+ const due = input.dueDate ? clip(input.dueDate, 40) : undefined;
118
+ if (l === 'en') {
119
+ return finalize(`Reminder: ${clip(item, SCENARIO_FIELD_MAX_LENGTH)}`, lines(`This is a reminder from ${app}.`, '', `Item: ${clipBlock(item, SCENARIO_NOTE_MAX_LENGTH)}`, due && `Due: ${due}`, link && `\nOpen it here: ${link}`), smsFit((f) => lines(`${sms(app)} reminder: ${f}.`, due && `Due: ${due}`, link), item));
120
+ }
121
+ return finalize(`Hatırlatma: ${clip(item, SCENARIO_FIELD_MAX_LENGTH)}`, lines(`${app} uygulamasından bir hatırlatmanız var.`, '', `Konu: ${clipBlock(item, SCENARIO_NOTE_MAX_LENGTH)}`, due && `Son tarih: ${due}`, link && `\nAçmak için: ${link}`), smsFit((f) => lines(`${sms(app)} hatırlatması: ${f}.`, due && `Son tarih: ${due}`, link), item));
122
+ }
123
+ export function systemNotice(input) {
124
+ const l = lang(input);
125
+ const app = clip(requireText(input.appName, 'appName'), SCENARIO_FIELD_MAX_LENGTH);
126
+ const title = requireText(input.title, 'title');
127
+ const message = clipBlock(requireText(input.message, 'message'), MAIL_TEXT_MAX_LENGTH - 500);
128
+ const link = normalizeLink(input.link);
129
+ const prefix = l === 'en' ? `Notice from ${app}` : `${app} bildirimi`;
130
+ return finalize(`${prefix}: ${clip(title, SCENARIO_FIELD_MAX_LENGTH)}`, lines(message, link && `\n${l === 'en' ? 'More information' : 'Ayrıntılar'}: ${link}`), smsFit((f) => lines(`${l === 'en' ? `Notice from ${sms(app)}` : `${sms(app)} bildirimi`}: ${f}.`, link), title));
131
+ }
132
+ export function operationResult(input) {
133
+ const l = lang(input);
134
+ const app = clip(requireText(input.appName, 'appName'), SCENARIO_FIELD_MAX_LENGTH);
135
+ const op = requireText(input.operation, 'operation');
136
+ if (input.outcome !== 'succeeded' && input.outcome !== 'failed')
137
+ throw new OneError(400, 'ONE-SDK-E-060', 'İşlem sonucu succeeded ya da failed olmalı.');
138
+ const link = normalizeLink(input.link);
139
+ const note = input.note ? clipBlock(input.note, SCENARIO_NOTE_MAX_LENGTH) : undefined;
140
+ const ok = input.outcome === 'succeeded';
141
+ if (l === 'en') {
142
+ const verb = ok ? 'completed successfully' : 'failed';
143
+ return finalize(`${ok ? 'Completed' : 'Failed'}: ${clip(op, SCENARIO_FIELD_MAX_LENGTH)}`, lines(`The operation "${clip(op, SCENARIO_FIELD_MAX_LENGTH)}" in ${app} ${verb}.`, note && `\n${note}`, link && `\nDetails: ${link}`), smsFit((f) => lines(`${sms(app)}: "${f}" ${verb}.`, link), op));
144
+ }
145
+ const verb = ok ? 'başarıyla tamamlandı' : 'tamamlanamadı';
146
+ return finalize(`${ok ? 'Tamamlandı' : 'Tamamlanamadı'}: ${clip(op, SCENARIO_FIELD_MAX_LENGTH)}`, lines(`${app} uygulamasındaki "${clip(op, SCENARIO_FIELD_MAX_LENGTH)}" işlemi ${verb}.`, note && `\n${note}`, link && `\nAyrıntılar: ${link}`), smsFit((f) => lines(`${sms(app)}: "${f}" işlemi ${verb}.`, link), op));
147
+ }
148
+ export function verificationCode(input) {
149
+ const l = lang(input);
150
+ const app = clip(requireText(input.appName, 'appName'), SCENARIO_FIELD_MAX_LENGTH);
151
+ if (!/^\d{4,10}$/.test(input.code ?? ''))
152
+ throw new OneError(400, 'ONE-SDK-E-060', 'Doğrulama kodu 4-10 haneli olmalı.');
153
+ if (!Number.isInteger(input.validMinutes) || input.validMinutes < 1 || input.validMinutes > 60)
154
+ throw new OneError(400, 'ONE-SDK-E-060', 'Doğrulama kodunun süresi 1-60 dakika olmalı.');
155
+ const purpose = input.purpose ? clip(input.purpose, 60) : undefined;
156
+ if (l === 'en') {
157
+ const what = purpose ? ` for ${purpose}` : '';
158
+ const body = `Your ${app} verification code${what}: ${input.code}. It is valid for ${input.validMinutes} minutes. Do not share it with anyone.`;
159
+ return finalize(`${app} verification code`, lines(body, '', 'If you did not request this code, you can ignore this message.'), body);
160
+ }
161
+ const what = purpose ? ` (${purpose})` : '';
162
+ const body = `${app} doğrulama kodunuz${what}: ${input.code}. Kod ${input.validMinutes} dakika geçerlidir. Kimseyle paylaşmayınız.`;
163
+ return finalize(`${app} doğrulama kodu`, lines(body, '', 'Bu kodu siz istemediyseniz bu iletiyi dikkate almayınız.'), body);
164
+ }
165
+ function recipients(r) {
166
+ const toSubjects = r.toSubjects ?? [];
167
+ const toOrgUserIds = r.toOrgUserIds ?? [];
168
+ if (toSubjects.length + toOrgUserIds.length === 0)
169
+ throw new OneError(400, 'ONE-SDK-E-063', 'En az bir alıcı verilmelidir.');
170
+ return toOrgUserIds.length > 0 ? { toSubjects, toOrgUserIds } : { toSubjects };
171
+ }
172
+ export function toMail(message, to) {
173
+ return { ...recipients(to), subject: message.subject, text: message.text };
174
+ }
175
+ export function toSms(message, to) {
176
+ return { ...recipients(to), text: message.smsText };
177
+ }
178
+ /**
179
+ * Mobil bildirim isteği: başlık = e-posta konusu (≤ 100'e kırpılır), metin = SMS metni (≤ 300; hazır senaryolarda zaten
180
+ * sığar, elle kurulmuş `ScenarioMessage` için yine kırpılır). Kırpma bir vekil çifti (emoji) ortasından bölmez. Derin
181
+ * bağlantı taşınmaz (D-55); bağlantı yalnız SMS metninin içinde düz metin olarak durur.
182
+ */
183
+ export function toPush(message, to) {
184
+ return { ...recipients(to), title: clip(message.subject, PUSH_TITLE_MAX_LENGTH), text: clipBlock(message.smsText, PUSH_TEXT_MAX_LENGTH) };
185
+ }
186
+ /**
187
+ * Mesajı seçilen kanallardan gönderir. Kanallar BAĞIMSIZDIR: biri düşerse öteki yine denenir ve sonuçta hata kanal
188
+ * adıyla döner — bir SMS sağlayıcı arızası e-postayı da düşürmesin; push bugün her ortamda kapalıdır (`ONE-APP-E-029`)
189
+ * ve onu seçmek e-postayı/SMS'i etkilemez. Hiçbir kanal seçilmezse hata.
190
+ */
191
+ export async function notify(api, message, options) {
192
+ const channels = [...new Set(options.channels)];
193
+ if (channels.length === 0)
194
+ throw new OneError(400, 'ONE-SDK-E-063', 'En az bir bildirim kanalı seçilmelidir.');
195
+ recipients(options);
196
+ const out = {};
197
+ for (const channel of channels) {
198
+ try {
199
+ out[channel] =
200
+ channel === 'mail'
201
+ ? await sendMail(api, toMail(message, options))
202
+ : channel === 'sms'
203
+ ? await sendSms(api, toSms(message, options))
204
+ : await sendPush(api, toPush(message, options));
205
+ }
206
+ catch (e) {
207
+ out[channel] = { error: e instanceof OneError ? e : new OneError(502, 'ONE-SDK-E-999', e instanceof Error ? e.message : String(e)) };
208
+ }
209
+ }
210
+ return out;
211
+ }
212
+ // ── Doğrulama kodu ──────────────────────────────────────────────────────────────────────────────────────────────
213
+ /** Düzgün dağılımlı sayısal kod (modulo yanlılığı reddetme örneklemesiyle giderilir). */
214
+ export function generateVerificationCode(digits = 6) {
215
+ if (!Number.isInteger(digits) || digits < 4 || digits > 10)
216
+ throw new OneError(400, 'ONE-SDK-E-060', 'Doğrulama kodu 4-10 haneli olmalı.');
217
+ let out = '';
218
+ const buf = new Uint8Array(1);
219
+ while (out.length < digits) {
220
+ crypto.getRandomValues(buf);
221
+ const b = buf[0];
222
+ if (b >= 250)
223
+ continue; // 250..255 reddedilir: 0..249 on'a tam bölünür
224
+ out += String(b % 10);
225
+ }
226
+ return out;
227
+ }
228
+ /** Rastgele tuz (hex, 16 bayt). Kodla birlikte değil, özetin yanında saklanır. */
229
+ export function generateSalt() {
230
+ const b = new Uint8Array(16);
231
+ crypto.getRandomValues(b);
232
+ return [...b].map((x) => x.toString(16).padStart(2, '0')).join('');
233
+ }
234
+ /** `sha256(tuz | amaç | sub | kod)` hex. Amaç ve sub özete girer: bir işlem için üretilen kod başka bir işlemde ya da kişide geçmez. */
235
+ export async function hashVerificationCode(args) {
236
+ const data = new TextEncoder().encode(`${args.salt}|${args.purpose}|${args.sub}|${args.code}`);
237
+ const digest = new Uint8Array(await crypto.subtle.digest('SHA-256', data));
238
+ return [...digest].map((x) => x.toString(16).padStart(2, '0')).join('');
239
+ }
240
+ /** Sabit zamanlı karşılaştırma (uzunluk farkında da tüm baytlar gezilir). */
241
+ export async function verificationCodeMatches(args) {
242
+ if (!/^\d{4,10}$/.test(args.code))
243
+ return false;
244
+ const actual = await hashVerificationCode(args);
245
+ const expected = args.hash.toLowerCase();
246
+ let diff = actual.length ^ expected.length;
247
+ for (let i = 0; i < actual.length; i++)
248
+ diff |= actual.charCodeAt(i) ^ (expected.charCodeAt(i) || 0);
249
+ return diff === 0;
250
+ }
251
+ //# sourceMappingURL=scenarios.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scenarios.js","sourceRoot":"","sources":["../src/scenarios.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,58 @@
1
1
  {
2
2
  "name": "@devoplus/one-sdk",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
3
+ "version": "0.2.0-next.112",
4
+ "description": "Devoplus One SDK — uygulamaların kimlik bağlamı, Devoplus servisleri, dosya ve önbellek depoları ile iletişim (e-posta/SMS/bildirim) istemcisi",
5
+ "license": "UNLICENSED",
6
+ "type": "module",
7
+ "sideEffects": false,
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.js",
12
+ "default": "./dist/index.js"
13
+ },
14
+ "./access-request": {
15
+ "types": "./bin/accessRequest.d.mts",
16
+ "default": "./bin/accessRequest.mjs"
17
+ },
18
+ "./app-ops": {
19
+ "types": "./bin/appOps.d.mts",
20
+ "default": "./bin/appOps.mjs"
21
+ }
22
+ },
23
+ "bin": {
24
+ "one": "./bin/one.mjs"
25
+ },
26
+ "files": [
27
+ "dist",
28
+ "bin/*.mjs",
29
+ "bin/*.d.mts",
30
+ "README.md",
31
+ "CHANGELOG.md"
32
+ ],
33
+ "publishConfig": {
34
+ "access": "public"
35
+ },
36
+ "engines": {
37
+ "node": ">=22"
38
+ },
39
+ "repository": {
40
+ "type": "git",
41
+ "url": "https://github.com/devoplus/devoplus-one",
42
+ "directory": "packages/sdk"
43
+ },
44
+ "keywords": [
45
+ "devoplus",
46
+ "devoplus-one",
47
+ "sdk"
48
+ ],
49
+ "dependencies": {
50
+ "wrangler": "^4.151.0"
51
+ },
52
+ "scripts": {
53
+ "type-check": "tsc -p tsconfig.json && tsc -p tsconfig.compat.json",
54
+ "build": "rm -rf dist && tsc -p tsconfig.build.json"
55
+ },
56
+ "main": "./dist/index.js",
57
+ "types": "./dist/index.d.ts"
6
58
  }