@nx-ddd/spreadsheet 19.0.0-preview.9 → 19.1.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.
Files changed (50) hide show
  1. package/converter/converter.d.ts +24 -0
  2. package/converter/converter.js +288 -0
  3. package/converter/converter.js.map +1 -0
  4. package/converter/index.d.ts +1 -0
  5. package/converter/index.js +5 -0
  6. package/converter/index.js.map +1 -0
  7. package/decorators/decorators.d.ts +38 -0
  8. package/decorators/decorators.js +63 -0
  9. package/decorators/decorators.js.map +1 -0
  10. package/decorators/index.d.ts +1 -0
  11. package/decorators/index.js +5 -0
  12. package/decorators/index.js.map +1 -0
  13. package/impl/index.d.ts +1 -0
  14. package/impl/index.js +5 -0
  15. package/impl/index.js.map +1 -0
  16. package/{sheets/sheets.service.impl.d.ts → impl/sheet.service.impl.d.ts} +5 -2
  17. package/{sheets/sheets.service.impl.js → impl/sheet.service.impl.js} +77 -40
  18. package/impl/sheet.service.impl.js.map +1 -0
  19. package/index.d.ts +2 -2
  20. package/index.js +2 -2
  21. package/index.js.map +1 -1
  22. package/package.json +1 -1
  23. package/repository/repository.d.ts +41 -9
  24. package/repository/repository.js +56 -6
  25. package/repository/repository.js.map +1 -1
  26. package/sheets/sheets.service.d.ts +2 -4
  27. package/sheets/sheets.service.js +4 -7
  28. package/sheets/sheets.service.js.map +1 -1
  29. package/token/index.d.ts +1 -0
  30. package/token/index.js +6 -0
  31. package/token/index.js.map +1 -0
  32. package/google-sheet/client/client.d.ts +0 -11
  33. package/google-sheet/client/client.js +0 -45
  34. package/google-sheet/client/client.js.map +0 -1
  35. package/google-sheet/client/client.module.d.ts +0 -2
  36. package/google-sheet/client/client.module.js +0 -15
  37. package/google-sheet/client/client.module.js.map +0 -1
  38. package/google-sheet/client/index.d.ts +0 -2
  39. package/google-sheet/client/index.js +0 -6
  40. package/google-sheet/client/index.js.map +0 -1
  41. package/google-sheet/google-sheet.module.d.ts +0 -2
  42. package/google-sheet/google-sheet.module.js +0 -14
  43. package/google-sheet/google-sheet.module.js.map +0 -1
  44. package/google-sheet/index.d.ts +0 -2
  45. package/google-sheet/index.js +0 -6
  46. package/google-sheet/index.js.map +0 -1
  47. package/sheets/sheets.service.impl.js.map +0 -1
  48. package/spreadsheet.d.ts +0 -1
  49. package/spreadsheet.js +0 -7
  50. package/spreadsheet.js.map +0 -1
@@ -0,0 +1,24 @@
1
+ import dayjs from 'dayjs';
2
+ export interface SheetConverter<T> {
3
+ fromSheet(record: any): T;
4
+ fromSheetMany(records: any[]): T[];
5
+ toSheet(model: T): any;
6
+ toSheetMany(models: T[]): any[];
7
+ }
8
+ export declare class SheetUtils {
9
+ static fromSheetDate(serial: number | null): Date | null;
10
+ static fromSheetBoolean(value: any): boolean;
11
+ static fromSheetText(value: any): string | null;
12
+ static fromSheetNumber(value: any): number | null;
13
+ static toSheetDate(date: dayjs.Dayjs | Date | null): Date | null;
14
+ static toSheetBoolean(value: boolean): string;
15
+ static fromSheet<E, D extends object>(record: D, type: {
16
+ new (): E;
17
+ }): E;
18
+ static toSheet<E, D extends object>(entity: E, type: {
19
+ new (): E;
20
+ }): D;
21
+ }
22
+ export declare function getConverter<T>(type: {
23
+ new (): T;
24
+ }): SheetConverter<T>;
@@ -0,0 +1,288 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SheetUtils = void 0;
4
+ exports.getConverter = getConverter;
5
+ const tslib_1 = require("tslib");
6
+ const lodash_es_1 = require("lodash-es");
7
+ const dayjs_1 = tslib_1.__importDefault(require("dayjs"));
8
+ const decorators_1 = require("../decorators");
9
+ class SheetUtils {
10
+ static fromSheetDate(serial) {
11
+ if (typeof serial !== 'number')
12
+ return null;
13
+ const excelEpoch = (0, dayjs_1.default)('1899-12-30');
14
+ return excelEpoch.add(serial, 'day').toDate();
15
+ }
16
+ static fromSheetBoolean(value) {
17
+ if (typeof value === 'boolean')
18
+ return value;
19
+ return value === 'TRUE';
20
+ }
21
+ static fromSheetText(value) {
22
+ if (value === null || value === undefined)
23
+ return null;
24
+ return `${value}`;
25
+ }
26
+ static fromSheetNumber(value) {
27
+ if (value === null || value === undefined || value === '')
28
+ return null;
29
+ // 数値の場合はそのまま返す
30
+ if (typeof value === 'number')
31
+ return value;
32
+ // 文字列の場合は通貨記号や区切り文字を取り除いて変換
33
+ if (typeof value === 'string') {
34
+ // 通貨記号(¥,$など)、カンマ、スペース、その他の記号を削除
35
+ const cleanedValue = value.replace(/[¥$,\s]/g, '');
36
+ // 数値に変換を試みる
37
+ const numValue = Number(cleanedValue);
38
+ return !isNaN(numValue) ? numValue : null;
39
+ }
40
+ return null;
41
+ }
42
+ static toSheetDate(date) {
43
+ if (!date)
44
+ return null;
45
+ if (dayjs_1.default.isDayjs(date))
46
+ return date.toDate();
47
+ return date;
48
+ }
49
+ static toSheetBoolean(value) {
50
+ return value ? 'TRUE' : 'FALSE';
51
+ }
52
+ static fromSheet(record, type) {
53
+ var _a, _b;
54
+ // console.debug('fromSheet', record, type);
55
+ // コンストラクタを使用してインスタンスを作成
56
+ const instance = new type();
57
+ // アノテーション取得
58
+ const annotations = (0, decorators_1.getFlattenFieldAnnotations)(type);
59
+ // ネストされたオブジェクトのマッピング情報を作成
60
+ const nestedObjects = new Map();
61
+ // まずはTypeアノテーションを持つフィールドをクラスから直接取得
62
+ const typeAnnotations = ((_a = decorators_1.Sheet.getAnnotations(type)) === null || _a === void 0 ? void 0 : _a.filter(anno => anno.type === 'type')) || [];
63
+ for (const typeAnno of typeAnnotations) {
64
+ if (typeAnno.propName && typeAnno.childType) {
65
+ nestedObjects.set(typeAnno.fieldName, { propName: typeAnno.propName, type: typeAnno.childType() });
66
+ // ネストされたオブジェクトのインスタンスを作成
67
+ instance[typeAnno.propName] = new (typeAnno.childType())();
68
+ }
69
+ }
70
+ // シートデータのキーとアノテーションの対応マップを作成
71
+ const keyToAnnotationMap = new Map();
72
+ for (const [key, annotation] of Object.entries(annotations)) {
73
+ if (annotation.type === 'type')
74
+ continue; // タイプアノテーションはスキップ
75
+ // fieldNameが未定義の場合はスキップ
76
+ if (!annotation.fieldName)
77
+ continue;
78
+ // ネストされたプロパティの場合
79
+ for (const [parentField, parentInfo] of nestedObjects.entries()) {
80
+ const parentPrefix = `${parentField}_`;
81
+ // console.debug('parentPrefix', parentPrefix, annotation.fieldName);
82
+ if (annotation.fieldName.startsWith(parentPrefix)) {
83
+ // シートのキー(例:プロフィール_名前)
84
+ keyToAnnotationMap.set(annotation.fieldName, {
85
+ annotation,
86
+ isNested: true,
87
+ parent: parentInfo.propName
88
+ });
89
+ break;
90
+ }
91
+ }
92
+ // 通常のプロパティの場合
93
+ if (!keyToAnnotationMap.has(annotation.fieldName)) {
94
+ keyToAnnotationMap.set(annotation.fieldName, {
95
+ annotation,
96
+ isNested: false
97
+ });
98
+ }
99
+ }
100
+ // レコードの各キーを処理
101
+ for (const [recordKey, recordValue] of Object.entries(record)) {
102
+ // このレコードキーに対応するアノテーション情報を探す
103
+ let annotationInfo = keyToAnnotationMap.get(recordKey);
104
+ // 直接一致するものがなければ、ネストされたキーを探す
105
+ if (!annotationInfo) {
106
+ for (const [parentField, parentInfo] of nestedObjects.entries()) {
107
+ // 例: プロフィール_名前 -> 名前
108
+ if (recordKey.startsWith(`${parentField}_`)) {
109
+ const childField = recordKey.substring(parentField.length + 1);
110
+ // 子オブジェクトのクラスからアノテーションを取得
111
+ const childAnnotations = (0, decorators_1.getFlattenFieldAnnotations)(parentInfo.type);
112
+ // 子オブジェクトの対応するフィールドを探す
113
+ for (const [childKey, childAnnotation] of Object.entries(childAnnotations)) {
114
+ // childAnnotation.fieldNameが未定義の場合はスキップ
115
+ if (!childAnnotation.fieldName)
116
+ continue;
117
+ if (childAnnotation.fieldName === childField) {
118
+ annotationInfo = {
119
+ annotation: childAnnotation,
120
+ isNested: true,
121
+ parent: parentInfo.propName
122
+ };
123
+ break;
124
+ }
125
+ }
126
+ break;
127
+ }
128
+ }
129
+ }
130
+ if (!annotationInfo)
131
+ continue; // 対応するアノテーションがない場合はスキップ
132
+ const { annotation, isNested, parent } = annotationInfo;
133
+ let convertedValue;
134
+ // 値を型に応じて変換
135
+ switch (annotation.type) {
136
+ case 'number':
137
+ convertedValue = this.fromSheetNumber(recordValue);
138
+ break;
139
+ case 'date':
140
+ convertedValue = this.fromSheetDate(recordValue);
141
+ break;
142
+ case 'array':
143
+ convertedValue = (_b = recordValue === null || recordValue === void 0 ? void 0 : recordValue.split(',')) !== null && _b !== void 0 ? _b : [];
144
+ break;
145
+ case 'boolean':
146
+ convertedValue = this.fromSheetBoolean(recordValue);
147
+ break;
148
+ case 'text':
149
+ convertedValue = this.fromSheetText(recordValue);
150
+ break;
151
+ default:
152
+ convertedValue = recordValue || null;
153
+ }
154
+ // 値をインスタンスに設定
155
+ if (isNested && parent) {
156
+ // ネストされたプロパティの場合
157
+ const propName = annotation.propName.includes('.')
158
+ ? annotation.propName.split('.').pop() // ドットがある場合は最後の部分を取得
159
+ : annotation.propName;
160
+ if (propName && instance[parent]) {
161
+ instance[parent][propName] = convertedValue;
162
+ }
163
+ }
164
+ else {
165
+ // 通常のプロパティの場合
166
+ if (annotation.propName) {
167
+ instance[annotation.propName] = convertedValue;
168
+ }
169
+ }
170
+ }
171
+ // テスト用にプレーンオブジェクトに変換
172
+ const plainObject = {};
173
+ // インスタンスの各プロパティをプレーンオブジェクトにコピー
174
+ for (const key in instance) {
175
+ if (Object.prototype.hasOwnProperty.call(instance, key)) {
176
+ const value = instance[key];
177
+ if (value && typeof value === 'object' && !Array.isArray(value) && !(value instanceof Date)) {
178
+ // ネストされたオブジェクトを処理
179
+ const nestedPlain = {};
180
+ for (const nestedKey in value) {
181
+ if (Object.prototype.hasOwnProperty.call(value, nestedKey)) {
182
+ nestedPlain[nestedKey] = value[nestedKey];
183
+ }
184
+ }
185
+ plainObject[key] = nestedPlain;
186
+ }
187
+ else {
188
+ plainObject[key] = value;
189
+ }
190
+ }
191
+ }
192
+ return plainObject;
193
+ }
194
+ static toSheet(entity, type) {
195
+ var _a;
196
+ // シンプルな実装に変更
197
+ const result = {};
198
+ // アノテーション取得
199
+ const annotations = (0, decorators_1.getFlattenFieldAnnotations)(type);
200
+ // Type フィールドの親名を抽出 (例: プロフィール名前 から プロフィール を抽出)
201
+ const parentFieldMap = new Map();
202
+ // まずはTypeアノテーションを持つフィールドをクラスから直接取得
203
+ const typeAnnotations = ((_a = decorators_1.Sheet.getAnnotations(type)) === null || _a === void 0 ? void 0 : _a.filter(anno => anno.type === 'type')) || [];
204
+ for (const typeAnno of typeAnnotations) {
205
+ if (typeAnno.fieldName && typeAnno.propName) {
206
+ parentFieldMap.set(typeAnno.fieldName, { parentJpName: typeAnno.fieldName, parentJsName: typeAnno.propName });
207
+ }
208
+ }
209
+ // 各アノテーションを処理
210
+ for (const [key, annotation] of Object.entries(annotations)) {
211
+ // fieldNameが未定義の場合はスキップ
212
+ if (!annotation.fieldName || !annotation.propName)
213
+ continue;
214
+ // キー名から特殊なケースを検出
215
+ let fieldName = annotation.fieldName;
216
+ let propPath = annotation.propName;
217
+ // 親フィールド名を探す
218
+ for (const [parentField, mapping] of parentFieldMap.entries()) {
219
+ // キーが親名で始まる場合 (例: プロフィール名前)
220
+ if (key.startsWith(parentField) && key !== parentField) {
221
+ // プロフィール_名前 の形式に変更
222
+ fieldName = `${mapping.parentJpName}_${fieldName}`;
223
+ // profile.name の形式に変更
224
+ propPath = `${mapping.parentJsName}.${propPath}`;
225
+ break;
226
+ }
227
+ }
228
+ // プロパティの値を取得
229
+ const value = (0, lodash_es_1.get)(entity, propPath);
230
+ // 値の型に応じた変換処理
231
+ switch (annotation.type) {
232
+ case 'number':
233
+ if (value === undefined || value === null) {
234
+ result[fieldName] = null;
235
+ }
236
+ else {
237
+ result[fieldName] = isNaN(Number(value)) ? null : Number(value);
238
+ }
239
+ break;
240
+ case 'date':
241
+ if (value === undefined || value === null) {
242
+ result[fieldName] = null;
243
+ }
244
+ else {
245
+ result[fieldName] = this.toSheetDate(value);
246
+ }
247
+ break;
248
+ case 'array':
249
+ if (value === undefined || value === null) {
250
+ result[fieldName] = undefined;
251
+ }
252
+ else {
253
+ result[fieldName] = Array.isArray(value) ? value.join(',') : value;
254
+ }
255
+ break;
256
+ case 'boolean':
257
+ if (value === undefined || value === null) {
258
+ result[fieldName] = undefined;
259
+ }
260
+ else {
261
+ result[fieldName] = this.toSheetBoolean(value);
262
+ }
263
+ break;
264
+ case 'text':
265
+ case 'type':
266
+ default:
267
+ if (value === undefined || value === null) {
268
+ result[fieldName] = undefined;
269
+ }
270
+ else {
271
+ result[fieldName] = value;
272
+ }
273
+ break;
274
+ }
275
+ }
276
+ return result;
277
+ }
278
+ }
279
+ exports.SheetUtils = SheetUtils;
280
+ function getConverter(type) {
281
+ return {
282
+ fromSheet: (record) => SheetUtils.fromSheet(record, type),
283
+ fromSheetMany: (records) => records.map(record => SheetUtils.fromSheet(record, type)),
284
+ toSheet: (model) => SheetUtils.toSheet(model, type),
285
+ toSheetMany: (models) => models.map(model => SheetUtils.toSheet(model, type)),
286
+ };
287
+ }
288
+ //# sourceMappingURL=converter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"converter.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/spreadsheet/src/lib/converter/converter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export * from './converter';
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./converter"), exports);
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/spreadsheet/src/lib/converter/index.ts"],"names":[],"mappings":";;;AAAA,sDAA4B"}
@@ -0,0 +1,38 @@
1
+ export declare function getFlattenFieldAnnotations<Annotation>(T: any, prefix?: string): Record<string, Annotation>;
2
+ export declare function getSheetConfig(target: any): {
3
+ id: string;
4
+ name: string;
5
+ };
6
+ export declare function getFields(T: any, options?: {
7
+ prefix?: string;
8
+ case?: 'snake' | 'camel' | 'original';
9
+ }): string[];
10
+ export declare function getHeaders(T: any): string[];
11
+ export declare const Sheet: {
12
+ Sheet: (nameOrProps: string | {
13
+ id: string;
14
+ name: string;
15
+ }) => (target: any) => void;
16
+ Text: (nameOrProps?: {
17
+ name?: string;
18
+ } | string) => (target: any, propName: string) => void;
19
+ Date: (nameOrProps?: {
20
+ name?: string;
21
+ } | string) => (target: any, propName: string) => void;
22
+ Number: (nameOrProps?: {
23
+ name?: string;
24
+ } | string) => (target: any, propName: string) => void;
25
+ Type: (name: string, childType: () => any) => (target: any, propName: string) => void;
26
+ Array: (nameOrProps?: {
27
+ name?: string;
28
+ } | string) => (target: any, propName: string) => void;
29
+ Boolean: (nameOrProps?: {
30
+ name?: string;
31
+ } | string) => (target: any, propName: string) => void;
32
+ getAnnotations: (target: any) => {
33
+ type: string;
34
+ fieldName: string;
35
+ propName: string;
36
+ childType: any;
37
+ }[];
38
+ };
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Sheet = void 0;
4
+ exports.getFlattenFieldAnnotations = getFlattenFieldAnnotations;
5
+ exports.getSheetConfig = getSheetConfig;
6
+ exports.getFields = getFields;
7
+ exports.getHeaders = getHeaders;
8
+ const core_1 = require("@nx-ddd/core");
9
+ const lodash_es_1 = require("lodash-es");
10
+ const { createDecorator, createClassDecorator, getAnnotations, } = (0, core_1.makeDecoratorFactories)((type, fieldName, propName, options) => ({ type, fieldName, propName, childType: options.childType }), '[@nx-ddd/excel] annotations');
11
+ function getFlattenFieldAnnotations(T, prefix = '') {
12
+ const annotations = getAnnotations(T);
13
+ return (annotations !== null && annotations !== void 0 ? annotations : []).reduce((acc, annotation) => {
14
+ const currentKey = prefix ? (0, lodash_es_1.camelCase)(`${prefix}_${annotation.fieldName}`) : annotation.fieldName;
15
+ if (annotation.childType) {
16
+ return Object.assign(Object.assign({}, acc), getFlattenFieldAnnotations(annotation.childType(), currentKey));
17
+ }
18
+ return Object.assign(Object.assign({}, acc), { [currentKey]: annotation });
19
+ }, {});
20
+ }
21
+ function getSheetConfig(target) {
22
+ const annotations = getAnnotations(target);
23
+ const annotation = annotations.find((annotation) => annotation.type === 'sheet');
24
+ return annotation.props;
25
+ }
26
+ function getFields(T, options = {
27
+ prefix: '',
28
+ case: 'original'
29
+ }) {
30
+ const annotations = getAnnotations(T);
31
+ const changeCase = (options === null || options === void 0 ? void 0 : options.case) === 'snake'
32
+ ? lodash_es_1.snakeCase
33
+ : (options === null || options === void 0 ? void 0 : options.case) === 'camel' ? lodash_es_1.camelCase
34
+ : (value) => value;
35
+ const fields = (annotations !== null && annotations !== void 0 ? annotations : []).flatMap((annotation) => {
36
+ const currentKey = changeCase((options === null || options === void 0 ? void 0 : options.prefix) ? `${options === null || options === void 0 ? void 0 : options.prefix}_${annotation.fieldName}` : annotation.fieldName);
37
+ if (annotation.childType) {
38
+ return [
39
+ ...getFields(annotation.childType(), {
40
+ prefix: currentKey,
41
+ case: options === null || options === void 0 ? void 0 : options.case,
42
+ })
43
+ ];
44
+ }
45
+ return [currentKey];
46
+ });
47
+ return fields;
48
+ }
49
+ function getHeaders(T) {
50
+ return getFields(T);
51
+ }
52
+ exports.Sheet = {
53
+ Sheet: createClassDecorator('sheet'),
54
+ Text: createDecorator('text'),
55
+ Date: createDecorator('date'),
56
+ Number: createDecorator('number'),
57
+ Type: (name, childType) => createDecorator('type', { childType })(name),
58
+ // JSON: createDecorator('json'),
59
+ Array: createDecorator('array'),
60
+ Boolean: createDecorator('boolean'),
61
+ getAnnotations,
62
+ };
63
+ //# sourceMappingURL=decorators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/spreadsheet/src/lib/decorators/decorators.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export * from './decorators';
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./decorators"), exports);
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/spreadsheet/src/lib/decorators/index.ts"],"names":[],"mappings":";;;AAAA,uDAA6B"}
@@ -0,0 +1 @@
1
+ export * from './sheet.service.impl';
package/impl/index.js ADDED
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./sheet.service.impl"), exports);
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/spreadsheet/src/lib/impl/index.ts"],"names":[],"mappings":";;;AAAA,+DAAqC"}
@@ -7,19 +7,22 @@ export interface GoogleSheetsConfig {
7
7
  }
8
8
  export declare const GOOGLE_SHEETS_CONFIG: InjectionToken<GoogleSheetsConfig>;
9
9
  export declare function provideGoogleSheets(useFactory: () => GoogleSheetsConfig): Provider[];
10
- export declare class SheetsService {
10
+ export declare class SheetService {
11
11
  private config;
12
12
  private auth;
13
13
  private googleSheets;
14
14
  getSheetNames(spreadsheetId: string): Promise<string[]>;
15
15
  getSheet(spreadsheetId: string, sheetName: string): Promise<import("googleapis").sheets_v4.Schema$Sheet>;
16
- getRows(spreadsheetId: string, sheetName: string, { batchSize, }?: {
16
+ getRows(spreadsheetId: string, sheetName: string, { batchSize }?: {
17
17
  batchSize?: number;
18
18
  }): Promise<any[]>;
19
19
  listRecords(spreadsheetId: string, sheetName: string): Promise<any[]>;
20
+ createRecords(spreadsheetId: string, sheetName: string, rows: any[]): Promise<import("googleapis").sheets_v4.Schema$UpdateValuesResponse>;
21
+ createRecord(spreadsheetId: string, sheetName: string, record: any): Promise<import("googleapis").sheets_v4.Schema$UpdateValuesResponse>;
20
22
  addSheet(spreadsheetId: string, name: string): Promise<import("gaxios").GaxiosResponse<import("googleapis").sheets_v4.Schema$BatchUpdateSpreadsheetResponse>>;
21
23
  copyTo(spreadsheetId: string, sheetId: number): Promise<import("googleapis").sheets_v4.Schema$SheetProperties>;
22
24
  deleteRows(spreadsheetId: string, sheetName: string, range?: string): Promise<import("gaxios").GaxiosResponse<import("googleapis").sheets_v4.Schema$ClearValuesResponse>>;
23
25
  updateRows(spreadsheetId: string, sheetName: string, rows: any[]): Promise<import("googleapis").sheets_v4.Schema$UpdateValuesResponse>;
24
26
  renameSheet(spreadsheetId: string, sheetId: number, name: string): Promise<import("gaxios").GaxiosResponse<import("googleapis").sheets_v4.Schema$BatchUpdateSpreadsheetResponse>>;
27
+ protected getValues(spreadsheetId: string, sheetName: string, index?: number, batchSize?: number): Promise<any[] | any[][]>;
25
28
  }
@@ -1,20 +1,34 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SheetsService = exports.GOOGLE_SHEETS_CONFIG = void 0;
3
+ exports.SheetService = exports.GOOGLE_SHEETS_CONFIG = void 0;
4
4
  exports.provideGoogleSheets = provideGoogleSheets;
5
5
  const tslib_1 = require("tslib");
6
6
  const core_1 = require("@angular/core");
7
+ const token_1 = require("@nx-ddd/spreadsheet/token");
7
8
  const googleapis_1 = require("googleapis");
8
9
  const google_auth_library_1 = require("google-auth-library");
9
- const sheets_service_1 = require("./sheets.service");
10
10
  exports.GOOGLE_SHEETS_CONFIG = new core_1.InjectionToken('GOOGLE_SHEETS_CONFIG');
11
11
  function provideGoogleSheets(useFactory) {
12
12
  return [
13
13
  { provide: exports.GOOGLE_SHEETS_CONFIG, useFactory },
14
- { provide: sheets_service_1.SHEETS_SERVICE, useClass: SheetsService },
14
+ token_1.SHEET_SERVICE.provide(() => new SheetService()),
15
15
  ];
16
16
  }
17
- let SheetsService = class SheetsService {
17
+ function generateColumnNames() {
18
+ const columns = [];
19
+ for (let i = 1; i <= 702; i++) {
20
+ let name = "";
21
+ let n = i;
22
+ while (n > 0) {
23
+ n--; // 1-based -> 0-based
24
+ name = String.fromCharCode(65 + (n % 26)) + name;
25
+ n = Math.floor(n / 26);
26
+ }
27
+ columns.push(name);
28
+ }
29
+ return columns;
30
+ }
31
+ let SheetService = class SheetService {
18
32
  constructor() {
19
33
  this.config = (0, core_1.inject)(exports.GOOGLE_SHEETS_CONFIG);
20
34
  this.auth = new google_auth_library_1.JWT({
@@ -41,28 +55,22 @@ let SheetsService = class SheetsService {
41
55
  });
42
56
  }
43
57
  getRows(spreadsheetId_1, sheetName_1) {
44
- return tslib_1.__awaiter(this, arguments, void 0, function* (spreadsheetId, sheetName, { batchSize = 1000, } = {}) {
45
- var _a, _b;
46
- const getValues = (...args_1) => tslib_1.__awaiter(this, [...args_1], void 0, function* (index = 0) {
47
- return this.googleSheets.spreadsheets.values.get({
48
- spreadsheetId,
49
- range: `${sheetName}!A${1 + index * batchSize}:AG${(index + 1) * batchSize}`,
50
- }).then(res => res.data.values).catch((error) => {
51
- // MEMO(@NozomuMiyamoto): 正規表現で下記のエラーを検知して、エラーをthrowする
52
- // Range ('sheetName'!A18001:AG19000) exceeds grid limits. Max rows: 17595, max columns: 24
53
- if (error.message.startsWith(`Range ('${sheetName}'!A${1 + index * batchSize}:AG${(index + 1) * batchSize}) exceeds grid limits.`)) {
54
- return [];
55
- }
56
- throw error;
57
- });
58
- });
58
+ return tslib_1.__awaiter(this, arguments, void 0, function* (spreadsheetId, sheetName, { batchSize = 1000 } = {}) {
59
59
  const values = [];
60
60
  let index = 0;
61
- let batch = yield getValues(index);
61
+ let batch = yield this.getValues(spreadsheetId, sheetName, index, batchSize);
62
62
  while (batch) {
63
63
  values.push(...batch);
64
- batch = yield getValues(++index);
65
- if (!((_a = batch === null || batch === void 0 ? void 0 : batch[0]) === null || _a === void 0 ? void 0 : _a[0]) || ((_b = batch === null || batch === void 0 ? void 0 : batch[0]) === null || _b === void 0 ? void 0 : _b[0]) === '')
64
+ try {
65
+ batch = yield this.getValues(spreadsheetId, sheetName, ++index, batchSize);
66
+ }
67
+ catch (error) {
68
+ if (error.errors[0].message.startsWith(`Range (${sheetName}!`)) {
69
+ break;
70
+ }
71
+ throw error;
72
+ }
73
+ if (batch.every(row => row.every(cell => cell === '')))
66
74
  break;
67
75
  }
68
76
  return values;
@@ -71,11 +79,33 @@ let SheetsService = class SheetsService {
71
79
  listRecords(spreadsheetId, sheetName) {
72
80
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
73
81
  const rows = yield this.getRows(spreadsheetId, sheetName);
74
- const [header, ...records] = rows;
75
- return records.map(record => record.reduce((acc, value, index) => {
76
- acc[header[index]] = value;
77
- return acc;
78
- }, {}));
82
+ const [headers, ...records] = rows;
83
+ return records.map(record => headers.reduce((acc, header, index) => (Object.assign(Object.assign({}, acc), { [header]: record[index] })), {}));
84
+ });
85
+ }
86
+ createRecords(spreadsheetId, sheetName, rows) {
87
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
88
+ const columns = generateColumnNames();
89
+ const endColumn = columns[rows[0].length - 1];
90
+ return this.googleSheets.spreadsheets.values.update({
91
+ spreadsheetId,
92
+ range: `${sheetName}!A1:${endColumn}${rows.length + 1}`,
93
+ valueInputOption: 'USER_ENTERED',
94
+ requestBody: { values: rows },
95
+ }).then(res => res.data);
96
+ });
97
+ }
98
+ createRecord(spreadsheetId, sheetName, record) {
99
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
100
+ const rows = yield this.getRows(spreadsheetId, sheetName);
101
+ const lastRow = rows.length;
102
+ const lastColumn = generateColumnNames()[record.length - 1];
103
+ return this.googleSheets.spreadsheets.values.update({
104
+ spreadsheetId,
105
+ range: `${sheetName}!A${lastRow + 1}:${lastColumn}${lastRow + 1}`,
106
+ valueInputOption: 'USER_ENTERED',
107
+ requestBody: { values: [record] },
108
+ }).then(res => res.data);
79
109
  });
80
110
  }
81
111
  addSheet(spreadsheetId, name) {
@@ -83,15 +113,7 @@ let SheetsService = class SheetsService {
83
113
  return this.googleSheets.spreadsheets.batchUpdate({
84
114
  spreadsheetId,
85
115
  requestBody: {
86
- requests: [
87
- {
88
- addSheet: {
89
- properties: {
90
- title: name,
91
- },
92
- },
93
- },
94
- ],
116
+ requests: [{ addSheet: { properties: { title: name } } }],
95
117
  },
96
118
  });
97
119
  });
@@ -147,9 +169,24 @@ let SheetsService = class SheetsService {
147
169
  });
148
170
  });
149
171
  }
172
+ getValues(spreadsheetId_1, sheetName_1) {
173
+ return tslib_1.__awaiter(this, arguments, void 0, function* (spreadsheetId, sheetName, index = 0, batchSize = 1000) {
174
+ return this.googleSheets.spreadsheets.values.get({
175
+ spreadsheetId,
176
+ range: `${sheetName}!A${1 + index * batchSize}:AG${(index + 1) * batchSize}`,
177
+ }).then(res => { var _a, _b; return (_b = (_a = res.data) === null || _a === void 0 ? void 0 : _a.values) !== null && _b !== void 0 ? _b : []; }).catch((error) => {
178
+ // MEMO(@NozomuMiyamoto): 正規表現で下記のエラーを検知して、エラーをthrowする
179
+ // Range ('sheetName'!A18001:AG19000) exceeds grid limits. Max rows: 17595, max columns: 24
180
+ if (error.message.startsWith(`Range ('${sheetName}'!A${1 + index * batchSize}:AG${(index + 1) * batchSize}) exceeds grid limits.`)) {
181
+ return [];
182
+ }
183
+ throw error;
184
+ });
185
+ });
186
+ }
150
187
  };
151
- exports.SheetsService = SheetsService;
152
- exports.SheetsService = SheetsService = tslib_1.__decorate([
188
+ exports.SheetService = SheetService;
189
+ exports.SheetService = SheetService = tslib_1.__decorate([
153
190
  (0, core_1.Injectable)({ providedIn: 'root' })
154
- ], SheetsService);
155
- //# sourceMappingURL=sheets.service.impl.js.map
191
+ ], SheetService);
192
+ //# sourceMappingURL=sheet.service.impl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sheet.service.impl.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/spreadsheet/src/lib/impl/sheet.service.impl.ts"],"names":[],"mappings":"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"}
package/index.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- export * from './google-sheet';
1
+ export * from './converter';
2
+ export * from './decorators';
2
3
  export * from './repository';
3
- export * from './spreadsheet';
package/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
- tslib_1.__exportStar(require("./google-sheet"), exports);
4
+ tslib_1.__exportStar(require("./converter"), exports);
5
+ tslib_1.__exportStar(require("./decorators"), exports);
5
6
  tslib_1.__exportStar(require("./repository"), exports);
6
- tslib_1.__exportStar(require("./spreadsheet"), exports);
7
7
  //# sourceMappingURL=index.js.map
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/@nx-ddd/spreadsheet/src/lib/index.ts"],"names":[],"mappings":";;;AAAA,yDAA+B;AAC/B,uDAA6B;AAC7B,wDAA8B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/@nx-ddd/spreadsheet/src/lib/index.ts"],"names":[],"mappings":";;;AAAA,sDAA4B;AAC5B,uDAA6B;AAC7B,uDAA6B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nx-ddd/spreadsheet",
3
- "version": "19.0.0-preview.9",
3
+ "version": "19.1.0",
4
4
  "main": "./index.js",
5
5
  "types": "./index.d.ts",
6
6
  "homepage": "https://github.com/xx-machina/plaform/tree/main/packages/@nx-ddd/spreadsheet",
@@ -1,16 +1,48 @@
1
- export interface GoogleSheetConverter<T> {
2
- fromGoogleSheet(record: any): T;
3
- fromGoogleSheetMany(records: any[]): T[];
4
- toGoogleSheet(model: T): any;
5
- toGoogleSheetMany(models: T[]): any[];
6
- }
7
- export declare abstract class GoogleSheetRepository<T> {
8
- protected readonly sheet: import("../sheets/sheets.service.impl").SheetsService;
1
+ import { Type } from '@angular/core';
2
+ import type { SheetService } from '@nx-ddd/spreadsheet/impl';
3
+ import { SheetConverter } from '../converter';
4
+ export declare abstract class BaseSheetRepository<T> {
5
+ protected abstract readonly sheet: SheetService;
9
6
  protected abstract readonly spreadsheetId: string;
10
7
  protected abstract readonly sheetName: string;
11
- protected abstract readonly converter: GoogleSheetConverter<T>;
8
+ protected abstract readonly converter: SheetConverter<T>;
9
+ protected abstract readonly headers: string[];
12
10
  list(): Promise<T[]>;
11
+ createMany(entities: T[]): Promise<import("googleapis").sheets_v4.Schema$UpdateValuesResponse>;
12
+ create(entity: T): Promise<import("googleapis").sheets_v4.Schema$UpdateValuesResponse>;
13
+ deleteAll(): Promise<import("gaxios").GaxiosResponse<import("googleapis").sheets_v4.Schema$ClearValuesResponse>>;
14
+ }
15
+ export declare abstract class GoogleSheetRepository<T> extends BaseSheetRepository<T> {
16
+ protected readonly sheet: SheetService;
13
17
  }
14
18
  export declare class GoogleSheetHelper {
15
19
  static toNumeric(value: any): number;
16
20
  }
21
+ export interface SheetRepositoryConfig {
22
+ spreadsheetId: string;
23
+ sheetName: string;
24
+ converter: SheetConverter<any>;
25
+ headers: string[];
26
+ }
27
+ export declare function getSheetRepository<T>(Entity: Type<T>, { spreadsheetId, sheetName, converter, headers, }: Partial<SheetRepositoryConfig>, sheetService: SheetService): {
28
+ readonly spreadsheetId: string;
29
+ readonly sheetName: string;
30
+ readonly converter: SheetConverter<T>;
31
+ readonly headers: string[];
32
+ readonly sheet: SheetService;
33
+ list(): Promise<T[]>;
34
+ createMany(entities: T[]): Promise<import("googleapis").sheets_v4.Schema$UpdateValuesResponse>;
35
+ create(entity: T): Promise<import("googleapis").sheets_v4.Schema$UpdateValuesResponse>;
36
+ deleteAll(): Promise<import("gaxios").GaxiosResponse<import("googleapis").sheets_v4.Schema$ClearValuesResponse>>;
37
+ };
38
+ export declare function injectSheetRepository<T>(Entity: Type<T>, { spreadsheetId, sheetName, converter, headers, }?: Partial<SheetRepositoryConfig>, sheetService?: SheetService): {
39
+ readonly spreadsheetId: string;
40
+ readonly sheetName: string;
41
+ readonly converter: SheetConverter<T>;
42
+ readonly headers: string[];
43
+ readonly sheet: SheetService;
44
+ list(): Promise<T[]>;
45
+ createMany(entities: T[]): Promise<import("googleapis").sheets_v4.Schema$UpdateValuesResponse>;
46
+ create(entity: T): Promise<import("googleapis").sheets_v4.Schema$UpdateValuesResponse>;
47
+ deleteAll(): Promise<import("gaxios").GaxiosResponse<import("googleapis").sheets_v4.Schema$ClearValuesResponse>>;
48
+ };
@@ -1,20 +1,47 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.GoogleSheetHelper = exports.GoogleSheetRepository = void 0;
3
+ exports.GoogleSheetHelper = exports.GoogleSheetRepository = exports.BaseSheetRepository = void 0;
4
+ exports.getSheetRepository = getSheetRepository;
5
+ exports.injectSheetRepository = injectSheetRepository;
4
6
  const tslib_1 = require("tslib");
5
7
  const core_1 = require("@angular/core");
6
8
  const sheets_1 = require("../sheets");
7
- let GoogleSheetRepository = class GoogleSheetRepository {
8
- constructor() {
9
- this.sheet = (0, sheets_1.injectSheetsService)();
10
- }
9
+ const converter_1 = require("../converter");
10
+ const decorators_1 = require("../decorators");
11
+ class BaseSheetRepository {
11
12
  list() {
12
13
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
13
14
  return this.sheet.listRecords(this.spreadsheetId, this.sheetName).then(records => {
14
- return this.converter.fromGoogleSheetMany(records);
15
+ return this.converter.fromSheetMany(records);
15
16
  });
16
17
  });
17
18
  }
19
+ createMany(entities) {
20
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
21
+ const records = this.converter.toSheetMany(entities);
22
+ const rows = records.map(record => this.headers.map(header => record[header]));
23
+ return this.sheet.createRecords(this.spreadsheetId, this.sheetName, [this.headers, ...rows]);
24
+ });
25
+ }
26
+ create(entity) {
27
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
28
+ const record = this.converter.toSheet(entity);
29
+ const row = this.headers.map(header => record[header]);
30
+ return this.sheet.createRecord(this.spreadsheetId, this.sheetName, row);
31
+ });
32
+ }
33
+ deleteAll() {
34
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
35
+ return this.sheet.deleteRows(this.spreadsheetId, this.sheetName, 'A1:ZZ100000');
36
+ });
37
+ }
38
+ }
39
+ exports.BaseSheetRepository = BaseSheetRepository;
40
+ let GoogleSheetRepository = class GoogleSheetRepository extends BaseSheetRepository {
41
+ constructor() {
42
+ super(...arguments);
43
+ this.sheet = (0, sheets_1.injectSheetService)();
44
+ }
18
45
  };
19
46
  exports.GoogleSheetRepository = GoogleSheetRepository;
20
47
  exports.GoogleSheetRepository = GoogleSheetRepository = tslib_1.__decorate([
@@ -24,10 +51,33 @@ class GoogleSheetHelper {
24
51
  static toNumeric(value) {
25
52
  if (value === '')
26
53
  return null;
54
+ if (typeof value === 'string') {
55
+ // '¥25,000'を25000に変換
56
+ const num = Number(value.replace(/[^0-9]/g, ''));
57
+ if (isNaN(num))
58
+ return null;
59
+ return num;
60
+ }
27
61
  if (isNaN(Number(value)))
28
62
  return null;
29
63
  return Number(value);
30
64
  }
31
65
  }
32
66
  exports.GoogleSheetHelper = GoogleSheetHelper;
67
+ function getSheetRepository(Entity, { spreadsheetId = (0, decorators_1.getSheetConfig)(Entity).id, sheetName = (0, decorators_1.getSheetConfig)(Entity).name, converter = (0, converter_1.getConverter)(Entity), headers = (0, decorators_1.getHeaders)(Entity), } = {}, sheetService) {
68
+ class SheetRepository extends BaseSheetRepository {
69
+ constructor(spreadsheetId, sheetName, converter, headers, sheet) {
70
+ super();
71
+ this.spreadsheetId = spreadsheetId;
72
+ this.sheetName = sheetName;
73
+ this.converter = converter;
74
+ this.headers = headers;
75
+ this.sheet = sheet;
76
+ }
77
+ }
78
+ return new SheetRepository(spreadsheetId, sheetName, converter, headers, sheetService);
79
+ }
80
+ function injectSheetRepository(Entity, { spreadsheetId = (0, decorators_1.getSheetConfig)(Entity).id, sheetName = (0, decorators_1.getSheetConfig)(Entity).name, converter = (0, converter_1.getConverter)(Entity), headers = (0, decorators_1.getHeaders)(Entity), } = {}, sheetService = (0, sheets_1.injectSheetService)()) {
81
+ return getSheetRepository(Entity, { spreadsheetId, sheetName, converter, headers }, sheetService);
82
+ }
33
83
  //# sourceMappingURL=repository.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"repository.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/spreadsheet/src/lib/repository/repository.ts"],"names":[],"mappings":";;;;AAAA,wCAA2C;AAC3C,sCAAgD;AAUzC,IAAe,qBAAqB,GAApC,MAAe,qBAAqB;IAApC;QACc,UAAK,GAAG,IAAA,4BAAmB,GAAE,CAAC;IAUnD,CAAC;IALO,IAAI;;YACR,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;gBAC/E,OAAO,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;YACrD,CAAC,CAAC,CAAC;QACL,CAAC;KAAA;CACF,CAAA;AAXqB,sDAAqB;gCAArB,qBAAqB;IAD1C,IAAA,iBAAU,GAAE;GACS,qBAAqB,CAW1C;AAGD,MAAa,iBAAiB;IAC5B,MAAM,CAAC,SAAS,CAAC,KAAU;QACzB,IAAI,KAAK,KAAK,EAAE;YAAE,OAAO,IAAI,CAAC;QAC9B,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QACtC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;CACF;AAND,8CAMC"}
1
+ {"version":3,"file":"repository.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/spreadsheet/src/lib/repository/repository.ts"],"names":[],"mappings":";;;AA+DA,gDAqBC;AAED,sDAWC;;AAjGD,wCAAiD;AAEjD,sCAA+C;AAC/C,4CAA4D;AAC5D,8CAA2D;AAE3D,MAAsB,mBAAmB;IAOjC,IAAI;;YACR,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;gBAC/E,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAC/C,CAAC,CAAC,CAAC;QACL,CAAC;KAAA;IAEK,UAAU,CAAC,QAAa;;YAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YACrD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC/E,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;QAC/F,CAAC;KAAA;IAEK,MAAM,CAAC,MAAS;;YACpB,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;YACvD,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QAC1E,CAAC;KAAA;IAEK,SAAS;;YACb,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QAClF,CAAC;KAAA;CACF;AA5BD,kDA4BC;AAGM,IAAe,qBAAqB,GAApC,MAAe,qBAAyB,SAAQ,mBAAsB;IAAtE;;QACc,UAAK,GAAG,IAAA,2BAAkB,GAAE,CAAC;IAClD,CAAC;CAAA,CAAA;AAFqB,sDAAqB;gCAArB,qBAAqB;IAD1C,IAAA,iBAAU,GAAE;GACS,qBAAqB,CAE1C;AAGD,MAAa,iBAAiB;IAC5B,MAAM,CAAC,SAAS,CAAC,KAAU;QACzB,IAAI,KAAK,KAAK,EAAE;YAAE,OAAO,IAAI,CAAC;QAC9B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,qBAAqB;YACrB,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;YACjD,IAAI,KAAK,CAAC,GAAG,CAAC;gBAAE,OAAO,IAAI,CAAC;YAC5B,OAAO,GAAG,CAAC;QACb,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QACtC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;CACF;AAZD,8CAYC;AASD,SAAgB,kBAAkB,CAChC,MAAe,EACf,EACE,aAAa,GAAG,IAAA,2BAAc,EAAC,MAAM,CAAC,CAAC,EAAE,EACzC,SAAS,GAAG,IAAA,2BAAc,EAAC,MAAM,CAAC,CAAC,IAAI,EACvC,SAAS,GAAG,IAAA,wBAAY,EAAC,MAAM,CAAC,EAChC,OAAO,GAAG,IAAA,uBAAU,EAAC,MAAM,CAAC,MACM,EAAE,EACtC,YAA0B;IAE1B,MAAM,eAAgB,SAAQ,mBAAsB;QAClD,YACkB,aAAqB,EACrB,SAAiB,EACjB,SAA4B,EAC5B,OAAiB,EACjB,KAAmB;YACjC,KAAK,EAAE,CAAA;YALO,kBAAa,GAAb,aAAa,CAAQ;YACrB,cAAS,GAAT,SAAS,CAAQ;YACjB,cAAS,GAAT,SAAS,CAAmB;YAC5B,YAAO,GAAP,OAAO,CAAU;YACjB,UAAK,GAAL,KAAK,CAAc;QACzB,CAAC;KACd;IAED,OAAO,IAAI,eAAe,CAAC,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;AACzF,CAAC;AAED,SAAgB,qBAAqB,CACnC,MAAe,EACf,EACE,aAAa,GAAG,IAAA,2BAAc,EAAC,MAAM,CAAC,CAAC,EAAE,EACzC,SAAS,GAAG,IAAA,2BAAc,EAAC,MAAM,CAAC,CAAC,IAAI,EACvC,SAAS,GAAG,IAAA,wBAAY,EAAC,MAAM,CAAC,EAChC,OAAO,GAAG,IAAA,uBAAU,EAAC,MAAM,CAAC,MACM,EAAE,EACtC,eAA6B,IAAA,2BAAkB,GAAE;IAEjD,OAAO,kBAAkB,CAAC,MAAM,EAAE,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,YAAY,CAAC,CAAC;AACpG,CAAC"}
@@ -1,4 +1,2 @@
1
- import { InjectionToken } from '@angular/core';
2
- import type { SheetsService } from './sheets.service.impl';
3
- export declare const SHEETS_SERVICE: InjectionToken<SheetsService>;
4
- export declare function injectSheetsService(): SheetsService;
1
+ import type { SheetService } from '@nx-ddd/spreadsheet/impl';
2
+ export declare function injectSheetService(): SheetService;
@@ -1,11 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SHEETS_SERVICE = void 0;
4
- exports.injectSheetsService = injectSheetsService;
5
- const core_1 = require("@angular/core");
6
- exports.SHEETS_SERVICE = new core_1.InjectionToken('SHEETS_SERVICE');
7
- function injectSheetsService() {
8
- var _a;
9
- return (_a = (0, core_1.inject)(exports.SHEETS_SERVICE, { optional: true })) !== null && _a !== void 0 ? _a : {};
3
+ exports.injectSheetService = injectSheetService;
4
+ const token_1 = require("@nx-ddd/spreadsheet/token");
5
+ function injectSheetService() {
6
+ return token_1.SHEET_SERVICE.inject();
10
7
  }
11
8
  //# sourceMappingURL=sheets.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sheets.service.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/spreadsheet/src/lib/sheets/sheets.service.ts"],"names":[],"mappings":";;;AAKA,kDAEC;AAPD,wCAAuD;AAG1C,QAAA,cAAc,GAAG,IAAI,qBAAc,CAAgB,gBAAgB,CAAC,CAAC;AAElF,SAAgB,mBAAmB;;IACjC,OAAO,MAAA,IAAA,aAAM,EAAC,sBAAc,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,mCAAI,EAAmB,CAAC;AAC3E,CAAC"}
1
+ {"version":3,"file":"sheets.service.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/spreadsheet/src/lib/sheets/sheets.service.ts"],"names":[],"mappings":";;AAGA,gDAEC;AAJD,qDAA0D;AAE1D,SAAgB,kBAAkB;IAChC,OAAO,qBAAa,CAAC,MAAM,EAAkB,CAAC;AAChD,CAAC"}
@@ -0,0 +1 @@
1
+ export declare const SHEET_SERVICE: import("@nx-ddd/core").DiToken<unknown>;
package/token/index.js ADDED
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SHEET_SERVICE = void 0;
4
+ const core_1 = require("@nx-ddd/core");
5
+ exports.SHEET_SERVICE = (0, core_1.makeDI)('[@nx-ddd/spreadsheet] SHEET SERVICE');
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/spreadsheet/src/lib/token/index.ts"],"names":[],"mappings":";;;AAAA,uCAAsC;AAEzB,QAAA,aAAa,GAAG,IAAA,aAAM,EAAC,qCAAqC,CAAC,CAAC"}
@@ -1,11 +0,0 @@
1
- import { InjectionToken } from '@angular/core';
2
- export declare const SERVICE_ACCOUNT: InjectionToken<unknown>;
3
- export declare class GoogleSheetClient {
4
- private serviceAccount;
5
- constructor(serviceAccount: any);
6
- private getDoc;
7
- writeSheet(sheetId: string, sheetName: any, data: {
8
- [key: string]: string | number | boolean;
9
- }[]): Promise<void>;
10
- readSheet(sheetId: string, sheetName: string): Promise<any>;
11
- }
@@ -1,45 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.GoogleSheetClient = exports.SERVICE_ACCOUNT = void 0;
4
- const tslib_1 = require("tslib");
5
- const core_1 = require("@angular/core");
6
- const google_spreadsheet_1 = require("google-spreadsheet");
7
- exports.SERVICE_ACCOUNT = new core_1.InjectionToken('[@nx-ddd/spreadsheet] Service Account');
8
- let GoogleSheetClient = class GoogleSheetClient {
9
- constructor(serviceAccount) {
10
- this.serviceAccount = serviceAccount;
11
- }
12
- getDoc(id) {
13
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
14
- const doc = new google_spreadsheet_1.GoogleSpreadsheet(id);
15
- yield doc.useServiceAccountAuth(this.serviceAccount);
16
- yield doc.loadInfo();
17
- return doc;
18
- });
19
- }
20
- writeSheet(sheetId, sheetName, data) {
21
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
22
- const doc = yield this.getDoc(sheetId);
23
- const sheet = doc.sheetsByTitle[sheetName];
24
- yield sheet.clear();
25
- if (!data.length)
26
- return;
27
- yield sheet.setHeaderRow(Object.keys(data[0]));
28
- yield sheet.addRows(data, { raw: false, insert: false });
29
- });
30
- }
31
- readSheet(sheetId, sheetName) {
32
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
33
- const doc = yield this.getDoc(sheetId);
34
- const sheet = doc.sheetsByTitle[sheetName];
35
- return sheet.getRows();
36
- });
37
- }
38
- };
39
- exports.GoogleSheetClient = GoogleSheetClient;
40
- exports.GoogleSheetClient = GoogleSheetClient = tslib_1.__decorate([
41
- (0, core_1.Injectable)(),
42
- tslib_1.__param(0, (0, core_1.Inject)(exports.SERVICE_ACCOUNT)),
43
- tslib_1.__metadata("design:paramtypes", [Object])
44
- ], GoogleSheetClient);
45
- //# sourceMappingURL=client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../../../packages/@nx-ddd/spreadsheet/src/lib/google-sheet/client/client.ts"],"names":[],"mappings":";;;;AAAA,wCAAmE;AACnE,2DAAuD;AAE1C,QAAA,eAAe,GAAG,IAAI,qBAAc,CAAC,uCAAuC,CAAC,CAAC;AAGpF,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IAE5B,YACmC,cAAmB;QAAnB,mBAAc,GAAd,cAAc,CAAK;IAClD,CAAC;IAES,MAAM,CAAC,EAAU;;YAC7B,MAAM,GAAG,GAAG,IAAI,sCAAiB,CAAC,EAAE,CAAC,CAAC;YACtC,MAAM,GAAG,CAAC,qBAAqB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YACrD,MAAM,GAAG,CAAC,QAAQ,EAAE,CAAC;YACrB,OAAO,GAAG,CAAC;QACb,CAAC;KAAA;IAEK,UAAU,CAAC,OAAe,EAAE,SAAS,EAAE,IAAkD;;YAC7F,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACvC,MAAM,KAAK,GAAG,GAAG,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;YAC3C,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;YACpB,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,OAAO;YACzB,MAAM,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/C,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAC,CAAC,CAAC;QACzD,CAAC;KAAA;IAEK,SAAS,CAAC,OAAe,EAAE,SAAiB;;YAChD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACvC,MAAM,KAAK,GAAG,GAAG,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;YAC3C,OAAO,KAAK,CAAC,OAAO,EAAE,CAAC;QACzB,CAAC;KAAA;CACF,CAAA;AA3BY,8CAAiB;4BAAjB,iBAAiB;IAD7B,IAAA,iBAAU,GAAE;IAIR,mBAAA,IAAA,aAAM,EAAC,uBAAe,CAAC,CAAA;;GAHf,iBAAiB,CA2B7B"}
@@ -1,2 +0,0 @@
1
- export declare class GoogleSheetClientModule {
2
- }
@@ -1,15 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.GoogleSheetClientModule = void 0;
4
- const tslib_1 = require("tslib");
5
- const core_1 = require("@angular/core");
6
- const client_1 = require("./client");
7
- let GoogleSheetClientModule = class GoogleSheetClientModule {
8
- };
9
- exports.GoogleSheetClientModule = GoogleSheetClientModule;
10
- exports.GoogleSheetClientModule = GoogleSheetClientModule = tslib_1.__decorate([
11
- (0, core_1.NgModule)({
12
- providers: [client_1.GoogleSheetClient],
13
- })
14
- ], GoogleSheetClientModule);
15
- //# sourceMappingURL=client.module.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.module.js","sourceRoot":"","sources":["../../../../../../packages/@nx-ddd/spreadsheet/src/lib/google-sheet/client/client.module.ts"],"names":[],"mappings":";;;;AAAA,wCAAyC;AACzC,qCAA6C;AAKtC,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;CAAI,CAAA;AAA3B,0DAAuB;kCAAvB,uBAAuB;IAHnC,IAAA,eAAQ,EAAC;QACR,SAAS,EAAE,CAAC,0BAAiB,CAAC;KAC/B,CAAC;GACW,uBAAuB,CAAI"}
@@ -1,2 +0,0 @@
1
- export * from './client.module';
2
- export * from './client';
@@ -1,6 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
- tslib_1.__exportStar(require("./client.module"), exports);
5
- tslib_1.__exportStar(require("./client"), exports);
6
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/@nx-ddd/spreadsheet/src/lib/google-sheet/client/index.ts"],"names":[],"mappings":";;;AAAA,0DAAgC;AAChC,mDAAyB"}
@@ -1,2 +0,0 @@
1
- export declare class GoogleSheetModule {
2
- }
@@ -1,14 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.GoogleSheetModule = void 0;
4
- const tslib_1 = require("tslib");
5
- const core_1 = require("@angular/core");
6
- let GoogleSheetModule = class GoogleSheetModule {
7
- };
8
- exports.GoogleSheetModule = GoogleSheetModule;
9
- exports.GoogleSheetModule = GoogleSheetModule = tslib_1.__decorate([
10
- (0, core_1.NgModule)({
11
- imports: []
12
- })
13
- ], GoogleSheetModule);
14
- //# sourceMappingURL=google-sheet.module.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"google-sheet.module.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/spreadsheet/src/lib/google-sheet/google-sheet.module.ts"],"names":[],"mappings":";;;;AAAA,wCAAyC;AAKlC,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;CAAI,CAAA;AAArB,8CAAiB;4BAAjB,iBAAiB;IAH7B,IAAA,eAAQ,EAAC;QACR,OAAO,EAAE,EAAE;KACZ,CAAC;GACW,iBAAiB,CAAI"}
@@ -1,2 +0,0 @@
1
- export * from './client';
2
- export * from './google-sheet.module';
@@ -1,6 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
- tslib_1.__exportStar(require("./client"), exports);
5
- tslib_1.__exportStar(require("./google-sheet.module"), exports);
6
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/spreadsheet/src/lib/google-sheet/index.ts"],"names":[],"mappings":";;;AAAA,mDAAyB;AACzB,gEAAsC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"sheets.service.impl.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/spreadsheet/src/lib/sheets/sheets.service.impl.ts"],"names":[],"mappings":"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"}
package/spreadsheet.d.ts DELETED
@@ -1 +0,0 @@
1
- export declare function spreadsheet(): string;
package/spreadsheet.js DELETED
@@ -1,7 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.spreadsheet = spreadsheet;
4
- function spreadsheet() {
5
- return 'spreadsheet';
6
- }
7
- //# sourceMappingURL=spreadsheet.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"spreadsheet.js","sourceRoot":"","sources":["../../../../packages/@nx-ddd/spreadsheet/src/lib/spreadsheet.ts"],"names":[],"mappings":";;AAAA,kCAEC;AAFD,SAAgB,WAAW;IACzB,OAAO,aAAa,CAAC;AACvB,CAAC"}