@vtecx/vtecxdocument 1.0.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.
package/README.md ADDED
@@ -0,0 +1,21 @@
1
+ # @vtecx/vtecxdocument
2
+
3
+ vte.cx BaaS framework and API documentation package.
4
+
5
+ ## Contents
6
+
7
+ - `docs/framework.md` — Framework overview
8
+ - `docs/vtecxnext-api.md` — vte.cx Next API guide
9
+ - `docs/api/` — Individual API reference documents
10
+
11
+ ## Usage
12
+
13
+ ```bash
14
+ npm install @vtecx/vtecxdocument
15
+ ```
16
+
17
+ After installation, documentation is available under `node_modules/@vtecx/vtecxdocument/docs/`.
18
+
19
+ ## Source
20
+
21
+ [https://github.com/reflexworks/vtecxdocument](https://github.com/reflexworks/vtecxdocument)
@@ -0,0 +1,68 @@
1
+ # ACL・エイリアス
2
+
3
+ エントリのアクセス権限(ACL)とエイリアス(複数パス参照)を操作するメソッド群。
4
+
5
+ > これらのメソッドは引数に **feed** を取る。対象エントリと追加・削除する ACL/エイリアスを `link` に含めた feed を渡す。
6
+ > 通常は `put()` でエントリ登録・更新時に `contributor`(ACL)や `link` の `rel="alternate"`(エイリアス)を設定すれば足りる。以下は既存エントリの ACL/エイリアスを部分的に増減したい場合に使う。
7
+
8
+ ---
9
+
10
+ ## ACL 操作
11
+
12
+ ### `addacl(feed)`
13
+
14
+ ```typescript
15
+ addacl(feed: any): Promise<any>
16
+ ```
17
+
18
+ feed で指定したエントリに ACL を追加する。
19
+
20
+ | 引数 | 型 | 説明 |
21
+ | --- | --- | --- |
22
+ | `feed` | `any` | 対象エントリと追加する ACL(`contributor`)を含む feed |
23
+
24
+ #### ACL 文字列の形式
25
+
26
+ ```
27
+ urn:vte.cx:acl:/_group/$admin,CURD ← 管理者グループにCURD権限
28
+ urn:vte.cx:acl:+,CURDE ← ログインユーザー全員にCURDE権限
29
+ urn:vte.cx:acl:{uid},CURD ← 特定ユーザーにCURD権限
30
+ urn:vte.cx:acl:/_group/viewer,R ← viewerグループに読み取り権限のみ
31
+ ```
32
+
33
+ ---
34
+
35
+ ### `removeacl(feed)`
36
+
37
+ ```typescript
38
+ removeacl(feed: any): Promise<any>
39
+ ```
40
+
41
+ feed で指定したエントリから ACL を削除する。
42
+
43
+ ---
44
+
45
+ ## エイリアス操作
46
+
47
+ エイリアスは同一エントリを複数のパスから参照する仕組み。
48
+ 通常は `put()` で `link` 配列に `___rel: 'alternate'` を追加することで設定するが、`addalias` / `removealias` でも操作できる。
49
+
50
+ 詳細は [framework.md](../framework.md#エイリアス横断検索) を参照。
51
+
52
+ ### `addalias(feed)`
53
+
54
+ ```typescript
55
+ addalias(feed: any): Promise<any>
56
+ ```
57
+
58
+ feed で指定したエントリにエイリアスパスを追加する。
59
+
60
+ ---
61
+
62
+ ### `removealias(feed)`
63
+
64
+ ```typescript
65
+ removealias(feed: any): Promise<any>
66
+ ```
67
+
68
+ feed で指定したエントリからエイリアスパスを削除する。
@@ -0,0 +1,153 @@
1
+ # 認証・セッション
2
+
3
+ ログイン状態の確認・ログイン・ログアウト・ユーザー情報取得を行うメソッド群。
4
+
5
+ ---
6
+
7
+ ## ログイン状態確認
8
+
9
+ ### `isLoggedin()`
10
+
11
+ ```typescript
12
+ isLoggedin(): Promise<boolean>
13
+ ```
14
+
15
+ 現在のリクエストがログイン済みかどうかを返す。
16
+
17
+ ---
18
+
19
+ ### `uid()`
20
+
21
+ ```typescript
22
+ uid(): Promise<string>
23
+ ```
24
+
25
+ ログインユーザーの UID を返す。未ログインの場合はエラーをスロー。
26
+
27
+ ```typescript
28
+ const uid = await vtecxnext.uid()
29
+ ```
30
+
31
+ ---
32
+
33
+ ### `account()`
34
+
35
+ ```typescript
36
+ account(): Promise<string>
37
+ ```
38
+
39
+ ログインユーザーのアカウント名(メールアドレス)を返す。
40
+
41
+ ---
42
+
43
+ ### `service()`
44
+
45
+ ```typescript
46
+ service(): Promise<string>
47
+ ```
48
+
49
+ 現在のサービス名を返す。
50
+
51
+ ```typescript
52
+ const serviceName = await vtecxnext.service()
53
+ ```
54
+
55
+ ---
56
+
57
+ ### `now()`
58
+
59
+ ```typescript
60
+ now(): Promise<string>
61
+ ```
62
+
63
+ サーバーの現在日時を ISO 8601 形式で返す。
64
+
65
+ ---
66
+
67
+ ### `rxid()`
68
+
69
+ ```typescript
70
+ rxid(): Promise<string>
71
+ ```
72
+
73
+ リクエスト ID を返す。
74
+
75
+ ---
76
+
77
+ ### `whoami()`
78
+
79
+ ```typescript
80
+ whoami(): Promise<any>
81
+ ```
82
+
83
+ ログインユーザーの詳細情報を feed 形式で返す。
84
+
85
+ ---
86
+
87
+ ## ログイン
88
+
89
+ ### `login(wsse, reCaptchaToken?)`
90
+
91
+ ```typescript
92
+ login(wsse: string, reCaptchaToken?: string): Promise<StatusMessage>
93
+ ```
94
+
95
+ WSSE 認証情報を使ってログインする。
96
+
97
+ | 引数 | 型 | 説明 |
98
+ | --- | --- | --- |
99
+ | `wsse` | `string` | WSSE 認証情報 |
100
+ | `reCaptchaToken` | `string?` | reCAPTCHA トークン(省略可) |
101
+
102
+ ---
103
+
104
+ ### `loginWithRxid(rxid)`
105
+
106
+ ```typescript
107
+ loginWithRxid(rxid: string): Promise<StatusMessage>
108
+ ```
109
+
110
+ RXID を使ってセッションを確立する。パスワードリセットフローや仮登録完了フローで使用。
111
+
112
+ ```typescript
113
+ const rxid = vtecxnext.getParameter('_RXID') ?? ''
114
+ await vtecxnext.loginWithRxid(rxid)
115
+ ```
116
+
117
+ ---
118
+
119
+ ### `loginWithTotp(totp, isTrustedDevice)`
120
+
121
+ ```typescript
122
+ loginWithTotp(totp: string, isTrustedDevice: boolean): Promise<StatusMessage>
123
+ ```
124
+
125
+ TOTP(ワンタイムパスワード)を使ってログインする。多要素認証(MFA)フローで使用。
126
+
127
+ | 引数 | 型 | 説明 |
128
+ | --- | --- | --- |
129
+ | `totp` | `string` | ワンタイムパスワード |
130
+ | `isTrustedDevice` | `boolean` | 信頼済みデバイスとして登録するか |
131
+
132
+ ---
133
+
134
+ ## ログアウト
135
+
136
+ ### `logout()`
137
+
138
+ ```typescript
139
+ logout(): Promise<StatusMessage>
140
+ ```
141
+
142
+ 現在のセッションをログアウトする。
143
+
144
+ ---
145
+
146
+ ## 型定義
147
+
148
+ ```typescript
149
+ type StatusMessage = {
150
+ status: number
151
+ message: string
152
+ }
153
+ ```
@@ -0,0 +1,177 @@
1
+ # コンテンツ・ファイル
2
+
3
+ バイナリファイルの保存・取得・削除・署名付き URL の発行を行うメソッド群。
4
+
5
+ > アップロード対象のデータは、`VtecxNext` のコンストラクタに渡した `NextRequest`(リクエストボディ)から読み取られる。メソッド引数でコンテンツ本体を直接渡すのは `putcontent` の `arrayBuffer` のみ。
6
+
7
+ ---
8
+
9
+ ## URL 取得
10
+
11
+ ### `getcontenturl(uri)`
12
+
13
+ ```typescript
14
+ getcontenturl(uri: string): Promise<string>
15
+ ```
16
+
17
+ コンテンツ(ファイル)の URL を取得する。
18
+
19
+ ```typescript
20
+ const url = await vtecxnext.getcontenturl('/files/image/001')
21
+ ```
22
+
23
+ ---
24
+
25
+ ## ファイルアップロード
26
+
27
+ ### `savefiles(uri, bysize?)`
28
+
29
+ ```typescript
30
+ savefiles(uri: string, bysize?: boolean): Promise<any>
31
+ ```
32
+
33
+ リクエスト(コンストラクタに渡した `NextRequest`)に含まれるマルチパートフォームデータのファイルを、指定 URI 配下に保存する。
34
+
35
+ | 引数 | 型 | 説明 |
36
+ | --- | --- | --- |
37
+ | `uri` | `string` | 保存先の URI |
38
+ | `bysize` | `boolean?` | サイズ指定モードで保存するか(省略可) |
39
+
40
+ ```typescript
41
+ const result = await vtecxnext.savefiles('/files/image')
42
+ ```
43
+
44
+ ---
45
+
46
+ ### `savefilesBySize(uri)`
47
+
48
+ ```typescript
49
+ savefilesBySize(uri: string): Promise<any>
50
+ ```
51
+
52
+ `savefiles(uri, true)` 相当。ファイルをサイズ指定モードで保存する。
53
+
54
+ ---
55
+
56
+ ## コンテンツ操作
57
+
58
+ ### `putcontent(uri, filename?, arrayBuffer?)`
59
+
60
+ ```typescript
61
+ putcontent(uri: string, filename?: string, arrayBuffer?: ArrayBuffer): Promise<any>
62
+ ```
63
+
64
+ コンテンツを指定 URI に保存(上書き)する。`arrayBuffer` を省略した場合はリクエストボディから読み取る。
65
+
66
+ | 引数 | 型 | 説明 |
67
+ | --- | --- | --- |
68
+ | `uri` | `string` | 保存先 URI |
69
+ | `filename` | `string?` | ファイル名(省略可) |
70
+ | `arrayBuffer` | `ArrayBuffer?` | 保存するコンテンツ本体(省略時はリクエストボディ) |
71
+
72
+ ```typescript
73
+ await vtecxnext.putcontent('/files/report/001', 'report.pdf', pdfArrayBuffer)
74
+ ```
75
+
76
+ ---
77
+
78
+ ### `putcontentBySize(uri)`
79
+
80
+ ```typescript
81
+ putcontentBySize(uri: string): Promise<any>
82
+ ```
83
+
84
+ `putcontent` のサイズ指定モード版。
85
+
86
+ ---
87
+
88
+ ### `postcontent(parenturi, extension?, filename?)`
89
+
90
+ ```typescript
91
+ postcontent(parenturi: string, extension?: string, filename?: string): Promise<any>
92
+ ```
93
+
94
+ コンテンツを新規作成する。ID は `parenturi` 配下に vte.cx が自動採番する。
95
+
96
+ | 引数 | 型 | 説明 |
97
+ | --- | --- | --- |
98
+ | `parenturi` | `string` | 親フォルダの URI |
99
+ | `extension` | `string?` | 拡張子(省略可) |
100
+ | `filename` | `string?` | ファイル名(省略可) |
101
+
102
+ ---
103
+
104
+ ### `getcontent(uri)`
105
+
106
+ ```typescript
107
+ getcontent(uri: string): Promise<boolean>
108
+ ```
109
+
110
+ 指定 URI のコンテンツを取得し、レスポンスへ書き出す。取得に成功したかどうかを `boolean` で返す。
111
+
112
+ ```typescript
113
+ const ok = await vtecxnext.getcontent('/files/report/001')
114
+ ```
115
+
116
+ ---
117
+
118
+ ### `deletecontent(uri)`
119
+
120
+ ```typescript
121
+ deletecontent(uri: string): Promise<any>
122
+ ```
123
+
124
+ 指定 URI のコンテンツを削除する。
125
+
126
+ ---
127
+
128
+ ## 署名付き URL
129
+
130
+ 大容量ファイルの直接アップロード・ダウンロード向け。クライアントが署名付き URL を使って直接 GCS などと通信するため、サーバーを経由しない。戻り値は `ContentSignedUrl` 型。
131
+
132
+ ### `getSignedUrlToPutContent(uri, filename?)`
133
+
134
+ ```typescript
135
+ getSignedUrlToPutContent(uri: string, filename?: string): Promise<ContentSignedUrl>
136
+ ```
137
+
138
+ PUT(上書き保存)用の署名付き URL を発行する。
139
+
140
+ ```typescript
141
+ const signed = await vtecxnext.getSignedUrlToPutContent('/files/video/001', 'movie.mp4')
142
+ ```
143
+
144
+ ---
145
+
146
+ ### `getSignedUrlToPostContent(parenturi, extension?, filename?)`
147
+
148
+ ```typescript
149
+ getSignedUrlToPostContent(
150
+ parenturi: string,
151
+ extension?: string,
152
+ filename?: string
153
+ ): Promise<ContentSignedUrl>
154
+ ```
155
+
156
+ POST(新規作成)用の署名付き URL を発行する。
157
+
158
+ ---
159
+
160
+ ### `getSignedUrlToGetContent(uri)`
161
+
162
+ ```typescript
163
+ getSignedUrlToGetContent(uri: string): Promise<ContentSignedUrl>
164
+ ```
165
+
166
+ GET(ダウンロード)用の署名付き URL を発行する。
167
+
168
+ ---
169
+
170
+ ## 型定義
171
+
172
+ ```typescript
173
+ type ContentSignedUrl = {
174
+ url: string // 署名付き URL
175
+ key: string // 対象コンテンツのキー
176
+ }
177
+ ```
@@ -0,0 +1,96 @@
1
+ # 採番・カウンタ
2
+
3
+ 連番 ID の払い出しや、カウンタ値の操作を行うメソッド群。
4
+ vte.cx のカウンタ機能は、原子性が保証された連番採番に使用する。
5
+
6
+ ---
7
+
8
+ ## 連番採番
9
+
10
+ ### `allocids(uri, num, targetService?)`
11
+
12
+ ```typescript
13
+ allocids(uri: string, num: number, targetService?: string): Promise<string>
14
+ ```
15
+
16
+ 指定した URI のカウンタから `num` 個の連番を払い出す。
17
+ `"{開始},{終了}"` 形式の文字列を返す。
18
+
19
+ ```typescript
20
+ const range = await vtecxnext.allocids('/crm/customer/_ids', 1)
21
+ // 例: "42,43" → 42 を払い出し(num=1 で 1 件)
22
+ const id = range.split(',')[0] // "42"
23
+ const paddedId = id.padStart(10, '0') // "0000000042"
24
+ ```
25
+
26
+ ---
27
+
28
+ ### `addids(uri, num, targetService?)`
29
+
30
+ ```typescript
31
+ addids(uri: string, num: number, targetService?: string): Promise<number | null>
32
+ ```
33
+
34
+ カウンタに `num` を加算し、加算後の値を返す。
35
+
36
+ ```typescript
37
+ const next = await vtecxnext.addids('/counter/order', 1)
38
+ ```
39
+
40
+ ---
41
+
42
+ ## カウンタ参照・設定
43
+
44
+ ### `getids(uri, targetService?)`
45
+
46
+ ```typescript
47
+ getids(uri: string, targetService?: string): Promise<number | null>
48
+ ```
49
+
50
+ カウンタの現在値を取得する。
51
+
52
+ ```typescript
53
+ const current = await vtecxnext.getids('/counter/order')
54
+ ```
55
+
56
+ ---
57
+
58
+ ### `setids(uri, num, targetService?)`
59
+
60
+ ```typescript
61
+ setids(uri: string, num: number, targetService?: string): Promise<number | null>
62
+ ```
63
+
64
+ カウンタの値を指定した値に設定する。設定後の値を返す。
65
+
66
+ ```typescript
67
+ await vtecxnext.setids('/counter/order', 1000)
68
+ ```
69
+
70
+ ---
71
+
72
+ ## 範囲採番
73
+
74
+ ### `rangeids(uri, range)`
75
+
76
+ ```typescript
77
+ rangeids(uri: string, range: string): Promise<string>
78
+ ```
79
+
80
+ カウンタから指定した範囲を確保する。`range` は `"{開始}-{終了}"` 形式。
81
+ 確保した範囲を文字列で返す。
82
+
83
+ ```typescript
84
+ const result = await vtecxnext.rangeids('/counter/order', '1-100')
85
+ // 例: "1-100"
86
+ ```
87
+
88
+ ---
89
+
90
+ ### `getRangeids(uri)`
91
+
92
+ ```typescript
93
+ getRangeids(uri: string): Promise<string>
94
+ ```
95
+
96
+ `rangeids()` で確保した範囲の現在値を文字列で返す。